swiftsign-mcp
by shahdadk
README.md
<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](https://modelcontextprotocol.io) 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
```bash
claude mcp add swiftsign -- npx -y swiftsign-mcp
```
Or add it to your `.mcp.json` directly:
```json
{
"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 with `swiftsign_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
```bash
npm install
npm run build # compiles src/ → dist/
npm test # node --test
```
## Links
- Website: [swiftsign.ca](https://swiftsign.ca)
- API docs: [swiftsign.ca/docs](https://swiftsign.ca/docs)
- Issues: [github.com/shahdadk/swiftsign-mcp/issues](https://github.com/shahdadk/swiftsign-mcp/issues)
## License
MIT © [Shahdad Kompani](https://shahdadk.com)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues