MCP API — client setup
Every recipe below points an MCP client at https://api.kindo.ai/v1/mcp and authenticates with your Kindo API key in the Authorization header. Set KINDO_API_KEY in your shell, or substitute the literal value.
claude mcp add kindo --transport http https://api.kindo.ai/v1/mcp \ --header "Authorization: Bearer $KINDO_API_KEY"For one-off agents, evaluations, or scripts, isolate from your global MCP config with a one-off file:
{ "mcpServers": { "kindo": { "type": "http", "url": "https://api.kindo.ai/v1/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } }}claude --strict-mcp-config --mcp-config ./kindo-mcp.json \ -p "List my open Linear tickets."--strict-mcp-config ignores user/project MCP configuration and uses only the file you pass.
Register Kindo in OpenClaw’s MCP server registry:
openclaw mcp set kindo '{ "url": "https://api.kindo.ai/v1/mcp", "transport": "streamable-http", "headers": { "Authorization": "Bearer YOUR_API_KEY" }}'Runtimes launched from OpenClaw (embedded Pi, Claude Code adapter, Gemini, etc.) consume this shared registry automatically.
Add to ~/.codex/config.toml:
[mcp_servers.kindo]command = "npx"args = [ "mcp-remote", "https://api.kindo.ai/v1/mcp", "--header", "Authorization: Bearer $KINDO_API_KEY"]Claude Desktop is stdio-only. Bridge through mcp-remote.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform:
{ "mcpServers": { "kindo": { "command": "npx", "args": [ "mcp-remote", "https://api.kindo.ai/v1/mcp", "--header", "Authorization: Bearer YOUR_API_KEY" ] } }}Restart Claude Desktop.
Use the Hermes CLI — it will prompt for your bearer token interactively and store it in the env file:
hermes mcp add kindo --url https://api.kindo.ai/v1/mcpOr edit ~/.hermes/config.yaml directly and add to mcp_servers:
mcp_servers: kindo: url: https://api.kindo.ai/v1/mcp headers: Authorization: "Bearer ${KINDO_API_KEY}"Hermes substitutes ${KINDO_API_KEY} from its env store; set it with hermes env set KINDO_API_KEY <your-key> or in the matching .env file.
Cursor Settings → MCP → Add new MCP server.
For native HTTP (recent Cursor builds), set type http, URL https://api.kindo.ai/v1/mcp, and header Authorization: Bearer $KINDO_API_KEY.
For older Cursor builds, use the stdio bridge — set type command with:
npx mcp-remote https://api.kindo.ai/v1/mcp --header "Authorization: Bearer $KINDO_API_KEY"Add to your workspace’s .vscode/mcp.json (create it if missing):
{ "servers": { "kindo": { "type": "http", "url": "https://api.kindo.ai/v1/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } }}Reload the window if the server does not appear.
For programmatic clients, use @modelcontextprotocol/sdk:
import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport( new URL('https://api.kindo.ai/v1/mcp'), { requestInit: { headers: { Authorization: `Bearer ${process.env.KINDO_API_KEY}` } } });
const client = new Client({ name: 'my-app', version: '1.0.0' });await client.connect(transport);
const { tools } = await client.listTools();console.log(tools.map((t) => t.name));Other clients
Section titled “Other clients”Any spec-conformant MCP client that supports Streamable HTTP will work. Point it at https://api.kindo.ai/v1/mcp and send Authorization: Bearer YOUR_API_KEY. If your client speaks only stdio, wrap the URL with mcp-remote using the same pattern shown for Claude Desktop and Codex CLI.
Tool surface too large?
Section titled “Tool surface too large?”The bare endpoint shows every integration your account can reach (see Scoping). For broad-access accounts the catalog can exceed a model’s context window. Narrow it with a query filter:
https://api.kindo.ai/v1/mcp?integrations=linear,githubThe filter can only narrow what your account already admits — it never grants new access. See kindo-extensions for the header form.
Next steps
Section titled “Next steps”- Request shape — what to send, what comes back.
- Scoping — which tools appear and why.
- Errors — auth and protocol error envelopes.