{
  "markdown": "<p align=\"center\">\n  <img src=\"./assets/banner.svg\" alt=\"SwiftSign: AI-native e-signatures\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://swiftsign.ca\"><img src=\"https://img.shields.io/badge/swiftsign.ca-live-0D1117?style=flat-square\" alt=\"Live\"></a>\n  <a href=\"https://github.com/shahdadk/swiftsign-mcp\"><img src=\"https://img.shields.io/badge/MCP-swiftsign--mcp-0D1117?style=flat-square\" alt=\"MCP server\"></a>\n  <img src=\"https://img.shields.io/badge/SDKs-JS_·_Python-0D1117?style=flat-square\" alt=\"SDKs\">\n  <img src=\"https://img.shields.io/badge/ESIGN_·_UETA_·_PIPEDA-0D1117?style=flat-square\" alt=\"Compliant\">\n</p>\n\n# SwiftSign\n\nAI-native e-signatures. Send, track, and seal contracts from your terminal: Claude Code, Cursor, Zed, or any MCP-aware agent. No drag handles. No per-seat fees.\n\n## Why\n\nDocuSign assumes a person with a cursor, dragging signature boxes onto a PDF and paying per seat. SwiftSign assumes code. It is API-first and agent-native: a script or an AI agent can mint a key, send a legally binding contract, track it to completion, and pull back the sealed PDF and Certificate of Completion, end to end, without a browser.\n\n## What you get\n\n- **REST API** at `/api/v1/envelopes`, bearer-token auth, quota-enforced.\n- **MCP server** ([swiftsign-mcp](https://github.com/shahdadk/swiftsign-mcp)) with 11 tools so agents can sign documents directly, including agent self-signup and a confirm gate on live sends.\n- **SDKs** for JavaScript and Python.\n- **Signer flow** with no account required: a secure signing link, e-sign consent, and signature capture by draw, type, or upload.\n- **Sealed PDFs** with a SHA-256 hash, full audit trail, and a Certificate of Completion.\n- **DocuSign importer** so you can bring existing templates across.\n- **Compliant** under ESIGN, UETA (United States), PIPEDA, and the Ontario Electronic Commerce Act (Canada).\n\n## Use it from an agent\n\n```bash\nclaude mcp add swiftsign -- npx -y swiftsign-mcp\n```\n\n```\n\"Send the MSA at ./contracts/Acme_MSA.pdf to john@acme.com for signing,\n with a signature field at the bottom.\"\n```\n\nThe agent mints a sandbox key if it has none, places the fields, emails the signer a link, and reports back when it is sealed. See [swiftsign-mcp](https://github.com/shahdadk/swiftsign-mcp) for the full tool list.\n\n## Stack\n\n- Next.js 16.2 (App Router, Turbopack, React 19)\n- Prisma 7 + Neon PostgreSQL via `@prisma/adapter-pg`\n- Cloudflare R2 (S3-compatible) for PDFs and page images\n- Resend for transactional email\n- Stripe for billing (Free / Pro $15 / Team $79, monthly)\n- Upstash Redis for rate limiting, Sentry for error tracking\n\n## Architecture\n\n- `/api/v1/envelopes`: public REST API; bearer-token auth via `Authorization: Bearer <apiKey>`. Quota enforced (5/mo on Free, unlimited on Pro/Team).\n- `/sign/[token]` and `/api/sign/[token]`: recipient signing flow. No account; the `signingToken` is the only credential.\n- `/dashboard/*`: sender UI. Cookie session via `swiftsign_session`. Envelopes, billing, settings (API key, sessions), webhooks.\n- `/api/stripe/webhook`: Stripe to DB sync (subscription and plan).\n- `/api/cron/webhook-retry`: runs every 5 minutes via `vercel.json` to retry failed outbound webhook deliveries.\n\n## Development\n\n```bash\ngit clone https://github.com/shahdadk/swiftsign.git\ncd swiftsign\n./scripts/bootstrap.sh\n```\n\nThe bootstrap script installs the Vercel CLI, logs you in, links the checkout to the SwiftSign Vercel project, pulls production env vars into `.env.local`, and runs `npm install`. Then `npm run dev` and you are operational.\n\nManual setup:\n\n```bash\nnpm install                  # legacy-peer-deps is pinned in .npmrc (React 19 / Next 16)\nnpx prisma generate          # writes the Prisma client to src/generated/prisma/\nnpx prisma migrate deploy    # apply schema migrations to your dev DB\nnpm run dev                  # dev server on port 3000\n```\n\nCommon commands:\n\n- `npm run dev`: start the dev server on port 3000\n- `npm run build`: production build (Turbopack)\n- `npm run start`: run the built server\n- `npm run lint`: ESLint\n- `npx prisma migrate dev --name <slug>`: create a new migration\n- `npx tsx prisma/seed.ts`: seed a local user\n\n### Deploying to Vercel\n\nProvision Neon (PostgreSQL), Cloudflare R2, Resend, Stripe (Pro and Team products plus a webhook on `/api/stripe/webhook`), Upstash Redis, and Sentry. Set the env vars from `.env.local.example` on the Vercel project (Production and Preview), connect the repo, and push to `main`. Vercel runs `npx prisma generate` and `next build`. Apply schema once with `npx prisma migrate deploy`. Verify at `/api/healthcheck`.\n\n### MCP server\n\nThe MCP server has its own repository at [swiftsign-mcp](https://github.com/shahdadk/swiftsign-mcp) and is published to npm as [`swiftsign-mcp`](https://www.npmjs.com/package/swiftsign-mcp).\n",
  "bytes": 4832,
  "sha": "46fd5ffe79af3bff5401635b00f0ca597da5c821cc4e5f6eba8e0604b163dfd6",
  "repo_slug": "shahdadk/swiftsign",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ca_swiftsign_mcp_195273f4/readme"
}