<p align="center"> <img src="./assets/banner.svg" alt="SwiftSign: AI-native e-signatures" width="100%"> </p>
<p align="center"> <a href="https://www.npmjs.com/package/swiftsign-mcp"><img src="https://img.shields.io/npm/v/swiftsign-mcp?style=flat-square&color=0D1117&label=npm" alt="npm"></a> <a href="https://github.com/shahdadk/swiftsign-mcp/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-0D1117?style=flat-square" alt="MIT"></a> <img src="https://img.shields.io/badge/MCP-stdio-0D1117?style=flat-square" alt="MCP stdio"> <img src="https://img.shields.io/badge/Claude_Code_·_Cursor_·_Zed-0D1117?style=flat-square" alt="Compatible clients"> <a href="https://swiftsign.ca"><img src="https://img.shields.io/badge/swiftsign.ca-live-0D1117?style=flat-square" alt="Live"></a> </p>
swiftsign-mcp
E-signature for AI agents. An MCP server that lets Claude Code, Cursor, Zed, or any MCP-aware agent prepare, send, track, and seal legally binding documents without a human ever touching a mouse.
DocuSign assumes a person with a cursor dragging signature boxes onto a PDF. SwiftSign assumes code. An agent mints its own sandbox key, sends a contract, watches it get signed, and pulls back the sealed PDF and Certificate of Completion. No drag handles. No per-seat fees.
Quick start
claude mcp add swiftsign -- npx -y swiftsign-mcp
Or add it to your .mcp.json directly:
{
"mcpServers": {
"swiftsign": {
"command": "npx",
"args": ["-y", "swiftsign-mcp"],
"env": { "SWIFTSIGN_API_KEY": "sk_test_..." }
}
}
}
No key yet? You do not need the dashboard. Start the server with no key and call swiftsign_signup to mint a sandbox key in one tool call.
Zero to signed, no browser
An agent can go from nothing to a sealed document without ever opening a web page:
1. swiftsign_signup → mint a sandbox key (sk_test_...), no account, no card
2. swiftsign_send_envelope → send a PDF, place fields by anchor text or coordinates
3. swiftsign_check_status → poll until signed
4. swiftsign_download_signed_pdf → pull back the sealed PDF + Certificate of Completion
Live sends are confirm-gated: a real, legally binding send requires an explicit swiftsign_confirm_send so an agent cannot fire a contract by accident.
Tools
| Tool | What it does | |------|--------------| | swiftsign_signup | Mint a sandbox account + sk_test_ key. The only tool that runs with no key set. | | swiftsign_send_envelope | Send one or more PDFs for signature; anchor-text or coordinate field placement. | | swiftsign_confirm_send | Confirm a live (legally binding) send. Safety gate against accidental sends. | | swiftsign_send_from_template | Send from a saved template by recipient role. | | swiftsign_check_status | Check signing status of an envelope. | | swiftsign_list_envelopes | List sent envelopes. | | swiftsign_list_templates | List saved templates. | | swiftsign_create_embedded_url | Mint a short-lived embedded signing URL. | | swiftsign_download_signed_pdf | Download the sealed PDF + Certificate of Completion. | | swiftsign_void_envelope | Cancel an in-flight envelope. | | swiftsign_upgrade | Get a Stripe link to enable live sends. |
Coming from DocuSign
Bring your existing templates with you. The bundled importer (src/docusign/) authenticates against the DocuSign API and maps your templates and fields into SwiftSign, so an agent can migrate a signing workflow instead of rebuilding it.
Sandbox vs live keys
sk_test_: everything works (send, status, templates, embedded URLs); documents are test sends. No card.sk_live_: real, legally binding documents. Upgrade once withswiftsign_upgrade(a Stripe link you open to add a card). The same tools work in both modes; the key decides.
Legally binding
SwiftSign signatures carry a tamper-evident SHA-256 seal, a full audit trail, and a Certificate of Completion. Enforceable under:
- United States: ESIGN Act, UETA
- Canada: PIPEDA, Ontario Electronic Commerce Act
Configuration
| Env var | Required | Description | |---------|----------|-------------| | SWIFTSIGN_API_KEY | no | sk_test_ or sk_live_ key. Optional at startup; mint one with swiftsign_signup. | | SWIFTSIGN_API_URL | no | Override the API base for self-hosted SwiftSign instances. |
Build from source
npm install
npm run build # compiles src/ → dist/
npm test # node --test
Links
- Website: swiftsign.ca
- API docs: swiftsign.ca/docs
- Issues: github.com/shahdadk/swiftsign-mcp/issues
License
MIT © Shahdad Kompani






