Send markdown contracts for legally binding e-signatures. Draft, preview, send and track signing.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
"Bearer <md2sign API key>". Optional to start: without it you can validate and preview, and the create_account tool returns a key.
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.
Create an md2sign account for your human and get an API key. They are emailed a confirmation link and subscription options. Sending needs a confirmed email and an active plan (Starter $4.76/mo for 50 signature requests, Pro $26.41/mo for 500); you can validate, draft, preview and test-send right away. Returns api_key and checkout_urls to hand to the human.
The full name of your human.
Email address of your human. Document emails show it as the sender.
Company name shown to recipients, e.g. "Acme Pty Ltd".
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http md2sign https://md2sign.com/mcp
Headers
Authorization (optional, not in the config above): "Bearer <md2sign API key>". Optional to start: without it you can validate and preview, and the create_account tool returns a key.Tool list last changed Nov 12, 2026.
Create an md2sign account for your human and get an API key. They are emailed a confirmation link and subscription options. Sending needs a confirmed email and an active plan (Starter $4.76/mo for 50 signature requests, Pro $26.41/mo for 500); you can validate, draft, preview and test-send right away. Returns api_key and checkout_urls to hand to the human.
| Argument | Type | Description |
|---|---|---|
| name* | string | The full name of your human. |
| email* | string | Email address of your human. Document emails show it as the sender. |
| company_name | string | Company name shown to recipients, e.g. "Acme Pty Ltd". |
{
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The full name of your human."
},
"email": {
"type": "string",
"description": "Email address of your human. Document emails show it as the sender."
},
"company_name": {
"type": "string",
"description": "Company name shown to recipients, e.g. \"Acme Pty Ltd\"."
}
}
}Create a draft from a template by filling in its {{ variables }} (Pro). Set send=true to send it straight away; otherwise review it and call send_document. Missing variables return a missing_variables error listing them.
| Argument | Type | Description |
|---|---|---|
| send | boolean | Send immediately after creating the draft. |
| style | string | Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic. |
| title | string | Document title shown to signers. Defaults to the md2sign:title directive or the first # heading. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| message | string | Short personal note from the sender. |
| version | integer | Template version to use. Defaults to the latest. |
| variables | object | Values for every {{ variable }} in the template, e.g. {"client_name": "Jane Citizen", "client_email": "[email protected]"}. |
| template_id* | string | The template ID. |
| external_reference | string | Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks. |
{
"type": "object",
"required": [
"template_id"
],
"properties": {
"send": {
"type": "boolean",
"description": "Send immediately after creating the draft."
},
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic."
},
"title": {
"type": "string",
"description": "Document title shown to signers. Defaults to the md2sign:title directive or the first # heading."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"version": {
"type": "integer",
"description": "Template version to use. Defaults to the latest."
},
"variables": {
"type": "object",
"description": "Values for every {{ variable }} in the template, e.g. {\"client_name\": \"Jane Citizen\", \"client_email\": \"[email protected]\"}."
},
"template_id": {
"type": "string",
"description": "The template ID."
},
"external_reference": {
"type": "string",
"description": "Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks."
}
}
}Save markdown as a draft document. Recipients are detected from the signature fields. Drafts are free and can be updated any number of times. Set send=true to send immediately (uses one unit per recipient).
| Argument | Type | Description |
|---|---|---|
| send | boolean | Send for signature immediately after saving. |
| style | string | Visual style; defaults to the markdown directive or classic. |
| title | string | Optional title; defaults to the first "# Heading". |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| message | string | Short personal note from the sender, included in the email. |
| markdown* | string | The full markdown contract with [[signature: First Last <email>]] fields. |
| external_reference | string | Your own ID for this document. |
{
"type": "object",
"required": [
"markdown"
],
"properties": {
"send": {
"type": "boolean",
"description": "Send for signature immediately after saving."
},
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Visual style; defaults to the markdown directive or classic."
},
"title": {
"type": "string",
"description": "Optional title; defaults to the first \"# Heading\"."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender, included in the email."
},
"markdown": {
"type": "string",
"description": "The full markdown contract with [[signature: First Last <email>]] fields."
},
"external_reference": {
"type": "string",
"description": "Your own ID for this document."
}
}
}Show the account's verification status, plan, signature requests used and remaining this month, and checkout links if there is no subscription yet.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}Get the audit trail and cryptographic verification for a document: SHA-256 hashes, chained signature hashes, Ed25519 seals and every event with timestamps and IP addresses.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}Get a document with its status, markdown, recipients and each recipient's signing status.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}Explains md2sign's markdown format: signature fields [[signature: First Last <email>]], optional roles, and hidden style/title directives. Returns an example contract. Call this first if you have not written md2sign markdown before.
No arguments.
{
"type": "object",
"properties": {}
}Get a template: its latest markdown, the {{ variables }} it needs, and its version history. Pass "version" to read an older version.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| version | integer | A specific version number. Defaults to the latest. |
| template_id* | string | The template ID. |
{
"type": "object",
"required": [
"template_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"version": {
"type": "integer",
"description": "A specific version number. Defaults to the latest."
},
"template_id": {
"type": "string",
"description": "The template ID."
}
}
}List your documents, newest first, optionally filtered by status (draft, sent, completed, declined, voided, expired).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum results, default 25, max 100. |
| status | string | Only return documents with this status. Omit for all. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum results, default 25, max 100."
},
"status": {
"enum": [
"draft",
"sent",
"completed",
"declined",
"voided",
"expired"
],
"type": "string",
"description": "Only return documents with this status. Omit for all."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}List the document templates shared by your company account (Pro). Use get_template to read one and create_document_from_template to use it.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}List the company's webhook endpoints (Pro, admin only), including each signing secret, and the events you can subscribe to.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}Re-send the signature request email to recipients who haven't signed yet (at most once an hour per recipient). Uses no extra units.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures."
}
}
}Render markdown exactly as a recipient will see it: the signing page (default) or the signature-request email. Returns HTML you can show your human, plus validation results. Free, no account needed.
| Argument | Type | Description |
|---|---|---|
| view | string | Which view to render. Defaults to signing_page. |
| style | string | Overrides any <!-- md2sign:style=... --> directive. |
| message | string | Optional note from the sender shown in the email. |
| markdown* | string | The full markdown contract. |
| sender_name | string | Sender name to show (preview only). |
| company_name | string | Sender company to show (preview only). |
| sender_email | string | Sender email to show (preview only). |
{
"type": "object",
"required": [
"markdown"
],
"properties": {
"view": {
"enum": [
"signing_page",
"email"
],
"type": "string",
"description": "Which view to render. Defaults to signing_page."
},
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Overrides any <!-- md2sign:style=... --> directive."
},
"message": {
"type": "string",
"description": "Optional note from the sender shown in the email."
},
"markdown": {
"type": "string",
"description": "The full markdown contract."
},
"sender_name": {
"type": "string",
"description": "Sender name to show (preview only)."
},
"company_name": {
"type": "string",
"description": "Sender company to show (preview only)."
},
"sender_email": {
"type": "string",
"description": "Sender email to show (preview only)."
}
}
}Create a template (omit template_id) or update one (Pro). Changing the markdown saves a new version; older versions are kept. Use {{ variable_name }} placeholders for values that change per document, e.g. [[signature: {{ client_name }} <{{ client_email }}>]].
| Argument | Type | Description |
|---|---|---|
| name | string | Required when creating. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| markdown | string | Full template markdown. Required when creating. |
| change_note | string | What changed in this version. |
| description | string | Short note on what the template is for, shown in the template list. |
| template_id | string | Omit to create a new template. |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Required when creating."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"markdown": {
"type": "string",
"description": "Full template markdown. Required when creating."
},
"change_note": {
"type": "string",
"description": "What changed in this version."
},
"description": {
"type": "string",
"description": "Short note on what the template is for, shown in the template list."
},
"template_id": {
"type": "string",
"description": "Omit to create a new template."
}
}
}Create (omit webhook_id) or update a webhook endpoint (Pro, admin only). md2sign POSTs signed JSON with the document, its markdown and, on document.completed, the signed PDF as base64 to a public https URL such as Zapier, Make or n8n. Set send_test=true to send a test event.
| Argument | Type | Description |
|---|---|---|
| url | string | Public https:// URL. Required when creating. |
| events | array | Defaults to ["document.completed"]. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| is_active | boolean | Set false to pause deliveries without deleting the endpoint. Default true. |
| send_test | boolean | Queue a webhook.test delivery after saving. |
| webhook_id | string | Omit to create a new endpoint. |
| description | string | Label for this endpoint, e.g. "Send signed contracts to HubSpot". |
| include_pdf | boolean | Attach the signed PDF (base64) to document.completed. Default true. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public https:// URL. Required when creating."
},
"events": {
"type": "array",
"items": {
"enum": [
"document.sent",
"document.signed",
"document.completed",
"document.declined",
"document.voided",
"document.expired"
],
"type": "string"
},
"description": "Defaults to [\"document.completed\"]."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"is_active": {
"type": "boolean",
"description": "Set false to pause deliveries without deleting the endpoint. Default true."
},
"send_test": {
"type": "boolean",
"description": "Queue a webhook.test delivery after saving."
},
"webhook_id": {
"type": "string",
"description": "Omit to create a new endpoint."
},
"description": {
"type": "string",
"description": "Label for this endpoint, e.g. \"Send signed contracts to HubSpot\"."
},
"include_pdf": {
"type": "boolean",
"description": "Attach the signed PDF (base64) to document.completed. Default true."
}
}
}Send a draft for signature. Each recipient gets an email from "<Company> via md2sign" with the document and a unique signing link. Uses one unit per recipient. Needs a confirmed email and an active subscription; once sent, the document can't be edited.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| message | string | Optional short note from the sender to include in the email. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. Must be a draft. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Optional short note from the sender to include in the email."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a draft."
}
}
}Email a watermarked TEST copy of the signature request to the account owner only, so the human can see exactly what recipients will get. Free and needs no subscription; limited to 10 a day.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}Replace the markdown, title, style or message of a draft. Only drafts can be changed; to change a sent document, void it and create a new one.
| Argument | Type | Description |
|---|---|---|
| style | string | Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic. |
| title | string | Document title shown to signers. Defaults to the md2sign:title directive or the first # heading. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| message | string | Short personal note from the sender. |
| markdown | string | The new full markdown. |
| document_id* | string | The draft document ID. |
| external_reference | string | Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic."
},
"title": {
"type": "string",
"description": "Document title shown to signers. Defaults to the md2sign:title directive or the first # heading."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"markdown": {
"type": "string",
"description": "The new full markdown."
},
"document_id": {
"type": "string",
"description": "The draft document ID."
},
"external_reference": {
"type": "string",
"description": "Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks."
}
}
}Check that markdown has correctly formed signature fields before you draft or send it. Returns detected recipients, title, style, units required, the SHA-256 document hash, and errors/warnings with line numbers. Free, no account needed.
| Argument | Type | Description |
|---|---|---|
| markdown* | string | The full markdown contract. |
{
"type": "object",
"required": [
"markdown"
],
"properties": {
"markdown": {
"type": "string",
"description": "The full markdown contract."
}
}
}Cancel a sent document that is still awaiting signatures. Recipients who haven't signed are told it was cancelled.
| Argument | Type | Description |
|---|---|---|
| reason | string | Optional reason shown to recipients. |
| api_key | string | Your md2sign API key. Only needed if your MCP client cannot send an "Authorization: Bearer <api_key>" header. |
| document_id* | string | The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures. |
{
"type": "object",
"required": [
"document_id"
],
"properties": {
"reason": {
"type": "string",
"description": "Optional reason shown to recipients."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public https:// URL. Required when creating."
},
"events": {
"type": "array",
"items": {
"enum": [
"document.sent",
"document.signed",
"document.completed",
"document.declined",
"document.voided",
"document.expired"
],
"type": "string"
},
"description": "Defaults to [\"document.completed\"]."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"is_active": {
"type": "boolean"
},
"send_test": {
"type": "boolean",
"description": "Queue a webhook.test delivery after saving."
},
"webhook_id": {
"type": "string",
"description": "Omit to create a new endpoint."
},
"description": {
"type": "string"
},
"include_pdf": {
"type": "boolean",
"description": "Attach the signed PDF (base64) to document.completed. Default true."
}
}
}{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public https:// URL. Required when creating."
},
"events": {
"type": "array",
"items": {
"enum": [
"document.sent",
"document.signed",
"document.completed",
"document.declined",
"document.voided",
"document.expired"
],
"type": "string"
},
"description": "Defaults to [\"document.completed\"]."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"is_active": {
"type": "boolean",
"description": "Set false to pause deliveries without deleting the endpoint. Default true."
},
"send_test": {
"type": "boolean",
"description": "Queue a webhook.test delivery after saving."
},
"webhook_id": {
"type": "string",
"description": "Omit to create a new endpoint."
},
"description": {
"type": "string",
"description": "Label for this endpoint, e.g. \"Send signed contracts to HubSpot\"."
},
"include_pdf": {
"type": "boolean",
"description": "Attach the signed PDF (base64) to document.completed. Default true."
}
}
}{
"type": "object",
"required": [
"template_id"
],
"properties": {
"send": {
"type": "boolean",
"description": "Send immediately after creating the draft."
},
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string"
},
"title": {
"type": "string"
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"version": {
"type": "integer",
"description": "Template version to use. Defaults to the latest."
},
"variables": {
"type": "object",
"description": "Values for every {{ variable }} in the template, e.g. {\"client_name\": \"Jane Citizen\", \"client_email\": \"[email protected]\"}."
},
"template_id": {
"type": "string",
"description": "The template ID."
},
"external_reference": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"template_id"
],
"properties": {
"send": {
"type": "boolean",
"description": "Send immediately after creating the draft."
},
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic."
},
"title": {
"type": "string",
"description": "Document title shown to signers. Defaults to the md2sign:title directive or the first # heading."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"version": {
"type": "integer",
"description": "Template version to use. Defaults to the latest."
},
"variables": {
"type": "object",
"description": "Values for every {{ variable }} in the template, e.g. {\"client_name\": \"Jane Citizen\", \"client_email\": \"[email protected]\"}."
},
"template_id": {
"type": "string",
"description": "The template ID."
},
"external_reference": {
"type": "string",
"description": "Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks."
}
}
}{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Required when creating."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"markdown": {
"type": "string",
"description": "Full template markdown. Required when creating."
},
"change_note": {
"type": "string",
"description": "What changed in this version."
},
"description": {
"type": "string"
},
"template_id": {
"type": "string",
"description": "Omit to create a new template."
}
}
}{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Required when creating."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"markdown": {
"type": "string",
"description": "Full template markdown. Required when creating."
},
"change_note": {
"type": "string",
"description": "What changed in this version."
},
"description": {
"type": "string",
"description": "Short note on what the template is for, shown in the template list."
},
"template_id": {
"type": "string",
"description": "Omit to create a new template."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"reason": {
"type": "string",
"description": "Optional reason shown to recipients."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"reason": {
"type": "string",
"description": "Optional reason shown to recipients."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a sent document awaiting signatures."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Optional short note from the sender to include in the email."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Optional short note from the sender to include in the email."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template. Must be a draft."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum results, default 25, max 100."
},
"status": {
"enum": [
"draft",
"sent",
"completed",
"declined",
"voided",
"expired"
],
"type": "string"
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum results, default 25, max 100."
},
"status": {
"enum": [
"draft",
"sent",
"completed",
"declined",
"voided",
"expired"
],
"type": "string",
"description": "Only return documents with this status. Omit for all."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"document_id": {
"type": "string",
"description": "The document ID returned by create_draft, list_documents or create_document_from_template."
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string"
},
"title": {
"type": "string"
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"markdown": {
"type": "string",
"description": "The new full markdown."
},
"document_id": {
"type": "string",
"description": "The draft document ID."
},
"external_reference": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"document_id"
],
"properties": {
"style": {
"enum": [
"classic",
"modern",
"formal"
],
"type": "string",
"description": "Visual style for the email and signing page. Overrides the md2sign:style directive. Default classic."
},
"title": {
"type": "string",
"description": "Document title shown to signers. Defaults to the md2sign:title directive or the first # heading."
},
"api_key": {
"type": "string",
"description": "Your md2sign API key. Only needed if your MCP client cannot send an \"Authorization: Bearer <api_key>\" header."
},
"message": {
"type": "string",
"description": "Short personal note from the sender."
},
"markdown": {
"type": "string",
"description": "The new full markdown."
},
"document_id": {
"type": "string",
"description": "The draft document ID."
},
"external_reference": {
"type": "string",
"description": "Your own ID for this document (e.g. a CRM deal or invoice number). Returned in responses and webhooks."
}
}
}