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.
/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.
| Tool | Type | Returns / does |
|---|---|---|
check_demand | read | Live demand read for any term — score, momentum, trend, sources |
| Projects | ||
list_projects | read | Your client's projects (key, name, view, markets) |
add_project | write | Create a project (own view, markets, objects, sources) |
edit_project | write | Update a project by key — name/view/markets, or archived:true |
del_project | write | Delete a project by key (not the default/last) |
| Scopes | ||
list_scopes | read | Category tabs + totals for a market |
add_scope | write | Add a category tab (scope) |
edit_scope | write | Rename a scope's label by its key |
del_scope | write | Delete a scope by its key |
| Objects | ||
list_objects | read | Ranked demand cards (optionally one scope) |
get_object | read | Full detail for one object: trend, sources, references |
add_object | write | Track a new object (name + optional category/level/tier/aliases) |
edit_object | write | Update an object by id (name/category/level/tier/aliases) |
del_object | write | Stop tracking an object by id |
| Sources | ||
list_sources | read | The project's sources (id, name, engine, url/keywords, alts) |
add_source | write | Add a source (editorial feed URL, or social keywords) — optional alts fallback chain, tried only if the primary errors |
edit_source | write | Update a source by id — name/engine/url/keywords + alts |
del_source | write | Delete 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.