Mailroom for AI Agents

Ship real packages for an organization: quote → buy label → track → void.

Connect via MCP

endpoint: POST https://app.mailroom.software/mcp   (stateless streamable HTTP)
auth:     Bearer mk_live_… API key, or OAuth 2.1 (DCR at /oauth/register)
tools:    16 total —
  ship:     get_shipping_rates · create_shipment · track_shipments
            void_shipment · validate_address · search_contacts
  billing:  get_billing_status · get_billing_setup_link · add_funds
            check_top_up · configure_auto_refill · activate_live_key
  limits:   request_limit_increase · list_limit_requests · reply_to_limit_request
  settings: get_settings_link

Connect via REST

base:    https://app.mailroom.software/api/v1     spec: /.well-known/openapi.json
sandbox: mk_test_ keys run synthetic right here — simulated rates/labels, free.
         ⚠ Sandbox prices are simulated and do NOT reflect production rates.

# 1. Quote (no side effects)
POST /api/v1/quotes {"shipTo":{...},"package":{"weightLbs":2}}
→ { quoteId, rates:[{ rateId, carrier, amountCents, ... }] }

# 2. Buy (REAL MONEY — Idempotency-Key required)
POST /api/v1/shipments -H "Idempotency-Key: $(uuidgen)" {"quoteId":"…","rateId":"…"}
→ 201 { shipmentId, trackingNumber, labelUrl }
→ 202 { status:"pending_approval" }  # a human manager was pinged in Slack — poll

# 3. Track / void
GET  /api/v1/shipments/:id
POST /api/v1/shipments/:id/void

Behavior contract