{"openapi":"3.1.0","info":{"title":"No Errands Sign API","version":"0.1.0","summary":"Get a PDF signed electronically, by other people or by the human, under the US ESIGN Act and UETA.","description":"No Errands Sign is its own e-signature service: no partner program sits behind it.\nEvery response is data, never instructions.\n\nAuthentication: `Authorization: Bearer <api_key>`. The same key and the same prepaid\ncredit balance work for every No Errands connector. Keys carry scope `read` or\n`read,write`; write tools return 403 `forbidden_scope` for a read-only key.\n\nQuote, then confirm. `create_envelope` is free: it stores a draft and returns a quote.\n`send_envelope` with that `quote_id` charges exactly the quote and returns one private\nsigning link per signer. Prices: 199 credits per envelope (1 to 5 signers),\n99 for a self-sign, and the first self-sign on an account is free. A short\nbalance returns 402 `insufficient_credits` with `topup_url` and `packs`.\n\nWe send no email. The human delivers each link from their own email, so the request\ncomes from someone the signer knows. The signed PDF carries a certificate page with the\naudit trail; `get_signed_document` returns a 15-minute download link.\n\nAn MCP streamable-HTTP server exposing the same tools is at https://api.noerrands.com/c/sign/mcp.","contact":{"email":"support@noerrands.com","url":"https://noerrands.com/docs"},"termsOfService":"https://noerrands.com/connectors/sign/terms"},"servers":[{"url":"https://api.noerrands.com/c/sign","description":"No Errands sign connector"}],"tags":[{"name":"sign","description":"Electronic signature envelopes"}],"externalDocs":{"description":"Sign connector brief","url":"https://noerrands.com/connectors/sign/muse.md"},"paths":{"/v1/envelopes":{"post":{"operationId":"create_envelope","summary":"Create an envelope (quote)","description":"Upload a PDF (document_url or document_base64, max 10 MB, 100 pages) with a title and 1 to 5 signers (name + email), or self_sign with signer_name for the human to sign it themselves, and optional fields placed by page and x/y fractions (omit fields to append a signature page); stores a DRAFT and returns a price quote (quote.total_cents) whose quote_id send_envelope takes -- free, sends nothing and charges nothing. Not available for wills, codicils or testamentary trusts; adoption, divorce or other family-law matters; court orders or court documents; utility shut-off, eviction, foreclosure, repossession or insurance-cancellation notices; product-recall notices; hazardous-materials papers; negotiable instruments; or anything that must be notarized or witnessed.","x-muse-classification":{"class":"write","label":"Write","side_effects":"Stores the uploaded PDF and signers as a draft envelope with a price quote. Nothing is sent or charged.","cost":"Free","approval":"None beyond the human's request; the document must not be an excluded type.","key_scope":"write","rate_limit":"30 envelopes an hour per account","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","title":"EnvelopeDraft","properties":{"envelope_id":{"type":"string"},"status":{"const":"draft"},"title":{"type":"string"},"mode":{"type":"string","enum":["request","self"]},"pages":{"type":"integer"},"placement":{"type":"string","enum":["fields","signature_page"]},"document_sha256":{"type":"string"},"signers":{"type":"array","items":{"type":"object","properties":{"signer_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"order":{"type":"integer"}},"required":["signer_id","name","email","order"],"additionalProperties":false}},"quote":{"type":"object","title":"EnvelopeQuote","properties":{"quote_id":{"type":"string","description":"Pass to send_envelope to accept this price."},"total_cents":{"type":"integer","minimum":0,"description":"Exactly what send_envelope will charge."},"breakdown":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string"},"cents":{"type":"integer"}},"required":["item","cents"],"additionalProperties":false}},"expires_at":{"type":"string","format":"date-time"},"free_self_sign":{"type":"boolean","description":"True when this is the account's free self-sign."}},"required":["quote_id","total_cents","breakdown","expires_at","free_self_sign"],"additionalProperties":false},"expires_in_days":{"type":"integer"},"retention_days":{"type":"integer"}},"required":["envelope_id","status","title","mode","pages","placement","document_sha256","signers","quote","expires_in_days","retention_days"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"CreateEnvelopeRequest","properties":{"title":{"type":"string","maxLength":200,"minLength":1,"description":"What the document is, shown to every signer, e.g. \"Lease for 12 Oak St\"."},"document_url":{"type":"string","maxLength":2048,"format":"uri","description":"HTTPS URL of the PDF. Exactly one of document_url or document_base64. At most 10 MB and 100 pages, not password-protected."},"document_base64":{"type":"string","maxLength":13981116,"description":"The PDF itself, base64 (a data:application/pdf;base64, prefix is fine). Exactly one of document_url or document_base64."},"self_sign":{"type":"boolean","default":false,"description":"True when the human is signing this themselves (for example a form you filled in). Give signer_name, not signers."},"signer_name":{"type":"string","maxLength":100,"minLength":1,"description":"self_sign only: the human's full name. Required there."},"signer_email":{"type":"string","maxLength":254,"format":"email","description":"self_sign only: the human's email for the certificate. Defaults to the account email."},"signers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":100,"minLength":1,"description":"The signer's full name, as it should appear on the certificate."},"email":{"type":"string","maxLength":254,"minLength":3,"format":"email","description":"The email address the human will send this signer's link to. We do not email it."},"order":{"type":"integer","minimum":1,"maximum":5,"description":"Optional signing order. Lower signs first, equal orders sign in parallel. Omit on every signer for everyone at once."}},"required":["name","email"],"additionalProperties":false},"description":"1 to 5 people who must sign, in order of position. Omit for self_sign."},"fields":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["signature","initials","date","text"],"description":"signature and initials take the signer's signature; date is filled with the signing date; text asks the signer to type a value (label says what)."},"signer":{"type":"integer","minimum":1,"maximum":5,"default":1,"description":"Which signer fills this field: their 1-based position in signers. Default 1."},"page":{"type":"integer","minimum":1,"maximum":100,"description":"1-based page number."},"x":{"type":"number","minimum":0,"maximum":1,"description":"Left edge of the box as a fraction of the page width, from the left (0..1)."},"y":{"type":"number","minimum":0,"maximum":1,"description":"Top edge of the box as a fraction of the page height, from the TOP (0..1)."},"width":{"type":"number","minimum":0.01,"maximum":1,"description":"Box width as a fraction of the page width. Defaults by type."},"height":{"type":"number","minimum":0.01,"maximum":1,"description":"Box height as a fraction of the page height. Defaults by type."},"label":{"type":"string","maxLength":60,"description":"Text fields: what to ask the signer for, e.g. \"Job title\"."},"required":{"type":"boolean","description":"Text fields only. Default true."}},"required":["type","page","x","y"],"additionalProperties":false},"description":"Optional, up to 100. Where each signer signs, as page + x/y fractions from the top-left. Omit to append a signature page with one block per signer instead. With fields, every signer needs at least one signature field."},"message":{"type":"string","maxLength":1000,"description":"Optional note shown to signers above the document."},"expires_in_days":{"type":"integer","minimum":1,"maximum":90,"default":30,"description":"Days the signing links stay open after sending. Default 30."},"retention_days":{"type":"integer","enum":[30,90,365,1095],"default":365,"description":"Days we keep the finished document after completion before deleting it: 30, 90, 365 (default) or 1095. The human can delete it any time sooner."}},"required":["title"],"additionalProperties":false}}}}},"get":{"operationId":"list_envelopes","summary":"List envelopes","description":"List this account's envelopes newest first, optionally by status, with a cursor for paging; free, read-only, and not consequential.","x-muse-classification":{"class":"read","label":"Read","side_effects":"None.","cost":"Free","approval":"None: safe to call without asking.","key_scope":"read","idempotent":true},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"envelopes":{"type":"array","items":{"type":"object","properties":{"envelope_id":{"type":"string"},"title":{"type":"string"},"mode":{"type":"string","enum":["request","self"]},"status":{"type":"string","enum":["draft","sending","sent","completing","completed","declined","voided","expired"]},"created_at":{"type":"string"},"sent_at":{"type":"string"},"completed_at":{"type":"string"},"expires_at":{"type":"string"},"delete_after":{"type":"string","description":"When we delete the documents and personal data."},"credits_charged_cents":{"type":"integer"},"signers_total":{"type":"integer"},"signers_signed":{"type":"integer"}},"required":["envelope_id","title","mode","status","created_at","credits_charged_cents","signers_total","signers_signed"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}},"required":["envelopes","next_cursor"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"next_cursor from the previous page."},"description":"next_cursor from the previous page."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","sending","sent","completing","completed","declined","voided","expired"]}}]}},"/v1/envelopes/{envelope_id}/send":{"post":{"operationId":"send_envelope","summary":"Send an envelope","description":"Confirm a quote and open the envelope for signing; CONSEQUENTIAL and charged exactly the quoted amount (199 credits per envelope, 99 for a self-sign, the account's first self-sign free). Sensitive write: it requires the human's approval of the signers and that price. Returns one private signing_url per signer. No email is sent by this service: each link reaches its signer only when it is delivered to them, for example from the human's own email connector. Links are shown once; remind_signer issues a fresh one.","x-muse-classification":{"class":"sensitive_write","label":"Sensitive write","side_effects":"Opens the envelope for signing, issues one private signing link per signer and debits the quoted credits.","cost":"199 credits per envelope, 99 for a self-sign (the account's first self-sign free)","approval":"Explicit approval of the signers and the quoted price.","key_scope":"write","rate_limit":"30 sends an hour per account","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","title":"EnvelopeSent","properties":{"envelope_id":{"type":"string"},"status":{"const":"sent"},"credits_charged_cents":{"type":"integer"},"balance_cents":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"signers":{"type":"array","items":{"type":"object","properties":{"signer_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"order":{"type":"integer"},"signing_url":{"type":"string","format":"uri","description":"This signer's private link. Send it to this signer only. Shown once; remind_signer issues a new one."}},"required":["signer_id","name","email","order","signing_url"],"additionalProperties":false}}},"required":["envelope_id","status","credits_charged_cents","balance_cents","expires_at","signers"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"insufficient_credits, with required_cents, balance_cents, topup_url and packs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"SendEnvelopeRequest","properties":{"quote_id":{"type":"string","maxLength":64,"description":"The quote_id create_envelope returned, which the human approved."}},"required":["quote_id"],"additionalProperties":false}}}}}},"/v1/envelopes/{envelope_id}":{"get":{"operationId":"get_envelope","summary":"Get envelope","description":"Look up one envelope with each signer's status (pending, viewed, signed, declined), whose turn it is, and the event history; free and read-only; it shows whether everyone has signed. It never returns signing links.","x-muse-classification":{"class":"read","label":"Read","side_effects":"None.","cost":"Free","approval":"None: safe to call without asking.","key_scope":"read","idempotent":true},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","title":"Envelope","properties":{"envelope_id":{"type":"string"},"title":{"type":"string"},"mode":{"type":"string","enum":["request","self"]},"status":{"type":"string","enum":["draft","sending","sent","completing","completed","declined","voided","expired"]},"created_at":{"type":"string"},"sent_at":{"type":"string"},"completed_at":{"type":"string"},"expires_at":{"type":"string"},"delete_after":{"type":"string","description":"When we delete the documents and personal data."},"credits_charged_cents":{"type":"integer"},"pages":{"type":"integer"},"placement":{"type":"string","enum":["fields","signature_page"]},"refunded_cents":{"type":"integer"},"document_sha256":{"type":"string"},"final_sha256":{"type":"string","description":"SHA-256 of the finished PDF, certificate included."},"erased":{"type":"boolean","description":"True once the documents and personal data were deleted."},"signers":{"type":"array","items":{"type":"object","properties":{"signer_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"order":{"type":"integer"},"status":{"type":"string","enum":["pending","viewed","signed","declined"]},"viewed_at":{"type":"string"},"signed_at":{"type":"string"},"declined_at":{"type":"string"},"decline_reason":{"type":"string"}},"required":["signer_id","name","email","order","status"],"additionalProperties":false}},"next_signers":{"type":"array","items":{"type":"string"},"description":"signer_ids whose turn it is now."},"events":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string"},"event":{"type":"string"},"signer_id":{"type":"string"}},"required":["at","event"],"additionalProperties":false}}},"required":["envelope_id","title","mode","status","created_at","credits_charged_cents","pages","placement","refunded_cents","document_sha256","erased","signers","next_signers","events"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."}]},"delete":{"operationId":"delete_envelope","summary":"Delete an envelope","description":"Delete one envelope's documents and personal data now, whatever its status (a live envelope is voided first, refunded only if nobody opened it); free, CONSEQUENTIAL and irreversible -- the signed copy is gone for good. Sensitive write: it requires the human's confirmation that any copy they need is saved and that they want it deleted.","x-muse-classification":{"class":"sensitive_write","label":"Sensitive write","side_effects":"Deletes the envelope's documents, signatures and personal data now (voiding a live envelope first). Irreversible.","cost":"Free","approval":"Explicit confirmation that the human has saved any copy they need and wants it deleted.","key_scope":"write","idempotent":true},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"envelope_id":{"type":"string"},"deleted":{"const":true},"refunded_cents":{"type":"integer"}},"required":["envelope_id","deleted","refunded_cents"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."}]}},"/v1/envelopes/{envelope_id}/signers/{signer_id}/link":{"post":{"operationId":"remind_signer","summary":"Remind a signer","description":"Issue a fresh signing link for one signer who has not signed yet, for a reminder sent from the human's own email; free, and the signer's previous link stops working at once.","x-muse-classification":{"class":"write","label":"Write","side_effects":"Issues a fresh signing link for one signer; that signer's previous link stops working.","cost":"Free","approval":"None beyond the human's request.","key_scope":"write","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"envelope_id":{"type":"string"},"signer_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"signing_url":{"type":"string","format":"uri"}},"required":["envelope_id","signer_id","name","email","signing_url"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."},{"name":"signer_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The signer id, \"sgr_...\" from create_envelope or get_envelope."},"description":"The signer id, \"sgr_...\" from create_envelope or get_envelope."}]}},"/v1/envelopes/{envelope_id}/void":{"post":{"operationId":"void_envelope","summary":"Void an envelope","description":"Cancel a draft or sent envelope so every signing link stops working; free, CONSEQUENTIAL and irreversible. Sensitive write: it requires the human's approval to void. The charge is refunded in full only if no signer has opened their link yet.","x-muse-classification":{"class":"sensitive_write","label":"Sensitive write","side_effects":"Cancels the envelope so every signing link stops working; refunded in full only if no signer opened a link. Irreversible.","cost":"Free","approval":"Explicit approval to void that envelope.","key_scope":"write","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"envelope_id":{"type":"string"},"status":{"const":"voided"},"refunded_cents":{"type":"integer"},"balance_cents":{"type":"integer"}},"required":["envelope_id","status","refunded_cents","balance_cents"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":200,"description":"Optional, shown to signers who open a dead link."}},"required":[],"additionalProperties":false}}}}}},"/v1/envelopes/{envelope_id}/document":{"get":{"operationId":"get_signed_document","summary":"Get signed document","description":"Mint a download link, valid for 15 minutes and needing no key, for the finished PDF of a completed envelope -- every signature stamped in plus a certificate page with the audit trail -- and return it with the PDF's SHA-256. Free. Each call creates a new link that anyone holding it can use until it expires.","x-muse-classification":{"class":"write","label":"Write","side_effects":"Mints a download link for the signed PDF that works for 15 minutes without a key.","cost":"Free","approval":"None beyond the human's request.","key_scope":"read","rate_limit":"60 links an hour per account","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"envelope_id":{"type":"string"},"download_url":{"type":"string","format":"uri","description":"Works for 15 minutes; no key needed."},"expires_at":{"type":"string","format":"date-time"},"final_sha256":{"type":"string"},"bytes":{"type":"integer"}},"required":["envelope_id","download_url","expires_at","final_sha256","bytes"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"envelope_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"description":"The envelope id, \"sg_...\" from create_envelope."},"description":"The envelope id, \"sg_...\" from create_envelope."}]}},"/v1/balance":{"get":{"operationId":"get_balance","summary":"Get balance","description":"Report the prepaid credit balance in cents, which pays for envelopes and every other No Errands connector, plus the top-up link and the credit packs on offer; free, read-only, and not consequential.","x-muse-classification":{"class":"read","label":"Read","side_effects":"None.","cost":"Free","approval":"None: safe to call without asking.","key_scope":"read","idempotent":true},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"balance_cents":{"type":"integer"},"currency":{"type":"string","enum":["usd"]},"topup_url":{"type":"string","format":"uri"},"packs":{"type":"array","description":"Everything that can be bought, cheapest first. The first entry is a one-off single letter; every pack after it credits more than it costs, so quote both numbers to the human.","items":{"type":"object","title":"CreditPack","description":"A buyable amount: what it costs, what it credits, and the bonus in free letters. The cheapest is the one-off single letter, which has no bonus.","properties":{"pay_cents":{"type":"integer","description":"What the human pays, in cents."},"credits_cents":{"type":"integer","description":"What lands in the balance, in cents. Larger than pay_cents for a pack; equal for the one-off letter."},"free_letters":{"type":"integer","description":"Whole one-page letters the bonus alone pays for. Say it to the human as \"three free letters\". Zero for the one-off letter."},"label":{"type":"string","description":"What to call it to the human: \"One letter\" for the one-off purchase, \"$25 pack\" for a pack."}},"required":["pay_cents","credits_cents","free_letters","label"],"additionalProperties":false}}},"required":["balance_cents","currency","topup_url","packs"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/topups":{"post":{"operationId":"create_topup_link","summary":"Create top-up link","description":"Create a Stripe Checkout link to buy credits (amount_cents: the one-off single letter or a credit pack, which credits more than it costs), and report every pack. Creates a Stripe Checkout session but charges nothing: money moves only if the human opens the link and pays, and the credit lands when Stripe confirms the payment. Free.","x-muse-classification":{"class":"write","label":"Write","side_effects":"Creates a Stripe Checkout session. No money moves and no credit is added unless the human opens the link and pays.","cost":"Free to call; the human pays only the amount they choose at checkout.","approval":"None to create the link; the human approves the payment itself on Stripe's checkout page.","key_scope":"read","idempotent":false},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"checkout_url":{"type":"string","format":"uri"},"expires_at":{"type":"string","format":"date-time"},"packs":{"type":"array","description":"Everything that can be bought, cheapest first. The first entry is a one-off single letter; every pack after it credits more than it costs, so quote both numbers to the human.","items":{"type":"object","title":"CreditPack","description":"A buyable amount: what it costs, what it credits, and the bonus in free letters. The cheapest is the one-off single letter, which has no bonus.","properties":{"pay_cents":{"type":"integer","description":"What the human pays, in cents."},"credits_cents":{"type":"integer","description":"What lands in the balance, in cents. Larger than pay_cents for a pack; equal for the one-off letter."},"free_letters":{"type":"integer","description":"Whole one-page letters the bonus alone pays for. Say it to the human as \"three free letters\". Zero for the one-off letter."},"label":{"type":"string","description":"What to call it to the human: \"One letter\" for the one-off purchase, \"$25 pack\" for a pack."}},"required":["pay_cents","credits_cents","free_letters","label"],"additionalProperties":false}}},"required":["checkout_url","expires_at","packs"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount_cents":{"type":"integer","enum":[249,1000,2500,5000],"description":"What to charge, in cents: the one-off single letter or one of the credit packs, as its pay_cents. A pack credits more than it costs; see packs."}},"required":["amount_cents"],"additionalProperties":false}}}}}},"/v1/me":{"delete":{"operationId":"delete_my_data","summary":"Delete my data","description":"Erase the personal data this account holds: every stored recipient and sender address, fax number, booking customer and restaurant-table diner is redacted, every API key on the account is revoked, and the account is closed, while the prepaid credit ledger is kept so the balance and charges stay provable. CONSEQUENTIAL and IRREVERSIBLE: there is no undo and support cannot restore the data. Free. Sensitive write: it requires that the human has explicitly confirmed they want their data deleted. A copy of the revoked key saved in the agent's own credential store stays there until the human removes it; this call cannot reach into the agent to delete it. On this connector it also deletes every envelope's documents and signatures from storage immediately.","x-muse-classification":{"class":"sensitive_write","label":"Sensitive write","side_effects":"Redacts every personal record on the account, revokes every API key and closes the account; the credit ledger is kept. Irreversible.","cost":"Free","approval":"The human explicitly confirms, in words, that they want all their data deleted.","key_scope":"write","idempotent":true},"tags":["sign"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","title":"DeleteMyDataResult","properties":{"deleted":{"const":true,"description":"Always true; a failure is an error envelope instead."},"redacted":{"type":"object","title":"RedactedCounts","description":"How many records of each kind this request scrubbed.","properties":{"mail":{"type":"integer","minimum":0},"faxes":{"type":"integer","minimum":0},"bookings":{"type":"integer","minimum":0},"table_requests":{"type":"integer","minimum":0},"shipments":{"type":"integer","minimum":0},"print_orders":{"type":"integer","minimum":0},"cards":{"type":"integer","minimum":0},"courier_deliveries":{"type":"integer","minimum":0},"sign_envelopes":{"type":"integer","minimum":0},"x402_limit_requests":{"type":"integer","minimum":0}},"required":["mail","faxes","bookings"],"additionalProperties":false}},"required":["deleted","redacted"],"additionalProperties":false}}}},"400":{"description":"invalid_request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized. Carries WWW-Authenticate: Bearer resource_metadata=\"...\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden_scope: a write tool called with a read-only key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"provider_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Store the key in Muse's Secure Credentials Store as NOERRANDS_API_KEY. A 401 carries WWW-Authenticate: Bearer resource_metadata=\"https://api.noerrands.com/.well-known/oauth-protected-resource/c/sign/mcp\"."}},"schemas":{"Error":{"type":"object","title":"Error","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","insufficient_credits","forbidden_scope","not_found","idempotency_conflict","conflict","rate_limited","provider_error"]},"message":{"type":"string"},"field":{"type":"string"},"required_cents":{"type":"integer"},"balance_cents":{"type":"integer"},"topup_url":{"type":"string"},"packs":{"type":"array","description":"Everything that can be bought, cheapest first. The first entry is a one-off single letter; every pack after it credits more than it costs, so quote both numbers to the human.","items":{"type":"object","title":"CreditPack","description":"A buyable amount: what it costs, what it credits, and the bonus in free letters. The cheapest is the one-off single letter, which has no bonus.","properties":{"pay_cents":{"type":"integer","description":"What the human pays, in cents."},"credits_cents":{"type":"integer","description":"What lands in the balance, in cents. Larger than pay_cents for a pack; equal for the one-off letter."},"free_letters":{"type":"integer","description":"Whole one-page letters the bonus alone pays for. Say it to the human as \"three free letters\". Zero for the one-off letter."},"label":{"type":"string","description":"What to call it to the human: \"One letter\" for the one-off purchase, \"$25 pack\" for a pack."}},"required":["pay_cents","credits_cents","free_letters","label"],"additionalProperties":false}},"fax_balance_cents":{"type":"integer"},"fax_bundles":{"type":"array","description":"Fax bundles, cheapest first. Prepaid credit that can only be spent on faxes, which is why each one credits far more than it costs. General credit packs pay for faxes too; fax credit does not pay for mail.","items":{"type":"object","title":"FaxBundle","description":"A buyable fax bundle: what it costs, what it credits, and how many one-page faxes that covers. These credits pay for faxes only.","properties":{"label":{"type":"string","description":"What to call it to the human: \"$25 fax bundle\"."},"pay_cents":{"type":"integer","description":"What the human pays, in cents."},"credits_cents":{"type":"integer","description":"What lands in the fax-only balance, in cents. Always larger than pay_cents."},"one_page_faxes":{"type":"integer","description":"Whole one-page faxes the bundle covers. Say this number to the human."}},"required":["label","pay_cents","credits_cents","one_page_faxes"],"additionalProperties":false}},"x402":{"type":"object","properties":{"topup_url":{"type":"string"},"amount_cents":{"type":"integer"},"networks":{"type":"array","items":{"type":"string"}},"asset":{"type":"string","enum":["USDC"]}},"required":["topup_url","amount_cents","networks","asset"]},"retry_after_seconds":{"type":"integer"}},"required":["code","message"]}},"required":["error"]}}},"x-root-endpoints":{"description":"Endpoints outside the REST base.","paths":{"https://api.noerrands.com/v1/keys":{"post":{"operationId":"create_key","summary":"Issue an API key","description":"Create an account and API key that works for every No Errands connector. No auth. Rate limited to 5 per IP per hour. The key is shown exactly once.","responses":{"201":{"description":"Key created.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"https://api.noerrands.com/.well-known/oauth-protected-resource/c/sign/mcp":{"get":{"operationId":"sign_protected_resource_metadata","summary":"RFC 9728 protected resource metadata","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"https://api.noerrands.com/c/sign/s/{signing_token}":{"get":{"operationId":"signing_page","summary":"The signer's page (HTML). The token in the link is the credential.","responses":{"200":{"description":"HTML page."}}}},"https://api.noerrands.com/c/sign/d/{download_token}":{"get":{"operationId":"signed_document_download","summary":"A 15-minute download of a finished document (PDF), from get_signed_document.","responses":{"200":{"description":"application/pdf"}}}}}}}