@wirebox-sh/mcp
Allows AI agents to send iMessages, list active conversations, and fetch message history through the Wirebox iMessage router.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@wirebox-sh/mcpSend a follow-up email to my colleague about the project timeline."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@wirebox-sh/mcp
Official Model Context Protocol (MCP) server for Wirebox — Real-world identity and communication layer for autonomous AI agents.
Equip Claude Desktop, Claude Code, Cursor, Windsurf, Zed, Muse, and custom agent harnesses with real-world communication tools: iMessage (Blue Bubbles), Mailbox (Email), and Agent Identity Management.
1. Quickstart
Option A: Hosted Remote URL (Zero-Install, Recommended for Cursor & Web)
Directly connect via Streamable HTTP — no Node.js or local package installation required:
{
"mcpServers": {
"wirebox": {
"url": "https://api.wirebox.sh/api/v1/mcp",
"headers": {
"Authorization": "Bearer wb_live_..."
}
}
}
}Tip: Cursor also supports appending your key directly to the URL: https://api.wirebox.sh/api/v1/mcp?apiKey=wb_live_...
Option B: Run via npx (Local Stdio Bridge)
npx -y @wirebox-sh/mcpOption C: Claude Desktop Configuration (Stdio)
Add the following to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"wirebox": {
"command": "npx",
"args": ["-y", "@wirebox-sh/mcp"],
"env": {
"WIREBOX_API_KEY": "wb_live_...",
"WIREBOX_IDENTITY": "your-agent-handle"
}
}
}
}Option D: Cursor / Windsurf (Stdio)
Add to .cursor/mcp.json or your Cursor Settings:
{
"mcpServers": {
"wirebox": {
"command": "npx",
"args": ["-y", "@wirebox-sh/mcp"],
"env": {
"WIREBOX_API_KEY": "wb_live_...",
"WIREBOX_IDENTITY": "your-agent-handle"
}
}
}
}Option E: Claude Code
claude mcp add wirebox -- npx -y @wirebox-sh/mcpOr install as a plugin from the repository root:
/plugin install wireboxRelated MCP server: imessage-mcp
2. Environment Variables
Variable | Required | Description |
| Yes | Your Wirebox secret API key (starts with |
| No | Default agent handle (e.g. |
| No | Override the API base URL (defaults to |
3. Available Tools
Identity Tools
wirebox_whoami: Show this agent's Wirebox identity (handle, email address, display name) and iMessage router connection status.
iMessage Tools
wirebox_imessage_send: Send an iMessage (blue bubble). Reply into an existing conversation viaconversationId, or initiate to an E.164 phone number / Apple ID email.wirebox_imessage_list_conversations: List active iMessage conversations, participant handles, unread counts, and last message timestamps.wirebox_imessage_get_messages: Fetch message history for a specific iMessage conversation.
Mail Tools
wirebox_mail_send: Send an email from the agent's identity mailbox (to,subject,body).wirebox_mail_list: List email messages in the agent's mailbox (folder,limit,offset).
4. Development & Testing
# Install dependencies
npm install
# Run test suite
npm test
# Typecheck
npm run typecheck
# Build bundle
npm run build5. License
MIT © Wirebox
Available Tools
6 toolswirebox_imessage_get_messagesA
Fetch message history for a specific iMessage conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to return (default 50). | |
| cursor | No | Pagination cursor for next page. | |
| identity | No | Agent identity handle or ID. Defaults to WIREBOX_IDENTITY. | |
| conversationId | Yes | iMessage conversation ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden for behavioral disclosure. It only states that history is fetched; it does not disclose pagination behavior, ordering, auth requirements, rate limits, or whether the response is a list object. The schema's cursor description hints at pagination, but the tool description itself adds no behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and object; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list/retrieval tool with no output schema and no annotations, the one-sentence description plus fully documented parameters is workable, but the agent is left without explicit return-shape, ordering, or pagination details. The schema covers the call inputs, so the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the four parameters already described. The description's phrase 'specific iMessage conversation' reinforces conversationId but adds no information beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Fetch) and resource (message history for a specific iMessage conversation), and the phrase 'specific conversation' distinguishes it from sibling wirebox_imessage_list_conversations, which lists conversations rather than their messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly signals the intended use: retrieve messages from a single conversation, which implies use when conversationId is already known and not when listing conversations or sending messages. It does not explicitly state exclusions or alternatives, but the contrast with sibling names is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wirebox_imessage_list_conversationsA
List active iMessage conversations for this agent, including participants, last message timestamp, and unread count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of conversations to return (default 20). | |
| cursor | No | Pagination cursor for next page. | |
| identity | No | Agent identity handle or ID. Defaults to WIREBOX_IDENTITY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'List' and 'active' signal a read-only, filtered query scoped to the agent, and the output fields are disclosed. However, it does not state whether the call has side effects (e.g., changing unread state), whether special permissions are needed, or how conversations are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource, then lists the output fields. There is no filler, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description names the main return fields and agent scoping, which is enough to invoke correctly. Minor gaps remain—'active' is undefined and no ordering/default behavior is stated—but optional parameters are fully documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little to parameter meaning beyond linking the tool to an agent identity; limit, cursor, and identity are already fully documented in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—'List'—on a specific resource, 'active iMessage conversations for this agent,' and names the included fields: participants, last message timestamp, and unread count. This clearly distinguishes it from siblings like wirebox_imessage_get_messages and wirebox_mail_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the read-only listing use case and scopes the tool to conversations, but it doesn't explicitly say when to prefer this over wirebox_imessage_get_messages or provide when-not/alternative guidance. An agent must infer the distinction from the word 'conversations' rather than from direct routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wirebox_imessage_sendA
Send an iMessage. Reply into an existing conversation via conversationId, or start a message to a recipient E.164 phone number / Apple ID email.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Recipient phone number (E.164 format) or Apple ID email. Optional if conversationId is provided. | |
| text | Yes | Message text content to send. | |
| identity | No | Agent identity handle or ID to send from. Defaults to WIREBOX_IDENTITY. | |
| conversationId | No | Existing iMessage conversation ID. Optional if recipient 'to' is provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the action 'send' but does not disclose side effects (e.g., message delivery is irreversible), permissions required, failure modes, or what happens on success. For a mutating operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action. It contains no fluff and is appropriately sized for the tool's simplicity, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary usage modes but omits information about the return value (no output schema) and potential error conditions. For a simple send tool, this is adequate but not complete; an agent might not know what to expect as a response or how failures are reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is described in the schema. The tool description adds context by explaining the relationship between 'to' and 'conversationId' (reply vs new), but this is largely redundant with the schema's optionality notes. It does not add details about 'identity' or formatting beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Send' and the resource 'iMessage', and distinguishes two use cases: replying to an existing conversation via conversationId or starting a new message to a recipient. This differentiates it from sibling tools like wirebox_mail_send (email) and the read-only iMessage tools, leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use conversationId versus 'to', giving clear context for both scenarios. It does not explicitly exclude this tool in favor of alternatives or mention prerequisites like needing a conversation ID from the list tool, but the primary usage conditions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wirebox_mail_listB
List email messages in this agent's mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to return (default 50). | |
| offset | No | Pagination offset. | |
| status | No | Filter by message status. | |
| identity | No | Agent identity handle or ID. Defaults to WIREBOX_IDENTITY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only states the action. It does not disclose behavioral traits such as read-only nature, pagination behavior, ordering, return format, or whether any side effects occur (e.g., marking messages read). The scope 'this agent's mailbox' is a minor positive, but otherwise transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that gets straight to the point. It is appropriately sized for a simple list operation, though it may be slightly under-specified. It is front-loaded with the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the presence of 4 parameters, the description is too sparse. It does not explain what the returned list contains (e.g., fields, metadata), ordering, or any default behavior beyond what the schema implies. An agent would have to guess about the response structure and any additional nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 4 parameters, each with its own description. The tool description adds no additional parameter context, but since the schema already fully documents them, the baseline of 3 is appropriate. The description does not enhance or clarify parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'email messages in this agent's mailbox', which precisely identifies the operation. It naturally distinguishes from sibling tools like wirebox_mail_send (send) and iMessage tools by explicitly mentioning email and mailbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description does not mention any exclusions, alternatives, or contextual conditions. An agent must infer that listing emails is the intended use, but there is no explicit instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wirebox_mail_sendA
Send an email message from this agent's Wirebox mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address. | |
| body | Yes | Email plain text or HTML body content. | |
| subject | Yes | Email subject line. | |
| identity | No | Agent identity handle or ID. Defaults to WIREBOX_IDENTITY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that this is a send (mutating) operation and that it originates from the agent's Wirebox mailbox, which is a meaningful behavioral trait. However, it does not mention authentication prerequisites, whether the send is immediate, or any error/return behavior. This is adequate but not rich, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the action and the context in nine words, earning its place entirely. This is exemplarily concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple send tool with fully described parameters, the description is minimally sufficient. It tells the agent what the tool does and where it operates. However, it omits any mention of return values (no output schema) or side effects beyond the core send action. Given the low complexity and full schema coverage, this is an adequate but not complete definition, so 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented in the schema. The description adds no parameter-specific semantics beyond what the schema provides. Following the baseline rule for high coverage, a 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Send') and resource ('email message') and scopes it to 'this agent's Wirebox mailbox,' which differentiates it from siblings like wirebox_imessage_send (iMessage) and wirebox_mail_list (list). An agent can immediately tell what this tool does and what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context for use: sending an email from the agent's own mailbox. It does not explicitly list alternatives or exclusions, but the sibling names make the distinction obvious, and the description's wording is unambiguous about the email channel. This is clear context without explicit exclusion, which fits the 4-level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wirebox_whoamiA
Show this agent's Wirebox identity (handle, email address, display name) and iMessage router connection status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of indicating behavior. 'Show' clearly implies a read-only, non-mutating operation, and mentioning connection status discloses the kind of state being checked. It does not discuss authentication or failure modes, but these are not critical for a simple identity/status tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence delivers the complete purpose with specific output elements and no filler. The identity details are listed before the status detail, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description tells the agent exactly what it will learn: handle, email address, display name, and iMessage router connection status. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema reflects that with full coverage, so there is nothing for the description to clarify. Per the baseline for no-parameter tools, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and a specific resource ('this agent's Wirebox identity') plus a connection-status check. It clearly distinguishes this tool from the mail and iMessage sibling tools, which perform sending, listing, and conversation operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for retrieving the agent's own identity and router connection state. It does not explicitly name when-not-to-use alternatives, but the sibling tools are functionally different enough that confusion is unlikely, so the context is clear without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
wirebox_imessage_get_messages - First observed
wirebox_imessage_list_conversations - First observed
wirebox_imessage_send - First observed
wirebox_mail_list - First observed
wirebox_mail_send - First observed
wirebox_whoami
TDQS
Scored across 6 tools
Each tool targets a distinct action: sending vs listing emails, sending iMessages, listing conversations, fetching message history, and getting identity/status. There is no overlap between tools that could cause an agent to select the wrong one.
All tools follow a consistent wirebox_{channel}_{action} pattern with snake_case. Minor inconsistency exists: mail_list doesn't specify what is listed (messages), while imessage uses list_conversations and get_messages, but the pattern is still predictable.
Six tools is well-scoped for a messaging server covering two channels (email and iMessage) plus identity/status. Each tool has a clear purpose and none are redundant.
Core messaging workflows are supported: send and list email, send iMessage, list conversations, and fetch messages. Minor gaps exist such as no single-email fetch, no email reply, or no mark-as-read, but agents can accomplish primary tasks.
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Give AI agents real phone numbers, messages, and voice calls via MCP.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI agents to use email, instant messaging, and cloud file storage via MCP tools, giving each agent a verified identity with its own email address, real-time chat, and file sharing capabilities.52 npm1MIT- AlicenseNot gradedqualityDmaintenanceEnables reading and sending iMessages on macOS through MCP, with tools for managing chats, messages, and attachments via AI agents.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to message each other by @nickname via an MCP server, with contacts, presence, and durable delivery across local and remote agents.3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to register, send/receive email, store encrypted credentials, emit audit events, and query behavioral trust scores via MCP tools.1 npm5MIT