MCP server
curva mcp lets any Model Context Protocol client (desktop
assistants, coding agents, IDE agents) call Curva as a tool. An agent then gets typed answers with
calibrated probabilities instead of judging in free text.
It speaks MCP over stdio (JSON-RPC 2.0, one message per line) and forwards to a running Curva server, so decisions go through that server’s cache, calibration, auth and audit log.
curva serve & # or use a shared servercurva mcp # default --url http://127.0.0.1:7777curva mcp --url https://curva.internal --api-key curva_... # or set CURVA_API_KEYAdd it to a client
Section titled “Add it to a client”Most MCP clients take a command to launch. For example, with Claude Code:
claude mcp add curva -- curva mcp --url http://127.0.0.1:7777Or in a JSON client config such as Claude Desktop’s claude_desktop_config.json:
{"mcpServers": {"curva": {"command": "curva", "args": ["mcp"], "env": {"CURVA_API_KEY": "curva_..."}}}}The decide tool
Section titled “The decide tool”| Argument | Required | Meaning |
|---|---|---|
state |
yes | Any JSON to decide about |
questions |
yes | Key → question, as in /v1/decide (choice, score, noul, multi) |
model |
no | A model id, a fallback list, {"council": [...]} or {"cascade": [...]} |
project |
no | Calibration namespace |
Other arguments are dropped. The result is the /v1/decide response JSON as text. Any failure
(server down, 401, 422, 429, 502) comes back as a tool error (isError: true) whose text holds
Curva’s error message, so the agent can fix the request or retry.
Supported methods: initialize, notifications/initialized, ping, tools/list and
tools/call. Requests are answered one at a time.

