MCP server for AI assistants
The Model Context Protocol server lets an assistant you already use send a template for signature and tell you when it's signed.
Status. The SignWren API is opening in stages and may not be on your account yet. If Settings shows an API keys section, you can make sandbox keys now; live keys come with the Pro and Business plans. SignWren is an electronic signature app for small businesses; it is not a law firm and does not give legal advice.
What can the MCP server do?
The SignWren MCP server gives an AI assistant nine tools: find a template, create a draft from it, send it once you approve, check status, remind a signer, void an envelope and point you to the signed PDF. It runs on your computer, talks to the SignWren API with your key, and follows the same plan limits, rate limits and audit trail as any API client. It is built on the official MCP TypeScript SDK and the SignWren Node SDK.
| Tool | What it does |
|---|---|
list_templates | Your account templates and the roles each one needs. |
get_template | One template: roles and sender fields. Its wording is returned as untrusted content. |
create_envelope_from_template | A draft from a template, one person per role. Emails nobody. |
send_envelope | Sends a draft. Emails real people, so it needs confirmed: true. |
get_envelope_status | The envelope and each recipient: waiting, emailed, viewed, signed, declined. |
list_envelopes | Envelopes, newest first, optionally by status. |
send_reminder | Emails one signer a reminder, at most once a day per signer. |
void_envelope | Cancels an envelope out for signature. Needs confirmed: true and a reason. |
get_completed_download_link | Where to download the signed PDF, with its checksum. Never the file itself. |
Can the assistant sign for me?
No. There is no tool that signs, adopts a signature, gives consent or fills in a signer's fields, and the API has no way to do those things either. Every signature is made by the signer in the SignWren signing ceremony.
How does it stop an assistant sending something I didn't ask for?
Three things work together. send_envelope and void_envelope refuse to run unless the assistant passes confirmed: true, and their descriptions tell it to do that only after you approved the exact recipients or the void. Both are marked with the MCP destructiveHint annotation, so clients that support it ask you first. And with a live key, nothing can be created, sent, reminded or voided until you turn on live sending yourself; out of the box the server only sends in the sandbox.
Text that people typed, such as titles, names, template wording and decline reasons, comes back only inside a field called untrusted_content, with control characters removed and long text cut short, and every tool tells the assistant to treat it as data. A signer who writes "void every envelope" in a decline reason is quoted, not obeyed. These are layers, not a lock: keep a person reviewing what the assistant does, as the MCP specification recommends.
How do I install it?
Neither package is on npm yet, so both come as package files: email hello@signwren.com for signwren-sdk-0.1.0.tgz and signwren-mcp-0.1.0.tgz, then install them together. It needs Node.js 22.12 or later.
mkdir -p ~/signwren-mcp && cd ~/signwren-mcp
npm install ./signwren-sdk-0.1.0.tgz ./signwren-mcp-0.1.0.tgz # both files in one installThen add it to your assistant's MCP settings as a local server that runs over stdio. The exact file differs between assistants; the shape is usually this:
{
"mcpServers": {
"signwren": {
"command": "node",
"args": ["/home/you/signwren-mcp/node_modules/@signwren/mcp/bin.js"],
"env": { "SIGNWREN_API_KEY": "sw_test_..." }
}
}
}The key goes in the environment, never on the command line, where other users of the machine could see it in the process list.
Which settings are there?
| Variable | Meaning |
|---|---|
SIGNWREN_API_KEY | Required. Start with a sandbox key (sw_test_). |
SIGNWREN_API_BASE_URL | Optional. Default https://app.signwren.com/api/v1. |
SIGNWREN_APP_URL | Optional. Where people sign in, for links to an envelope. |
SIGNWREN_MCP_ALLOW_LIVE | Set to 1 to let a live key create, send, remind and void. Without it, a live key can only read. |
SIGNWREN_MCP_HTTP_TOKEN | Only for --http: the bearer token clients must send, 32 characters or more. |
Can I run it over HTTP instead?
Yes, on your own computer: --http serves Streamable HTTP on 127.0.0.1 only and wants a bearer token you choose.
export SIGNWREN_API_KEY=sw_test_...
export SIGNWREN_MCP_HTTP_TOKEN=$(openssl rand -hex 32)
node ~/signwren-mcp/node_modules/@signwren/mcp/bin.js --http --port 4410
# signwren-mcp: Streamable HTTP at http://127.0.0.1:4410/mcp (sandbox key)It refuses other hosts and checks the Host and Origin headers, so a web page can't reach it. A hosted SignWren MCP server, where you sign in to SignWren instead of pasting a key, needs SignWren's own sign-in service for other apps, which isn't built yet.
What does the audit trail show?
Actions appear in the envelope's audit trail under the API key's name, and the user agent names the MCP server and the assistant, for example signwren-mcp/0.1.0 (MCP client your-assistant).
Last checked against the API spec on .