# Other MCP clients and REST

Brynth speaks MCP over streamable HTTP and plain REST. Both use the same project keys.

## A key for your client

```bash
npx brynth key create --scopes inbox:read,inbox:write,send,disk,approvals,ledger:read --label my-agent
```

The token is printed once. Give each client its own key: you can revoke one without touching the others, and the ledger tells them apart. Scopes:

| Scope | Allows |
|---|---|
| `inbox:read` | list, wait for and read events |
| `inbox:write` | claim, ack and nack events |
| `send` | send email |
| `disk` | key-value, files and task state |
| `approvals` | ask people, channels, policy |
| `ledger:read` | query and verify the ledger |
| `admin` | sources, keys and the rest of the project setup |

The [MCP tools](/reference/mcp-tools.md) page lists the scope each tool needs.

## MCP

- URL: `https://mcp.brynth.ai/mcp`
- Transport: streamable HTTP
- Header: `Authorization: Bearer brk_live_…`

Most clients take a JSON entry of this shape; check your client's documentation for the exact keys:

```json
{
  "mcpServers": {
    "brynth": {
      "url": "https://mcp.brynth.ai/mcp",
      "headers": { "Authorization": "Bearer brk_live_…" }
    }
  }
}
```

Allow at least 150 seconds per tool call: `ask_approval`, `ask_human`, `policy_set`, `inbox_wait`, `email_send` and `file_url` can wait up to 120 seconds for a person or an event.

Start each session with `session_hello({agent: "my-agent", platform: "custom"})`. The ledger records which agent did what.

## REST

The REST API is at `https://api.brynth.ai/v1` with the same bearer key:

```bash
curl https://api.brynth.ai/v1/whoami -H "Authorization: Bearer brk_live_…"
```

Every MCP tool has a REST route; errors have the same codes. See [REST](/reference/rest.md) and the OpenAPI document at `https://api.brynth.ai/v1/openapi.json`.
