> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trylath.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Every Lath operation is POST https://platform.trylath.com/<operation name with dots replaced by slashes>, with a JSON body and `Authorization: Bearer <key>`. `email.send` is POST /email/send.
> Branch on `error.code`, never on `error.message`. Every refusal also carries `error.fix`, which names the next step.
> Send an `Idempotency-Key` header on any operation that is not retry-safe, so a retry cannot run it twice.
> A `lath_test_` key emails only the account's own members and sends no SMS; a `lath_live_` key reaches real recipients and is billed.
> The OpenAPI document, generated from the same registry as the routes, is at https://platform.trylath.com/openapi.json.

# For agents

> An agent can do all 206 operations, discover them without being told, and provision its own account.

## Attach the MCP server

`https://platform.trylath.com/mcp` speaks the Model Context Protocol. `tools/list` returns every operation with its input and result schema; `tools/call` runs one.

Tool names are the operation with dots replaced by underscores — `sms.send` is `sms_send` — because MCP names allow `[A-Za-z0-9_-]` only.

## Provision without a human

`account.signup` needs no key, so an agent can create the account itself, then set a cap, then act. Ask the person for their email address rather than inventing one; everything else it can do alone.

Set the cap before the first send, not after. An agent that stops halfway through a setup should not leave a live account with no ceiling.

## What to report back

Read `blocked` and `status` before saying a message was sent. `queued` means it left; `suppressed` with a `blocked` reason means it is stored and waiting on something outside the call.

On a 402, the error names the operation that resolves it. Prefer acting on `fix` over guessing.
