What is the Agent Inbox remote MCP server?
The Agent Inbox remote MCP server is a hosted Model Context Protocol endpoint at https://mcp.agentinbox.md, so AI assistants can connect to it without installing or running anything locally.

@Agent Inbox
Basic information
Transport
Streamable HTTP
Authentication
OAuth
Category
Communication
Author
Agent Inbox
Submitted by
Dima Grossman
Give your agent an inbox. Its own address on email, Slack and Telegram. A product of Novu
https://mcp.agentinbox.mdclaude mcp add agent-inbox --transport http https://mcp.agentinbox.mdCreate the agent and its email inbox, or report how far setup got. Call with no arguments to see status and a suggested owner email. Ask the user for an agent name and address before creating; pass agent_name and handle together. Pass email only after the user confirms the address — a confirmation link goes out, and a later call with no arguments says whether they opened it. A name never changes an existing agent, and a handle never moves an existing mailbox; pass handle alone to finish a mailbox that was not created. This tool does not replace an email that is already confirmed.
Start a conversation with one or more contacts. Leave kind out for a plain message, which returns once it is delivered; ask, approve or choose waits for the answer. Before you send, call inbox_list with filter "unread" so you do not miss a conversation a person started.
Send into an existing conversation. Leave kind out for a plain message; ask, approve or choose waits for the answer. A reply goes out on the conversation's channel, so it has no via option.
Keep waiting for the answer to an earlier ask, approve or choose that had no answer yet. Call it again while the result says the request is still open.
Get a link that lets another person connect their chat app, so you can reach them too. Nothing is sent for you: give the link to the user to pass on. Afterwards reach them with the id you chose here.
List the people you can reach, with the id to pass as `to`. Your operator is marked (you). When the result ends with a cursor, call it again with after to see the rest before you decide someone is not there.
List the conversations in the agent's inbox. People can message the agent first: call this with filter "unread" before you send, so you see new conversations. Conversations with strangers are hidden unless senders is "all". Showing a conversation does not mark it read; any send into it does.
Show the messages in a conversation. Looking at it does not mark it read — use inbox_read or send a reply for that. People and messages are labelled contact or stranger.
Mark a conversation read without sending a reply. Showing a conversation does not mark it read.
Mark a conversation resolved. It opens again when anyone writes in it. Use after you have finished with it.
The hosted Agent Inbox MCP server, meant for https://mcp.agentinbox.md. ChatGPT, Claude and Cursor add its address, the person signs in with their Agent Inbox account, and the AI tool can then ask them before it acts.
It is a Cloudflare Worker and is for Novu Cloud only: it needs the Agent Inbox Clerk app, the Agent Inbox Dashboard API, and a private Agent Inbox endpoint of the Novu API, which self-hosted and Community editions do not have.
| Tool | What it does |
|---|---|
inbox_setup | Creates the agent and its email inbox, sends the owner's confirmation link, or reports how far setup got. |
inbox_send | Starts a conversation. Without a kind it is a plain message; ask, approve or choose waits for the answer. |
inbox_reply | Sends into an existing conversation, with the same kinds and card options. |
inbox_wait | Keeps waiting for an answer that had not come yet. |
inbox_list | Lists conversations (unread/read, open/resolved, contacts/all). |
inbox_show | Shows a conversation's messages. Does not mark it read. |
inbox_read | Marks a conversation read without sending a reply. |
inbox_resolve | Marks a conversation resolved; it opens again when anyone writes in it. |
contact_list | Lists the people that can be reached. |
contact_invite | Returns a link for another person to connect their chat app. |
Someone who connects the MCP before finishing agentinbox.md uses inbox_setup: ask them for an agent name and address, call it with agent_name and handle, then confirm their email with them and pass email so a confirmation link goes out. A later call with no arguments says whether they opened it. Chat channels (Slack, Telegram) are still set up on agentinbox.md or with the CLI.
The tools are named after the CLI's commands (inbox send is inbox_send, contact list is contact_list) and say "conversation" as it does. inbox_wait is the one the CLI doesn't have: AI tools give up on a call after about a minute, while the CLI waits inside the send. So inbox_send and inbox_reply wait up to 50 seconds for ask, approve and choose; with no answer by then they return the request's id, and inbox_wait picks it up. A plain message returns as soon as delivery is confirmed.
A person may message the agent first. Use the conversation id from inbox_list with inbox_reply to answer in it. Conversations and messages are labelled contact or stranger the same way the CLI does: a contact is someone the operator added; a stranger wrote without being one. Showing a conversation does not mark it read; any reply into it does.
The send and reply tools mirror the Agent Inbox CLI: they support attribution, expiry, channel override on sends, full card chrome, custom approval actions, stable choice ids, up to 50 recipients, and contact email addresses. A new email address on a send is delivered as typed. A reply still needs a contact that already verified that address.
401 that points at /.well-known/oauth-protected-resource./sign-in when the Clerk app's paths point there. Someone without an agent yet can finish setup with inbox_setup instead of visiting the onboarding./oauth/userinfo); it never trusts what a token says about itself.POST /v1/human/accounts). It then reads the account's API key from the Novu API with the secret the Agent Inbox dashboard uses, and calls the Agent Inbox Dashboard API as the account. The AI tool never sees the key. Opening the account does not create an agent.Every request stands alone: nothing is kept between calls, so any instance can answer any call. The one thing initialize hands out is a session id that starts with the app's host (claude-code.…, see below). The app sends it back with every later request, and the server reads the host from it to tell the API which host is calling (Agent-Inbox-Host); it keeps nothing about the session itself. A request without one is served the same: Claude Code, Codex and Cursor are still told by their User-Agent, and the API counts any other as General.
AGENT_INBOX_API_URL, the dashboard's /api) with the account's key, as the CLI does: /v1/setup, /v1/inbox-address and /v1/agent for onboarding, /v1/inbox and /v1/inbox/messages for conversations and messages, /v1/contacts for contacts, invites and verifications, and /v1/operator for the account's owner. The dashboard forwards each call to the Novu API.NOVU_API_URL), with the dashboard's secret: POST /v1/human/accounts when the sign-in has no account yet, then GET /v1/human/accounts/:id/secret-key. The Dashboard API doesn't offer either.When an app connects, the server tells which host it is from the name the app gives in initialize (clientInfo.name), matched whole: claude-code is Claude Code and claude-ai is Claude, so one is never taken for the other (CLIENT_NAMES in src/connections.ts, with where each name comes from). Any other name is General. It notes the host in a KV namespace; the Agent Inbox dashboard reads that from GET /connections/:agentInboxUserId, which answers only to the shared secret, and shows the app as Connected.
| Name | Kind | What it is |
|---|---|---|
CLERK_OAUTH_ISSUER | variable | Address of the Agent Inbox Clerk app. Its OAuth feature with dynamic client registration must be on. |
AGENT_INBOX_API_URL | variable | The Agent Inbox Dashboard API, which every tool calls: https://www.agentinbox.md/api (staging https://staging.agentinbox.md/api, local http://localhost:4300/api). Without it the server answers 503. |
NOVU_API_URL | variable | The Novu API of the US region, used to open an account and read its key with the dashboard's secret. |
DOCS_URL | variable | Where a person who opens the address in a browser is sent. |
AGENT_INBOX_DASHBOARD_API_SECRET | secret | The secret the Agent Inbox dashboard shares with the Novu API. |
CONNECTIONS | KV namespace | Remembers connected tools and, for five minutes, whose token is whose. Optional: without it nothing reads as connected. |
pnpm --filter @novu/agent-inbox-mcp dev # http://localhost:8790, against a local dashboard and API
pnpm --filter @novu/agent-inbox-mcp test
pnpm --filter @novu/agent-inbox-mcp typecheck
Before the first deploy of an environment:
CLERK_OAUTH_ISSUER in wrangler.jsonc.AGENT_INBOX_API_URL in wrangler.jsonc points at that environment's dashboard (/api), and that the dashboard there already serves it.wrangler kv namespace create CONNECTIONS --env <env>) and add the binding it prints to wrangler.jsonc.wrangler secret put AGENT_INBOX_DASHBOARD_API_SECRET --env <env>.pnpm --filter @novu/agent-inbox-mcp deploy:<env>.AGENT_INBOX_MCP_URL on the Agent Inbox dashboard to the server's address. The Connect drawers on the Agent page appear only once it is set.The Agent Inbox remote MCP server is a hosted Model Context Protocol endpoint at https://mcp.agentinbox.md, so AI assistants can connect to it without installing or running anything locally.
Add the endpoint https://mcp.agentinbox.md to any MCP-compatible client such as Claude Code, Cursor, or VS Code. The setup snippets on this page configure each client in one step.
Yes. Agent Inbox uses OAuth: the first time you connect, your MCP client opens a browser window to sign in and authorize access, then reuses the credentials for future sessions.
Agent Inbox exposes a Streamable HTTP endpoint, the transport used by remote MCP servers and supported by all major MCP clients.
The 9apes MCP server lets an AI assistant read the GitHub Actions data 9apes already collects for your organization: runs, jobs, steps, and their durations. Ask it why a build got slower, which jobs take the longest, or
Search and read current AWS documentation, check regional availability and load AWS agent skills, with no AWS account needed.
Pharmaceutical drug & clinical trial intelligence
Official 42min MCP server: let Claude, ChatGPT, Cursor or any MCP client manage your meeting scheduling. Check availability, find free slots, book, cancel and reschedule meetings, manage recurring series, secret booking
Marketing campaign and audience insights from Adobe
Comments