swiftsign-mcp
SwiftSign
AI-native e-signatures. Send, track, and seal contracts from your terminal — Claude Code, Cursor, Zed, or any MCP-aware agent. ESIGN / UETA / PIPEDA compliant sealed PDFs with audit trail.
Stack
Next.js 16.2 (App Router, Turbopack, React 19)
Prisma 7 (preview) + Neon PostgreSQL via
@prisma/adapter-pgCloudflare R2 (S3-compatible) for PDFs + page images
Resend for transactional email
Stripe for billing (Free / Pro $15 / Team $79, monthly)
Upstash Redis for rate limiting
Sentry for error tracking
Related MCP server: SignForge
Setup on a fresh machine
git clone https://github.com/shahdadk/swiftsign.git
cd swiftsign
./scripts/bootstrap.shThe bootstrap script installs Vercel CLI, logs you in (browser auth), links the
checkout to the SwiftSign Vercel project, pulls production env vars into
.env.local, and runs npm install. After it finishes, run npm run dev and
you're operational.
Manual local development
# Install (legacy-peer-deps is pinned in .npmrc, required for React 19 / Next 16)
npm install
# Generate the Prisma client (writes to src/generated/prisma/, gitignored)
npx prisma generate
# Apply schema migrations to your dev DB
npx prisma migrate deploy
# Run the dev server
npm run devCopy .env.local.example to .env.local and fill in the values, or run
./scripts/bootstrap.sh to pull them from Vercel.
Commands
npm run dev— start dev server on port 3000npm run build— production build (Turbopack)npm run start— run the built servernpm run lint— ESLintnpx prisma generate— regenerate the Prisma clientnpx prisma migrate dev --name <slug>— create a new migrationnpx tsx prisma/seed.ts— seed a local user (manual)
Deploying to Vercel
Provision services:
Neon PostgreSQL database; copy the pooled connection string to
DATABASE_URL.Cloudflare R2 bucket; create an API token with read/write; copy account ID, access key ID, secret, bucket name.
Resend domain (verify DNS for the
EMAIL_FROMdomain) and an API key.Stripe products: SwiftSign Pro ($15/mo recurring), SwiftSign Team ($79/mo recurring); copy price IDs. Enable Stripe Tax if collecting GST/HST/VAT. Set the customer portal return URL to
https://swiftsign.ca/dashboard/billingand enable cancel + payment-method update.Stripe webhook endpoint:
https://swiftsign.ca/api/stripe/webhook, listening forcheckout.session.completed,customer.subscription.created/updated/deleted,invoice.paid,invoice.payment_failed. Copy the signing secret.Upstash Redis instance for rate limiting; copy REST URL and token.
Sentry project (Next.js); copy the DSN.
Generate a
CRON_SECRET(16+ random chars). Vercel cron will pass this asAuthorization: Bearer <CRON_SECRET>.
Set environment variables on the Vercel project (Production + Preview). See
.env.local.examplefor the full list.Deploy: connect the repo, push to
main. Vercel runsnpx prisma generateandnext buildfrompackage.json.Run schema migrations once via
npx prisma migrate deploy— locally, or as part of a build hook. Subsequent deploys re-apply automatically if you wire it into the build command.Verify: visit
/api/healthcheck. Returns{ status: "ok" }with DB and R2 checks green.
Architecture
/api/v1/envelopes— public REST API; bearer-token auth viaAuthorization: Bearer <apiKey>. Quota enforced (5/mo on Free, unlimited on Pro/Team)./sign/[token]+/api/sign/[token]— recipient signing flow. No account;signingTokenis the only credential./dashboard/*— sender UI. Cookie session viaswiftsign_session. Pages: envelopes list, envelope detail, billing, settings (API key + sessions), webhooks./api/stripe/webhook— Stripe → DB sync (subscription + plan)./api/cron/webhook-retry— runs every 5 minutes viavercel.jsonto retry failed outbound webhook deliveries.
MCP server
Independent npm package at mcp/. Build + publish:
cd mcp
npm install
npm run build
npm publishUsers install with:
claude mcp add swiftsign -- npx -y swiftsign-mcpConfigure with SWIFTSIGN_API_KEY (and optionally SWIFTSIGN_API_URL for self-hosted instances).
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shahdadk/swiftsign'
If you have feedback or need assistance with the MCP directory API, please join our Discord server