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
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?
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
- Request shape — what to send, what comes back.
- Scoping — which tools appear and why.
- Errors — auth and protocol error envelopes.