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)
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.