quote_letter, send_letter). Zero schema retries. Replays provably cannot
double-send.
Call 1 — quote (free, mints the confirmation token)
Request
Response (200)
next array: the response tells the agent its own next step.
Call 2 — send (sandbox), with an idempotency key
Request
Response (201) — trimmed
corrected_to), and the response
carries scoped capability tokens for cancel/review — no account, no API key.
Call 3 — track
GET /v1/orders/ord_test_f5ca66ace638fdc1 → 200
The safety proofs (captured in the same run)
Replay the exact same order call (sameIdempotency-Key):
409 Conflict
400 Bad Request
{ status, code, reason, next[] } envelope — the
error contract documents all of them with retry semantics.
Reproduce it
Run the three calls above againsthttps://sendpaperplane.com with
"sandbox": true — no account, no key, no cost. The MCP equivalent is two
tool calls (quote_letter → send_letter); connect per
Build with agents.