@gsdhere/mcp
v0.1.1
Published
GSD e-signing MCP server (local/stdio): send envelopes from your templates, check status, download signed PDFs — with your own GSD API key.
Maintainers
Readme
@gsdhere/mcp — GSD e-signing for Claude, Cursor, and other MCP clients
A local MCP (Model Context Protocol) server that lets an AI assistant send documents for signature from your GSD templates, check who has signed, and download the finished PDFs — using your own GSD API key, on your own machine.
What you're responsible for
Every envelope sent through this tool is sent by you, the API key holder. You are responsible for the recipients, the content, and any payment amounts on every envelope — exactly as if you had clicked Send in the GSD app. The assistant always shows you a preview first (template, signers, any inherited payment) and nothing is sent until you confirm. Review that preview before confirming.
- This tool sends documents. It does not provide legal advice, and nothing it or your assistant says about a document is legal advice.
- GSD envelopes are designed to meet the requirements of the U.S. ESIGN Act and UETA for electronic signatures. Whether an electronically signed document is enforceable in your specific situation depends on facts and law we cannot assess — consult a lawyer if it matters.
- Sends are billable and irreversible once delivered. A sent envelope counts against your plan or pay-as-you-go credits, and the invitation email cannot be unsent.
Your API key
- Create a key at Settings → API & Webhooks in GSD (Business plan and up, or Pro via pay-as-you-go).
- Give the key to this server only through the
GSD_API_KEYenvironment variable in your MCP client's config, as shown below. - Never paste an API key into a chat. The assistant never needs to see it; this server reads it from the environment and redacts anything key-shaped from every response and error, but a key pasted into a conversation is out of your hands.
- If a key may have leaked, revoke it in Settings → API & Webhooks and create a new one — it's free.
3-minute setup
Requires Node.js 18+ (for built-in fetch).
Claude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"gsd": {
"command": "npx",
"args": ["-y", "@gsdhere/mcp"],
"env": {
"GSD_API_KEY": "gsd_live_your_key_here",
"GSD_DOWNLOAD_DIR": "/Users/you/Documents/gsd-signed"
}
}
}
}Claude Code
claude mcp add gsd \
--env GSD_API_KEY=gsd_live_your_key_here \
--env GSD_DOWNLOAD_DIR="$HOME/Documents/gsd-signed" \
-- npx -y @gsdhere/mcpCursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"gsd": {
"command": "npx",
"args": ["-y", "@gsdhere/mcp"],
"env": {
"GSD_API_KEY": "gsd_live_your_key_here",
"GSD_DOWNLOAD_DIR": "/Users/you/Documents/gsd-signed"
}
}
}
}Test it on yourself first
Ask your assistant:
"Send my Gym Waiver template to me at my own email address."
You'll get a preview, confirm it, receive the signing invitation in your own inbox, sign it, then ask for the status and the signed PDF. Total cost: one envelope. Do this before ever sending to a real client.
The tools
| Tool | What it does |
| --- | --- |
| gsd_list_templates | Your templates, with signer roles, whether payment defaults are set, and any payment_options (the owner-authored price menu) |
| gsd_send_envelope | Two-step: preview (nothing sent) → confirm to send from a template. Optional price_option: the key of one of the template's price options |
| gsd_envelope_status | One envelope's status, per-signer progress, payment state |
| gsd_list_envelopes | Recent envelopes, newest first (optional status filter) |
| gsd_download_signed | Save a completed envelope's signed PDF (certificate pages included) into GSD_DOWNLOAD_DIR |
| gsd_whoami | Confirm the key works; shows the redacted key prefix and an approximate template count |
Payment amounts cannot be set or changed through this tool. Envelopes
inherit the payment defaults saved on the template, if any — the preview
tells you when that's the case. If the template's owner authored price
options (e.g. Intro class $25, Drop-in $40), gsd_send_envelope can select
one by its key via price_option; the preview then shows the exact resolved
amount (e.g. Payment: $40.00 — Drop-in (price option)) for you to review
before confirming. The amount always comes from the owner's list — an unknown
key is rejected with the list of available options, and there is no way to
pass a custom amount. To charge anything not on the list, change the template
in the GSD app.
Environment variables
| Variable | Required | Meaning |
| --- | --- | --- |
| GSD_API_KEY | yes | Your GSD API key (gsd_live_…). Environment only, never an argument. |
| GSD_DOWNLOAD_DIR | for downloads | The only folder this server will ever write files into. Unset = downloads disabled. |
| GSD_ALLOWED_RECIPIENT_DOMAINS | no | Comma-separated list (e.g. mycompany.com,partner.com). When set, envelopes can only be sent to those domains. |
| GSD_BASE_URL | no | Override the API host (default https://gsdhere.com). |
Notes
- Local/stdio only: this server runs on your machine and talks directly to the GSD API over HTTPS. Nothing is proxied through a third party, and no logs are written to disk.
gsd_whoami's template count is approximate ("1+" means at least one) — it verifies the key with a single lightweight request.- Rate limits are the API's own; a 429 response includes how long to wait.
Questions: [email protected] · API docs: https://gsdhere.com/developers
