E-signature API and MCP server
Send PDF and Word documents for signature from your own software, a script, or the AI assistant you already use. Type glyphs where people sign, send the pact, and get back the signed PDF and its sigil, the certificate of completion.
Already have an account? Log in to create an API key.
A JSON API
Upload a template, create a pact from it or from a one-off file, send, resend or void it, and download the signed PDF and its sigil. An API key or an OAuth token, over HTTPS. API reference.
An MCP server
Add https://api.signwithsigil.com/mcp to Claude, ChatGPT, Codex, Cursor or VS Code and sign in with your account: no key to paste. Then ask it to send the consulting agreement to Avery, or who still has to sign. Connect a client.
A command line
sigil send agreement.pdf --to … uploads the file in front of it and sends it, for scripts and coding agents that work with files on disk. Command line.
Webhooks
Sigil posts each change to your server as it happens: pact.sent, pact.viewed, pact.signed, pact.declined, pact.voided, pact.sealed, pact.lapsed. Signed with HMAC-SHA256 and retried with backoff for over a day. Webhooks.
Send a document in two calls
Type a glyph into the document wherever a field goes: \s1\ for the first signer's signature, \d1\ for the date they sign, \s2\ for the second signer. Upload it once as a template; a Word file is converted to PDF and the glyphs are read from it. Every call goes to api.signwithsigil.com.
curl https://api.signwithsigil.com/v1/templates \
-H "Authorization: Bearer $SIGIL_API_KEY" \
-F file=@agreement.docx -F name="Consulting agreement"
Then create a pact from it with the signers in signing order, and send it in the same call:
curl -X POST https://api.signwithsigil.com/v1/pacts \
-H "Authorization: Bearer $SIGIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "template_uid": "7DXW69YJ", "send": true,
"recipients": [ { "name": "Avery Lane", "email": "avery@example.com" },
{ "name": "Sam Ortiz", "email": "sam@example.com" } ] }'
Each signer is emailed a private link when it is their turn. When the last one signs, GET /v1/pacts/{uid}/signed.pdf and sigil.pdf return the stamped document and its certificate of completion, and every recipient gets both by email. A one-off document goes straight into POST /v1/pacts as a file part instead.
What it covers
| Templates | Upload a PDF or Word file with glyphs; list, read and delete them. |
|---|---|
| Pacts | Create one from a template or a one-off file, send it now or keep it as a draft, resend the current signer's link, or void it; follow each signer's status and the full audit trail. |
| Signed documents | The PDF as sent, the signed PDF, and its sigil, the certificate of completion. |
| Your own domain | Send under one of your verified domains, so signers see your name and logo. |
| Account | The plan and the documents left this month. |
| MCP tools | get_account, list_templates, get_template, list_pacts, get_pact, get_signing_status, create_pact, send_pact, resend_pact, void_pact. What each one does. |
Plans
The API, the MCP server and the CLI come with Pro ($18.99 a month) and Business ($49.99 a month), one price per account however many people, scripts and assistants use it. Any account can create a key; on another plan its requests are refused until the account upgrades. Sending a pact uses one document per three signers (CCs are free), the same as on the website. Pricing.
Documentation
- Quickstart: a first pact from cURL, start to finish.
- Authentication: an API key for your own code, or sign-in with your account for MCP clients and the CLI.
- API reference: every endpoint, with cURL, JavaScript and Python.
- Webhooks: the events, and checking their signatures in Node, Python, C# and PHP.
- Connect a client: Claude, Claude Code, Codex, ChatGPT, Cursor and VS Code, one at a time.
- Command line: install, sign in, send.
- The whole reference as Markdown, for assistants and tools that read it directly.