DocuSign eSignature
Let an agent send documents for signature with DocuSign: list templates, create and send envelopes from a template, track envelope and recipient status, review the audit trail and get a signing link. Curated from DocuSign's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with DocuSign eSignature via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v2.1/accounts/{accountId} |
getAccount | Get the DocuSign account's details |
| GET | /v2.1/accounts/{accountId}/templates |
listTemplates | List or search signing templates |
| GET | /v2.1/accounts/{accountId}/templates/{templateId} |
getTemplate | Get a template with its roles and documents |
| GET | /v2.1/accounts/{accountId}/envelopes |
listEnvelopes | Search envelopes by date, status or text |
| POST | /v2.1/accounts/{accountId}/envelopes |
createEnvelope | Create an envelope (from a template) as a draft or send it for signature |
| GET | /v2.1/accounts/{accountId}/envelopes/{envelopeId} |
getEnvelope | Get an envelope's status |
| PUT | /v2.1/accounts/{accountId}/envelopes/{envelopeId} |
updateEnvelope | Send a draft envelope or void a sent one |
| GET | /v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients |
listEnvelopeRecipients | See each recipient's signing status |
| GET | /v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents |
listEnvelopeDocuments | List the documents in an envelope |
| GET | /v2.1/accounts/{accountId}/envelopes/{envelopeId}/audit_events |
getEnvelopeAuditEvents | Get the envelope's audit trail (sent, viewed, signed) |
| POST | /v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/recipient |
createRecipientSigningLink | Get an embedded signing link for a recipient |
Authentication
docusignOAuth
OAuth 2.0
Scopes: signature
DocuSign eSignature uses an OAuth 2.0 access token sent as Authorization: Bearer <token>.
How to get a credential
- Sign in to DocuSign and open Settings > Apps and Keys (use a developer account at developers.docusign.com to test first).
- Click Add App and Integration Key, add a secret key and the VX Agents OAuth redirect URI.
- Complete the Go-Live review so the integration key works against production accounts.
- Connect with the Authorization Code grant and the
signaturescope (addextendedfor long-lived refresh tokens). - Note your API Account ID (Apps and Keys page) and account base URI: you pass the account id as
accountIdon every call.
Permissions used
| Scope | Operations |
|---|---|
signature |
getAccount, listTemplates, getTemplate, listEnvelopes, getEnvelope, createEnvelope, updateEnvelope, listEnvelopeRecipients, listEnvelopeDocuments, getEnvelopeAuditEvents, createRecipientSigningLink |
Common errors
- 401 Unauthorized (
USER_AUTHENTICATION_FAILED): token expired (they last 8 hours); refresh it or reconnect. - 400
USER_LACKS_MEMBERSHIP/ACCOUNT_LACKS_PERMISSIONS: wrongaccountIdfor this user, or the user is not a sender on that account. - 400
INVALID_REQUEST_BODY/TEMPLATE_ID_INVALID: check templateId and that every template role has a name and email. - 429 /
HOURLY_APIINVOCATION_LIMIT_EXCEEDED: DocuSign allows about 3,000 calls per hour per account; slow down and avoid polling (do not poll an envelope more than once every 15 minutes).
Store the token as a VX Agents credential (OAuth2) and attach it to the agent; never paste it into chat.
Usage guide
Setup
- Connect a DocuSign OAuth credential with the
signaturescope (see the authentication section). - Preset
accountIdto your API Account ID (Settings > Apps and Keys). Every operation needs it. - Base URL is
https://www.docusign.net/restapi(DocuSign production). Accounts are hosted on a shard (na2,na3,eu,au...); if calls returnUSER_LACKS_MEMBERSHIPor a redirect, the account must be reached through its own base URI shown on the Apps and Keys page.
Send a document for signature from a template
listTemplateswithsearch_text(template name) to find thetemplateId.getTemplatewithinclude=recipientsto read the role names (e.g.Signer,Client) the template expects.- Collect each signer's name and email from the user. Show a summary (template, roles, recipients, email subject) and wait for the user to confirm before sending.
createEnvelopewithtemplateId,templateRoles(roleName,name,email;routingOrderfor signing order),emailSubject, andstatus:created= save a draft for the user to review in DocuSign,sent= email the recipients now.
- Send a reviewed draft later with
updateEnvelope{ "status": "sent" }.
Track and follow up
listEnvelopeswithfrom_date(required unless you passenvelope_ids), optionalstatus(sent,delivered,completed,declined,voided) andsearch_text.getEnvelopefor overall status;listEnvelopeRecipientsto see who has signed;getEnvelopeAuditEventsfor the full trail;listEnvelopeDocumentsfor the files.- Embedded signing: create the envelope with
clientUserIdon the role, thencreateRecipientSigningLinkwith the sameuserName,email,clientUserId,authenticationMethod: "none"and areturnUrl. The link expires after 5 minutes. - Cancel with
updateEnvelope{ "status": "voided", "voidedReason": "..." }only after the user confirms.
Good to know
- Dates are ISO 8601, e.g.
2026-10-01or2026-10-01T00:00:00Z. - Envelope and template ids are GUIDs.
- Do not poll one envelope more than once every 15 minutes (DocuSign rate rules); about 3,000 calls/hour per account.
- Sending creates a legally binding signing request: always confirm recipients and template first.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “DocuSign eSignature” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.