DocuSign
Send, sign, and track sales contracts and envelopes via the DocuSign eSignature REST API (v2.1).
This InTouch tool wraps the core envelope operations so a job or the AI assistant can dispatch a contract for signature, poll an envelope's status, and see who still needs to sign — all deterministically, with credentials kept out of the AI context.
What it does
Calls the DocuSign eSignature REST API against your account's base path:
{baseUri}/restapi/v2.1/accounts/{accountId}
Authentication is an OAuth 2.0 bearer token sent as Authorization: Bearer <apiKey>. The tool returns the raw JSON response body (result) and the HTTP status code (status).
Operations
Branch on the operation input:
| operation | Method | Endpoint | Purpose |
|---|---|---|---|
list_envelopes |
GET | /envelopes?from_date=<iso> |
List envelopes and their statuses changed since fromDate (listStatusChanges). Defaults to the last 30 days. |
get_envelope |
GET | /envelopes/{envelopeId} |
Get a single envelope's status and metadata. |
list_recipients |
GET | /envelopes/{envelopeId}/recipients |
List the envelope's recipients and their signing status (who still needs to sign). |
create_envelope |
POST | /envelopes |
Create and send an envelope (the contract) from a JSON envelope definition. |
Inputs
| Input | Required | Default | Notes |
|---|---|---|---|
apiKey |
yes | — | DocuSign OAuth 2.0 access token (bearer). |
operation |
yes | — | One of the four operations above. |
accountId |
for all | "" |
Your DocuSign API account ID (GUID). |
baseUri |
no | https://demo.docusign.net |
Account base URI host from /oauth/userinfo. Use your production region host (e.g. https://na3.docusign.net) for live accounts. |
envelopeId |
for get/recipients | "" |
Envelope GUID. |
fromDate |
no | 30 days ago | ISO 8601, e.g. 2026-06-01T00:00:00Z. |
envelope |
for create | "" |
JSON envelope definition. |
API key setup
DocuSign does not issue a static API key. You authenticate with OAuth 2.0 and pass the resulting access token as apiKey:
- Create an integration (app) in the DocuSign Apps & Keys console. Note the Integration Key (client ID).
- Obtain an access token via one of:
- Authorization Code Grant — interactive user consent, returns a short-lived access token (~8 hours) + refresh token.
- JWT Grant — server-to-server (no UI); sign a JWT with your RSA private key and exchange it at
/oauth/token. - Call
GET {authServer}/oauth/userinfowith the token to discover your account ID (accounts[].account_id) and base URI (accounts[].base_uri). Use these asaccountIdandbaseUri.
Auth servers: account-d.docusign.com (demo) / account.docusign.com (production).
Note: access tokens expire. This tool consumes an already-minted token; refresh it (or re-run JWT Grant) before it expires. The OAuth/JWT exchange and
/oauth/userinfolookup are out of scope for this single-key tool.
Examples
List envelopes changed in the last 30 days
operation = list_envelopes
apiKey = <access_token>
accountId = 1a2b3c4d-...-...
baseUri = https://demo.docusign.net
Get one envelope's status
operation = get_envelope
envelopeId = 9f8e7d6c-...-...
See who still needs to sign
operation = list_recipients
envelopeId = 9f8e7d6c-...-...
Send a contract for signature (remote signing with a base64 document)
operation = create_envelope
envelope = {
"emailSubject": "Please sign: Master Services Agreement",
"status": "sent",
"documents": [
{ "documentBase64": "<base64-pdf>", "name": "MSA.pdf",
"fileExtension": "pdf", "documentId": "1" }
],
"recipients": {
"signers": [
{ "email": "[email protected]", "name": "Jordan Buyer",
"recipientId": "1", "routingOrder": "1",
"tabs": { "signHereTabs": [
{ "anchorString": "/sig1/", "anchorUnits": "pixels" } ] } }
]
}
}
Set "status": "sent" to dispatch immediately, or "created" to save as a draft.
Output
result— the raw JSON response body from DocuSign (envelope list, envelope object, recipients, or the created envelope'senvelopeId/status/uri).status— the HTTP status code as a string (200/201on success;4xx/5xxcarry a DocuSignerrorCode/messageinresult).