Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.trodo.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Any MCP-compatible client can connect to https://mcp.trodo.ai/mcp. Generate a direct API key from Integrations → MCP for Claude & Cursor and use it in the bearer header.

Python (mcp SDK)

pip install mcp
import asyncio
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession

async def main():
    headers = {"Authorization": "Bearer trodo_mk_xxx"}
    async with streamablehttp_client(
        "https://mcp.trodo.ai/mcp",
        headers=headers,
    ) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            for t in tools.tools:
                print(t.name, "—", t.description[:80])

            # Call one
            result = await session.call_tool(
                "get_top_users",
                arguments={"metric": "events", "window_days": 7, "limit": 5},
            )
            for c in result.content:
                if c.type == "text":
                    print(c.text)

asyncio.run(main())

Node (@modelcontextprotocol/sdk)

npm install @modelcontextprotocol/sdk
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.trodo.ai/mcp"),
  { headers: { Authorization: `Bearer ${process.env.TRODO_MCP_API_KEY}` } },
);
const client = new Client({ name: "my-app", version: "1.0.0" }, { capabilities: {} });

await client.connect(transport);
const tools = await client.listTools();
console.log(tools.tools.map((t) => t.name));

const result = await client.callTool({
  name: "get_run_metrics",
  arguments: { window_days: 30 },
});
console.log(result.structuredContent);

Plain curl (for debugging)

curl -s https://mcp.trodo.ai/mcp \
  -H "Authorization: Bearer trodo_mk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Response shape

Every tools/call response follows the MCP spec:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{ "type": "text", "text": "<one-line summary>" }],
    "structuredContent": { "summary": "...", "rows": [...], ... },
    "isError": false
  }
}
structuredContent is the projected payload — same structure as our internal tool result, minus internal fields like raw. Capped at 80,000 characters; oversize responses return an error suggesting a narrower query.

Auth options

  • Direct API key (this page) — simplest for headless / scripts.
  • OAuth 2.1 + PKCE — for user-facing apps. Discover the issuer at https://mcp.trodo.ai/.well-known/oauth-protected-resource (returns authorization_servers: ["https://api.trodo.ai"]), then read the authorization server metadata at https://api.trodo.ai/.well-known/oauth-authorization-server for endpoints. PKCE (S256) is mandatory; refresh tokens rotate on use.