Skip to main content
Glama
mailbox-mcp

mailbox-mcp

mailbox.bot MCP server

Official hosted Model Context Protocol server for mailbox.bot. Production is remote Streamable HTTP at https://mailbox.bot/api/mcp.

Agents send letters, certified mail, postcards, and document packets. mailbox.bot prints, stamps, mails, photographs, tracks, and returns proof. Agent mailboxes are live now: a real street address plus PMB at the staffed, USPS-compliant Manhattan Beach, CA facility, $15/mo. The PMB number is assigned after USPS Form 1583 verification. The online notary fee is waived. Outbound mail uses prepaid credits and has no monthly base fee.

Connect

Sign in, no key. Clients that support MCP sign-in (claude.ai, ChatGPT, Cursor, Claude Code) can add https://mailbox.bot/api/mcp with no headers. The first tool call opens mailbox.bot's sign-in page, where you choose the agent and Sandbox or Live. On a live connection each letter waits for your approval in the dashboard. Disconnect any time on the API Keys page.

Plugin. This repository is also a Cursor and Claude Code plugin: .cursor-plugin/plugin.json and mcp.json for Cursor, .claude-plugin/ and .mcp.json for Claude Code (/plugin marketplace add arbengine/mailbox-mcp, then /plugin install mailbox-bot@mailbox-bot). Both connect by sign-in and bring the skills/mailbox-bot skill.

With a key. Add the hosted URL to the MCP client and pass a bearer key. Customers do not run a local process.

{
  "mcpServers": {
    "mailbox-bot": {
      "url": "https://mailbox.bot/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_agent_YOUR_KEY_HERE"
      }
    }
  }
}

Create an account at mailbox.bot/signup. A live agent key (sk_agent_) sends real mail and spends prepaid credits. A sandbox key (sk_agent_test_) rehearses on the same endpoint with no charge and no physical mail. A member account key (sk_live_) cannot send mail.

Related MCP server: shipmail-mcp

Pricing

Plan

Price

What you get

Outbound mail and forwarded inbound context

$0/mo

Print and mail with prepaid credits. Forward scans, photos, and PDFs from an address you already control.

Mailing address

$15/mo

Street address plus PMB at the Manhattan Beach, CA facility. Live now. The PMB number is assigned after USPS Form 1583 verification.

Published outbound examples start at $2.00 for a 1-page USPS First-Class letter. A dry run returns the exact price for that document, page count, service, and ZIP. That cost_breakdown is the price that applies.

Tools

55 hosted tools. Current tools are listed first. A deprecated tool is still served and names its replacement. Live schemas: public catalog.

Tool

Description

get_mailbox

Read the account mailing address: street address plus PMB at the Manhattan Beach, CA facility. The rental is $15/mo and mailboxes are live now. The PMB number is assigned after USPS Form 1583 verification.

get_usage

Read usage events and the prepaid credit balance. Agents can read the balance and cannot buy credits.

list_inbound_forwarding_addresses

List the member's intake aliases on forward.mailbox.bot for scans, photos, and PDFs from an address the operator already controls.

list_inbound_mail

List forwarded inbound mail with compact draft context for a reply.

get_inbound_mail

Read one forwarded inbound item, OCR-backed facts, reply hints, and thread linkage.

list_postal_threads

List physical-mail threads that group inbound context and outbound sends.

get_postal_thread

Read one physical-mail thread and its timeline.

get_mailbox_md

Read this agent's versioned MAILBOX.md instructions before an outbound send.

propose_mailbox_md_edit

Propose an edit to standing instructions. The owner accepts or rejects it.

send_facility_message

Send a message to the facility handling this mailbox.

list_facility_conversations

List conversations with the facility.

get_facility_messages

Read messages in a facility conversation.

update_webhook

Update the legacy agent webhook callback URL and event subscriptions.

send_outbound_mail

Print and mail a document with prepaid credits. Call with dry_run=true and show the price before a live send.

list_outbound_mail

List outbound mail jobs and their status.

get_outbound_mail

Read one outbound job, including cost, status, and fulfillment photos.

cancel_outbound_mail

Cancel queued mail before printing and return eligible prepaid credits once.

create_test_outbound_mail

Create a sandbox outbound record with no charge and no physical mail.

advance_test_outbound_mail

Advance a sandbox outbound record through submitted, ready, mailed, and delivered.

quote_outbound_mail

Price a letter before you have the document: mail class, pages, colour and, for FedEx, the ZIP. Needs no account.

send_text_letter

Mail a letter written as plain text. Goes through send_outbound_mail with the same approval, caps and proof.

estimate_batch_mail

Price a batch of postcards, letters, flyers or pamphlets (10 to 10,000 pieces) before any file exists. Printing and USPS postage included.

create_batch_mail

Create a batch draft from a template link (a PDF, or a PNG/JPG postcard graphic) and recipients inline or by CSV link. Nothing is charged; the exact price comes back with links.proof.

get_batch_mail_proof

A one-hour link to a proof PDF: the template as it prints, then the address label for one recipient at its real size, for the person who checks the batch.

confirm_batch_mail

Pay for a draft from prepaid credits once and queue it for printing. The key's approval and daily-piece policies apply; max_cost_cents refuses before any debit.

get_batch_mail

Read a batch: status, recipient summary, pricing and refunds, links, first 50 pieces.

list_batch_mail

List the caller's batches, newest first. Sandbox keys see sandbox batches only.

cancel_batch_mail

Cancel a batch before the facility starts; credits are refunded in full.

advance_test_batch_mail

Sandbox only: move a batch submitted → in_progress → completed and fire batch.completed, as the facility would.

search_inbound_items

Search physical mail at an assigned PMB, including saved OCR text. A sandbox key sees the account's Mojave sample letter.

get_inbound_item

Read one inbound item: pages, actions, and current scan and forward quotes.

get_inbound_pages

Read page text for one inbound item.

quote_inbound_forward

Price every forwarding class for one item to a US ZIP.

request_inbound_action

Propose scan, forward, or discard. The owner approves. The proposal does not spend credits or move mail by itself.

get_inbound_activity

Read the inbound timeline for items this key can see.

list_webhook_endpoints

List the member's webhooks. Signing secrets are omitted.

create_webhook_endpoint

Create a webhook. The signing secret is returned once.

update_webhook_endpoint

Update a webhook URL, events, keyword rules, or status.

test_webhook_endpoint

Queue a synthetic webhook.test delivery.

test_webhook_endpoint_with_sample

Test a webhook with the member's sample letter.

rotate_webhook_endpoint_secret

Rotate a webhook signing secret after the operator asks.

list_webhook_deliveries

Read recent webhook deliveries. Payloads omit page text.

replay_webhook_delivery

Retry a failed webhook delivery.

list_agent_inbox

Deprecated. Use search_inbound_items.

get_agent_inbox_context

Deprecated. Use get_inbound_item.

get_agent_inbox_sources

Deprecated. Use get_inbound_item.

list_agent_inbox_scans

Deprecated. Use get_inbound_pages.

get_agent_inbox_scan

Deprecated. Use get_inbound_pages.

get_agent_inbox_activity

Deprecated. Use get_inbound_activity.

report_agent_inbox_outcome

Deprecated. No successor. Still served until the alias window closes.

get_agent_inbox_handling

Deprecated. Use get_inbound_item.

propose_agent_inbox_handling

Deprecated. Use request_inbound_action.

seed_agent_inbox_sandbox

Deprecated. No successor. Still served until the alias window closes.

list_inbound_items

Deprecated. Use search_inbound_items.

get_inbound_item_sources

Deprecated. Use get_inbound_item.

get_mailbox

Read the account mailing address: street address plus PMB at the Manhattan Beach, CA facility. The rental is $15/mo and mailboxes are live now. The PMB number is assigned after USPS Form 1583 verification.

get_usage

Read usage events and the prepaid credit balance. Agents can read the balance and cannot buy credits.

list_inbound_forwarding_addresses

List the member's intake aliases on forward.mailbox.bot for scans, photos, and PDFs from an address the operator already controls.

list_inbound_mail

List forwarded inbound mail with compact draft context for a reply.

get_inbound_mail

Read one forwarded inbound item, OCR-backed facts, reply hints, and thread linkage.

list_postal_threads

List physical-mail threads that group inbound context and outbound sends.

get_postal_thread

Read one physical-mail thread and its timeline.

get_mailbox_md

Read this agent's versioned MAILBOX.md instructions before an outbound send.

propose_mailbox_md_edit

Propose an edit to standing instructions. The owner accepts or rejects it.

send_facility_message

Send a message to the facility handling this mailbox.

list_facility_conversations

List conversations with the facility.

get_facility_messages

Read messages in a facility conversation.

update_webhook

Update the legacy agent webhook callback URL and event subscriptions.

send_outbound_mail

Print and mail a document with prepaid credits. Call with dry_run=true and show the price before a live send.

list_outbound_mail

List outbound mail jobs and their status.

get_outbound_mail

Read one outbound job, including cost, status, and fulfillment photos.

cancel_outbound_mail

Cancel queued mail before printing and return eligible prepaid credits once.

create_test_outbound_mail

Create a sandbox outbound record with no charge and no physical mail.

advance_test_outbound_mail

Advance a sandbox outbound record through submitted, ready, mailed, and delivered.

quote_outbound_mail

Price a letter before you have the document: mail class, pages, colour and, for FedEx, the ZIP. Needs no account.

send_text_letter

Mail a letter written as plain text. Goes through send_outbound_mail with the same approval, caps and proof.

estimate_batch_mail

Price a batch of postcards, letters, flyers or pamphlets (10 to 10,000 pieces) before any file exists. Printing and USPS postage included.

create_batch_mail

Create a batch draft from a template link (a PDF, or a PNG/JPG postcard graphic) and recipients inline or by CSV link. Nothing is charged; the exact price comes back with links.proof.

get_batch_mail_proof

A one-hour link to a proof PDF: the template as it prints, then the address label for one recipient at its real size, for the person who checks the batch.

confirm_batch_mail

Pay for a draft from prepaid credits once and queue it for printing. The key's approval and daily-piece policies apply; max_cost_cents refuses before any debit.

get_batch_mail

Read a batch: status, recipient summary, pricing and refunds, links, first 50 pieces.

list_batch_mail

List the caller's batches, newest first. Sandbox keys see sandbox batches only.

cancel_batch_mail

Cancel a batch before the facility starts; credits are refunded in full.

advance_test_batch_mail

Sandbox only: move a batch submitted → in_progress → completed and fire batch.completed, as the facility would.

search_inbound_items

Search physical mail at an assigned PMB, including saved OCR text. A sandbox key sees the account's Mojave sample letter.

get_inbound_item

Read one inbound item: pages, actions, and current scan and forward quotes.

get_inbound_pages

Read page text for one inbound item.

quote_inbound_forward

Price every forwarding class for one item to a US ZIP.

request_inbound_action

Propose scan, forward, or discard. The owner approves. The proposal does not spend credits or move mail by itself.

get_inbound_activity

Read the inbound timeline for items this key can see.

list_webhook_endpoints

List the member's webhooks. Signing secrets are omitted.

create_webhook_endpoint

Create a webhook. The signing secret is returned once.

update_webhook_endpoint

Update a webhook URL, events, keyword rules, or status.

test_webhook_endpoint

Queue a synthetic webhook.test delivery.

test_webhook_endpoint_with_sample

Test a webhook with the member's sample letter.

rotate_webhook_endpoint_secret

Rotate a webhook signing secret after the operator asks.

list_webhook_deliveries

Read recent webhook deliveries. Payloads omit page text.

replay_webhook_delivery

Retry a failed webhook delivery.

list_agent_inbox

Deprecated. Use search_inbound_items.

get_agent_inbox_context

Deprecated. Use get_inbound_item.

get_agent_inbox_sources

Deprecated. Use get_inbound_item.

list_agent_inbox_scans

Deprecated. Use get_inbound_pages.

get_agent_inbox_scan

Deprecated. Use get_inbound_pages.

get_agent_inbox_activity

Deprecated. Use get_inbound_activity.

report_agent_inbox_outcome

Deprecated. No successor. Still served until the alias window closes.

get_agent_inbox_handling

Deprecated. Use get_inbound_item.

propose_agent_inbox_handling

Deprecated. Use request_inbound_action.

seed_agent_inbox_sandbox

Deprecated. No successor. Still served until the alias window closes.

list_inbound_items

Deprecated. Use search_inbound_items.

get_inbound_item_sources

Deprecated. Use get_inbound_item.

What this repository is

This repository holds the public server.json manifest published to the official MCP Registry. The production server is hosted at https://mailbox.bot/api/mcp.

server.js lets a registry read the live tool catalog from https://mailbox.bot/api/mcp/tools-public. Authenticated tool calls use the hosted endpoint. Install steps for Claude, Cursor, and other clients are at mailbox.bot/mcp-install.

Verifying authenticity

The namespace bot.mailbox/* is reserved via DNS proof on the apex domain mailbox.bot. Only the domain owner can publish servers under this namespace to the MCP Registry. The canonical manifest in this repo and the registry entry should match.

License

MIT covers this manifest and the registry adapter. The mailbox.bot service is operated under the mailbox.bot terms.

Available Tools

55 tools
advance_test_batch_mailAInspect

Sandbox keys only: simulate the facility one step (submitted → in_progress → completed). Completion marks every piece mailed and fires batch.completed to the agent's webhook, exactly as the facility would. With qr_event and piece it records a scan or a confirmation on that piece of a sandbox batch with QR codes instead, as if a phone scanned it, and the batch.piece.* webhooks fire. Live batches are advanced by the facility, never by the API.

Inputs: batch_id (required), piece, qr_event. Returns: result

advance_test_outbound_mailAInspect

Advance a test_mode outbound mail record one lifecycle step and queue the matching webhook. submitted becomes ready with simulated pages/envelope photos; ready becomes mailed with carrier, dispatch method, receipt photo, and tracking when the selected service includes tracking; mailed becomes delivered.

Inputs: mail_id (required). Returns: result

cancel_batch_mailA
DestructiveIdempotent
Inspect

Cancel a batch before the facility starts (draft, paid, generating or submitted); credits are refunded in full. Once the facility is printing (in_progress) it cannot be cancelled.

Inputs: batch_id (required). Returns: result

cancel_outbound_mailA
DestructiveIdempotent
Inspect

Cancel a queued outbound mail job before facility printing starts. If the mail was funded with prepaid credits, eligible credits are returned to the member ledger. Safe to retry: already-cancelled mail returns cancelled status without creating a duplicate refund. In chat, report cancellation status, returned credits, updated balance, and whether it had already been cancelled. If a transient error occurs, poll the mail status and credits before retrying.

Inputs: mail_id (required). Returns: result

confirm_batch_mailA
DestructiveIdempotent
Inspect

Pay for a draft from the account's prepaid credits and queue it for printing. Debits exactly batch.pricing.total_cents once (repeating returns the current state). Only after the person has seen the proof. The key's policies apply: a key that requires approval cannot pay (the owner confirms in the dashboard), max_daily_pieces counts the whole batch, and max_cost_cents refuses before any debit. A sandbox key pays nothing, and a sandbox batch moves forward only through the sandbox advance call.

Inputs: batch_id (required), max_cost_cents. Returns: result

create_batch_mailAInspect

Create a batch draft from a template link and a recipient list; nothing is charged. template_url is a public https:// link to a PDF at the mail type's size, or to a PNG/JPG postcard graphic that is set on a page at that size (design 4×6 in at 300 dpi = 1200×1800 px). Recipients go inline (an array of {name, line1, line2, city, state, zip}; company accepted) or as recipients_url, a CSV link. Malformed rows and duplicates are skipped and listed, never charged. A one-page postcard gets an address side printed with the return address. Field kits, all optional: every other recipient key (or a nested fields object) is a field, printed by {{tag}} in message or qr.url (fallback: {{tag|text}}) and into PDF form fields of the same name; qr puts a code unique to each piece on it (link opens qr.url, confirm opens a one-button mailbox.bot page, verify proves the recipient gets mail at the address: a QR code plus a short code the person enters where they are signed in, your app via POST /v1/batch-mail/verify with their ref, or read back to the owner for the dashboard; set qr.url to that page and a scan opens it with the code filled in), with scans and confirmations per piece on the batch record and as batch.piece.scanned / batch.piece.confirmed webhooks (a "ref" key on each recipient comes back with them); stock weatherproof, one printed insert (insert_url + insert_stock) and mail_on (a date to mail on) as well. The result carries the exact price, the first recipients and any image warnings. Nothing is charged until the batch is confirmed, and a one-hour proof link shows the template and a sample address label first. Requires the current mailbox_md_version. A key that requires approval saves the draft for the account owner to pay in the dashboard. Postcards from 1 recipient (a $2.00 small-batch fee under 10); letters, flyers and pamphlets from 10; up to 10,000.

Inputs: job_name (required), mail_type (required), mailbox_md_version (required), qr, +19 more. Returns: result

create_test_outbound_mailBInspect

Create a sandbox outbound mail record without uploading a real document. The record is always test_mode=true, cost_cents=0, includes estimated_live_cost_cents and cost_breakdown, and queues a mail.submitted webhook. USPS First-Class Mail has a published $2.00 one-page baseline. Extra pages add configured printing plus any postage increase from weight. If an account's normal first-page formula is lower, cost_breakdown.first_class_baseline_adjustment_cents itemizes the difference separately from carrier postage. Color pages cost $0.70/page total by default before handling and postage: $0.40/page base B&W printing plus a $0.30/page additive color upgrade. In cost_breakdown, color_printing_per_page_cents is the total color-page printing price (70 cents by default), while color_surcharge_per_page_cents is the additive upgrade only (30 cents by default). Account-specific pricing can override these defaults; cost_breakdown is authoritative. FedEx and UPS estimates use the same configured origin and destination zone/region logic as production; fedex_express, fedex_2day and fedex_overnight are $5.00 below their baselines (fedex_express reports service_adjustment_cents: -500), FedEx 2Day applies a fixed $13.00 customer price reduction and reports service_adjustment_cents: -1300, FedEx Overnight adds a fixed $13.00 adjustment and reports service_adjustment_cents: 1300, and fedex_ground carries a fixed $5.00 markup and reports service_adjustment_cents: 500. Use with a sandbox key to rehearse outbound workflows before sending real physical mail.

Inputs: color, metadata, mail_class, page_count, +8 more. Returns: result

create_webhook_endpointA
Idempotent
Inspect

Create a webhook: name, public HTTPS URL, events (inbound.received, inbound.action.requested, inbound.action.completed, inbound.pages_ready, inbound.keywords_matched) and optional keyword rules (literal terms, any/all, exclusions). Active on save. Returns the whsec_ signing secret once, for the receiver's secure configuration. Agent keys can only create endpoints for their own agent_id and environment; member keys may use agent_id:null for account scope. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: url (required), name (required), rules (required), agent_id (required), +3 more. Returns: result

estimate_batch_mailA
Read-onlyIdempotent
Inspect

Price a batch before any file exists. Per piece: printing, card stock or paper, the envelope where one is used, the address label, handling and USPS postage. First-Class: 4×6 postcard $1.05, 6×9 postcard $1.35 (both sides in full color; a one-page design gets an address side printed with the return address), letter $1.15 (1 sheet) or $1.35 (2–3 sheets), flyer $1.15, pamphlet $1.95 (4–8 pages) or $2.75 (9–16 pages). Marketing Mail (200+ recipients, not open yet): postcards 85¢, letters and flyers 89¢, pamphlets $1.75. Color on letters, flyers and pamphlets adds 16¢ per color page; duplex is included (two pages per sheet). Volume: 5 % off at 500+, 10 % at 1,000+. No piece is priced below its minimum, our cost to make and mail it plus 5¢: two-sided color, extra sheets, the volume discount and account prices all stop there, and the estimate says when it applied. Postcards from 1 piece (a $2.00 small-batch fee under 10); letters, flyers and pamphlets from 10 (fewer: POST /v1/mail); up to 10,000 per batch. The estimate is the exact amount confirm debits. Sandbox keys get the same numbers with credits_required_cents 0.

Inputs: quantity (required), mail_type (required), color, stock, +5 more. Returns: result

get_agent_inbox_activityA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Read current authorized inbox retrieval receipts and agent-reported outcomes through /v1/agent-inbox/activity. Optional item_id filters one item; needs agent.inbox.read. Sample activity also needs agent.read. A receipt is not proof a worker followed its duties or that staff completed handling. Required scopes: agent.inbox.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: limit, item_id. Returns: result

get_agent_inbox_contextA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Versioned context/reporting reader through /v1/agent-inbox/:id/context, not all-source history. Member-sample context is the original envelope/letter, not later facility captures. Returns versioned duties, ordered OCR and opaque context_version; only the returned context can be acknowledged. Records retrieval, not processing or facility completion. OCR text comes from the mail piece; missing, pending and failed text are reported as such. No provider call or signed image URL. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required). Returns: result

get_agent_inbox_handlingA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Read /v1/agent-inbox/:id/handling capabilities, version and history. Gated private-mail Live and member-sample Sandbox workflow only; no generated fixtures or managed-PMB fallback. Server chooses source and facility. Handling version is distinct from OCR context_version. Vault is unavailable; physical scans retain the existing owner-confirmed workflow. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required). Returns: result

get_agent_inbox_scanA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Read one exact completed facility capture and its saved page OCR through /v1/agent-inbox/:id/scans/:operationId. Sandbox agent key assigned to the member sample only. operationId is the capture's request_id, not a page or bundle ID. Returns scan/ocr page IDs, order, source_sha256 and OCR status (null, queued, processing, ready, needs_review or failed). These captures are separate from seeded sample /context and have no context_version, so they cannot be acknowledged as an outcome. No image URLs, OCR trigger, retry, receipt, email or charge. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required), request_id (required). Returns: result

get_agent_inbox_sourcesA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Read one assigned item's saved page OCR through GET /v1/agent-inbox/:id/sources: exterior, requested-content and original sample_letter pages, each with page_id, request_id/bundle_id, source_sha256 and review flags. Requires assigned-inbox and indexed-source reads enabled for the account, plus agent.inbox.read + agent.read. Field meanings and sort order are in outputSchema. Pages: limit 1–50 (default 25), offset 0–10000; has_more marks more pages. Rate limited; a 429 may carry Retry-After. Creates no acknowledgment version, extraction, receipt, provider call, signed image URL, email or charge. Managed-PMB custody and forwarded email remain separate and excluded. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required), limit, offset. Returns: result

get_batch_mailA
Read-onlyIdempotent
Inspect

A batch with its status (draft → paid → generating → submitted → in_progress → completed | partially_completed | failed; cancelled), recipient summary, pricing (credits_charged, refunded_cents), field_kit, tracking (QR pieces scanned and confirmed), links and the first 50 pieces, each with its qr (code, link, your ref, scans, first_scanned_at, confirmed_at, expires_at; sandbox verify pieces also carry short_code). Poll it after confirm; batch.submitted / batch.completed also arrive on the agent's webhook. Every piece: page with offset and limit, or ask for the pieces scanned, confirmed (verify: the address verified) or not_scanned with qr; REST: GET /v1/batch-mail/{id}/pieces.

Inputs: batch_id (required), qr, limit, offset. Returns: result

get_batch_mail_proofA
Read-onlyIdempotent
Inspect

A proof for the person checking the batch: a one-hour link to a PDF of the template as recipient N's piece prints (their fields filled in, the QR code where it goes, a sample code until the pieces exist, and the insert), then the address label the facility applies at its real size, next to the return address. Also returns the label's lines as text. proof_url opens in any browser or IDE for an hour, with no key, so the person checking the batch can see it before the batch is confirmed. (links.proof on the batch is the API route itself and needs the API key.)

Inputs: batch_id (required), recipient. Returns: result

get_facility_messagesC
Read-onlyIdempotent
Inspect

Read the message thread with your mailbox facility. Facility routing is automatic. Returns messages in reverse chronological order with sender role (member, facility, agent). Supports cursor-based pagination. Automatically marks facility messages as read.

Inputs: limit, before. Returns: result

get_inbound_activityA
Read-onlyIdempotent
Inspect

Read the inbound timeline through GET /v1/inbound-activity: received, action proposed/requested/started/completed/rejected events for this key's visible items, newest first. Optional item_id narrows to one item. A row proves the event was recorded, not OCR accuracy or physical completion. Key scope: inbound.item.read (agent.inbox.read also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: limit, offset, item_id. Returns: result

get_inbound_itemA
Read-onlyIdempotent
Inspect

Read one inbound item through GET /v1/inbound-items/:id: canonical status, sender (staff-entered or exterior OCR guess), mailbox PMB, assigned agent, every saved page (exterior, interior, evidence) with OCR status and text when ready, the full action history, and current scan/forward quotes. signed_urls: true adds one-hour page image URLs on live keys (sandbox keys get url: null); page text is OCR of the mail itself. Key scope: inbound.item.read (agent.inbox.read also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: item_id (required), signed_urls. Returns: result

get_inbound_item_sourcesA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Read saved exterior and authorized completed inside-page evidence through GET /v1/inbound-items/:id/sources. Results are grouped by item.id/reference_code and owner mailbox, then request_id/bundle_id, then page_number (up to 100). owner identifies the member/renter, assigned agent, facility, canonical mailbox record/public ID and PMB allocation/number. PMB numbers are facility-scoped and come from verified mailbox records, not OCR. Each page carries page_id, source_sha256, status and uncertain_spans. Missing, queued, failed, blank and needs_review are distinct; scan completion does not prove readable text. Reads have no context_version or acknowledgment authority. Saved-data reads only: no extraction, retry, signed image URL, facility action, provider call, email or charge. Exterior automation and authorized inside-page extraction have independent activation that these readers leave unchanged. Limit 1–50 (default 25), offset 0–10000; pagination.has_more marks more results. Results are not snapshot-consistent. Rate limited; a 429 may carry Retry-After. No new exterior-ready webhook or unbounded export is promised. Requires saved-document reads enabled for the account, an active eligible managed mailbox, and both inbound.item.read and inbound.item.scan.read, even for empty searches. Live member keys are owner-scoped; Live agent keys see only their current assigned mail. No facility, Sandbox or package.read compatibility access. A member key cannot select agent duties.

Inputs: item_id (required), limit, offset. Returns: result

get_inbound_mailA
Read-onlyIdempotent
Inspect

Get one forwarded inbound mail item with compact draft_context by default. Use this before drafting an outbound reply when you need sender context, reply contact candidates, deadline clues, source files, and thread linkage in one stable payload.

Inputs: inbound_mail_id (required), include, signed_urls. Returns: result

get_inbound_pagesA
Read-onlyIdempotent
Inspect

Read an item's scanned pages through GET /v1/inbound-items/:id/pages: exterior (the envelope, present from arrival) and interior pages (after a completed Open & scan), each with ocr_status, the page's OCR text when ready or needs_review, is_blank and uncertain_spans. signed_urls: true adds one-hour image URLs on live keys (sandbox keys always get url: null). Key scope: inbound.item.read (agent.inbox.read also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: item_id (required), kind, limit, offset, +1 more. Returns: result

get_mailboxA
Read-onlyIdempotent
Inspect

Get your agent's real mailing address: street address + mailbox number (PMB) at the Manhattan Beach, CA facility. The PMB number is assigned after USPS Form 1583 verification. Inbound context from addresses the operator already uses arrives through a separate private intake alias for scans, PDFs, photos, provider notices, and notes.

Inputs: no named parameters. Returns: result

get_mailbox_mdA
Read-onlyIdempotent
Inspect

Returns this agent's MAILBOX.md, the renter's document of mail-handling preferences: the full document text, version number, content hash, and last update timestamp. Its version number is the mailbox_md_version that outbound sends carry for sync verification.

Inputs: no named parameters. Returns: result

get_outbound_mailA
Read-onlyIdempotent
Inspect

Get full details of an outbound mail job including recipient address, mail class, page count, cost breakdown, current status, failure metadata, document metadata, and fulfillment photos. Legacy plaintext records may include direct document URLs; encrypted source documents are retrieved through the REST document endpoint with document.read scope.

Inputs: mail_id (required). Returns: result

get_postal_threadA
Read-onlyIdempotent
Inspect

Get one physical-mail thread with optional timeline events. Use this to explain how a generated outbound mail piece relates back to prior inbound scans and review decisions.

Inputs: thread_id (required), include. Returns: result

get_usageA
Read-onlyIdempotent
Inspect

Get usage summary, billing events, and prepaid credit balance for a time period. Returns itemized events (scans, forwards, mail sends) with costs, period totals, and credits. Defaults to the current billing period if no dates are specified. Use this in Cursor/MCP chat when the human asks how many mailbox.bot credits are left; answer with the prepaid balance and explain that only the signed-in human can add funds.

Inputs: period_end, period_start. Returns: result

list_agent_inboxA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. List/search current assigned postal mail using the same /v1/agent-inbox service. q is literal AND search of IDs, stored metadata and authorized stored OCR (NFKC/lowercase, max 200 characters and 12 terms), before pagination; nonempty q additionally needs agent.read. When indexed-source reads are enabled for the account, indexed search includes saved exterior and requested-content pages, including later sample captures. Optional received_after (inclusive) and received_before (exclusive) require that rollout and both read scopes; they filter the stored intake timestamp, not a date printed on a letter. Sender and address keywords match through q and OCR text; there is no separate sender field. Returns metadata, not text. No fuzzy search or new OCR. Sandbox sees isolated fixtures and enabled assigned member samples; Live sees approved assigned private mail. Pagination uses pagination.next_offset up to offset 10000. Required scopes: agent.inbox.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: q, limit, offset, received_after, +1 more. Returns: result

list_agent_inbox_scansA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. List/search completed facility-captured scan jobs for this assigned member sample through /v1/agent-inbox/:id/scans. Sandbox agent key only, with both read scopes even without q. q is literal AND search of saved capture identifiers and authorized captured-page OCR, normalized NFKC/lowercase, max 200 characters and 12 terms, before pagination. Returns request_id, bundle_id, page count and OCR status, not text. Pagination uses pagination.has_more with offset plus scans.length, up to offset 10000. A completed scan may have null, queued, processing, ready, needs_review or failed OCR; completion is not extraction success. Separate from seeded sample /context; after indexed rollout, item search also includes these captures. No provider, retry, acknowledgment or receipt is triggered. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required), q, limit, offset. Returns: result

list_batch_mailA
Read-onlyIdempotent
Inspect

The caller's batches, newest first. Sandbox keys list sandbox batches only; agent keys see their own agent's batches.

Inputs: limit, offset, status. Returns: result

list_facility_conversationsC
Read-onlyIdempotent
Inspect

List your conversation with your mailbox facility, including its unread message count and last message preview. Facility routing is automatic.

Inputs: limit, offset. Returns: result

list_inbound_forwarding_addressesA
Read-onlyIdempotent
Inspect

List the renter’s private inbound forwarding aliases on forward.mailbox.bot. These are the unique intake email addresses an operator, assistant, provider, or external agent can forward scans, PDFs, photos, provider notices, notes, and other context-aware documents to so mailbox.bot can build OCR-backed inbound context. Forwarding/emailing attachments here initiates OCR/extraction; this tool discovers the address and does not upload files directly into OCR. The alias is member-scoped, so live and sandbox agent keys for the same member resolve to the same intake address.

Inputs: no named parameters. Returns: result

list_inbound_itemsA
Read-onlyIdempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Search managed-renter physical mail through GET /v1/inbound-items?search_mode=documents. q uses literal AND terms across authorized saved metadata, exterior OCR and completed requested inside-page OCR (NFKC/lowercase, max 200 characters and 12 terms). Terms may match different pages of one item. received_after is inclusive and received_before exclusive; these filter intake time, not a printed letter date. status and kind narrow canonical item metadata. Sender and address terms match through q; there are no separate sender fields. Returns item metadata and canonical owner/mailbox identity, not page text. Saved-data reads only: no extraction, retry, signed image URL, facility action, provider call, email or charge. Exterior automation and authorized inside-page extraction have independent activation that these readers leave unchanged. Limit 1–50 (default 25), offset 0–10000; pagination.has_more marks more results. Results are not snapshot-consistent. Rate limited; a 429 may carry Retry-After. No new exterior-ready webhook or unbounded export is promised. Requires saved-document reads enabled for the account, an active eligible managed mailbox, and both inbound.item.read and inbound.item.scan.read, even for empty searches. Live member keys are owner-scoped; Live agent keys see only their current assigned mail. No facility, Sandbox or package.read compatibility access. A member key cannot select agent duties.

Inputs: q, kind, limit, offset, +3 more. Returns: result

list_inbound_mailA
Read-onlyIdempotent
Inspect

List forwarded inbound mail items captured from private forwarding aliases. Default output includes compact draft_context so an LLM or external agent can reason about OCR context, reply contact candidates, deadlines, and thread linkage before generating outbound mail.

Inputs: limit, offset, status, include, +2 more. Returns: result

list_outbound_mailA
Read-onlyIdempotent
Inspect

List outbound mail jobs with status tracking. Returns mail ID, recipient, mail class, status, cost, timestamps, and failure metadata. Filter by status, created_at date range, or search recipient/address/tracking/agent notes.

Inputs: q, limit, offset, status, +3 more. Returns: result

list_postal_threadsA
Read-onlyIdempotent
Inspect

List physical-mail threads that group inbound mail context, human review, and outbound sends. Use this to understand which inbound items and outbound documents belong to the same business workflow.

Inputs: limit, offset, status, include, +1 more. Returns: result

list_webhook_deliveriesA
Read-onlyIdempotent
Inspect

Read the latest 50 deliveries and their exact JSON payloads (identifiers, sender line, dates, matched terms; never page text) for one webhook. HTTP 2xx delivered means receipt, not external-agent processing. No signing secrets or receiver response body. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: endpoint_id (required). Returns: result

list_webhook_endpointsA
Read-onlyIdempotent
Inspect

List the member's webhooks (name, URL, events, keyword rules, status), without secrets. Legacy agent callback settings are separate. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: no named parameters. Returns: result

propose_agent_inbox_handlingA
Idempotent
Inspect

Deprecated: superseded by the tool named in _meta.successor. Still served unchanged during the alias window. Propose through /v1/agent-inbox/:id/handling with dedicated agent.inbox.propose and read scopes. Requests carry confirmed:false and destructive_confirmed:false and the item's current handling version; humans approve before the paired facility queue or alert. Forward requires complete US destination and mail class; discard needs subsequent owner/staff confirmation. Sample open_and_scan is TEST training, not paid OCR. A retry with the identical idempotency_key, body and original expected_version replays safely. Cannot self-approve, dispatch postage, charge, destroy or complete work. Required scopes: agent.inbox.read, agent.read, agent.inbox.propose. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required), request (required), idempotency_key (required). Returns: result

propose_mailbox_md_editAInspect

Propose a change to the renter's MAILBOX.md, with a reason. The renter sees the suggestion in their dashboard and can accept, reject, or modify it.

Inputs: reason (required), suggested_content (required). Returns: result

quote_inbound_forwardA
Read-onlyIdempotent
Inspect

Price every forwarding class for an item to a US ZIP through GET /v1/inbound-items/:id/forward-quote: cost_cents = carrier postage from the facility plus handling, with the breakdown, tracking notes and bill timing. A proposal for the chosen class echoes it as action.expected_quote { cost_cents, billable, max_cents: cost_cents }; on a sample or test item cost_cents is 0 and live_cost_cents shows the real price. Key scope: inbound.item.read (agent.inbox.read also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: item_id (required), postal_code (required). Returns: result

quote_outbound_mailA
Read-onlyIdempotent
Inspect

Price a letter before you have the document. Takes the mail class, page count, color and, for FedEx, the recipient ZIP; returns mailbox.bot's published price for a new account with its breakdown, in US dollars. Needs no account and creates nothing. The dry run of the real document is the exact price for an account.

Inputs: mail_class (required), color, page_count, recipient_zip, +1 more. Returns: result

replay_webhook_deliveryA
Idempotent
Inspect

Explicitly retry a failed delivery after correcting the receiver. Preserves event_id for deduplication and rechecks the current endpoint revision. Does not replay successful deliveries or approve facility handling. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: delivery_id (required), endpoint_id (required), idempotency_key (required), expected_revision (required). Returns: result

report_agent_inbox_outcomeA
Idempotent
Inspect

Deprecated: no successor; retired when the alias window closes. Still served unchanged until then. Report actual external-worker processing through /v1/agent-inbox/:id/acknowledgments. Takes the exact fetched context_version, outcome and non-sensitive run_id in request. Needs agent.inbox.report plus both read scopes. A retry with the same idempotency_key and request replays the stored result. Reports cannot approve or complete facility handling. Required scopes: agent.inbox.read, agent.read, agent.inbox.report. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: item_id (required), request (required), idempotency_key (required). Returns: result

request_inbound_actionA
Idempotent
Inspect

Propose a scan, forward or discard through POST /v1/inbound-items/:id/actions. Agent keys only; the proposal always waits for the owner's approval (awaiting_member_approval: true) and never charges credits or moves mail by itself. Takes the item's current version as action.expected_version, its current quote as action.expected_quote (the item's quotes.scan, or the forward quote for the chosen class; required for scan and forward, refused with the fresh quote otherwise), an idempotency_key that makes retries safe, and for forward a complete US destination and mail_class (first_class requires untracked_acknowledged: true; packages cannot be forwarded yet). Forward destinations and discard proposals are checked against the agent's inbound_policy server-side. One open action per item. Key scope: inbound.item.action (agent.inbox.propose also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: action (required), item_id (required), idempotency_key (required). Returns: result

rotate_webhook_endpoint_secretA
DestructiveIdempotent
Inspect

Rotate the signing secret; requires confirm_rotation:true. Old signatures overlap for 24 hours while the receiver's secure secret configuration is updated. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: endpoint_id (required), idempotency_key (required), confirm_rotation (required), expected_revision (required). Returns: result

search_inbound_itemsA
Read-onlyIdempotent
Inspect

List and search inbound mail through GET /v1/inbound-items, the same list and search the dashboard shows: newest first, with public status, kind (letter | package), the sender line as read from the envelope, the envelope page and any open action. q is a literal AND search (max 12 terms, 200 characters) over the reference, the sender and the OCR text of every readable page, envelope or contents; status, kind, received_after and received_before (intake time) narrow it. Sandbox keys (sk_agent_test_) see the account's sample letter from Mojave Land Partners (q: "Mojave" finds it); an empty result carries a notice explaining why. Key scope: inbound.item.read (agent.inbox.read also works). Member keys read their own live items; agent keys read items bound or assigned to them, in their key's environment. Proposals are agent-only and always wait for the owner: they never charge credits, buy postage, open, forward or discard anything by themselves. Forward destinations and discard proposals are checked against the agent's structured inbound policy. Image URLs are never issued to agents.

Inputs: q, kind, limit, offset, +3 more. Returns: result

seed_agent_inbox_sandboxA
Idempotent
Inspect

Deprecated: no successor; retired when the alias window closes. Still served unchanged until then. Explicitly seed an isolated provider-free two_page_letter or needs_review fixture through /v1/agent-inbox/sandbox/seed. Sandbox agent key only. Exact retry key/scenario reuses the fixture. No member sample, real mail, model call, email, facility task, PMB or charge; these fixtures test reads/reports, not handling. Required scopes: agent.inbox.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST.

Inputs: scenario (required), idempotency_key (required). Returns: result

send_facility_messageAInspect

Send a message to the operator at your mailbox facility. Facility routing is automatic. Messages appear in the shared conversation visible to you, the renter, and the facility. Optionally link the message to a specific package or action request for context.

Inputs: body (required), package_id, action_request_id. Returns: result

send_outbound_mailA
Destructive
Inspect

Submit a document for printing and postal mailing by the facility. Supported formats: PDF, DOCX, JPG, PNG, TXT, CSV. The document is stored securely and printed by the facility operator. USPS First-Class Mail has a published $2.00 one-page baseline. Extra pages add configured printing plus any postage increase from weight. If an account's normal first-page formula is lower, cost_breakdown.first_class_baseline_adjustment_cents itemizes the difference separately from carrier postage. Published default pricing for other classes is $2.50 handling + $0.40/page B&W printing + carrier postage/rate; FedEx Express Saver, 2Day and Overnight are $5.00 below their otherwise-calculated carrier baselines: fedex_express itemizes service_adjustment_cents: -500, FedEx 2Day applies a fixed $13.00 customer price reduction (service_adjustment_cents: -1300), and FedEx Overnight adds a fixed $13.00 adjustment (service_adjustment_cents: 1300); fedex_ground carries a fixed $5.00 markup (service_adjustment_cents: 500). Color pages cost $0.70/page total by default before handling and postage: $0.40/page base B&W printing plus a $0.30/page additive color upgrade. In cost_breakdown, color_printing_per_page_cents is the total color-page printing price (70 cents by default), while color_surcharge_per_page_cents is the additive upgrade only (30 cents by default). Account-specific pricing can override these defaults; cost_breakdown is authoritative. IMPORTANT: With a production key (sk_agent_), this spends the human member's prepaid mailbox.bot credits. Agents never access Stripe, card data, or Auto-Fill settings. If the signed-in human separately enabled Agent Auto-Fill, an eligible live order may trigger a bounded server-managed reload. Use dry_run=true to preview required credits before committing, or requires_approval=true to defer the credit debit until human approval. Sandbox keys (sk_agent_test_) skip credit debits and facility fulfillment. Responses include human_review with send-to address, return address, mail class, document details, preview URL when available, cost, safeguards, and next step; show that to the human before live funded sends. tracking_number is required for priority, certified, certified_return_receipt, FedEx, and UPS mail classes. USPS first_class does not include carrier tracking by default; tracking_number may be null. Optionally attach the outbound mail to inbound context with inbound_capture_id and postal_mail_thread_id so lineage stays explicit. Explicit Business mail runs are REST-only.

Inputs: recipient_zip (required), recipient_city (required), document_base64 (required), recipient_line1 (required), +27 more. Returns: result

send_text_letterA
Destructive
Inspect

Mail a letter written as plain text, for letters composed in chat. mailbox.bot sets the text exactly as given on US Letter pages (Times 12 pt, 1-inch margins; no letterhead, logo or signature image) and submits it through the same outbound mail service, so the same scopes, approval, cost caps and proof apply and staff print and mail it. dry_run: true returns the exact cost without sending; with a live key this spends the account owner's prepaid credits, and a key that requires approval holds the letter until the owner approves it in the dashboard. Requires the current mailbox_md_version. Up to 15,000 characters of Latin text; plain text only, with no PDF, letterhead or images.

Inputs: mail_class (required), letter_text (required), recipient_zip (required), recipient_city (required), +19 more. Returns: result

test_webhook_endpointA
Idempotent
Inspect

Queue a synthetic webhook.test delivery (no item) to check the receiver and its signature verification. Queue admission is not HTTP delivery; the delivery log shows the result. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: endpoint_id (required), idempotency_key (required), expected_revision (required). Returns: result

test_webhook_endpoint_with_sampleA
Idempotent
Inspect

Run the Sample test: opens and scans the member's Mojave sample letter if needed (free, fictional), delivers its real inbound.pages_ready / inbound.keywords_matched events to this webhook, and returns a verdict computed from the receiver's actual HTTP result plus a next step. success proves transport receipt and, when keywords are configured, a keyword match; it never proves agent processing. No mail, charge, email or facility work. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: endpoint_id (required), idempotency_key (required), expected_revision (required). Returns: result

update_webhookB
Idempotent
Inspect

Configure webhook endpoint URL and event subscriptions for real-time notifications. Outbound events are mail.pending_approval, mail.submitted, mail.ready, mail.mailed, mail.delivered, mail.failed, and mail.cancelled. Canonical physical-custody events are inbound.received and inbound.scan_available. The endpoint needs HTTPS and a 2xx response within 10 seconds.

Inputs: enabled, event_types, webhook_url. Returns: result

update_webhook_endpointA
DestructiveIdempotent
Inspect

Update name, URL, events, keyword rules or active/paused status with expected_revision. Agent/environment scope cannot be changed. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. A repeated idempotency_key with the same input replays the stored result.

Inputs: endpoint_id (required), idempotency_key (required), expected_revision (required), url, +4 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 55 tools

    Disambiguation2/5

    The surface contains two parallel inbound families (forwarded-email inbound mail vs. physical inbound items) with near-identical names (list_inbound_mail vs. list_inbound_items, get_inbound_mail vs. get_inbound_item), plus ten deprecated *_agent_inbox_* aliases that duplicate what the inbound tools now do. Webhook handling is also split between update_webhook and the create/update_webhook_endpoint family, leaving agents to guess which is authoritative.

    Naming Consistency4/5

    Almost everything follows a predictable snake_case verb_noun pattern (list_webhook_endpoints, create_batch_mail, get_outbound_mail, rotate_webhook_endpoint_secret). Minor deviations exist: propose_mailbox_md_edit inverts noun ordering and update_webhook lacks the _endpoint suffix used by its siblings.

    Tool Count2/5

    55 tools is very heavy for a mailbox service, and roughly ten of them are explicitly deprecated alias-window tools that add clutter without new capability. The domain is genuinely broad (outbound, batch, webhooks, inbound, facility messaging), but the set is well past the point where an agent can hold it in working memory.

    Completeness1/5

    Coverage is broad — mailbox identity, outbound lifecycle (send/list/get/cancel/test), batch lifecycle (create/estimate/confirm/get/proof/advance), webhooks (CRUD/test/deliveries/replay/rotate), inbound items, quoting, actions, threads, and usage. Remaining gaps are minor (e.g., no explicit delete for webhook endpoints or outbound records), so an agent can complete most workflows.

    Maintenance

    ActivityMaintained
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      A
      quality
      D
      maintenance
      An MCP server for semantic search and retrieval of indexed Slack messages stored in Qdrant using Cohere reranking via AWS Bedrock. It enables users to search through Slack history, retrieve full message threads, and access channel or user statistics through natural language.
      5
      -
    • A
      license
      B
      quality
      B
      maintenance
      Official MCP server for Shipmail, enabling agents to manage domains, mailboxes, messages, threads, webhooks, and suppressions via natural language.
      100
      837 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server that lets AI agents create reviewable physical mail drafts, validate quotes, and pay for postage via MPP or x402 protocols.
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An open-source MCP server for sending physical mail (letters, postcards, certified mail) directly from AI agents, with per-piece payment and no account signup needed.
      MIT