---
name: signavos-esign
description: Send documents for signature through Signavos. Use when the user wants a PDF signed, wants to check whether a document has been signed yet, or wants the signed file and its certificate. Sending costs one credit and must be confirmed.
---

# Signavos — e-signature for agents

Signavos is a pay-per-signature e-signature service. You drive it through an MCP server, so
you can take a PDF from upload all the way to a signed, audit-trailed document without the user
touching the web app.

**Endpoint:** `https://signavos.com/api/mcp` (MCP Streamable HTTP)
**Auth:** OAuth 2.1 with PKCE and dynamic client registration. There are no API keys. The user
approves your access on a consent screen and can revoke it at any time.

## Read this before your first call

1. **Call `get_account` first.** It returns the credit balance and every limit you must work
   within. Do not guess a limit — read it.
2. **Sending spends the user's money.** One credit per document. Always tell the user what you
   are about to send and to whom, and only then confirm the charge.
3. **You cannot buy credits.** If the balance is too low, say so and point the user at the
   dashboard. Never look for another way to pay.
4. **You cannot sign anything.** Recipients sign themselves from their own email link. If the
   user asks you to sign for them or for someone else, explain that no such tool exists.

## Workflow

1. **Upload** — Hand the agent a PDF. It validates, scans and stores it exactly as the web app does.
2. **Prepare** — The agent adds recipients and places signature fields — by preset, so it never has to guess coordinates.
3. **Confirm** — Sending spends 1 credit, so the agent must confirm the charge explicitly before anything is sent.
4. **Send** — Recipients get an email link and sign in their browser. No account, no password.
5. **Track** — The agent polls status and tells you the moment the document is signed.
6. **Collect** — It fetches the signed PDF and the signing certificate with the audit trail.

## Tools available now

| Tool | What it does |
|---|---|
| `get_account` | Read the account email, credit balance and every limit below. |
| `list_documents` | List documents with their status, filtered and paged. |
| `get_document` | Inspect one document: recipients, fields, artifacts and what to do next. |
| `get_download_url` | Get a time-limited link to the signed PDF or its signing certificate. |
| `upload_document` | Upload a PDF inline, up to 3 MB. |
| `create_upload_url` | Get a signed URL for a larger PDF, up to 40 MB. |
| `complete_upload` | Finish a signed-URL upload; the file is validated and scanned like any other. |
| `add_recipient` | Add a signer by name and email. |
| `remove_recipient` | Remove a signer from a draft. |
| `place_fields` | Place signature, initials, name, date, text and checkbox fields — by preset or exact position. |
| `send_document` | Send for signature. Spends 1 credit and requires explicit confirmation. |

## Limits

| Limit | Value |
|---|---|
| Credits per document sent | 1 |
| Recipients per document | up to 20 |
| Inline upload (base64) | 3 MB max |
| Upload via signed URL | 40 MB max |
| Drafts kept per account | 2 |

## Rules you must not break

- **You approve it, and you can revoke it.** Agents connect through an OAuth consent screen you see and approve. Remove the agent from your authorized applications and access stops immediately.
- **An agent can never spend money.** There is no purchase tool. Credits are only ever bought by you in a browser — an agent can spend the credits you already own, one per document, and nothing else.
- **Sending always needs explicit confirmation.** The send tool refuses to run unless the agent confirms the charge on purpose, so an exploratory prompt cannot mail a contract by accident.
- **It only ever sees your account.** Every request is scoped to your account on the server. An agent cannot name someone else's account, and it never receives an account identifier to tamper with.
- **The same audit trail as the web app.** Agent actions are recorded in the same tamper-evident chain as your own, tagged with the agent that performed them — so the signing certificate stays legally defensible.
- **Signers stay human.** Signavos has no tool that signs on someone's behalf. Recipients always sign the document themselves, from their own email link.

## Handling errors

Every failure comes back with a stable `code`, a human-readable `message`, and often a
`hint` telling you what to do next. Read the `code`, not the prose. The ones worth handling
explicitly:

- `INSUFFICIENT_CREDITS` — stop and tell the user to buy credits in the dashboard. Do not retry.
- `CONFIRMATION_REQUIRED` — you tried to send without confirming the charge. Ask the user, then
  retry with the confirmation.
- `PAYLOAD_TOO_LARGE` — the file is above the inline limit; use the signed-URL upload instead.
- `DOCUMENT_NOT_SENDABLE_*` / `ALREADY_SENT` — the document is past the point of sending.
  Check its status before deciding what to do.
- `RATE_LIMITED` — wait for the window in `details.retry_after_sec` before retrying.
- `NOT_FOUND` — the document does not exist **or** does not belong to this user. Do not probe
  for other identifiers.

Anything with `retryable: false` will fail identically if you retry it. Report it and stop.

## Connecting

**Claude Code**

```bash
claude mcp add --transport http signavos https://signavos.com/api/mcp
```
- Then run /mcp, choose signavos, and approve the consent screen.

**Claude (desktop & web)**
- Open Settings → Connectors → Add custom connector.
- Paste https://signavos.com/api/mcp as the server URL, then Add and Connect.
- Approve the consent screen that opens in your browser.

**Cursor**
- Command Palette → Cursor Settings → Tools & MCP → New MCP Server.
- Add: { "mcpServers": { "signavos": { "url": "https://signavos.com/api/mcp" } } }
- Select "Needs login" and authorize.

**Any MCP client**
- Streamable HTTP endpoint: https://signavos.com/api/mcp
- Authorization is OAuth 2.1 with PKCE and dynamic client registration — discovery starts at /.well-known/oauth-protected-resource.

