Browse the docs

Guide 09

MCP

Give Claude Code, Claude Desktop or any MCP client the action catalog, dry run first.

Last updated from API version 2026-10-06 at (live spec, refreshed hourly). openapi.json

Owlbound is a remote MCP server at https://app.owlbound.ai/api/v1/mcp(Streamable HTTP, JSON responses). Give it to Claude Code, Claude Desktop or any MCP client with a v1 API key; the tools are limited to that key's scopes.

  • Tools: one per action of the catalog (actions_<family>_<verb>, for example actions_linkedin_connect), plus reads of contacts, companies, tables, credits, events, approvals and action runs.
  • Dry run by default: an action tool only plans and returns a planId. It runs when called again with the same arguments plus apply: true and that planId (same MCP session, 15 minutes).
  • Sends always wait for a person: MCP calls run as an agent, so every send and external write is created pending_approval whatever the key's approval mode, and the tool returns the approval link. No tool approves, rejects or changes settings.
  • Rate limits, daily caps (agent caps are half the key's), idempotency and the request log apply to every call.

Claude Code

bash
claude mcp add --transport http owlbound https://app.owlbound.ai/api/v1/mcp \
  --header "Authorization: Bearer $OWLBOUND_API_KEY"

Or in a project .mcp.json (the key stays in your environment):

.mcp.json
{
  "mcpServers": {
    "owlbound": {
      "type": "http",
      "url": "https://app.owlbound.ai/api/v1/mcp",
      "headers": { "Authorization": "Bearer ${OWLBOUND_API_KEY}" }
    }
  }
}

Claude Desktop

Through mcp-remote, in claude_desktop_config.json:

claude_desktop_config.json
{
  "mcpServers": {
    "owlbound": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.owlbound.ai/api/v1/mcp",
        "--header",
        "Authorization:${OWLBOUND_AUTH}"
      ],
      "env": { "OWLBOUND_AUTH": "Bearer owl_sk_..." }
    }
  }
}

Protocol

JSON-RPC 2.0 over Streamable HTTP. initialize returns an Mcp-Session-Id header that every later request sends. Only POST is served (GET and DELETE answer 405). See POST /mcp.

Give the agent a narrow key

Create a dedicated key for agents with only the scopes they need (for example read and enrich) and tight daily caps. Sends still need a person, whatever the scopes.