Docs / MCP
all docs

MCP access

Expose Recommend's live demand intelligence to any MCP-capable agent (Claude, Cursor, your own) — the same data behind the dashboard, as agent tools.

Status — live. The MCP server runs at /mcp (JSON-RPC 2.0 / streamable-HTTP). It exposes read tools (projects, scopes, objects, live demand search) and write tools (add objects, sources, scopes) — the same surface as the REST API, authenticated with your client key.

Connect

Add the server to your MCP client config. Authenticate with your client key in the X-Api-Key header (the same key as the REST API).

// claude_desktop_config.json / .cursor/mcp.json
{
  "mcpServers": {
    "recommend-demand": {
      "url": "https://data-api.recommend.studio/mcp",
      "headers": { "X-Api-Key": "<your-key>" }
    }
  }
}

Projects

Your client can own several projects, each with its own view, markets, tracked objects and sources (e.g. a "Default" project and a focused "COD Tracking" one). Call list_projects to see them, then pass a project's key as the optional project argument to the read tools. Omit it to read your default project — so single-project clients never have to think about it.

Tools

Each tool maps to a REST endpoint. Market is one of your client's markets (e.g. hr, rs, si for Lidl; gb for GameBoost). Every tool takes an optional project (a project key) — omit it for your default project.

ToolTypeReturns / does
check_demandreadLive demand read for any term — score, momentum, trend, sources
Projects
list_projectsreadYour client's projects (key, name, view, markets)
add_projectwriteCreate a project (own view, markets, objects, sources)
edit_projectwriteUpdate a project by key — name/view/markets, or archived:true
del_projectwriteDelete a project by key (not the default/last)
Scopes
list_scopesreadCategory tabs + totals for a market
add_scopewriteAdd a category tab (scope)
edit_scopewriteRename a scope's label by its key
del_scopewriteDelete a scope by its key
Objects
list_objectsreadRanked demand cards (optionally one scope)
get_objectreadFull detail for one object: trend, sources, references
add_objectwriteTrack a new object (name + optional category/level/tier/aliases)
edit_objectwriteUpdate an object by id (name/category/level/tier/aliases)
del_objectwriteStop tracking an object by id
Sources
list_sourcesreadThe project's sources (id, name, engine, url/keywords, alts)
add_sourcewriteAdd a source (editorial feed URL, or social keywords) — optional alts fallback chain, tried only if the primary errors
edit_sourcewriteUpdate a source by id — name/engine/url/keywords + alts
del_sourcewriteDelete a source by id

Example call

# pick a project, then read within it
list_projects()
# → [{ key: "default", name: "Default project" }, { key: "cod-tracking", name: "COD Tracking" }]

list_objects(scope="all", market="gb", project="cod-tracking")

# in-product chat: "is anyone talking about pizza ovens?"
check_demand(term="pizza oven", market="hr")
# → { score: 71, momentum: 33, signals: 48, trend: [...] }

# write: start tracking a new object in a project
add_object(name="Call of Duty", level="entity", aliases=["cod", "warzone"], project="cod-tracking")
# → scored on the next worker run, then visible via list_objects / the dashboard

Every object carries a win map (1d/7d/30d/90d → score, signals, momentum) so an agent can reason across windows without extra calls.

Underlying API

The MCP tools are a thin wrapper — anything an agent can do, you can do over plain HTTP. See the REST reference for full schemas and a live request tester.