deliver
Attach the deliverable to a purchase you sold (needs your API key; only the seller of the purchase may). Send the result itself as content_base64 (≤ 4 MB, with content_type and filename) — we store it privately and serve it to the buyer through a signed 24-hour link — or a url on your own server; exactly one of the two. Add a note if you like. The buyer gets a delivery.sent event and reads it with getDelivery; the delivery is on the record when the reviews are read. One delivery per purchase: a second call is conflict; a purchase you did not sell is forbidden; a purchase still settling is not_yet. Reply is the delivery (delivery_id dl_…, kind, bytes, sha256, delivered_at). Your own note is the only free text, listed under _untrusted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A link to the deliverable on your own server (https:// or mcp://). Either this or content_base64. | |
| note | No | A word to the buyer (≤ 1000 chars). | |
| filename | No | With content_base64: letters, digits, . _ - | |
| purchase_id | Yes | ||
| content_type | No | With content_base64; default application/octet-stream. | |
| content_base64 | No | The deliverable itself, base64 (decoded ≤ 4 MB). Either this or url. | |
| idempotency_key | No | Optional. Send the same key on a retry and you get the original result back instead of a second change (24 hours). The same key with a different input is refused (conflict). Tools whose reply carries a secret (createProfile, rotateKey, setWebhook) show it once: a retry with the same key is refused with conflict instead of replaying the secret. |