Read and send documents for signature — templates, recipients, fields and folders.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a signer, approver, viewer or CC to a draft document. Documenso v2: POST /document/recipient/create.
The recipient's name.
What this recipient does with the document.
The recipient's email address.
The document's numeric id. Must still be a draft.
Position in a sequential signing order.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Add a signer, approver, viewer or CC to a draft document. Documenso v2: POST /document/recipient/create.
| Argument | Type | Description |
|---|---|---|
| name* | string | The recipient's name. |
| role* | string | What this recipient does with the document. |
| email* | string | The recipient's email address. |
| documentId* | integer | The document's numeric id. Must still be a draft. |
| signingOrder | integer | Position in a sequential signing order. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId",
"email",
"name",
"role"
],
"properties": {
"name": {
"type": "string",
"description": "The recipient's name."
},
"role": {
"enum": [
"SIGNER",
"APPROVER",
"CC",
"VIEWER",
"ASSISTANT"
],
"type": "string",
"description": "What this recipient does with the document."
},
"email": {
"type": "string",
"description": "The recipient's email address."
},
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document's numeric id. Must still be a draft."
},
"signingOrder": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Position in a sequential signing order."
}
}
}Create a new document from an existing template, filling in the real recipients. Set distribute_document to true to send it for signature immediately. Call documenso_get_template first to read the placeholder recipient ids. Documenso v2: POST /template/use.
| Argument | Type | Description |
|---|---|---|
| folderId | string | Create the document inside this folder. |
| externalId | string | Your own reference id for the new document. |
| recipients* | array | One entry per template recipient placeholder. |
| templateId* | integer | The template to instantiate. |
| distribute_document | boolean | Send the document for signature immediately. Defaults to false (creates a draft). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"templateId",
"recipients"
],
"properties": {
"folderId": {
"type": "string",
"description": "Create the document inside this folder."
},
"externalId": {
"type": "string",
"description": "Your own reference id for the new document."
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"email"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The template placeholder recipient id this person fills."
},
"name": {
"type": "string",
"description": "The real recipient's name."
},
"email": {
"type": "string",
"description": "The real recipient's email address."
}
}
},
"description": "One entry per template recipient placeholder."
},
"templateId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The template to instantiate."
},
"distribute_document": {
"type": "boolean",
"description": "Send the document for signature immediately. Defaults to false (creates a draft)."
}
}
}Create a folder for organising documents or templates. Documenso v2: POST /folder/create.
| Argument | Type | Description |
|---|---|---|
| name* | string | The folder name. |
| type | string | What the folder holds. |
| parentId | string | Nest it inside this parent folder. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The folder name."
},
"type": {
"enum": [
"DOCUMENT",
"TEMPLATE"
],
"type": "string",
"description": "What the folder holds."
},
"parentId": {
"type": "string",
"description": "Nest it inside this parent folder."
}
}
}Send a draft document to its recipients for signature. This emails real people. Documenso v2: POST /document/distribute.
| Argument | Type | Description |
|---|---|---|
| message | string | Override the invitation email body. |
| subject | string | Override the invitation email subject. |
| documentId* | integer | The draft document to send. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId"
],
"properties": {
"message": {
"type": "string",
"description": "Override the invitation email body."
},
"subject": {
"type": "string",
"description": "Override the invitation email subject."
},
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The draft document to send."
}
}
}Copy an existing document into a new draft, keeping its fields. Documenso v2: POST /document/duplicate.
| Argument | Type | Description |
|---|---|---|
| documentId* | integer | The document to copy. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId"
],
"properties": {
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document to copy."
}
}
}Fetch a single document with its recipients, fields and current status. Documenso v2: GET /document/{documentId}.
| Argument | Type | Description |
|---|---|---|
| documentId* | integer | The document's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId"
],
"properties": {
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document's numeric id."
}
}
}Get a download URL for a document's PDF. Returns a link, not the file bytes. Documenso v2: GET /document/{documentId}/download.
| Argument | Type | Description |
|---|---|---|
| version | string | Which PDF to link to. Defaults to the signed version when one exists. |
| documentId* | integer | The document's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId"
],
"properties": {
"version": {
"enum": [
"original",
"signed"
],
"type": "string",
"description": "Which PDF to link to. Defaults to the signed version when one exists."
},
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document's numeric id."
}
}
}Fetch several documents in one call. Read-only despite being a POST — the v2 API is action-shaped. Documenso v2: POST /document/get-many.
| Argument | Type | Description |
|---|---|---|
| documentIds* | array | The numeric document ids to fetch. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentIds"
],
"properties": {
"documentIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "The numeric document ids to fetch."
}
}
}Fetch a single document field — its type, page, position and inserted value. Documenso v2: GET /document/field/{fieldId}.
| Argument | Type | Description |
|---|---|---|
| fieldId* | integer | The field's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"fieldId"
],
"properties": {
"fieldId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The field's numeric id."
}
}
}Fetch a single recipient — their email, role, signing order and whether they have signed. Documenso v2: GET /document/recipient/{recipientId}.
| Argument | Type | Description |
|---|---|---|
| recipientId* | integer | The recipient's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"recipientId"
],
"properties": {
"recipientId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The recipient's numeric id."
}
}
}Fetch a single template with its recipient placeholders and fields — read this before calling documenso_create_document_from_template so you know the recipient ids. Documenso v2: GET /template/{templateId}.
| Argument | Type | Description |
|---|---|---|
| templateId* | integer | The template's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"templateId"
],
"properties": {
"templateId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The template's numeric id."
}
}
}List the attachments on one document. Documenso v2: GET /document/attachment.
| Argument | Type | Description |
|---|---|---|
| documentId* | integer | The document's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId"
],
"properties": {
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document's numeric id."
}
}
}List documents, optionally filtered by status, folder, source template or a text query. Documenso v2: GET /document.
| Argument | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| query | string | Free-text search over document titles. |
| source | string | How the document was created. |
| status | string | Only documents in this state. |
| perPage | integer | Results per page, 1-100. |
| folderId | string | Only documents in this folder. |
| templateId | integer | Only documents created from this template. |
| orderByDirection | string | Sort by creation time. Defaults to desc. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"query": {
"type": "string",
"description": "Free-text search over document titles."
},
"source": {
"enum": [
"DOCUMENT",
"TEMPLATE",
"TEMPLATE_DIRECT_LINK"
],
"type": "string",
"description": "How the document was created."
},
"status": {
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"REJECTED",
"CANCELLED"
],
"type": "string",
"description": "Only documents in this state."
},
"perPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100."
},
"folderId": {
"type": "string",
"description": "Only documents in this folder."
},
"templateId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only documents created from this template."
},
"orderByDirection": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort by creation time. Defaults to desc."
}
}
}List folders used to organise documents and templates. Documenso v2: GET /folder.
| Argument | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| query | string | Free-text search over folder names. |
| perPage | integer | Results per page, 1-100. |
| parentId | string | Only folders inside this parent folder. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"query": {
"type": "string",
"description": "Free-text search over folder names."
},
"perPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100."
},
"parentId": {
"type": "string",
"description": "Only folders inside this parent folder."
}
}
}List reusable document templates. Templates are how you create a new document without uploading a PDF. Documenso v2: GET /template.
| Argument | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| query | string | Free-text search over template titles. |
| perPage | integer | Results per page, 1-100. |
| folderId | string | Only templates in this folder. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"query": {
"type": "string",
"description": "Free-text search over template titles."
},
"perPage": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100."
},
"folderId": {
"type": "string",
"description": "Only templates in this folder."
}
}
}Resend the signing invitation to named recipients of an already-sent document. This emails real people. Documenso v2: POST /document/redistribute.
| Argument | Type | Description |
|---|---|---|
| documentId* | integer | The document to resend. |
| recipients* | array | The numeric recipient ids to email again. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documentId",
"recipients"
],
"properties": {
"documentId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The document to resend."
},
"recipients": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "The numeric recipient ids to email again."
}
}
}