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

# MCP

> The hosted Agent Inbox MCP server: the URL, sign-in, and every tool.

Add this address to a chat app that speaks MCP:

```text theme={null}
https://mcp.agentinbox.md
```

You sign in with your Agent Inbox account when the app asks. The app never sees the API key. Someone without an agent yet is sent through onboarding on the next visit to the dashboard.

Opening that address in a browser redirects here.

There are no tools for `setup`, `login`, `connect`, `channel`, or `skill`. You do those on agentinbox.md or with the [CLI](/reference/cli).

The tools are named after the CLI. `inbox send` is `inbox_send`. `contact list` is `contact_list`. `inbox_wait` is the one the CLI does not have.

## How a result reads

There are no exit codes. The result says what happened.

| Words | Meaning |
| - | - |
| `Approved`, `Answered`, `Delivered` | Continue |
| `Denied. Do not go ahead.` | Stop |
| `Nobody answered in time, so the request expired.` | Treat it as not approved |
| `The request was canceled.` | Treat it as not approved |
| `The request is still open` | Call `inbox_wait` with the id it gives you |

A plain message returns `Delivered` as soon as delivery is confirmed.

## inbox\_send

Starts a conversation. Leave `kind` out for a plain message.

| Argument | Meaning |
| - | - |
| `message` | The main text. Required |
| `kind` | `ask`, `approve`, or `choose`. Omit for a plain message |
| `to` | Contact id, email, or up to 50 of them. Omit to reach you |
| `via` | `telegram`, `slack`, or `email` |
| `from` | Attribution, such as `deploy-bot` |
| `ttl_seconds` | How long a question stays answerable. Default 86400, min 60, max 432000 |
| `wait_seconds` | How long to wait now. Default 45, max 50. Questions only |
| `options` | `choose` only. 2 to 10 labels, or `{ id, label }` |
| `approve_label`, `deny_label` | `approve` only |
| `extra_actions` | `approve` only, max 4 |
| `subtitle`, `body` | Card text |
| `icon` | Slack-only. Catalog id, display name, or https URL |

Before you send, call `inbox_list` with `filter` `unread`.

## inbox\_reply

Sends into an existing conversation. Same arguments as `inbox_send`, plus:

| Argument | Meaning |
| - | - |
| `conversation` | Conversation id (`conv_...`) from `inbox_list`. Required |
| `anyone_may_answer` | Anyone in the conversation may answer. Not together with `to` |

There is no `via`. A reply goes out on the conversation's channel.

## inbox\_wait

| Argument | Meaning |
| - | - |
| `id` | The id from the earlier result. Required |
| `wait_seconds` | Default 45, max 50 |

Call it again while the result says the request is still open. Do not go ahead without the answer.

## inbox\_list

| Argument | Default |
| - | - |
| `filter` | `unread`, `read`, or `all`. Default `all` |
| `status` | `open`, `resolved`, or `all`. Default `open` |
| `senders` | `contacts` or `all`. Default `contacts`. `all` includes strangers |
| `limit` | 20, max 100 |
| `after` | Cursor from the previous page |
| `wait_seconds` | Hold until a conversation matches. Max 25. Default 0 |

## inbox\_show

`conversation` is required. `limit` defaults to 20, max 100. `before` pages to older messages. Showing a conversation does not mark it read. People and messages are labelled contact or stranger.

## inbox\_read

`conversation`. Marks it read. Nothing is sent.

## inbox\_resolve

`conversation`. Marks it resolved. It opens again when anyone writes in it.

## contact\_list

`limit` defaults to 50. `after` is the cursor from the previous page. Your operator is marked `(you)`. When the result ends with a cursor, call it again before you decide someone is absent.

## contact\_invite

| Argument | Meaning |
| - | - |
| `id` | A short id, such as `alice`. You pass it later as `to` |
| `name` | Their name, such as `Alice Chen` |

Returns a link. Nothing is sent for you. Give the link to the operator to pass on. This tool does not take a channel. To reach someone by email, put the address in `to` on `inbox_send`. A new address gets a verification email first. Send again after they confirm it.

## Limits

Agent Inbox is in the US region only. There is no EU address.

A connector you remove can still read as connected. The server learns a tool's name from the name the tool reports, and nothing tells it that a tool was disconnected.

`inbox_send` and `inbox_reply` wait at most 50 seconds. Keep waiting with `inbox_wait`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.