Connect an MCP client
How to connect an MCP client, test the connection, and use its five work tools, with spend and scope limits kept on the server.
Connect your MCP client to /mcp, authenticate the intended Compute account, and verify the five
customer work tools before using one. Your agent keeps its model, goal and final decisions; MCP
exposes the current operations and the server checks every call against the authenticated account's
scopes.
Connect and negotiate the protocol
The customer MCP endpoint is /mcp on the base server declared in the API description. It uses
Streamable HTTP and accepts protocol revisions 2026-07-28 and 2025-06-18. The OpenAPI header
schema specifies 2025-06-18; use that revision when following its request schema.
A 2025-06-18 connection follows initialize → response → notifications/initialized →
tools/list. Keep the selected protocol revision with this remote connection; a different revision does not
make the local stdio input schema part of the remote endpoint. A POST request uses JSON-RPC 2.0. The transport
expects Content-Type: application/json and an Accept header that includes both application/json
and text/event-stream. After initialization, carry the negotiated MCP-Protocol-Version on
subsequent POST requests. GET and DELETE session operations are not supported on this endpoint.
Browser origins are validated when present.
The local stdio client is a separate surface with a different input schema and lifecycle. Do not send
its path-oriented local arguments to the remote /mcp endpoint.
Don't copy an MCP URL, account, or secret from an example. Use the base URL and credential issued for your account.
Authenticate the intended account
MCP authenticates through the same Compute bearer-key boundary as the REST work surface. The selected tool's scope is checked after its arguments are parsed. Any account_id nested in the arguments must remain pinned to the authenticated account.
Tool descriptions never grant authority. A model can't change its key scopes, choose another account, add an unregistered tool, or turn result text into an administrative action.
Verify exactly five customer work tools
| Tool | Scope | Input authority | Effect |
|---|---|---|---|
lithi.quote | quotes:read | QuoteRequest | prices one bounded request |
lithi.run | jobs:write | LiveBoundedLithiJobV1 | admits one job |
lithi.batch | batches:write | BatchRequest | admits a bounded batch |
lithi.status | jobs:read | { job_id: UUID } | reads a job projection |
lithi.result | jobs:read | { job_id: UUID } | reads encrypted result metadata |
There is no sixth customer work tool. CLI commands, local planning helpers, provider administration, account management, and finance operations are separate surfaces.
tools/list publishes strict input schemas. Bad arguments return bounded tool-execution feedback containing field paths and expected shapes, not the submitted values. An unknown tool is a protocol error.
The agent maps its task brief to one of these schemas and supplies the prepared source or evidence that the selected operation requires. MCP does not paste a natural-language brief into an arbitrary tool or turn a raw local path into an admitted input.
Quote, run, and read the result
The tools on this page describe the remote Compute contract. lithi.quote is a remote assessment
or quote: it prices work and spends nothing by itself, but it still leaves your machine and needs
your account. lithi.run and lithi.batch request approved execution: a real workflow against
a real data scope, gated on the explicit approval your account policy requires. This guide does not
enable execution by itself, and none of these tools is a local fixture. For local or synthetic checks,
use one of the language-client examples instead.
Tool results contain structured content with a handle, digest, state, and an optional p_next_action. A refusal is also structured content and sets isError, so transport success isn't the same as work success.
The remote lithi.quote result is this projection only: use its handle, digest and state to track the
quote. When an application needs the full signed terms, use the existing Core REST requestQuote path
or the local Kit. If that authority is unavailable, stop; do not invent a quote-read endpoint or
issue another quote merely to recover terms.
The remote lithi.batch result is also a batch handle, digest and state. Use the supported batch read
to resolve its item jobs before calling lithi.status or lithi.result for those jobs. There is no
additional MCP batch-status or batch-result tool.
A monthly impact report is separate from this work surface. It requires separate reporting permission and an approved reporting API or file path; it does not add a sixth MCP work tool. Use the monthly Compute impact report or the Impact Reports API when that access is granted.
For an end-user agent setup, continue with Use Compute with your AI. For raw tool schemas, use the Work API reference.
SDK helpers remain local application code
The five MCP work tools are the complete remote work surface. TypeScript and Python SDK helpers can prepare records, inspect result files or coordinate local steps around those calls, but they do not become additional MCP tools. A local helper cannot widen the authenticated account, approve a quote or turn a result projection into artifact bytes.
For a support-ticket preparation flow, read What leaves your machine
before calling lithi.run or lithi.batch, then follow result verification
and result delivery. The Kit helper reference
separates MCP tools from SDK methods, local helpers and agent guidance.
See Kit contents for the supplied local modules and workflow guides.