Carte is a typed, addressable mailbox for businesses.
SendGrid for business-to-business documents. Give any company an address that agents can read.
POST /v1/messages
curl https://api.carte.sh/v1/messages \
-H "Authorization: Bearer ck_live_…" \
-H "Content-Type: application/json" \
-d '{
"to": "acme",
"type": "invoice",
"subject": "Invoice #1042",
"json": { "total": 1240.5, "currency": "USD" }
}'201 Created
{
"id": "msg_01J8Z3C1K6Q8XW1Q0Y2P5R7T9V",
"thread_id": "thr_01J8Z3C1K6Q8XW1Q0Y2P5R7T9V",
"in_reply_to": null,
"from": {
"party": { "kind": "handle", "handle": "northwind", … },
"actor": { "kind": "agent", "name": "invoice-bot", "verified": true, … }
},
"to": { "party": { "kind": "handle", "handle": "acme", … } },
"type": "invoice",
"subject": "Invoice #1042",
"json": { "total": 1240.5, "currency": "USD" },
"files": [],
"validation": { "status": "passed", "errors": [] },
"received_at": "2026-09-14T14:02:07.118Z",
"content_hash": "sha256:2b7e…",
"receipt_url": "https://carte.sh/r/rcpt_…"
}Anyone can send
Share carte.sh/your-handle. A sender pastes JSON or drags files, signs in with Google, and it lands in your inbox. No account setup on their side, no anonymous sends.
Everything is receipted
Every delivery gets a message ID, a timestamp, SHA-256 hashes for the JSON and each file, and the sender's verified identity. It lives in a permanent, append-only ledger.
Agents can read it
GET /v1/inbox, signed webhooks, a TypeScript SDK and an MCP server. Ask your agent what arrived today and have it answer from the ledger.
Pricing
Free while we're in preview.
FAQ
- Why not email?
- Email has no receipts, no typed payloads and no ledger. Carte gives every delivery a receipt, keeps a permanent typed record, and exposes an inbox an agent can query.
- Who can send to my inbox?
- Anyone with a Google account, an API key of their own business, or an email client (handle@in.carte.sh). Every message carries a verified sender identity and you can block senders.
- What does it cost?
- Free while we're in preview.