MCP
Copia MCP server
Copia speaks the Model Context Protocol over streamable HTTP. Point any MCP-compatible client at a single URL with a Bearer token — the client sees every capability your organization has connected, plus durable memory, as native tools.
Endpoint
https://copia-ai.com/api/mcpStateless JSON-RPC over HTTP. The server implements initialize, tools/list, and tools/call. Every tool call creates a Copia runtime session and returns the same run/execution metadata you would get from the Runtime API — so work done via MCP is fully auditable in the Copia dashboard.
AuthorizationheaderrequiredBearer token from Settings → API. The equivalentx-api-keyheader is also accepted.Content-Typeheaderoptionalapplication/json on every POST, set automatically by every MCP client.
Client configurations
Pick your client, copy the snippet, paste in your API key. Every config uses the same URL — differences are just in where the config file lives and how secrets are interpolated.
Claude Code ships native HTTP MCP support. The one-liner below registers Copia at local scope for your current project.
Register with the CLI
bash
claude mcp add --transport http copia https://copia-ai.com/api/mcp \
--header "Authorization: Bearer $COPIA_API_KEY"Or commit a project-scoped .mcp.json
json
{
"mcpServers": {
"copia": {
"type": "http",
"url": "https://copia-ai.com/api/mcp",
"headers": {
"Authorization": "Bearer ${COPIA_API_KEY}"
}
}
}
}Run `claude mcp list` to confirm Copia shows up, then `/mcp` inside Claude Code to inspect the tools it exposes.
What the agent sees
Once Copia is registered, tools appear under their capability names — for example memory_search, linkedin_search_people, or gmail_send_email. Each tool carries Copia-specific hints so the agent knows what is safe to retry.
annotations.readOnlyHintbooleanoptionalTrue when the capability does not mutate external state.annotations.idempotentHintbooleanoptionalTrue when repeating the call with the same input is safe._meta.copia/kindenumoptionalintegration or memory — matches the kind field on the Runtime API._meta.copia/accountsarrayoptionalConnected accounts that expose the capability. When there is more than one, the tool input schema gains a required connectedAccountId enum.
Tool results
Every tools/call returns both a human-readable summary and a structured content block. The structured block carries the run and execution ids so you can jump to the full trace inside the Copia dashboard.
Example tool result
json
{
"content": [
{
"type": "text",
"text": "1 hits\n\ncapability: memory_search\nrunId: run_123\nexecutionId: exec_123\n\n{\n \"hits\": [{\"path\": \"/topics/icp.md\", \"score\": 10}]\n}"
}
],
"structuredContent": {
"summary": "1 hits",
"runId": "run_123",
"executionId": "exec_123",
"capability": "memory_search",
"result": { "hits": [{ "path": "/topics/icp.md", "score": 10 }] }
}
}Prefer raw HTTP?
Rotate compromised keys immediately