Agent capabilities

MCP endpoint

Discover and invoke the caller-specific CoreSpeed tool surface through one authenticated Streamable HTTP endpoint.

Every connector and built-in tool is served through one MCP endpoint:

Production MCPPOST https://api.corespeed.io/mcpAuthenticate with a CoreSpeed key or WorkOS JWT — browser OAuth is rolling out

Connect with OAuth (browser sign-in)

Browser sign-in is rolling out per environment and is not yet enabled on the production endpoint (api.corespeed.io). Use the API-key configuration below on production today; the OAuth flow described here is active only where the authorization server is configured.

Where enabled, modern MCP clients — Claude Code, Cursor, VS Code — connect with only the URL: on the first call they receive a 401 that advertises CoreSpeed's protected-resource metadata, which names the authorization server (WorkOS AuthKit); the client registers itself, opens your browser to sign in, and stores the token. Nothing to copy or rotate.

MCP client (OAuth)
{
  "mcpServers": {
    "corespeed": {
      "type": "http",
      "url": "https://api.corespeed.io/mcp"
    }
  }
}
401 challenge

POST /mcp with no token returns a WWW-Authenticate header pointing at the RFC 9728 protected-resource metadata

discover authorization server
browser sign-in

the client registers with AuthKit (via CIMD or DCR where enabled) and you approve access in the browser

token issued
authenticated

the client calls /mcp with its AuthKit token; organization and budget resolve as usual

the client discovers and completes OAuth 2.1 + PKCE on its own

CoreSpeed issues no tokens itself — AuthKit owns registration, consent, and issuance. The token is scoped to this /mcp resource (RFC 8707), so it cannot be replayed against another server.

Connect with an API key

Headless and CI clients send a long-lived CoreSpeed key or a WorkOS JWT in the Authorization header instead of running the browser flow:

MCP client (API key)
{
  "mcpServers": {
    "corespeed": {
      "type": "http",
      "url": "https://api.corespeed.io/mcp",
      "headers": {
        "Authorization": "Bearer sk-cs-..."
      }
    }
  }
}

The transport is Streamable HTTP and stateless. Send one JSON-RPC call per HTTP request; JSON-RPC batches are rejected.

Tool identity

Wire tool names use <capability-id>__<operation> with a double underscore. Examples include memory__remember and memory__search_memory; connected software follows the same convention.

Never construct a complete tool inventory in application code. Run tools/list after authentication and use the returned names and input schemas. The result is filtered for the caller's connected accounts and enabled built-ins.

Call a tool

curl https://api.corespeed.io/mcp \
  -H "Authorization: Bearer $CORESPEED_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "memory__search_memory",
      "arguments": {"query": "What did we decide about launch review?"}
    }
  }'

Organization billing holds, suspensions, and API-key spend caps are checked before a metered tool executes. These failures can be returned as an MCP isError result inside an HTTP 200 response.