E-signatures for agents: mint a sandbox key, send PDFs, track status, download the sealed result.
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.
Check the status of an envelope — who signed, who hasn't, download links. Works in both sandbox (sk_test_ keys) and live.
The envelope ID to check
Check the status of an envelope — who signed, who hasn't, download links. Works in both sandbox (sk_test_ keys) and live.
| Argument | Type | Description |
|---|---|---|
| envelopeId* | string | The envelope ID to check |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"envelopeId"
],
"properties": {
"envelopeId": {
"type": "string",
"description": "The envelope ID to check"
}
}
}Dispatch a DRAFT envelope — use after a human has reviewed an envelope that swiftsign_send_envelope or swiftsign_send_from_template returned as draft_pending_confirmation. This emails the signers. Does NOT work on envelopes already SENT/COMPLETED/VOIDED.
| Argument | Type | Description |
|---|---|---|
| envelopeId* | string | The DRAFT envelope ID to dispatch |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"envelopeId"
],
"properties": {
"envelopeId": {
"type": "string",
"description": "The DRAFT envelope ID to dispatch"
}
}
}Mint a short-lived embedded signing URL for a recipient (30-minute expiry). Returns a url to embed plus its expiresAt. The envelope must already be SENT. Works in both sandbox (sk_test_ keys) and live.
| Argument | Type | Description |
|---|---|---|
| returnUrl | string | URL to redirect the signer to after they finish |
| envelopeId* | string | The envelope ID |
| recipientId* | string | The recipient ID within that envelope |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"envelopeId",
"recipientId"
],
"properties": {
"returnUrl": {
"type": "string",
"description": "URL to redirect the signer to after they finish"
},
"envelopeId": {
"type": "string",
"description": "The envelope ID"
},
"recipientId": {
"type": "string",
"description": "The recipient ID within that envelope"
}
}
}Download the completed, sealed PDF (or its Certificate of Completion) for an envelope. Only works once status is COMPLETED — run swiftsign_check_status first. Does NOT work on DRAFT or SENT envelopes; nothing has been signed yet on those.
| Argument | Type | Description |
|---|---|---|
| document | number | Which document to download when an envelope has several (0-based, default 0) |
| envelopeId* | string | The envelope ID (must be COMPLETED) |
| outputPath | string | Where to save the file (default: ./swiftsign-<id>.pdf). Ignored on the hosted endpoint, which returns base64. |
| certificate | boolean | If true, download the Certificate of Completion (audit trail) instead of the signed document |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"envelopeId"
],
"properties": {
"document": {
"type": "number",
"description": "Which document to download when an envelope has several (0-based, default 0)"
},
"envelopeId": {
"type": "string",
"description": "The envelope ID (must be COMPLETED)"
},
"outputPath": {
"type": "string",
"description": "Where to save the file (default: ./swiftsign-<id>.pdf). Ignored on the hosted endpoint, which returns base64."
},
"certificate": {
"type": "boolean",
"description": "If true, download the Certificate of Completion (audit trail) instead of the signed document"
}
}
}List envelopes (sent documents) with their status. Scoped to your key's mode — sandbox (sk_test_) keys see test envelopes, live keys see live.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}List your saved templates. Scoped to your key's mode — sandbox (sk_test_) keys see test templates, live keys see live.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Send a document for e-signature. Accepts PDF as base64, recipients, and field placement. Sandbox keys (sk_test_) send immediately (watermarked test mail). LIVE keys create a DRAFT and return it for human review unless confirm: true — nothing is emailed until confirmed. Field placement: page+x+y (percent, top-left origin) OR an anchor string, not both. After everyone signs, retrieve the sealed PDF with swiftsign_download_signed_pdf.
| Argument | Type | Description |
|---|---|---|
| fields* | array | Signing fields to place on documents |
| confirm | boolean | Set true to dispatch immediately on a LIVE key (sk_live_/sk_oat_). Without it, live envelopes are created as DRAFT and returned for human review before anything is emailed. Test keys (sk_test_) always send immediately (sandbox, watermarked). |
| message | string | Optional message to include |
| subject* | string | Email subject / document title |
| documents* | array | PDF documents to send |
| recipients* | array | People who need to sign or receive a copy |
Send an envelope from a saved template by assigning signers to roles. Sandbox keys (sk_test_) send immediately; LIVE keys create a DRAFT for human review unless confirm: true — nothing is emailed until confirmed.
| Argument | Type | Description |
|---|---|---|
| confirm | boolean | Set true to dispatch immediately on a LIVE key (sk_live_/sk_oat_). Without it, live envelopes are created as DRAFT and returned for human review before anything is emailed. Test keys (sk_test_) always send immediately (sandbox, watermarked). |
| message | string | Optional message to include |
| subject | string | Email subject / document title |
| templateId* | string | The template ID to send from |
| roleAssignments* | object | Map of template role name → signer { name, email } |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"templateId",
"roleAssignments"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Set true to dispatch immediately on a LIVE key (sk_live_/sk_oat_). Without it, live envelopes are created as DRAFT and returned for human review before anything is emailed. Test keys (sk_test_) always send immediately (sandbox, watermarked)."
},
"message": {
"type": "string",
"description": "Optional message to include"
},
"subject": {
"type": "string",
"description": "Email subject / document title"
},
"templateId": {
"type": "string",
"description": "The template ID to send from"
},
"roleAssignments": {
"type": "object",
"description": "Map of template role name → signer { name, email }",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "Signer full name"
},
"email": {
"type": "string",
"description": "Signer email address"
}
}
}
}
}
}Initiate the upgrade to PRO ($15/mo flat). Returns a Stripe checkout_url that a human opens once to add a card — agents cannot complete the payment themselves. Moves the account from sandbox (sk_test_) to live sends. Returns status 'updated' if already on the plan.
| Argument | Type | Description |
|---|---|---|
| plan | string | Plan to upgrade to (default PRO) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"plan": {
"type": "string",
"const": "PRO",
"description": "Plan to upgrade to (default PRO)"
}
}
}Cancel/void an envelope that hasn't been completed yet. Signers can no longer sign a voided envelope. Works in both sandbox (sk_test_ keys) and live.
| Argument | Type | Description |
|---|---|---|
| envelopeId* | string | The envelope ID to void |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"envelopeId"
],
"properties": {
"envelopeId": {
"type": "string",
"description": "The envelope ID to void"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subject",
"documents",
"recipients",
"fields"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"recipientIndex",
"type",
"page",
"x",
"y"
],
"properties": {
"x": {
"type": "number",
"description": "X position, percent 0-100 of page width, top-left origin"
},
"y": {
"type": "number",
"description": "Y position, percent 0-100 of page height, top-left origin"
},
"page": {
"type": "number",
"description": "Page number (1-based). Ignored when anchor resolves."
},
"type": {
"enum": [
"SIGNATURE",
"NAME",
"DATE",
"TEXT",
"INITIALS",
"CHECKBOX",
"RADIO",
"DROPDOWN",
"ATTACHMENT"
],
"type": "string",
"description": "Field type"
},
"width": {
"type": "number",
"description": "Field width (percent)"
},
"anchor": {
"type": "string",
"description": "Anchor text to search in the PDF. Use anchor OR page+x+y, not both."
},
"height": {
"type": "number",
"description": "Field height (percent)"
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "Choices for RADIO / DROPDOWN fields"
},
"yOffset": {
"type": "number",
"description": "Y offset from anchor (percent)"
},
"document": {
"type": "number",
"default": 0,
"description": "Document index (0-based)"
},
"recipientIndex": {
"type": "number",
"description": "Index into recipients array (0-based)"
}
}
},
"description": "Signing fields to place on documents"
},
"confirm": {
"type": "boolean",
"description": "Set true to dispatch immediately on a LIVE key (sk_live_/sk_oat_). Without it, live envelopes are created as DRAFT and returned for human review before anything is emailed. Test keys (sk_test_) always send immediately (sandbox, watermarked)."
},
"message": {
"type": "string",
"description": "Optional message to include"
},
"subject": {
"type": "string",
"description": "Email subject / document title"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"base64"
],
"properties": {
"name": {
"type": "string",
"description": "Document filename (e.g. 'contract.pdf')"
},
"base64": {
"type": "string",
"description": "Base64-encoded PDF content"
}
}
},
"description": "PDF documents to send"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "Recipient full name"
},
"role": {
"enum": [
"SIGNER",
"CC"
],
"type": "string",
"default": "SIGNER"
},
"email": {
"type": "string",
"description": "Recipient email address"
},
"routingOrder": {
"type": "number",
"default": 1,
"description": "Signing order (1 = first)"
}
}
},
"description": "People who need to sign or receive a copy"
}
}
}