We use cookies to improve your experience, understand how you use our site, and keep things running smoothly.
This page covers everything needed to connect an external AI agent (Claude Desktop, Cursor, a custom script, or any HTTP-capable tool-calling framework) to your workspace’s SEO, AEO and GEO data — protocol details, every tool, every error you might hit, and copy-paste examples.
“A Simple Tool” exposes a read-only, MCP-compatible tool endpoint at POST https://asimpletool.in/api/mcp/. It speaks JSON-RPC 2.0 and implements the two methods that matter for tool-calling — tools/list and tools/call — backed by the exact same functions the in-dashboard chat assistant uses. Nothing an agent reads through this endpoint is fabricated: every tool either returns real data pulled live from your workspace, or an honest “nothing here yet” response if that feature hasn’t run.
This is not a full, spec-verified MCP server. It implements only the tool-calling surface (tools/list/tools/call) over plain JSON-RPC-over-HTTP — there is no initialize handshake, session negotiation, or resources/ prompts support. Most raw HTTP clients (curl, Python, LangChain, custom GPT Actions) don’t care and will work immediately. MCP clients that insist on the full handshake (Claude Desktop, Cursor) need a small local bridge script to translate — provided below, in the “Claude Desktop / Cursor” tab.
Every request must include Authorization: Bearer <your key>. Keys:
| Method | Params | Returns |
|---|---|---|
tools/list | none | Array of every available tool, its name, description, and input schema. |
tools/call | { name, arguments } | { content: [{ type: "text", text: "<json>" }] } — the tool’s result, JSON-encoded as a text block per the MCP tool-result shape. |
| Tool | Arguments | Returns |
|---|---|---|
list_websites | none | Lists the websites in this tenant workspace, with their IDs. Always call this first — every other tool needs a website_id. |
knowledge_base_guidance | website_id | The website's SEO/AEO/GEO knowledge base guidance. |
site_crawl_inventory | website_id | The website's most recent sitewide crawl inventory. |
citation_monitoring_status | website_id | The website's AEO/GEO citation-monitoring status. |
analytics_summary | website_id | The website's most recent GA4 and Search Console report snapshots. |
Works anywhere you can shell out — good for a first sanity check.
curl -X POST https://asimpletool.in/api/mcp/ \
-H "Authorization: Bearer mcpk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
curl -X POST https://asimpletool.in/api/mcp/ \
-H "Authorization: Bearer mcpk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {"name": "list_websites", "arguments": {}}
}'Every scenario we’ve seen or anticipated, in one place: