Getting started

SwiftSign in 60 seconds.

SwiftSign ships as an MCP server and a REST API. Install the MCP once, then describe what to sign in plain English — Claude, Cursor, or any MCP-aware agent will handle the rest.

Install the MCP server

From any terminal with Node 18+ and Claude Code:

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

Or add it to .mcp.json directly:

{
  "mcpServers": {
    "swiftsign": {
      "command": "npx",
      "args": ["-y", "swiftsign-mcp"],
      "env": { "SWIFTSIGN_API_KEY": "ss_live_…" }
    }
  }
}

Send your first envelope

Once the MCP is connected, prompt the agent naturally:

> send the NDA at ~/contracts/mutual-nda.pdf to steve@acme.com for signature

SwiftSign reads the PDF, finds signature anchors, builds the envelope, and sends it. You'll get a webhook back when Steve signs.

MCP tools

ToolPurpose
swiftsign_send_envelopeSend a document for signature
swiftsign_statusCheck status of any envelope
swiftsign_cancelVoid an in-flight envelope
swiftsign_listList recent envelopes, filtered
swiftsign_downloadFetch sealed PDF + certificate

toolswiftsign_send_envelope

Primary tool. Accepts either explicit coordinates or anchor-based placement.

{
  "document": "~/contracts/mutual-nda.pdf",
  "recipients": [
    { "email": "steve@acme.com", "name": "Steve Park", "role": "signer" }
  ],
  "fields": [
    { "type": "signature", "anchor": "Party B — Signature", "offset": { "y": -4 } },
    { "type": "date",      "anchor": "Date:",               "near": "prev"    }
  ],
  "subject": "Mutual NDA for countersignature",
  "expires_in_days": 14
}

REST API

All MCP tools are thin wrappers around the REST API. If you want to integrate from a non-agent environment — a cron job, a CI workflow, your own backend — hit the API directly.

Authentication

Bearer token in the Authorization header. Get yours from the dashboard.

curl https://api.swiftsign.dev/v1/envelopes \
  -H "Authorization: Bearer ss_live_abc123..."

Create an envelope

POST /v1/envelopes
Authorization: Bearer ss_live_…
Content-Type: application/json

{
  "document_url": "https://…/mutual-nda.pdf",
  "recipients": [{ "email": "steve@acme.com" }],
  "anchor_tabs": [
    { "anchor": "_________", "type": "signature" }
  ]
}

Response

{
  "id": "env_3f8a9c21",
  "status": "sent",
  "recipients": [{ "email": "steve@acme.com", "status": "pending" }],
  "created_at": "2026-03-14T16:02:11Z",
  "expires_at": "2026-03-28T16:02:11Z"
}

Webhooks

Register a URL once; receive signed events for the lifetime of every envelope.

EventWhen
envelope.sentDelivered to recipient's inbox
envelope.viewedRecipient opened the document
envelope.signedRecipient applied their signature
envelope.completedAll recipients signed; sealed PDF ready
envelope.declinedRecipient declined
envelope.expiredNot signed before expiry

Compliance

SwiftSign-sealed PDFs are compliant with the US ESIGN Act (2000) and UETA, and with Canada's PIPEDA. Each completed envelope produces a Certificate of Completion that records, per signer:

SwiftSign does not currently provide RFC 3161 cryptographic timestamps, qualified eIDAS signatures, HIPAA BAAs, or a SOC 2 report — those are on the roadmap. If your use case requires them, email hello@swiftsign.ca.

SwiftSign is in private beta — request access to get an API key.

Request access