# MCP server for AI agents

send21 runs a Model Context Protocol server at `https://send21.io/mcp` (Streamable HTTP, stateless). An agent can prepare and track payments with a scoped API key, and no key can move funds: a human or the operator's own wallet signs every payment.

## Connect

Use the same `Authorization: Bearer s21_...` header as the REST API. Listing the tools and reading the fee schedule work without a key; every other tool needs one.

```json
{
  "mcpServers": {
    "send21": {
      "url": "https://send21.io/mcp",
      "headers": { "Authorization": "Bearer s21_YOUR_KEY" }
    }
  }
}
```

## Tools

| Tool | What it does | Scope |
| --- | --- | --- |
| `create_payment_request` | Create a fiat-priced pay link with the currencies you accept | `drafts:write` |
| `get_payment_request` | Read a payment request and its payment status | `drafts:read` |
| `create_draft` | Prepare a payment to a receiver address | `drafts:write` |
| `get_draft` | Read a draft with amounts, fee and quote | `drafts:read` |
| `get_draft_status` | Cheap status snapshot for polling | `drafts:read` |
| `get_transaction_template` | Wallet-ready payment instructions for a draft | `drafts:read` |
| `list_address_book` | Saved receiver and own addresses | `addressbook:read` |
| `get_rate` | Exchange rate for an asset in a fiat currency | `drafts:read` |
| `get_fee_schedule` | The public fee schedule | none |

## Agent proposes, human signs

The safe split for agents: the agent creates the payment request or draft, and the payment is signed in a wallet the agent does not control. A compromised agent or API key can create instructions but cannot spend. Every tool calls the REST API in-process, so scopes, validation, idempotency and rate limits are the same as for REST clients.

## Directory listings

- Smithery: [smithery.ai/servers/send21io/mcp](https://smithery.ai/servers/send21io/mcp)
- Glama: [glama.ai/mcp/servers/send21io/mcp](https://glama.ai/mcp/servers/send21io/mcp)

---
Source: https://send21.io/docs/mcp
