Model Context Protocol

Authenticated remote MCP, the Sendbound stdio package, permissions, confirmation, and API coverage.

Sendbound has two MCP transports. Both call the same project API:

  • Remote Streamable HTTP: use the MCP server URL with Authorization: Bearer <your-secret-project-key> on every request. Anonymous access and a shared server-owned fallback key are not supported.
  • Local stdio: the npm package is @sendbound/mcp, not @sendbound/mcp-server. It reads your key from server-side environment variables.

Remote configuration

Use the URL shown by your MCP deployment. For the Sendbound-hosted server, the endpoint is https://mcp.sendbound.com/mcp.

{
  "mcpServers": {
    "sendbound": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.sendbound.com/mcp", "--header", "Authorization: Bearer ${SENDBOUND_API_KEY}"],
      "env": {"SENDBOUND_API_KEY": "<set through your client’s secure environment configuration>"}
    }
  }
}

Configure the variable securely; do not paste a real key into a chat or commit it to source control. Clients with native Streamable HTTP can send the bearer header directly without mcp-remote. This server uses bearer keys, not an OAuth login flow.

Each session is bound to the caller's key. Revoked keys are checked again on subsequent requests. Sessions expire after 30 minutes without activity; reconnect after a session-expired response. Deploy a single worker or use sticky sessions when load balancing: sessions are held in memory, not shared between workers.

Browser clients must use an allowed origin; operators can configure MCP_ALLOWED_ORIGINS. A public pk_ tracking key cannot initialize the remote server.

Stdio configuration

{
  "mcpServers": {
    "sendbound": {
      "command": "npx",
      "args": ["-y", "@sendbound/mcp"],
      "env": {
        "SENDBOUND_API_KEY": "<set securely>",
        "SENDBOUND_API_URL": "https://api.sendbound.com"
      }
    }
  }
}

SENDBOUND_READ_ONLY=true removes mutating tools from the stdio server. The npm CLI retains its established convenience tools. Additional contract tools use the prefix sendbound_api_; the existing campaign-send convenience tool is retained instead of adding a second route around its audience preview and confirmation.

The CLI supports its SDK's current and legacy protocol versions. The remote server and CLI are separate deployments: installing the currently published npm version does not automatically install local, unreleased changes.

Tool input

The complete API catalog gives the remote tool name for each operation. Path parameters are top-level arguments, JSON is nested under body, and filters are nested under query.

{
  "name": "create_webhook",
  "arguments": {
    "body": {
      "url": "https://your-app.example/webhooks/inbound",
      "events": ["email.received"],
      "inboundDomain": "inbound.your-verified-domain.example",
      "inboundPattern": "*"
    }
  }
}

The corresponding stdio contract tool is sendbound_api_create_webhook. For send and batch tools, an optional top-level idempotencyKey is forwarded as the API's Idempotency-Key header. Duplicate requests return 409 rather than replaying a result.

File uploads use a body file field containing filename, contentType, and base64; the transport creates the multipart request. Attachment downloads return contentType, size, and Base64 content, subject to a 20 MiB response ceiling. Large data exports should be downloaded with the API directly.

Signing secrets and provider credentials are redacted from tool results. Retrieve those securely in the dashboard, not through a model transcript.

Permissions and approval

Remote write tools and new stdio contract write tools request human confirmation. Declining does not call the API. Clients without the required elicitation support cannot perform those writes. Headless operators may explicitly opt out using SENDBOUND_ALLOW_UNCONFIRMED_SENDS=true; doing so removes this protection.

Tools cannot administer users, API keys, enterprise SSO, or billing by borrowing a project key. Administrator endpoints, provider callbacks, tracking-only browser operations, and credential-import operations are intentionally not remote tools. See Coverage & Permissions for the complete classification.

Inbound receiving tools cover domain settings, routes, test messages, email listing/detail, private attachments, signing-secret rotation, and delivery history. A synthetic route test proves webhook plumbing, not external SMTP or MX delivery. The inbound guide describes those separate checks.

Select an endpoint
to see request details