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:
POST https://api.corespeed.io/mcpAuthenticate with a CoreSpeed key or WorkOS JWT — browser OAuth is rolling outConnect 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.
{
"mcpServers": {
"corespeed": {
"type": "http",
"url": "https://api.corespeed.io/mcp"
}
}
}POST /mcp with no token returns a WWW-Authenticate header pointing at the RFC 9728 protected-resource metadata
the client registers with AuthKit (via CIMD or DCR where enabled) and you approve access in the browser
the client calls /mcp with its AuthKit token; organization and budget resolve as usual
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:
{
"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.