Guide

Add e-signatures from Claude Code, Cursor, or any MCP client.

The whole loop, from a key to a sealed PDF, runs through one MCP server. Start in the sandbox for free with no account, then flip to live when you are ready.

1. Install the MCP server

Claude Code:

claude mcp add swiftsign -- npx -y swiftsign-mcp

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "swiftsign": { "command": "npx", "args": ["-y", "swiftsign-mcp"] }
  }
}

Or the hosted endpoint, no local install:

claude mcp add --transport http swiftsign https://swiftsign.ca/mcp \
  --header "Authorization: Bearer sk_test_your_key"

2. Mint a sandbox key

Ask the agent to run the swiftsign_signup tool, or curl it directly. No account, no browser.

curl -s -X POST https://swiftsign.ca/api/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'
# -> { "api_key": "sk_test_...", "mode": "test", ... }

3. Send a document

Call swiftsign_send_envelope with a base64 PDF, recipients, and field placement. Place a field by page coordinates or by an anchor string in the document, not both.

{
  "subject": "Mutual NDA",
  "documents": [{ "name": "nda.pdf", "base64": "JVBERi0xLjcK..." }],
  "recipients": [
    { "name": "Dana Lee", "email": "dana@acme.com", "role": "SIGNER", "routingOrder": 1 }
  ],
  "fields": [
    { "recipientIndex": 0, "type": "SIGNATURE", "document": 0,
      "page": -1, "x": 0, "y": 0, "anchor": "Party B Signature" }
  ]
}

Sandbox keys send immediately and watermarked. Live keys create a draft and return it for human review unless you pass confirm: true.

4. Check status and download

Use swiftsign_check_status to watch the envelope, then swiftsign_download_signed_pdf once it is COMPLETED to pull back the sealed document and its Certificate of Completion.

# status: SENT -> COMPLETED
swiftsign_check_status { "envelopeId": "env_..." }
swiftsign_download_signed_pdf { "envelopeId": "env_...", "certificate": false }

5. Go live

Run swiftsign_upgrade to get a Stripe checkout link. A human opens it once to add a card; your agent can initiate the upgrade but cannot complete the payment itself. Live sends are confirm-gated, so an agent drafts and a person approves before anything is emailed.

Full API reference