A local MCP server that lets Claude Desktop, Claude Code or Cursor set up a brand and read its results.
shruwd-mcp is a local MCP server. It gives an AI
assistant tools to set up a brand, add prompts and competitors, read how the brand appears
in AI answers, and act on findings.
It runs on your machine over stdio and talks to the API with your key. There is no hosted
server. Clients that find servers from a site can read its install and configuration from
/.well-known/mcp.json.
Prerequisites
An API key from Account → API keys. A key is bound to one workspace and acts with your
role in it: reads need viewer, writes editor, creating or archiving a brand owner,
and minting an ingest token admin. To work across several workspaces, mint a key in each
and add one server entry per workspace. See Roles.
Claude Desktop
In claude_desktop_config.json:
{
"mcpServers": {
"shruwd": {
"command": "npx",
"args": ["-y", "shruwd-mcp"],
"env": { "SHRUWD_API_KEY": "sh_live_…" }
}
}
}
Claude Code
claude mcp add shruwd -e SHRUWD_API_KEY=sh_live_… -- npx -y shruwd-mcp
Cursor
In .cursor/mcp.json:
{
"mcpServers": {
"shruwd": {
"command": "npx",
"args": ["-y", "shruwd-mcp"],
"env": { "SHRUWD_API_KEY": "sh_live_…" }
}
}
}
Environment
| Variable | |
|---|---|
SHRUWD_API_KEY | Required |
SHRUWD_API_URL | Optional. Defaults to https://shruwd.io/api/v1 |
Tools
| Tool | Does |
|---|---|
shruwd_get_workspace | Plan, entitlements, usage, brands. Start here |
shruwd_list_brands · shruwd_get_brand · shruwd_create_brand · shruwd_update_brand · shruwd_archive_brand | Brands. Creating one also creates its self entity and first measurement. Creating and archiving need owner |
shruwd_list_prompts · shruwd_add_prompts · shruwd_update_prompt · shruwd_remove_prompt | The questions asked of each engine every cycle |
shruwd_list_entities · shruwd_add_competitor · shruwd_set_entity · shruwd_remove_entity | The brand and its competitors, with the exact aliases that count |
shruwd_run_measurement · shruwd_list_cycles | Measure now; watch the cycle |
shruwd_get_visibility · shruwd_get_visibility_series · shruwd_get_crawlers | Mention rate and share of voice with intervals, and verified crawler activity |
shruwd_list_answers | The latest individual answers. Evidence, not a metric |
shruwd_list_suggestions · shruwd_accept_suggestion · shruwd_dismiss_suggestion | Competitors the answers named that you do not track |
shruwd_suggest_setup | Drafts prompts and competitors from your homepage. Nothing is saved |
shruwd_list_findings · shruwd_get_finding · shruwd_transition_finding | Diagnoses with a specific fix; mark one applied to start the recheck. Capped plans count the rest in locked |
shruwd_create_ingest_token | The token and endpoint for shipping server logs. Needs admin |
What the tools will not do
No tool computes anything the API does not return. The server is a transport, and every guarantee the API keeps, it keeps:
- A metric is never a bare number. Each carries its 95% interval and
n, or an explicitinsufficient_data— which the tool descriptions tell the agent not to read as zero. - No tool can mark a finding resolved.
resolvedandnot_movedbelong to the recheck. An agent can acknowledge, apply or dismiss; it cannot declare success. - Nothing is saved without you.
shruwd_suggest_setupdrafts prompts and competitors and saves none of them — they go in through the normal tools, with the same checks as adding them by hand. - A capped plan hides nothing silently. Where your plan shows only its top findings,
shruwd_list_findingsreturns those and counts the rest inlockedby severity, so the agent is told they exist rather than reporting a short list as the whole set. Fetching a locked one is403 not_entitled.
Next steps
- For AI agents — the docs themselves, machine-readable
- TypeScript SDK — the client underneath these tools

