Guides
MCP server for AI agents
sign.yt has a Model Context Protocol server that lets AI agents (Claude, Cursor and other MCP clients) work with documents through your API key.
Every tool is a thin proxy over one public REST call made with your key, so everything it does is visible in your audit trail, scoped to the key's organization and limited by the key's scopes and rate limit.
Remote endpoint (Streamable HTTP)#
Point any MCP client that supports the Streamable HTTP transport at:
https://api.sign.yt/v1/mcp
Authorization: Bearer sk_live_...The endpoint is stateless and answers with JSON. Requests without a valid key get 401; an expired key, a key whose organization lost API access (402) or a key used on another organization's custom domain (403) are refused exactly like the REST API. tools/list only returns the tools the key's scopes allow. initialize and tools/list do not count toward the key's rate limit; each tool call counts once. The Host (and browser Origin, if sent) must be sign.yt or your organization's verified custom domain.
{
"mcpServers": {
"signyt": {
"type": "http",
"url": "https://api.sign.yt/v1/mcp",
"headers": { "Authorization": "Bearer sk_live_..." }
}
}
}Tools#
| Tool | Calls | Scope | Arguments |
|---|---|---|---|
list_documents | GET /documents | documents:read | limit (optional) |
get_document | GET /documents/{id} | documents:read | document_id |
create_document_draft | POST /documents | documents:write | title, pdf_base64, recipients (email, name, role), optional signing_order, verification_type, redirect_url_after_sign |
place_signature_fields | PUT /documents/{id}/fields | documents:write | document_id, fields: type, page, position_x, position_y, recipient_id, optional width/height (default 20 x 6, percent of the page), required, label |
send_document | POST /documents/{id}/send | documents:write | document_id |
lookup_company_by_nip | GET /lookup/company | documents:read | nip |
A typical agent flow is create_document_draft → place_signature_fields (with the recipient IDs from the draft) → send_document. place_signature_fields replaces all fields of a DRAFT document.
Local server (stdio)#
For desktop clients you can also run the server over stdio from a checkout of the backend. It reads two environment variables:
| Variable | Value |
|---|---|
SIGNYT_API_KEY | Your sk_live_... key. |
SIGNYT_API_BASE | https://api.sign.yt/v1 (the default points at a local development server, so always set it). |
{
"mcpServers": {
"signyt": {
"command": "uv",
"args": ["run", "--directory", "/path/to/sign.yt/backend", "python", "-m", "app.mcp_server"],
"env": {
"SIGNYT_API_KEY": "sk_live_...",
"SIGNYT_API_BASE": "https://api.sign.yt/v1"
}
}
}
}Give agents the narrowest key that works (a read-only agent only needs documents:read), and use a separate key per agent so you can revoke it independently.