mcp-signwell
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SIGNWELL_API_KEY | Yes | Your SignWell API key with document access. | |
| SIGNWELL_API_BASE_URL | No | Optional override for non-production endpoints. | |
| SIGNWELL_API_TIMEOUT_MS | No | HTTP client timeout in milliseconds. | 90000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| file_storeA | Store a user's existing file for upcoming SignWell requests. Returns a file_token you can pass to document/template tools. IMPORTANT: This tool is for the USER'S EXISTING FILES only. Do NOT read, parse, or convert the file — upload it as-is. HOW TO PROVIDE THE FILE (in order of preference):
CHAT ATTACHMENTS: When a user uploads/attaches a file in the chat, DO NOT use resource_uri — those are sandboxed and inaccessible. Instead, call file_store with NO arguments to open the native file picker. CLAUDE-GENERATED FILES: If YOU created the file content (e.g. generated a PDF), do NOT use file_store. Pass file_base64 directly to document_create instead. |
| file_validate_text_tagsA | Validate text tags in a PDF before creating a template or document. RECOMMENDED WORKFLOW: file_store → file_validate_text_tags → template_create/document_create Accepts a PDF via file_token (from file_store), file_base64, file_url, or resource_uri. Set use_picker: true to open a native file picker when no file input is provided. Extracts text from the PDF and checks for valid SignWell text tags like {{signature:1:y}}. Returns:
|
| document_createA | Create a SignWell document (always created as a draft). CRITICAL RULES:
SUPPORTED FILE TYPES: .pdf, .doc, .docx, .pages, .ppt, .pptx, .key, .xls, .xlsx, .numbers, .jpg, .jpeg, .png, .tiff, .tif, .webp, .html, .htm WORKFLOW FOR USER'S EXISTING FILES:
WORKFLOW FOR CLAUDE-GENERATED FILES:
FILE ACCESS: Chat attachments and sandbox paths (/home/claude, /mnt/user-data) are inaccessible to the MCP server. Do NOT use resource_uri or sandbox file_path values. For existing files, call file_store with no arguments to open the native file picker. REQUIRED PARAMETERS:
EXAMPLE (docx via file_token — most common): { "name": "NDA Agreement", "recipients": [{"id": "1", "email": "signer@example.com"}], "files": [{"name": "nda.docx", "file_token": ""}] } EXAMPLE (pdf with text tags): { "name": "Contract", "text_tags": true, "recipients": [{"id": "1", "email": "signer@example.com"}], "files": [{"name": "contract.pdf", "file_token": ""}] } TEXT TAGS (optional): Set text_tags: true only if the document already contains signature placeholders like {{signature:1:y}}. The recipient "id" MUST match the number in text tags (id:"1" matches {{signature:1:y}}). |
| document_listB | List SignWell documents with optional filtering (status, archived, search). |
| document_getB | Fetch the latest status for a SignWell document. |
| document_send_draftC | Send a previously created draft document (requires confirm_send). |
| document_send_reminderB | Send a reminder email for a document (optionally to a specific recipient). |
| document_completed_pdfC | Fetch the completed PDF. Use mode: 'base64' to get content for displaying in an artifact or chat (embed as data:application/pdf;base64,{pdf_base64}). Default 'url' mode returns a shareable link. |
| template_createA | Create a SignWell template for reusable signature documents. RECOMMENDED WORKFLOW:
REQUIRED PARAMETERS (both are mandatory):
STEP-BY-STEP EXAMPLE (using file_token):
ALTERNATIVE (inline base64): { "name": "My Template", "files": [{"name": "doc.pdf", "file_base64": "JVBERi0xLjQK..."}], "placeholders": [{"id": "1", "name": "Signer"}], "text_tags": true } TEXT TAGS (when text_tags: true): Your PDF must contain these literal text strings as SELECTABLE TEXT (not images):
The number in the tag (1, 2, etc.) MUST match a placeholder "id" in your request. CRITICAL: Text tags must be SELECTABLE/SEARCHABLE text in the PDF, not rendered as images or graphics. When generating PDFs programmatically, use text drawing methods (e.g., drawString) with standard fonts. To verify: open the PDF and try to select/copy the tag text with your mouse. If you can't select it, SignWell can't parse it. MULTI-SIGNER EXAMPLE: { "name": "Contract", "files": [{"name": "contract.pdf", "file_base64": "JVBERi0xLjQK...actual base64 here..."}], "placeholders": [ {"id": "1", "name": "Client"}, {"id": "2", "name": "Vendor"} ], "text_tags": true } For this example, the PDF should contain: {{signature:1:y}} for Client and {{signature:2:y}} for Vendor. COMMON ERRORS:
|
| template_updateA | Update an existing SignWell template. Only provide fields you want to change. |
| template_getA | Fetch an individual SignWell template by ID. |
| template_listB | List SignWell templates with pagination. |
| template_deleteC | Delete a SignWell template. |
| template_create_documentA | Create and send a document from a template. Templates are pre-configured and ready to send, so this tool sends the document for signing by default. IMPORTANT: When a user asks to "send a template" or "send a document from a template", the document will be sent immediately for signing. Set draft: true ONLY if the user explicitly asks to create a draft or review before sending. REQUIRED:
Example: { "template_id": "abc123", "recipients": [{ "id": "recipient_1", "placeholder_name": "Client", "email": "client@example.com", "name": "John Doe" }] } |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| search_document | Fetch SignWell document summary by id. |
| search_template | Fetch SignWell template summary by id. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bidsketch/signwell-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server