{"_id":"@dwn-protocol/sign-mcp-server","_rev":"10-b9df6ec20d221e42dfb47953ca6eb433","name":"@dwn-protocol/sign-mcp-server","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dwn-protocol/sign-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","abaxx-sign","document-signing","ai-tools"],"_id":"@dwn-protocol/sign-mcp-server@1.0.0","maintainers":[{"name":"213374you","email":"tobrien820@gmail.com"},{"name":"devtestingstuff","email":"nolanjacobson@protonmail.com"},{"name":"jdutchak","email":"john.dutchak@gmail.com"}],"homepage":"https://github.com/abaxxtech/abaxx-sign#readme","bugs":{"url":"https://github.com/abaxxtech/abaxx-sign/issues"},"bin":{"sign-mcp-server":"build/index.js"},"dist":{"shasum":"d11288451970b0266a443cd2ad98508f6d37884a","tarball":"https://registry.npmjs.org/@dwn-protocol/sign-mcp-server/-/sign-mcp-server-1.0.0.tgz","fileCount":5,"integrity":"sha512-/0pNHdBQBvm6cQQscAxuDuQtF1QDyZhbW/cablF1J+saSVSIMqkUiw5jzbByvmfFrcXWHWG6iKQiMw59R0tV6g==","signatures":[{"sig":"MEYCIQC1NLgNlNb7tgj3SAPXYQTHe8N28wxbF3Q0gYmoV6QBuwIhAKEgWvhYWRUSBL42iIyIzfakAPDG0MRhVpnNzh9EpyzP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":460597},"main":"./build/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"45a5c854cee4f1365f6ccc39cce3924354870235","scripts":{"dev":"bun --watch src/index.ts --base-url http://localhost:3000 --api-token api_b9ux91s6rri5nkwc","build":"bun build src/index.ts --outdir build --target node --format esm && chmod +x build/index.js","prepare":"bun run build","publish":"npm publish","dev:prod":"bun --watch src/index.ts --base-url https://sign.abaxx.id --api-token api_b9ux91s6rri5nkwc","publish:beta":"npm publish --tag beta","prepublishOnly":"bun run build"},"_npmUser":{"name":"devtestingstuff","email":"nolanjacobson@protonmail.com"},"repository":{"url":"git+https://github.com/abaxxtech/abaxx-sign.git","type":"git"},"_npmVersion":"11.4.2","description":"MCP server for Abaxx Sign API - provides tools for document signing workflows","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sign-mcp-server_1.0.0_1762265946211_0.9120169148911603","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-11-04T14:19:06.086Z","modified":"2026-05-27T23:59:13.697Z","1.0.0":"2025-11-04T14:19:06.441Z"},"bugs":{"url":"https://github.com/abaxxtech/abaxx-sign/issues"},"homepage":"https://github.com/abaxxtech/abaxx-sign#readme","keywords":["mcp","model-context-protocol","abaxx-sign","document-signing","ai-tools"],"repository":{"url":"git+https://github.com/abaxxtech/abaxx-sign.git","type":"git"},"description":"MCP server for Abaxx Sign API - provides tools for document signing workflows","maintainers":[{"email":"nolanjacobson@protonmail.com","name":"devtestingstuff"},{"email":"john.dutchak@gmail.com","name":"jdutchak"}],"readme":"# Abaxx Sign MCP Server\n\nA Model Context Protocol (MCP) server that provides programmatic access to the Abaxx Sign API for document signing workflows.\n\n## Features\n\n- **Complete API Coverage**: Supports both V1 (stable) and V2-beta endpoints\n- **Document Management**: Create, retrieve, update, delete, send, and download documents\n- **Recipient Operations**: Add, update, and remove recipients from documents\n- **Field Management**: Add signature fields, text fields, and other form elements\n- **Template Support**: Create templates and generate documents from templates\n- **Flexible Configuration**: Switch between local development and production environments\n- **Error Handling**: Comprehensive error messages and rate limit handling\n\n## Installation\n\n### As an npm Package (Recommended)\n\n```bash\nnpm install -g @dwn-protocol/sign-mcp-server\n# or\nnpm install @dwn-protocol/sign-mcp-server\n```\n\nThe package is publicly available on npm and includes a CLI binary (`sign-mcp-server`).\n\n### From Source\n\n```bash\ngit clone <repository-url>\ncd mcp-tool\nbun install\nbun run build\n```\n\n## Testing with MCP Inspector\n\n```bash\nnpx @modelcontextprotocol/inspector sign-mcp-server --base-url http://localhost:3000 --api-token api_b9ux91s6rri5nkwc\n```\n\n## Configuration\n\nThe server requires two command-line arguments:\n\n- `--base-url`: The API base URL\n  - Local development: `http://localhost:3000`\n  - Production: `https://sign.abaxx.id`\n- `--api-token`: Your Abaxx Sign API token (format: `api_xxxxxxxxxxxxxxxx`)\n  - Note: The token is automatically prefixed with \"Bearer\" in the Authorization header\n\n### Getting an API Token\n\n1. Navigate to [Abaxx Sign Settings](https://sign.abaxx.id/settings/tokens)\n2. Click \"Create token\"\n3. Choose a descriptive name and expiration date\n4. Copy the generated token (you won't be able to see it again)\n\n## Usage with Claude Desktop\n\nAdd the server to your Claude Desktop MCP configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n\n**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`\n\n### Using the npm Package (Recommended)\n\nIf you installed globally (`npm install -g @dwn-protocol/sign-mcp-server`):\n\n```json\n{\n  \"mcpServers\": {\n    \"abaxx-sign\": {\n      \"command\": \"sign-mcp-server\",\n      \"args\": [\n        \"--base-url\",\n        \"https://sign.abaxx.id\",\n        \"--api-token\",\n        \"api_your_token_here\"\n      ]\n    }\n  }\n}\n```\n\nOr with `npx` (no global install needed):\n\n```json\n{\n  \"mcpServers\": {\n    \"abaxx-sign\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@dwn-protocol/sign-mcp-server\",\n        \"--base-url\",\n        \"https://sign.abaxx.id\",\n        \"--api-token\",\n        \"api_your_token_here\"\n      ]\n    }\n  }\n}\n```\n\n### Local Development Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"abaxx-sign-local\": {\n      \"command\": \"sign-mcp-server\",\n      \"args\": [\n        \"--base-url\",\n        \"http://localhost:3000\",\n        \"--api-token\",\n        \"api_dev_your_token_here\"\n      ]\n    }\n  }\n}\n```\n\n### Multiple Environments\n\nYou can configure both development and production simultaneously:\n\n```json\n{\n  \"mcpServers\": {\n    \"abaxx-sign-local\": {\n      \"command\": \"sign-mcp-server\",\n      \"args\": [\n        \"--base-url\",\n        \"http://localhost:3000\",\n        \"--api-token\",\n        \"api_dev_token\"\n      ]\n    },\n    \"abaxx-sign-production\": {\n      \"command\": \"sign-mcp-server\",\n      \"args\": [\n        \"--base-url\",\n        \"https://sign.abaxx.id\",\n        \"--api-token\",\n        \"api_prod_token\"\n      ]\n    }\n  }\n}\n```\n\n### Using Local Build (Development)\n\nIf you're developing the MCP server locally:\n\n```json\n{\n  \"mcpServers\": {\n    \"abaxx-sign-local\": {\n      \"command\": \"node\",\n      \"args\": [\n        \"/absolute/path/to/mcp-tool/build/index.js\",\n        \"--base-url\",\n        \"http://localhost:3000\",\n        \"--api-token\",\n        \"api_dev_token\"\n      ]\n    }\n  }\n}\n```\n\n## Available Tools\n\n### Document Operations\n\n#### `get_documents`\nList all documents with pagination.\n\n**Parameters:**\n- `page` (optional): Page number (default: 1)\n- `perPage` (optional): Items per page (default: 10)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `get_document`\nGet a single document with recipients and fields.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `create_document`\nCreate a new document and receive an upload URL for the PDF.\n\n**Parameters:**\n- `title` (required): Document title\n- `recipients` (required): Array of recipient objects\n- `externalId` (optional): External reference ID\n- `folderId` (optional): Folder ID\n- `meta` (optional): Document metadata (subject, message, timezone, etc.)\n- `authOptions` (optional): Authentication requirements\n- `formValues` (optional): Pre-filled form values\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n**Example:**\n```json\n{\n  \"title\": \"Contract.pdf\",\n  \"recipients\": [\n    {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"role\": \"SIGNER\",\n      \"signingOrder\": 0\n    }\n  ],\n  \"meta\": {\n    \"subject\": \"Please sign this contract\",\n    \"message\": \"Please review and sign at your earliest convenience.\"\n  }\n}\n```\n\n#### `update_document`\nUpdate document properties (V2 only).\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `title` (optional): New title\n- `externalId` (optional): New external ID\n- `meta` (optional): Updated metadata\n\n#### `delete_document`\nDelete a document permanently.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `send_document`\nSend document to recipients for signing.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `sendEmail` (optional): Send email notifications (default: true)\n- `sendCompletionEmails` (optional): Send completion emails (V1 only)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `resend_document`\nResend notification emails to specific recipients (V1 only).\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `recipients` (required): Array of recipient IDs\n\n#### `download_document`\nGet download URL for a signed document.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `downloadOriginalDocument` (optional): Download original instead of signed (default: false)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n### Recipient Operations\n\n#### `get_recipient`\nGet recipient details (V2 only).\n\n**Parameters:**\n- `recipientId` (required): Recipient ID\n\n#### `create_recipient`\nAdd a recipient to a document.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `name` (required): Recipient name\n- `email` (required): Recipient email\n- `role` (required): \"SIGNER\", \"APPROVER\", \"CC\", or \"VIEWER\"\n- `signingOrder` (optional): Signing order number\n- `authOptions` (optional): Authentication options (V1 only)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `update_recipient`\nUpdate recipient information.\n\n**Parameters:**\n- `recipientId` (required): Recipient ID\n- `documentId` (optional): Document ID (required for V1)\n- `name` (optional): New name\n- `email` (optional): New email\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `delete_recipient`\nRemove a recipient from a document.\n\n**Parameters:**\n- `recipientId` (required): Recipient ID\n- `documentId` (optional): Document ID (required for V1)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n### Field Operations\n\n#### `get_field`\nGet field details (V2 only).\n\n**Parameters:**\n- `fieldId` (required): Field ID\n\n#### `create_field`\nAdd field(s) to a document.\n\n**Parameters:**\n- `documentId` (required): Document ID\n- `field` (V2): Field object\n- `fields` (V1): Array of field objects\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n**Field Types:** `SIGNATURE`, `NAME`, `EMAIL`, `DATE`, `TEXT`, `NUMBER`, `CHECKBOX`, `RADIO`, `SELECT`\n\n**Example (V1):**\n```json\n{\n  \"documentId\": 123,\n  \"fields\": [\n    {\n      \"recipientId\": 55,\n      \"type\": \"SIGNATURE\",\n      \"pageNumber\": 1,\n      \"pageX\": 50,\n      \"pageY\": 20,\n      \"pageWidth\": 25,\n      \"pageHeight\": 5\n    }\n  ]\n}\n```\n\n#### `update_field`\nUpdate field properties.\n\n**Parameters:**\n- `fieldId` (required): Field ID\n- `documentId` (optional): Document ID (required for V1)\n- Position and size parameters (optional)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `delete_field`\nRemove a field from a document.\n\n**Parameters:**\n- `fieldId` (required): Field ID\n- `documentId` (optional): Document ID (required for V1)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n### Template Operations\n\n#### `get_templates`\nList all templates with pagination.\n\n**Parameters:**\n- `page` (optional): Page number (default: 1)\n- `perPage` (optional): Items per page (default: 10)\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `get_template`\nGet a single template with details.\n\n**Parameters:**\n- `templateId` (required): Template ID\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `create_template`\nCreate a new template and receive upload URL.\n\n**Parameters:**\n- `title` (required): Template title\n- `externalId` (optional): External reference ID\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `delete_template`\nDelete a template permanently.\n\n**Parameters:**\n- `templateId` (required): Template ID\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n#### `generate_document_from_template`\nCreate a document from a template.\n\n**Parameters:**\n- `templateId` (required): Template ID\n- `recipients` (required): Recipients with template recipient IDs\n- `title` (optional): Document title\n- `externalId` (optional): External reference ID\n- `meta` (optional): Document metadata\n- `prefillFields` (optional): Pre-fill field values\n- `apiVersion` (optional): \"v1\" or \"v2-beta\" (default: \"v1\")\n\n**Example:**\n```json\n{\n  \"templateId\": 99,\n  \"recipients\": [\n    {\n      \"id\": 10,\n      \"name\": \"Jane Doe\",\n      \"email\": \"jane@example.com\"\n    }\n  ],\n  \"prefillFields\": [\n    {\n      \"id\": 21,\n      \"type\": \"text\",\n      \"value\": \"Acme Corporation\"\n    }\n  ]\n}\n```\n\n## API Versions\n\n### V1 (Stable - Recommended for Production)\n- Production-ready and stable\n- No breaking changes without advance notice\n- Full support and maintenance\n- Base path: `/api/v1`\n\n### V2-beta (Beta - Subject to Change)\n- Enhanced features and bulk operations\n- Subject to breaking changes\n- Not recommended for production\n- Base path: `/api/v2-beta`\n\n## Rate Limits\n\n- **Limit**: 100 requests per minute per IP address\n- **Response**: 429 Too Many Requests\n\nWhen rate limited, wait at least 60 seconds before retrying.\n\n## Error Handling\n\nThe server provides detailed error messages:\n\n- **400**: Bad request (validation error or limit exceeded)\n- **401**: Unauthorized (invalid API key)\n- **404**: Resource not found\n- **429**: Too many requests (rate limit exceeded)\n- **500**: Server error\n\n## Development\n\n### Build\n\n```bash\nbun run build\n```\n\n### Watch Mode\n\n```bash\nbun run dev\n```\n\n### Project Structure\n\n```\nsign-mcp/\n├── src/\n│   └── index.ts          # Main server implementation\n├── build/\n│   └── index.js          # Compiled output\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n## Best Practices\n\n1. **Store Document IDs**: Save returned document IDs for future reference\n2. **Handle Upload Timeouts**: Upload URLs expire after 1 hour\n3. **Validate Recipients**: Ensure email addresses are valid before sending\n4. **Use External IDs**: Track documents in your system using `externalId`\n5. **Implement Webhooks**: Use Abaxx Sign webhooks for real-time status updates\n6. **Respect Rate Limits**: Stay within the 100 requests/minute limit\n7. **Error Handling**: Always check for and handle API errors\n\n## Common Workflows\n\n### Create and Send a Document\n\n1. Create document with `create_document`\n2. Upload PDF to the returned `uploadUrl`\n3. Add fields with `create_field`\n4. Send to recipients with `send_document`\n\n### Use a Template\n\n1. Get template details with `get_template`\n2. Note the template recipient IDs\n3. Generate document with `generate_document_from_template`\n4. Document is ready to send\n\n## Resources\n\n- [Abaxx Sign API Documentation](https://sign.abaxx.id/developers/public-api)\n- [Model Context Protocol](https://modelcontextprotocol.io)\n- [API Authentication Guide](https://sign.abaxx.id/developers/public-api/authentication)\n\n## License\n\nThis project is built using [Bun](https://bun.sh) and the [MCP SDK](https://github.com/modelcontextprotocol/sdk).\n","readmeFilename":"README.md"}