Browse the docs
Agents & MCP
MCP Server
Connect an AI agent to its email inbox with Inboundr's MCP server: setup for Claude Code and other MCP clients, and every tool it provides.
Inboundr has a built-in Model Context Protocol (MCP) server, so an AI agent
can manage its own email through a set of tools without any glue code. It
serves the same data as the REST API and uses the same inb_ API key.
Endpoint#
https://inboundr.net/api/mcpThe server speaks streamable HTTP. Authenticate with a bearer token:
Authorization: Bearer inb_xxxxxxxxxxxxxxxxxxxxxxxxConnecting#
{
"mcpServers": {
"inboundr": {
"url": "https://inboundr.net/api/mcp",
"headers": { "Authorization": "Bearer inb_xxxxxxxxxxxxxxxxxxxxxxxx" }
}
}
}npx @modelcontextprotocol/inspector \
--url https://inboundr.net/api/mcp \
--header "Authorization: Bearer $INBOUNDR_API_KEY"The console shows a ready-to-paste connection snippet for your account on the Agents & MCP page.
Tools#
list_domains
List the caller's domains with verification status. Mail can only be received on verified domains.
create_inbox
Create an address on one of the caller's domains, e.g.
agent@yourdomain.com. Store-only by default; pass endpointId to also
deliver each message to a webhook.
addressstringpathrequired
endpointIdstringpath
ep_…).list_inboxes
List the caller's explicit addresses. (Verified domains also accept mail on any address via catch-all.)
list_emails
List emails newest-first (summaries, no bodies). Filter by to, threadId,
or direction; paginate with cursor.
tostringpath
threadIdstringpath
directionstringpath
inbound or outbound.limitnumberpath
cursorstringpath
nextCursor from a previous call.get_email
Fetch one email in full: text and HTML bodies, attachment metadata, spam/SPF/DKIM verdicts, and threading headers.
idstringpathrequired
em_…).get_thread
Fetch all messages in a conversation, oldest first (summaries).
threadIdstringpathrequired
thr_…).get_attachment
Get a presigned download URL (valid 15 minutes) for one attachment. Index is
0-based, matching the attachments array from get_email.
emailIdstringpathrequired
em_…).indexnumberpathrequired
list_shield_rules
List the caller's shield rules in evaluation order. The first rule whose conditions all match a message wins and no later rule runs, so the order is the meaning of the list.
create_shield_rule
Create a rule judged against every inbound message before it is stored. All conditions must match (AND); use several rules for OR. New rules are added last in the order.
namestringpathrequired
actionstringpathrequired
block drops the message permanently: it's never stored or delivered and
the body can't be recovered, though it still counts as received. allow
delivers it and skips later rules. route delivers to endpointIds
instead of the address's own endpoints; an empty list quarantines it.
conditionsobject[]pathrequired
1–8 { field, operator, value } objects. See
Fields and operators.
endpointIdsstring[]path
ep_…).domainIdstringpath
dom_…).addressIdstringpath
addr_…).delete_shield_rule
Delete a rule. Mail it blocked starts arriving again; mail already blocked stays gone.
idstringpathrequired
gr_…).list_shield_blocks
List messages recently dropped by a rule: sender, recipient, subject, and which rule caught them. This is the only record a blocked message leaves.
limitnumberpath
Rate limits#
MCP and REST share one budget: 5 requests per second per account, counted against the API key's owner. See Rate limits.
A typical agent loop#
- Call
list_emailswithdirection: "inbound"to find new mail. - Call
get_threadto read the conversation for context. - Call
create_shield_ruleif future mail like it should be blocked, allowed, routed or quarantined.