# The MCP server

> LightHouse's reads as Model Context Protocol tools, for Claude, Cursor, Codex and any MCP client.

LightHouse serves the Model Context Protocol, so an AI assistant such as Claude, Cursor or Codex can read your tenant: which agents are failing, what a run cost, how close a budget is to its cap, what a knowledge base holds. It offers the same reads as the [API](/api/), as tools.

## The endpoint

```text
https://<tenant id>.atlanticagenticlabs.com/mcp
```

Streamable HTTP, stateless, JSON responses. Every request is authenticated before the MCP server sees it, with the same credentials as the API: a machine key and your tenant’s Access service token (see [Authentication](/api/authentication/)). A tool never takes a tenant argument: the tenant comes from the address and the credential, and every query runs under your tenant’s row-level security. No MCP session carries a scope from one request to the next.

To connect a client: [Connect a client](/mcp/connect/).

## Read only, deliberately

No tool approves, rejects, pauses, revives, changes a limit, tops up, pays, adds a card or connects a provider. An AI agent must never approve its own work, spend, or loosen its own limits. Those are made by a signed-in person in LightHouse, and a machine key is refused on those routes too.

## The tools

44 tools, generated from the server itself: [MCP tools](/mcp/tools/). Among them:

| Ask about              | Tools                                                                                                                                                                                                                                |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Agents and runs        | [`agents`](/mcp/tools/agents/), [`agent`](/mcp/tools/agent/), [`runs`](/mcp/tools/runs/), [`run`](/mcp/tools/run/), [`run_map`](/mcp/tools/run-map/), [`active_runs`](/mcp/tools/active-runs/), [`attention`](/mcp/tools/attention/) |
| Cost and usage         | [`usage`](/mcp/tools/usage/), [`forecast`](/mcp/tools/forecast/), [`savings`](/mcp/tools/savings/), [`caching`](/mcp/tools/caching/), [`limits`](/mcp/tools/limits/)                                                                 |
| Safety                 | [`refusals`](/mcp/tools/refusals/), [`kills`](/mcp/tools/kills/), [`preapprovals`](/mcp/tools/preapprovals/), [`command_status`](/mcp/tools/command-status/)                                                                         |
| Knowledge and evidence | [`knowledge_bases`](/mcp/tools/knowledge-bases/), [`evidence`](/mcp/tools/evidence/), [`retrieval`](/mcp/tools/retrieval/), [`knowledge`](/mcp/tools/knowledge/)                                                                     |

Each tool page gives its inputs and the role it needs. Nearly every tool needs `viewer`; `knowledge`, which reads your content in place, needs `content_viewer`.

## Outputs

Each tool returns the same JSON document as its API route, with raw values: UTC timestamps, and amounts in their own currency with their `*_usd` figure. Every answer also carries `locale`: the caller’s time zone, currency and formats, so an assistant can answer in yours. Answers are counts, timings, identifiers and costs, never prompt or document text, except `knowledge`, which reads from your own account through your deployment’s content reader and copies nothing.

## Refusals

A refusal arrives as a tool error carrying the refusal’s sentence, for example for `role_required`. Any other failure arrives as a generic message that quotes nothing. See [Errors](/api/errors/).

## Signing in with OAuth

The endpoint takes a machine key today. Signing in as yourself through OAuth, so a client such as Claude’s desktop app can connect without a key, is \[Coming]. See [MCP security](/security/mcp/).

Source: https://docs.atlanticagenticlabs.com/mcp/
