{"version":1,"object":"capabilities","name":"Cursiv","baseUrl":"https://cursiv.co","format":"markdown","constraints":{"requiresReviewedRevisionForAgentSend":true,"sendingRequiresExplicitScope":"envelopes:send","agentsMaySign":false,"agentsMayRatify":false,"agentsMayConsentOnBehalfOfARecipient":false,"agentsMayPlaceFields":true,"agentsMayUseRawCoordinates":false,"fieldPlacementMethods":["anchor_text","structured_signature_block"],"allAgentWritesAreAttributedInTheAuditTrail":false},"scopes":[{"scope":"envelopes:read","label":"Read agreements and profiles","description":"Read drafts, company information, contacts and permitted diagnostics."},{"scope":"envelopes:write","label":"Prepare and edit drafts","description":"Create drafts, upload documents and place fields."},{"scope":"envelopes:send","label":"Send reviewed agreements and notices","description":"Authorize reviewed invitations, reminders and void notices. Sends messages."},{"scope":"templates:read","label":"Read templates","description":"Read reusable agreement templates."},{"scope":"contacts:write","label":"Manage contacts","description":"Create and update contacts visible to the key owner."},{"scope":"document-brands:write","label":"Manage document branding","description":"Change print branding. Requires an owner or admin."},{"scope":"entities:write","label":"Manage legal entities","description":"Record company details and provenance; does not verify authority."},{"scope":"templates:write","label":"Manage template versions","description":"Create, publish and retire reusable templates."},{"scope":"library:write","label":"Manage clauses and signing arrangements","description":"Maintain reusable wording and role arrangements."},{"scope":"information:write","label":"Create information forms","description":"Create and revoke shareable company information links. No email is sent."},{"scope":"filing:write","label":"File agreements","description":"Create folders and record agreement tags and company metadata."},{"scope":"webhooks:write","label":"Configure webhook endpoints","description":"Create disabled endpoints and manage configuration. Requires an owner or admin."},{"scope":"webhooks:activate","label":"Activate outbound webhooks","description":"Also requires webhook configuration permission. Enables event delivery."},{"scope":"webhooks:retry","label":"Retry exhausted webhooks","description":"Queue a webhook redelivery. Requires an owner or admin; receivers must deduplicate."},{"scope":"delivery:retry","label":"Retry eligible email failures","description":"Retry confirmed rejections of recorded attachment-free generic messages. Requires an owner or admin."},{"scope":"workspace:write","label":"Administer workspace settings and members","description":"Change company profile and defaults; only owners may change non-owner member roles."}],"routes":[{"method":"PATCH","path":"/api/v1/agreements/{envelopeId}/revise","description":"Versioned wording, recipient, field and settings correction with comparison"},{"method":"POST","path":"/api/v1/agreements/prepare","description":"Prepare a checked unsent agreement with required externalId"},{"method":"GET","path":"/api/v1/bootstrap","description":"Company, human, branding, defaults, permissions and credits in one read"},{"method":"GET","path":"/api/v1/capabilities","description":"Public Markdown or ?format=json discovery"},{"method":"POST","path":"/api/v1/clauses/{id}/approve","description":"Owner/admin approves this exact clause version"},{"method":"POST","path":"/api/v1/clauses/{id}/archive","description":"Archive with expectedVersion"},{"method":"GET","path":"/api/v1/contacts/{contactId}","description":"Read a visible contact"},{"method":"PATCH","path":"/api/v1/contacts/{contactId}","description":"Update your contact with expectedVersion; contacts:write required"},{"method":"GET","path":"/api/v1/contacts","description":"Search visible saved contacts with ?q="},{"method":"POST","path":"/api/v1/contacts","description":"Create a private contact by default; contacts:write required"},{"method":"GET","path":"/api/v1/document-brands/{documentBrandId}","description":"Read document printing profile and version"},{"method":"PATCH","path":"/api/v1/document-brands/{documentBrandId}","description":"Update printing profile with expectedVersion"},{"method":"GET","path":"/api/v1/document-brands","description":"List document printing profiles, separate from email brands"},{"method":"POST","path":"/api/v1/document-brands","description":"Create printing profile; explicit document-brands:write and owner/admin required"},{"method":"GET","path":"/api/v1/document-types","description":"Active workspace filing classifications"},{"method":"POST","path":"/api/v1/documents/convert","description":"Convert finished Markdown or supported file bytes to PDF without sending"},{"method":"POST","path":"/api/v1/entities/{id}/archive","description":"Archive with expectedVersion"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/documents","description":"Metadata or download=combined, certificate, or document id"},{"method":"PATCH","path":"/api/v1/envelopes/{envelopeId}/draft","description":"Correct an unsent draft with expectedVersion; never sends"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/evidence","description":"Audit, consent, seal and available transparency receipt with salt"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/preview","description":"Read a draft PDF with field overlays; optional documentId"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/readiness","description":"Read validation problems, warnings and version without sending"},{"method":"POST","path":"/api/v1/envelopes/{envelopeId}/remind","description":"Send reminders subject to rate limits"},{"method":"POST","path":"/api/v1/envelopes/{envelopeId}/review","description":"Freeze document previews, recipients, proposed invitations and costs"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/reviews/{reviewId}/documents/{documentId}","description":"GET envelopes within the workspace; see conversational workflow schemas"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/revisions","description":"Read saved revision snapshots or compare fromVersion and toVersion"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}","description":"Envelope, recipients, documents and fields"},{"method":"PATCH","path":"/api/v1/envelopes/{envelopeId}","description":"Legacy draft metadata and void; sending requires review and send-reviewed"},{"method":"DELETE","path":"/api/v1/envelopes/{envelopeId}","description":"Delete a draft or closed envelope when permitted"},{"method":"POST","path":"/api/v1/envelopes/{envelopeId}/send","description":"Deprecated: rejects with review_required; use review then send-reviewed"},{"method":"POST","path":"/api/v1/envelopes/{envelopeId}/send-reviewed","description":"Send exactly reviewId with idempotencyKey; explicit envelopes:send required"},{"method":"GET","path":"/api/v1/envelopes/{envelopeId}/validate","description":"Read draft readiness and costs without changing the agreement"},{"method":"POST","path":"/api/v1/envelopes/{envelopeId}/void","description":"Void with a reason"},{"method":"POST","path":"/api/v1/envelopes/from-contract","description":"Render finished contract text with structured signature blocks; draft only"},{"method":"POST","path":"/api/v1/envelopes/from-document","description":"Upload a document and place fields by anchors; draft only"},{"method":"GET","path":"/api/v1/envelopes","description":"Search and filter envelopes"},{"method":"POST","path":"/api/v1/envelopes","description":"Create from a template; send:false for review"},{"method":"GET","path":"/api/v1/me/profile","description":"Current human profile and recorded authority claims"},{"method":"GET","path":"/api/v1/operations/{resource}","description":"Read reports, filing, webhooks, deliveries, events, workspace, information-requests or export; POST actions requires scoped operationId"},{"method":"POST","path":"/api/v1/operations/{resource}","description":"Read reports, filing, webhooks, deliveries, events, workspace, information-requests or export; POST actions requires scoped operationId"},{"method":"POST","path":"/api/v1/signing-arrangements/{id}/archive","description":"Archive with expectedVersion"},{"method":"POST","path":"/api/v1/templates/{id}/archive","description":"Archive with expectedVersion"},{"method":"GET","path":"/api/v1/templates/{id}","description":"GET templates within the workspace; see conversational workflow schemas"},{"method":"PATCH","path":"/api/v1/templates/{id}","description":"PATCH templates within the workspace; see conversational workflow schemas"},{"method":"GET","path":"/api/v1/templates/library","description":"Read versioned managed templates"},{"method":"POST","path":"/api/v1/templates","description":"POST templates within the workspace; see conversational workflow schemas"},{"method":"GET","path":"/api/v1/templates","description":"Templates, roles and field keys"},{"method":"GET","path":"/api/v1/workspace","description":"Workspace, company profile, current user, scopes and credits"}],"enterpriseCapabilities":[{"key":"native_document_authoring","family":"documents","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Structured editing, deterministic export, locking and version support are scheduled for Plans 005 and 007."},{"key":"smart_content_libraries","family":"content","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Templates, variables and conditional content are scheduled for Plan 006 after content readiness in Plan 002."},{"key":"web_forms","family":"content","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Independent forms and conditional field or content logic are scheduled for Plan 006."},{"key":"signing_and_evidence","family":"trust","state":"available","entitlement":"all","evidence":["src/lib/envelope/evidence.ts","src/lib/pdf/certificate.ts","src/lib/transparency/log.ts"],"unavailableReason":null},{"key":"approvals_and_redlining","family":"workflow","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Internal approval rules, negotiation versions and redlining are scheduled for Plan 007."},{"key":"quote_builder","family":"commercial","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"The product catalogue, quotes, bundles, subscriptions and CPQ rules are scheduled for Plan 008."},{"key":"signer_payments","family":"commercial","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"One-time, instalment and recurring signer payments are scheduled for Plan 009."},{"key":"contract_repository","family":"repository","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Bulk import, OCR, extraction, obligations and renewals are scheduled for Plan 010."},{"key":"engagement_analytics","family":"analytics","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Recipient, page, link, download and content-usage analytics are scheduled for Plan 011."},{"key":"rooms","family":"analytics","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Rooms, action plans, files, links, tasks and engagement are scheduled for Plan 011."},{"key":"workflow_automation","family":"automation","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Trigger/action automation, follow-up documents and connected workflows are scheduled for Plan 012."},{"key":"connector_ecosystem","family":"automation","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"CRM, cloud-storage, design and productivity connector classes are scheduled for Plan 012."},{"key":"enterprise_accounts","family":"enterprise","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Account hierarchy, multiple workspaces, groups, custom roles and central administration are scheduled for Plan 003."},{"key":"saml_sso","family":"enterprise","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"SAML SSO, JIT and domain enforcement are scheduled for Plan 004."},{"key":"scim","family":"enterprise","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"SCIM 2.0 provisioning is scheduled for Plan 004."},{"key":"regional_data_residency","family":"enterprise","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Regional routing and residency controls are scheduled for Plans 002, 003 and 016."},{"key":"enterprise_security_administration","family":"enterprise","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Central encryption, key-policy and security administration gates are scheduled for Plans 002, 003 and 016."},{"key":"white_labelled_delivery","family":"documents","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Brand colours, logos and wording are available. Custom sending domains, addresses and email white-labelling are scheduled for Plans 005 and 014."},{"key":"public_api_platform","family":"developer","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"OAuth 2.0, broad REST CRUD, webhook administration, sandbox, limits and idempotency are scheduled for Plan 013."},{"key":"embedded_editing","family":"developer","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Embedded editing is scheduled for Plan 013."},{"key":"embedded_sending","family":"developer","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Embedded sending is scheduled for Plan 013."},{"key":"embedded_signing","family":"developer","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Embedded signing is not available before Plan 013."},{"key":"multichannel_delivery","family":"trust","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Email delivery is available. SMS and WhatsApp delivery are scheduled for Plan 014."},{"key":"recipient_identity_verification","family":"trust","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Access codes and email OTP are available. Advanced identity and liveness verification are scheduled for Plan 014."},{"key":"qes","family":"trust","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Qualified electronic signatures are scheduled for Plan 014."},{"key":"pades","family":"trust","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"PAdES signing is scheduled for Plan 014."},{"key":"notary","family":"trust","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"A notary recipient role is available for routing. Remote notary workflows are scheduled for Plan 014."},{"key":"mobile_apps","family":"mobile","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Enterprise iOS and Android applications are scheduled for Plan 015."},{"key":"ai_authoring","family":"ai","state":"unavailable","entitlement":"all","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"AI writing and structured authoring are scheduled for Plan 006."},{"key":"repository_intelligence","family":"ai","state":"unavailable","entitlement":"enterprise","evidence":["plans/README.md#enterprise-checklist-coverage"],"unavailableReason":"Repository extraction and contract intelligence are scheduled for Plan 010."},{"key":"agent_mcp_workflows","family":"ai","state":"available","entitlement":"all","evidence":["src/app/api/mcp/route.ts","src/lib/api/capabilities.ts"],"unavailableReason":null}],"markdown":"# Cursiv — capability guide for agents\n\nYou are operating a document signing platform on behalf of a person or a\ncompany. This page tells you what it can do, how to reach each capability\nover HTTP, and the single boundary you must not cross.\n\nEverything here is generated from the running system, so it describes this\ndeployment rather than the product in general.\n\n## The one thing you cannot do\n\n**You cannot sign.** There is no endpoint, tool, parameter or sequence of\ncalls that produces a signature, adopts a signature image, accepts the\nelectronic-record disclosure, or marks a recipient as having consented. Do\nnot look for one; it is not hidden, it does not exist, and its absence is the\nproduct.\n\nSigning happens when a human opens a signing link and acts. You may prepare\nthe agreement, decide who signs it, send it, chase it, report on it and file\nthe result. The signature itself is theirs.\n\nTwo consequences worth holding onto:\n\n- **Never tell a user you have signed something.** You have sent it. If a\n  user asks you to \"just sign it for me\", explain that the platform does not\n  permit it and offer to send it to them instead — they can sign in seconds\n  from the link.\n- Audit coverage and actor types vary by operation. New preparation, review/send and library operations record the borrowed key/person authority. Do not claim every legacy API write has an envelope audit event or actorType: agent.\n\n## Authentication\n\nEvery request carries an API key:\n\n```\nAuthorization: Bearer csv_live_...\n```\n\nKeys are created by a person under Settings / API keys and carry explicit scopes:\n`envelopes:read`, `envelopes:write`, `envelopes:send`, `templates:read`, `contacts:write`, `document-brands:write`, `entities:write`, `templates:write`, `library:write`, `information:write`, `filing:write`, `webhooks:write`, `webhooks:activate`, `webhooks:retry`, `delivery:retry`, `workspace:write`.\nEmpty legacy scopes grant only envelopes:read, envelopes:write and templates:read.\nNew writes, sending, administration and delivery retries require explicit grants.\nActive workspace membership and operation-specific roles also apply.\nA missing scope returns `403 insufficient_scope`;\nread the `error.code`, do not retry.\n\nErrors are JSON: `{ \"error\": { \"code\", \"message\", \"details\" } }`. Codes are\nstable, messages are for humans. `422 validation_failed` carries a\n`details` array naming the offending field — fix and retry. `409` means\nthe state of the thing changed under you; re-read before deciding.\n\n## The shape of the domain\n\nAn **envelope** is one transaction: some documents, some recipients, some\nfields, and the record of what happened. It moves\n`draft → sent → delivered → completed`, or ends at `declined`, `voided`\nor `expired`.\n\nA **template** is an envelope saved with named roles instead of people. Using\none casts real people into those roles. This is the cheapest and most\nreliable way for you to send anything — the fields are already placed and a\nhuman has already approved the layout.\n\nA **recipient** has a type: `signer`, `in_person_signer`, `cc`,\n`certified_delivery`, `agent`, `editor`, `intermediary`, `witness`,\n`notary`. Only signers sign. A `cc` gets the finished copy and never\nholds anything up — this is how you send a completed agreement to somebody's\nlawyer or finance team.\n\nA **field** is a place on a page where something goes. Available types:\n`approve`, `attachment`, `checkbox`, `company`, `date`, `date_signed`, `decline`, `dropdown`, `email`, `email_input`, `first_name`, `formula`, `full_name`, `initial`, `last_name`, `note`, `number`, `radio`, `signature`, `ssn`, `stamp`, `text`, `title`, `zip`.\n\nAn **imported** record is an agreement signed somewhere else and filed here\nfor keeping. It is sealed and logged but carries no signing audit trail,\nbecause nobody here witnessed the signature. Do not describe one as \"signed\nthrough Cursiv\".\n\nA **document type** is optional workspace filing metadata on the agreement,\nnot on an individual file. Read active choices from\n`GET https://cursiv.co/api/v1/document-types` and send the returned id as\n`documentTypeId`. It is deliberately absent from the evidence record and\ndoes not change the document seal.\n\n## What you can do\n\n### Enterprise capability contract\n\nThe state below is the same capability data returned by the JSON discovery\nresponse. Entitlement and operational readiness are separate: being on an\nEnterprise plan does not make an unconfigured provider or jurisdiction ready.\n\n| Key | Family | State | Entitlement | Evidence | Unavailable reason |\n|---|---|---|---|---|---|\n| `native_document_authoring` | documents | unavailable | all | plans/README.md#enterprise-checklist-coverage | Structured editing, deterministic export, locking and version support are scheduled for Plans 005 and 007. |\n| `smart_content_libraries` | content | unavailable | all | plans/README.md#enterprise-checklist-coverage | Templates, variables and conditional content are scheduled for Plan 006 after content readiness in Plan 002. |\n| `web_forms` | content | unavailable | all | plans/README.md#enterprise-checklist-coverage | Independent forms and conditional field or content logic are scheduled for Plan 006. |\n| `signing_and_evidence` | trust | available | all | src/lib/envelope/evidence.ts<br>src/lib/pdf/certificate.ts<br>src/lib/transparency/log.ts | — |\n| `approvals_and_redlining` | workflow | unavailable | all | plans/README.md#enterprise-checklist-coverage | Internal approval rules, negotiation versions and redlining are scheduled for Plan 007. |\n| `quote_builder` | commercial | unavailable | all | plans/README.md#enterprise-checklist-coverage | The product catalogue, quotes, bundles, subscriptions and CPQ rules are scheduled for Plan 008. |\n| `signer_payments` | commercial | unavailable | all | plans/README.md#enterprise-checklist-coverage | One-time, instalment and recurring signer payments are scheduled for Plan 009. |\n| `contract_repository` | repository | unavailable | all | plans/README.md#enterprise-checklist-coverage | Bulk import, OCR, extraction, obligations and renewals are scheduled for Plan 010. |\n| `engagement_analytics` | analytics | unavailable | all | plans/README.md#enterprise-checklist-coverage | Recipient, page, link, download and content-usage analytics are scheduled for Plan 011. |\n| `rooms` | analytics | unavailable | all | plans/README.md#enterprise-checklist-coverage | Rooms, action plans, files, links, tasks and engagement are scheduled for Plan 011. |\n| `workflow_automation` | automation | unavailable | all | plans/README.md#enterprise-checklist-coverage | Trigger/action automation, follow-up documents and connected workflows are scheduled for Plan 012. |\n| `connector_ecosystem` | automation | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | CRM, cloud-storage, design and productivity connector classes are scheduled for Plan 012. |\n| `enterprise_accounts` | enterprise | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Account hierarchy, multiple workspaces, groups, custom roles and central administration are scheduled for Plan 003. |\n| `saml_sso` | enterprise | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | SAML SSO, JIT and domain enforcement are scheduled for Plan 004. |\n| `scim` | enterprise | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | SCIM 2.0 provisioning is scheduled for Plan 004. |\n| `regional_data_residency` | enterprise | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Regional routing and residency controls are scheduled for Plans 002, 003 and 016. |\n| `enterprise_security_administration` | enterprise | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Central encryption, key-policy and security administration gates are scheduled for Plans 002, 003 and 016. |\n| `white_labelled_delivery` | documents | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Brand colours, logos and wording are available. Custom sending domains, addresses and email white-labelling are scheduled for Plans 005 and 014. |\n| `public_api_platform` | developer | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | OAuth 2.0, broad REST CRUD, webhook administration, sandbox, limits and idempotency are scheduled for Plan 013. |\n| `embedded_editing` | developer | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Embedded editing is scheduled for Plan 013. |\n| `embedded_sending` | developer | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Embedded sending is scheduled for Plan 013. |\n| `embedded_signing` | developer | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Embedded signing is not available before Plan 013. |\n| `multichannel_delivery` | trust | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Email delivery is available. SMS and WhatsApp delivery are scheduled for Plan 014. |\n| `recipient_identity_verification` | trust | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Access codes and email OTP are available. Advanced identity and liveness verification are scheduled for Plan 014. |\n| `qes` | trust | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Qualified electronic signatures are scheduled for Plan 014. |\n| `pades` | trust | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | PAdES signing is scheduled for Plan 014. |\n| `notary` | trust | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | A notary recipient role is available for routing. Remote notary workflows are scheduled for Plan 014. |\n| `mobile_apps` | mobile | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Enterprise iOS and Android applications are scheduled for Plan 015. |\n| `ai_authoring` | ai | unavailable | all | plans/README.md#enterprise-checklist-coverage | AI writing and structured authoring are scheduled for Plan 006. |\n| `repository_intelligence` | ai | unavailable | enterprise | plans/README.md#enterprise-checklist-coverage | Repository extraction and contract intelligence are scheduled for Plan 010. |\n| `agent_mcp_workflows` | ai | available | all | src/app/api/mcp/route.ts<br>src/lib/api/capabilities.ts | — |\n\n### Read the state of things\n\n| Task | Call |\n|---|---|\n| List envelopes | `GET https://cursiv.co/api/v1/envelopes` |\n| Filter by status | `?status=sent,delivered` |\n| Search subject or recipient | `?q=acme` |\n| Include filed records | `?kind=all` (or `?kind=imported`) |\n| Filter by document type | `?documentTypeId=dty_...` (or `unclassified`) |\n| Active document types | `GET https://cursiv.co/api/v1/document-types` |\n| One envelope, with recipients and fields | `GET https://cursiv.co/api/v1/envelopes/{id}` |\n| Its documents | `GET https://cursiv.co/api/v1/envelopes/{id}/documents` |\n| The full evidence record | `GET https://cursiv.co/api/v1/envelopes/{id}/evidence` |\n| Templates and their roles | `GET https://cursiv.co/api/v1/templates` |\n| The address book | `GET https://cursiv.co/api/v1/contacts?q=acme` (see the caveat below) |\n| This workspace, and your own limits | `GET https://cursiv.co/api/v1/workspace` |\n\nThe evidence record is the machine-readable account of everything: every\naudit event with its place in the hash chain, per-document digests, the exact\ndisclosure each signer accepted, and the transparency-log receipt. When\nsomebody asks \"can you prove this\", this is most of the answer.\n\n**Read it carefully rather than skimming it.** Two fields sit next to each\nother and mean different things: `seal.verified` says the document has not\nchanged since we sealed it — which we attest, using a secret only we hold —\nand `transparency` is the part a stranger can check without us. If\n`transparency` is null, do not report the record as independently\nverifiable. Say the seal verifies and the public receipt is absent, and let\nthe person decide whether that is enough.\n\nEvidence exposes `transparency.salt` with the available receipt for independent verification. A null receipt means public proof is unavailable, not that the record is independently verified.\n\n### Prepare an agreement\n\n`POST https://cursiv.co/api/v1/envelopes`\n\n```json\n{\n  \"templateId\": \"env_...\",\n  \"subject\": \"Mutual NDA — Acme\",\n  \"roles\": [{ \"roleName\": \"Client\", \"name\": \"Ada Lovelace\", \"email\": \"ada@acme.test\" }],\n  \"fieldValues\": { \"contract_value\": \"24500.00\" },\n  \"externalId\": \"crm-4471\",\n  \"documentTypeId\": \"dty_...\",\n  \"send\": false\n}\n```\n\nCreate a review with `POST https://cursiv.co/api/v1/envelopes/{id}/review`. Send that exact review through `/send-reviewed` using reviewId and idempotencyKey only when instructed. Explicit envelopes:send is required. Legacy /send and send:true refuse with review_required.\n\n- externalId prevents duplicate creation across REST/MCP. Same content replays; changed content returns `409 idempotency_conflict`; concurrent creation returns 409 creation_in_progress.\n- Draft creation never sends. Validation reports problems; do not route around them.\n\n### Chase, correct and stop\n\n| Task | Call |\n|---|---|\n| Remind everyone still outstanding | `POST https://cursiv.co/api/v1/envelopes/{id}/remind` |\n| Void it, with a reason | `POST https://cursiv.co/api/v1/envelopes/{id}/void` (reason required) |\n| Who is holding things up | MCP tool `who_is_holding_things_up` |\n\nReminders are rate-limited per envelope by the platform, not by you. If a\ncall reports that one was sent too recently, that is the answer — do not\nloop.\n\n### A document with no template\n\nSomething arrives as a PDF and nothing is set up for it. Prefer a template if\none fits — the fields are already placed and a person approved the layout —\nbut when there is none:\n\n`POST https://cursiv.co/api/v1/envelopes/from-document`\n\n```json\n{\n  \"subject\": \"Consultancy agreement — Acme\",\n  \"fileName\": \"agreement.pdf\",\n  \"fileBase64\": \"JVBERi0x...\",\n  \"externalId\": \"crm-document-8841\",\n  \"documentTypeId\": \"dty_...\",\n  \"recipients\": [{ \"name\": \"Ada Lovelace\", \"email\": \"ada@acme.test\" }],\n  \"anchors\": [\n    { \"anchorString\": \"Signature:\", \"type\": \"signature\", \"recipient\": 0 },\n    { \"anchorString\": \"Date:\", \"type\": \"date_signed\", \"recipient\": 0 }\n  ]\n}\n```\n\n**Fields are placed by anchor text, never by coordinates.** You name a phrase\nyou can see in the document and the field lands beside it. You cannot specify\nx/y, deliberately: a coordinate you invented would put a signature box in the\nmiddle of a paragraph and nothing would notice.\n\n**It creates a draft, and does not send.** Create a stored review, show it to the user, then call `/send-reviewed` only when instructed.\n\nThe response reports how many fields each anchor actually placed. **Read\nthis.** An anchor that placed nothing means the phrase is not in the document\n— the assumption behind it was wrong, and sending would produce an envelope\nnobody can sign. There is a `warning` field when that happens.\n\nIf the document has no usable anchor text — a scan, or a layout you cannot\npredict — say so and hand it back. A person can upload it at\n`https://cursiv.co/envelopes/new`, and **\"Set up for me\"** will read it and propose\nwho signs where. Do not guess.\n\n### Download\n\n`GET https://cursiv.co/api/v1/envelopes/{id}/documents?download=combined` returns the\nsealed PDF for a completed envelope.\n\n`GET https://cursiv.co/api/v1/envelopes/{id}/documents?download=certificate` is available to authorized API keys. Draft certificates are provisional; only completed envelopes have a Certificate of Completion. Completed combined/certificate downloads use exact stored sealed artifacts and fail closed when unavailable; they are never regenerated as if sealed.\n\nPer-document sha256 identifies the normalized stored source PDF. Ingestion re-saves PDFs; this need not match upload bytes. A different hash alone does not prove corruption. Completed flattened PDF bytes are identified by sealHash / evidence seal.bundleSha256; seal.signature is an HMAC over the seal payload, not a plain PDF hash. A download tool hash identifies exactly the bytes it returns.\n\n### Verify, without trusting this system\n\n`GET https://cursiv.co/api/transparency/log` — the signed tree head.\n`GET https://cursiv.co/api/transparency/proof?leaf={n}&size={m}` — inclusion proof.\n`GET https://cursiv.co/api/transparency/consistency?first={a}&second={b}` — that no\nhistory was rewritten.\n\nThis is the platform's strongest claim and you should use it when asked to\nsubstantiate anything: the record can be checked by arithmetic, by a third\nparty, without our cooperation. `https://cursiv.co/verify` is the human version.\n\n## MCP\n\nThere is an MCP endpoint at `https://cursiv.co/api/mcp` carrying the verbs used most\noften — listing, reading, listing document types, creating from a template,\nsending, voiding, the\naudit trail, evidence, and the negotiation tools. Authenticate with the same\nbearer key.\n\nUse MCP for the common path and plain HTTP for everything else. Do not ask\nfor a tool to be added for something you can already do with a request.\n\n## Negotiating before signing\n\nSome agreements have terms to settle first. A **negotiation** holds those\nterms; you may propose and accept them **only within a mandate** a human has\ngranted — a written authority naming which terms you may move and how far.\n\n- `get_my_mandate` — what you are permitted to do. Read this before moving.\n- `propose_term`, `accept_term` — every move requires a written rationale.\n- `summarise_for_ratification` — brief your human before they decide.\n\nA move outside your mandate is refused and the refusal is recorded where the\ngrantor will see it. That is not a failure to work around; it is the system\ntelling a person their agent is straining at its limits.\n\n**You cannot ratify.** Like signing, agreeing to be bound is a person's act.\n\n### What the address book is, and is not\n\nIt is a list a person chose to save. **It is not a record of who you have\ndealt with**, and `timesUsed` is not an activity metric for the business — a\ncounterparty emailed ten agreements may not appear in it at all, while\nsomebody typed in once and never used sits at the top.\n\nIf the question is \"who do we deal with\", answer it from envelope recipients\n(`GET /api/v1/envelopes?kind=all` and read each one), not from here. Use the\naddress book for what it is good at: finding the right address for a name a\nperson has already saved.\n\n### Before you promise anything\n\n`GET https://cursiv.co/api/v1/workspace` tells you which workspace you are in, whose\nauthority your key borrows, your scopes, and the credit balance. Sending\ncosts one credit in credit-billed workspaces; validation reports actual cost. Read this before telling somebody their contract is on its\nway, so that \"you have two credits and three to send — shall I do two, or\nwould you rather top up?\" replaces an apology after the fact.\n\n## What you cannot do\n\nStated so you neither waste attempts nor improvise around a gap. None of\nthese are hidden behind a flag; they do not exist.\n\n| | |\n|---|---|\n| Sign, ratify, or consent for anybody | Never. This is the product. |\n| Place fields at coordinates | By anchor text only — see above. |\n| Alter a published template version in place | Publish a new managed template version. |\n| Verify a company or signing authority automatically | Recorded details remain unverified. |\n| Correct or recall a sent envelope | Not exposed. Void it and send a corrected one. |\n| Bulk send from a spreadsheet | Not exposed. |\n| Invite/remove members, transfer ownership or manage email brands | These remain in the application; scoped operations cover company/default settings, existing member roles and webhooks. |\n| Buy credits | Never. Tell the person; do not spend their money. |\n\nIf a user asks for one of these, say plainly that you cannot and name the\nperson's route to it. Do not simulate it with a sequence of calls that\napproximates the result — a contract assembled sideways is worse than one\nthat was not assembled.\n\n## Judgement, not just capability\n\nThings worth doing without being asked:\n\n- **Check before you send.** `GET /envelopes?q=` for the counterparty. An\n  agreement already out for signature should not be sent twice.\n- **Say what is missing.** If a template needs a value you are guessing at,\n  stop and ask. A wrong number in a signed contract is worse than a delay.\n- **Report honestly.** \"Sent, awaiting two signatures\" — not \"done\".\n- **Watch the credits.** Sending costs one credit. Self-serve bundles: Starter: 25 credits for ZAR 245.00 including 15% VAT · Business: 100 credits for ZAR 879.00 including 15% VAT · Pro: 500 credits for ZAR 3425.00 including 15% VAT · Scale: 2500 credits for ZAR 14250.00 including 15% VAT.\n  These totals include VAT and are charged as shown. From 10,000 annual sends,\n  contact us for volume or bulk pricing. If a send fails for want of credits,\n  tell the person; do not buy any.\n\nThings you should refuse:\n\n- Signing, ratifying, or accepting a disclosure for anybody.\n- Sending an agreement whose terms you inferred rather than were given.\n- Anything on Cursiv's excluded list — an agreement for the sale of\n  land, a lease over twenty years, a bill of exchange, or a will cannot be\n  signed electronically in South Africa at all. See\n  https://cursiv.co/guides/electronic-signatures-south-africa.\n\n## Conversational preparation\n\nStart with GET /api/v1/bootstrap or MCP get_account_bootstrap: represented company, current human, document/email brands, defaults, permissions, credits and missing formal information are separate. Recorded job titles and authority claims are not verified authority.\n\n1. prepare_agreement creates an unsent draft from finished contract text, a file or a template. externalId is required; optional entityIds, approved versioned clauses and signingArrangement {id, version, bindings} select reusable records.\n2. revise_draft uses expectedVersion for wording, recipient, anchor and settings corrections. Metadata and extracted wording comparisons do not describe image/layout changes; inspect the PDFs too.\n3. validate_draft is read-only. It checks recipients, fields, unresolved anchors, pending required information forms, schedules and sending cost. It never changes or sends the envelope.\n4. preview_agreement creates an immutable review of source PDFs, field-overlay previews, recipients/order, proposed invitations, email branding and costs. Show that review to the user.\n5. Only when instructed, send_reviewed_agreement uses envelopeId, reviewId and idempotencyKey. Changed content, recipients, settings, email brand or cost rejects the review. Explicit envelopes:send is required. A retry returns the receipt without another charge or invitation claim. Provider acceptance, delivery and signing are separate states; ambiguous provider attempts require reconciliation. This path rejects scheduled, conditional and signing-group workflows. A previously sent/recalled agreement needs a new draft.\n\n### Preparation primitives, profiles and branding\n\ncreate_envelope_from_document exposes upload-and-anchor placement. create_envelope_from_contract accepts finished Markdown and a structured signature block. Automatic signing dates and required editable text anchors are supported. Per-anchor results report matches, field IDs and warnings. No raw coordinate placement, signature creation, consent or ratification is exposed.\n\ncorrect_envelope_draft requires expectedVersion; get_envelope_readiness returns readyToSend, safeToLeaveUnsent, problems, warnings and scheduledSendAt without modifying anything. preview_envelope reads a watermarked field-overlay PDF. download_envelope_document returns base64 artifact bytes and their SHA-256. Both REST and MCP share these services.\n\nget_company_profile and get_my_profile keep legal/trading company data separate from the person's name/email/job title and API key label. search_contacts, create_contact and update_contact expose phone/company details. Explicit contacts:write and an active permitted member are required; creation defaults private, sharing must be explicit, duplicate/version conflicts require reconciliation. Trading names are not confirmed registered entities.\n\nDocument printing profiles (logo, fonts, colors, margins, header/footer, company details) are separate from email brands. Select documentBrandId for contract generation. Explicit document-brands:write plus owner/admin is required to create/update profiles. documentNumber optionally prints with a profile numberingPrefix; this is an explicit reference, not an automatic sequence. convert_document supports finished Markdown and installed file converters; Word requires LibreOffice.\n\n### Libraries and operations\n\nVersioned legal entities, managed templates, clauses and signing arrangements support scoped creation, inspection, updates and archival. Clauses require owner/admin approval of the exact selected version. People/contacts remain separate from legal entities; recorded contacts and claims do not prove authority.\n\nOperations reads expose reports, filing, events, delivery diagnostics, workspace settings, information requests and completed exports. Writes use operationId and specific scopes; updates require versions. Missing-information requests return an expiring form link without sending email. Submitted information remains unverified and is incorporated only by explicit draft revision. Completed export bundles contain exact stored PDFs, certificates and evidence, failing closed if a sealed artifact is missing.\n\nWebhooks start disabled, with explicit activation/retry permissions, public HTTPS only and pinned validated destinations. Receivers deduplicate stable event IDs. Email retries are restricted to definite rejections of explicitly eligible generic messages; signing/auth/completion messages and ambiguous outcomes cannot use this retry tool. Workspace administration supports company/default settings and restricted changes to existing members; it does not invite/remove owners or manage platform administration.\n\nA sandbox requires a separate database, local storage, EMAIL_DRIVER=outbox and disabled external integrations. Bootstrap reports delivery mode. A request flag cannot turn a production workspace into a sandbox. Legacy metadata PATCH retains optional version behavior and legacy reminder/void operations have rate/status guards rather than the reviewed-send receipt contract; use task routes for mandatory versioned preparation and reviewed sending.\n\n\n### Finished contract creation example\n\n`POST /api/v1/envelopes/from-contract` / MCP `create_envelope_from_contract`:\n\n```json\n{\n  \"subject\": \"Consultancy agreement — Example Company\",\n  \"externalId\": \"crm-example-8841-contract-v1\",\n  \"documentName\": \"Consultancy agreement\",\n  \"contractMarkdown\": \"# Consultancy agreement\\n\\nExample Company appoints Ada Example to provide the services agreed in the attached schedule.\\n\\n```signature\\nConsultant | Ada Example | In personal capacity\\n```\",\n  \"recipients\": [\n    {\n      \"name\": \"Ada Example\",\n      \"email\": \"ada@example.test\",\n      \"type\": \"signer\"\n    }\n  ],\n  \"signatories\": [\n    {\n      \"role\": \"Consultant\",\n      \"recipient\": 0\n    }\n  ]\n}\n```\n\n### Complete REST inventory\n\n| Method | Route | Behavior |\n| --- | --- | --- |\n| PATCH | /api/v1/agreements/{envelopeId}/revise | Versioned wording, recipient, field and settings correction with comparison |\n| POST | /api/v1/agreements/prepare | Prepare a checked unsent agreement with required externalId |\n| GET | /api/v1/bootstrap | Company, human, branding, defaults, permissions and credits in one read |\n| GET | /api/v1/capabilities | Public Markdown or ?format=json discovery |\n| POST | /api/v1/clauses/{id}/approve | Owner/admin approves this exact clause version |\n| POST | /api/v1/clauses/{id}/archive | Archive with expectedVersion |\n| GET | /api/v1/contacts/{contactId} | Read a visible contact |\n| PATCH | /api/v1/contacts/{contactId} | Update your contact with expectedVersion; contacts:write required |\n| GET | /api/v1/contacts | Search visible saved contacts with ?q= |\n| POST | /api/v1/contacts | Create a private contact by default; contacts:write required |\n| GET | /api/v1/document-brands/{documentBrandId} | Read document printing profile and version |\n| PATCH | /api/v1/document-brands/{documentBrandId} | Update printing profile with expectedVersion |\n| GET | /api/v1/document-brands | List document printing profiles, separate from email brands |\n| POST | /api/v1/document-brands | Create printing profile; explicit document-brands:write and owner/admin required |\n| GET | /api/v1/document-types | Active workspace filing classifications |\n| POST | /api/v1/documents/convert | Convert finished Markdown or supported file bytes to PDF without sending |\n| POST | /api/v1/entities/{id}/archive | Archive with expectedVersion |\n| GET | /api/v1/envelopes/{envelopeId}/documents | Metadata or download=combined, certificate, or document id |\n| PATCH | /api/v1/envelopes/{envelopeId}/draft | Correct an unsent draft with expectedVersion; never sends |\n| GET | /api/v1/envelopes/{envelopeId}/evidence | Audit, consent, seal and available transparency receipt with salt |\n| GET | /api/v1/envelopes/{envelopeId}/preview | Read a draft PDF with field overlays; optional documentId |\n| GET | /api/v1/envelopes/{envelopeId}/readiness | Read validation problems, warnings and version without sending |\n| POST | /api/v1/envelopes/{envelopeId}/remind | Send reminders subject to rate limits |\n| POST | /api/v1/envelopes/{envelopeId}/review | Freeze document previews, recipients, proposed invitations and costs |\n| GET | /api/v1/envelopes/{envelopeId}/reviews/{reviewId}/documents/{documentId} | GET envelopes within the workspace; see conversational workflow schemas |\n| GET | /api/v1/envelopes/{envelopeId}/revisions | Read saved revision snapshots or compare fromVersion and toVersion |\n| GET | /api/v1/envelopes/{envelopeId} | Envelope, recipients, documents and fields |\n| PATCH | /api/v1/envelopes/{envelopeId} | Legacy draft metadata and void; sending requires review and send-reviewed |\n| DELETE | /api/v1/envelopes/{envelopeId} | Delete a draft or closed envelope when permitted |\n| POST | /api/v1/envelopes/{envelopeId}/send | Deprecated: rejects with review_required; use review then send-reviewed |\n| POST | /api/v1/envelopes/{envelopeId}/send-reviewed | Send exactly reviewId with idempotencyKey; explicit envelopes:send required |\n| GET | /api/v1/envelopes/{envelopeId}/validate | Read draft readiness and costs without changing the agreement |\n| POST | /api/v1/envelopes/{envelopeId}/void | Void with a reason |\n| POST | /api/v1/envelopes/from-contract | Render finished contract text with structured signature blocks; draft only |\n| POST | /api/v1/envelopes/from-document | Upload a document and place fields by anchors; draft only |\n| GET | /api/v1/envelopes | Search and filter envelopes |\n| POST | /api/v1/envelopes | Create from a template; send:false for review |\n| GET | /api/v1/me/profile | Current human profile and recorded authority claims |\n| GET | /api/v1/operations/{resource} | Read reports, filing, webhooks, deliveries, events, workspace, information-requests or export; POST actions requires scoped operationId |\n| POST | /api/v1/operations/{resource} | Read reports, filing, webhooks, deliveries, events, workspace, information-requests or export; POST actions requires scoped operationId |\n| POST | /api/v1/signing-arrangements/{id}/archive | Archive with expectedVersion |\n| POST | /api/v1/templates/{id}/archive | Archive with expectedVersion |\n| GET | /api/v1/templates/{id} | GET templates within the workspace; see conversational workflow schemas |\n| PATCH | /api/v1/templates/{id} | PATCH templates within the workspace; see conversational workflow schemas |\n| GET | /api/v1/templates/library | Read versioned managed templates |\n| POST | /api/v1/templates | POST templates within the workspace; see conversational workflow schemas |\n| GET | /api/v1/templates | Templates, roles and field keys |\n| GET | /api/v1/workspace | Workspace, company profile, current user, scopes and credits |\n\n## Where to read more\n\n- API reference: https://cursiv.co/docs/api\n- How the transparency log works: https://cursiv.co/docs/transparency\n- Security, and what it does not protect against: https://cursiv.co/security\n- Electronic signature law in South Africa: https://cursiv.co/guides/electronic-signatures-south-africa\n"}