Developers and AI agents
Send a document for signature from code, or from Claude
Everything a sender can do in Psygned is available through a small REST API and an MCP server. Create an API key in Settings, then let your code or your AI assistant upload the PDF, name the signers and collect the signed copy and certificate. Every document costs 1 credit, exactly as in the app, and produces the same record.
MCP server for Claude and other agents
Add Psygned as a remote MCP server and your assistant gets tools to send documents, check who has signed, remind signers and fetch the signed files. Streamable HTTP, JSON responses, no session state.
Claude.ai and Claude Desktop (connector), step by step
- In Claude open Settings, then Connectors, then Add custom connector.
- Name it Psygned and paste the endpoint below as the URL.
- Under Authentication leave what Claude detects (Always required). If it offers None, choose Always required instead; Psygned never works without a sign in.
- Press Add. Claude opens psygned.com, where you sign in if needed and press Allow.
- Back in Claude, start a chat and enable Psygned in the tools menu. Ask for a document to be sent for signature and Claude will use your credits.
No key to copy and nothing to paste into headers. Disconnect it any time from Psygned Settings, Connected assistants; Claude loses access at once.
https://api.psygned.com/v1/mcpClaude Code (either OAuth or an API key)
claude mcp add --transport http psygned https://api.psygned.com/v1/mcp \
--header "Authorization: Bearer psk_live_…"Claude Desktop, Cursor and others (mcp.json)
{
"mcpServers": {
"psygned": {
"type": "http",
"url": "https://api.psygned.com/v1/mcp",
"headers": { "Authorization": "Bearer psk_live_…" }
}
}
}Then simply ask: “Send contract.pdf to [email protected] for signature and tell me when she has signed.” Tools: psygned_send_document, psygned_get_document, psygned_list_documents, psygned_send_draft, psygned_remind_signers, psygned_void_document, psygned_get_files, psygned_get_account.
Authentication
Send your key as a bearer token. Keys are shown once when created and can be revoked at any time in Settings. Only a hash is stored.
Authorization: Bearer psk_live_…REST API
Base URL https://api.psygned.com/v1. JSON in, JSON out.
| Method | Path | What it does |
|---|---|---|
| GET | /me | Account, credits left, signer limit |
| GET | /documents?status= | List documents with signer status |
| POST | /documents | Create a document from a PDF and send it (uses 1 credit) |
| GET | /documents/:id | Status, signers and the event log |
| POST | /documents/:id/send | Send a draft created with send=false |
| POST | /documents/:id/remind | Fresh links for everyone still to sign |
| POST | /documents/:id/void | Cancel while waiting for signatures |
| GET | /documents/:id/files | 15 minute download links for the signed PDF and certificate |
Create and send in one call
curl -X POST https://api.psygned.com/v1/documents \
-H "Authorization: Bearer psk_live_…" \
-H "Content-Type: application/json" \
-d '{
"title": "Consulting agreement",
"file": { "url": "https://example.com/agreement.pdf" },
"signers": [
{ "name": "Jane Doe", "email": "[email protected]" },
{ "name": "John Roe", "email": "[email protected]" }
],
"signing_order": "sequential",
"message": "Please sign by Friday.",
"fields": [
{ "type": "signature", "signer": 0, "page": 2, "x": 0.10, "y": 0.70, "w": 0.30, "h": 0.06 },
{ "type": "date", "signer": 0, "page": 2, "x": 0.45, "y": 0.71, "w": 0.15, "h": 0.03 },
{ "type": "signature", "signer": 1, "page": 2, "x": 0.10, "y": 0.80, "w": 0.30, "h": 0.06 }
]
}'The file can also be sent inline as "file": { "base64": "…" }. Field positions are fractions of the page measured from the top left, so they work at any page size. Leave fields out and Psygned places a signature, name and date block for each signer at the foot of the last page. Pass "send": false to save a draft and send it later; unsent drafts are removed after 30 days.
Poll until complete, then download
curl https://api.psygned.com/v1/documents/DOCUMENT_ID -H "Authorization: Bearer psk_live_…"
# … "status": "completed", "files_ready": true
curl https://api.psygned.com/v1/documents/DOCUMENT_ID/files -H "Authorization: Bearer psk_live_…"
# { "signed_pdf": "https://…", "certificate_pdf": "https://…", "final_sha256": "…" }Errors
Errors come back as { "error": "code", "message": "…" }. 401 unauthorized, 402 no_credits, 400 invalid_request or invalid_file, 404 not_found, 409 for a document in the wrong state. Webhooks are next on the list; until then, poll the document.