SignWell
Model Context Protocol server that orchestrates SignWell's e-signature workflows — create, send, track, and manage documents and templates.
От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные
Что умеет
- File Store: 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 NO
- File Validate Text Tags: 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
- Document Create: Create a SignWell document (always created as a draft). CRITICAL RULES: - Do NOT read, parse, extract, or verify file contents before uploading. The user already knows what is in the
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Model Context Protocol server that orchestrates SignWell's e-signature workflows — create, send, track, and manage documents and templates.
Список инструментов сервера (14)
Технические названия из tools/list. Нужны только разработчикам.
| file_store | 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): 1. No arguments — Opens a native OS file picker dialog. USE THIS BY DEFAULT. Simply call file_store with no arguments and the user will select the file themselves. 2. file_path — Only if the user explicitly provides a local path on their computer (e.g. ~/Documents/contract.docx). 3. file_url — A publicly accessible URL to the file. 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_tags | 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: - Whether text is extractable from the PDF - List of valid tags found - List of malformed tags (if any) - Signer numbers referenced - Recommendations for fixing issues |
| document_create | Create a SignWell document (always created as a draft). CRITICAL RULES: - Do NOT read, parse, extract, or verify file contents before uploading. The user already knows what is in the file. - Do NOT convert files between formats (e.g. do NOT convert .docx to .pdf). SignWell handles conversion automatically. - The user will place signature fields in the SignWell editor. Just upload the file and return the editor link. 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: 1. file_store (call with NO arguments to open native file picker) → returns file_token 2. document_create (pass file_token in files array) → creates draft, returns editor_url WORKFLOW FOR CLAUDE-GENERATED FILES: 1. document_create with content_text directly (RECOMMENDED) → MCP server converts to DOCX automatically Pass plain text or Markdown as content_text. The server generates a DOCX file without base64 overhead. 2. document_create with file_base64 directly (skip file_store) → creates draft, returns editor_url Do NOT write the file to disk and pass a file_path — sandbox paths are inaccessible. Use file_base64. Example using content_text: { "name": "Service Agreement", "recipients": [{"id": "1", "email": "client@example.com"}], "files": [{"name": "agreement.docx", "content_text": "# Service Agreement\n\nThis agreement between..."}] } 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: 1. name: Document name 2. recipients: Array with at least one object containing "id" and "email" 3. files: Array with at least one file object containing: - "name": Filename (e.g., "contract.docx") - One content source (in order of preference): * "content_text": Plain text or Markdown to auto-convert to DOCX (RECOMMENDED for Claude-generated content) * "file_token": Token from file_store (recommended for user files) * "file_url": Public URL to the file * "file_base64": Base64-encoded file content * "resource_uri": MCP resource URI EXAMPLE (docx via file_token — most common): { "name": "NDA Agreement", "recipients": [{"id": "1", "email": "signer@example.com"}], "files": [{"name": "nda.docx", "file_token": "<token from file_store>"}] } EXAMPLE (pdf with text tags): { "name": "Contract", "text_tags": true, "recipients": [{"id": "1", "email": "signer@example.com"}], "files": [{"name": "contract.pdf", "file_token": "<token from file_store>"}] } 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_list | List SignWell documents with optional filtering (status, archived, search). |
| document_get | Fetch the latest status for a SignWell document. |
| document_send_draft | Send a previously created draft document (requires confirm_send). |
| document_send_reminder | Send a reminder email for a document (optionally to a specific recipient). |
| document_completed_pdf | 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_create | Create a SignWell template for reusable signature documents. RECOMMENDED WORKFLOW: 1. file_store (provide file_path, file_url, or resource_uri) → returns file_token 2. file_validate_text_tags (pass file_token) → validates tags are extractable 3. template_create (pass file_token in files array) → creates the template REQUIRED PARAMETERS (both are mandatory): - files: Array with at least one file object containing: * "name": Filename (e.g., "template.docx") * One content source (in order of preference): - "content_text": Plain text/Markdown to auto-convert to DOCX (RECOMMENDED for generated content) - "file_token": Token from file_store (recommended for uploaded files) - "file_base64": Base64-encoded file content - "file_url": Public URL to the file - "resource_uri": MCP resource URI - placeholders: Array with at least one placeholder object containing "id" and "name" STEP-BY-STEP EXAMPLE (using file_token): 1. Call file_store with {"file_path": "/path/to/doc.pdf"} → get file_token 2. Call file_validate_text_tags with {"file_token": "..."} → confirm tags are valid 3. Call this tool with: { "name": "My Template", "files": [{"name": "doc.pdf", "file_token": "<token from file_store>"}], "placeholders": [{"id": "1", "name": "Signer"}], "text_tags": true } 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): - {{signature:1:y}} - Signature field for placeholder id "1" - {{date:1:y}} - Date field for placeholder id "1" - {{text:1:y:Label}} - Text field with label - {{initial:1:y}} - Initials field 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: - Empty arguments {} = You forgot to include files and placeholders arrays - "fields": [] in response = PDF doesn't contain valid text tags, or text_tags wasn't set to true |
| template_update | Update an existing SignWell template. Only provide fields you want to change. |
| template_get | Fetch an individual SignWell template by ID. |
| template_list | List SignWell templates with pagination. |
| template_delete | Delete a SignWell template. |
| template_create_document | 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: - template_id: The template ID to create the document from - recipients: Array of recipient objects, each with: - id: Unique identifier for this recipient (e.g., "recipient_1") - placeholder_name: Name of the template placeholder to assign (must match exactly) - email: Recipient's email address - name: (optional) Recipient's display name Example: { "template_id": "abc123", "recipients": [{ "id": "recipient_1", "placeholder_name": "Client", "email": "client@example.com", "name": "John Doe" }] } |