MCP Server
Give your coding agent ECU intelligence. Your agent keeps its own model; CalibraLogic supplies the tools, the ECU knowledge base, and the engines — over the Model Context Protocol.
https://website-staging.calibralogic.ai/api/mcpstreamable HTTP, statelessBearer sk-cl-...Setup
Use the same API key as CL-Code and the REST API — create one under Settings → API keys. Keys start with sk-cl-.
Claude Code
claude mcp add --transport http calibralogic \
https://website-staging.calibralogic.ai/api/mcp \
--header "Authorization: Bearer sk-cl-YOUR_API_KEY"Codex CLI
# ~/.codex/config.toml
[mcp_servers.calibralogic]
url = "https://website-staging.calibralogic.ai/api/mcp"
bearer_token_env_var = "CALIBRALOGIC_API_KEY"Cursor
// .cursor/mcp.json
{
"mcpServers": {
"calibralogic": {
"url": "https://website-staging.calibralogic.ai/api/mcp",
"headers": { "Authorization": "Bearer sk-cl-YOUR_API_KEY" }
}
}
}Cline
// cline_mcp_settings.json
{
"mcpServers": {
"calibralogic": {
"type": "streamableHttp",
"url": "https://website-staging.calibralogic.ai/api/mcp",
"headers": { "Authorization": "Bearer sk-cl-YOUR_API_KEY" }
}
}
}Tools
cl_ask(engine, question, context?, ecu?)
Ask an ECU calibration question and get an answer from a selected engine, grounded in the knowledge base. A second content block reports provenance: which ECU shard was searched, how many passages were retrieved, and what the call cost.
rag=ok ecu=EDC17C54 source=explicit k1=7 k3=2 ms=812 engine=cl-forge cl_tokens=41rag=no_ecu means the knowledge base was not searched and the answer is a generic engine answer. Supply ecu whenever you know it.
cl_scan(text, ecu?)
Fast triage of ECU text — fault codes, log excerpts, short questions — on the entry-level engine that every plan includes.
kb_search(query, ecu?, limit?)
Retrieve cited passages without composing an answer. Short excerpts with their source, never whole documents: passages are capped at 1200 characters and limit at 8. Passages with no readable content are dropped and counted, not returned.
ecu=EDC17C54 k1=4 k3=0 returned=2 dropped=2 cl_tokens=3
[1] damos_ram · score 0.048
InjCrv_numMI1EOMPrs: Nummer der aktuellen Betriebsart fur MI1
Module: RAM Folder: RAM
Address (CPU): $C0001F40 ...
[2] a2l_pg · score 0.050
FMA_IFst.Ki_C: Verstarkung des I-Glieds bei Kleinsignalen
Module: FMA A2L type: CHARACTERISTIC ...list_engines()
Plan, remaining quota, reset date, and the engines available to your key. Read-only and free — it does not consume quota.
ECU families
The knowledge base is sharded per ECU family: the collection is selected from the family name, so a search cannot run without one. kb_search requires a family — given explicitly, or inferred from the query.
Quota
Every tool call that reaches an engine or the knowledge base consumes account quota, billed exactly as the equivalent REST call. list_engines is free. When the balance runs out the tool returns an error result — not a transport error — so your agent can read it and adapt. The server stays up and other tools keep answering.
Quota exhausted until 2026-10-01, plan Engineer. Balance 0 CL. (INSUFFICIENT_TOKENS)Verify a connection
The endpoint serves both the 2026-07-28 protocol and 2025-era streamable HTTP from the same handler. Session operations (GET, DELETE) answer 405 — serving is stateless.
npx @modelcontextprotocol/inspector --cli \
--server-url https://website-staging.calibralogic.ai/api/mcp \
--transport http \
--header "Authorization: Bearer sk-cl-YOUR_API_KEY" \
--method tools/listBring the knowledge base into your editor
Local bridges for WinOLS and Ghidra run on your machine and are not part of this server. See the API reference for the REST surface underneath these tools.
API reference