# SignWith MCP tools reference

> Every tool the SignWith MCP server offers, with its arguments and the API endpoint it runs. AI assistants read these definitions from the server; this page is for you.

Source: https://signwith.co/docs/mcp/tools · Updated 2026-10-02

The server lists these tools in `tools/list`. A View only connection or a read-only API key lists only the tools marked **View only: yes**, and ChatGPT doesn't get the three billing tools.

## At a glance

| Tool | What it does | View only |
| --- | --- | --- |
| `get_account` | Who is signed in, live or test environment, and how many credits are left. | Yes |
| `list_templates` | List templates, newest first; search by name, folder or archived. | Yes |
| `get_template` | A template's roles (who signs) and fields (what they fill in). | Yes |
| `create_template` | Create a template from PDF or image documents. Fields come from text tags in the PDF, fillable form fields, or `fields` with page positions. | No |
| `update_template` | Rename a template or its roles, move it to a folder, or replace its fields. | No |
| `duplicate_template` | Copy a template to make a variant. | No |
| `archive_template` | Archive a template so it no longer appears in lists. | No |
| `send_signature_request` | Send a template to people to sign. Takes an idempotency_key so a retry never sends twice. | No |
| `list_signature_requests` | List signature requests by status or template, or search signers. | Yes |
| `get_signature_request` | Who has signed, viewed or declined, and the signed documents once complete. | Yes |
| `remind_signers` | Re-send the signing email to everyone whose turn it is. At most once an hour. | No |
| `cancel_signature_request` | Cancel a signature request so nobody can sign it. Can't be undone. | No |
| `update_signer` | Fix a signer's name, email or phone, prefill fields, or resend their link. | No |
| `list_credit_packs` | The credit packs the user can buy, with prices. | Yes |
| `buy_credits` | Start a purchase and return a checkout link for the user to pay in their browser. | No |
| `get_checkout` | Whether a credit purchase has been paid. | Yes |
| `verify_document` | Check whether a PDF was signed with SignWith and its digital signatures are valid. | Yes |
| `send_feedback` | Pass a bug report, feature request or question to the SignWith team. | Yes |

## `get_account`

**Get account.** Who is signed in, live or test environment, and how many credits are left.

View only: yes; runs `GET /me` and `GET /credits`.

No arguments.

## `list_templates`

**List templates.** List templates, newest first; search by name, folder or archived.

View only: yes; runs `GET /templates`.

| Argument | Type | Description |
| --- | --- | --- |
| `q` | string | Search by template name. |
| `folder` | string | Only templates in this folder. |
| `archived` | boolean | List archived templates instead. |
| `limit` | integer | Page size, 1 to 100 (default 20). |
| `cursor` | integer | `next_cursor` from the previous page. |

## `get_template`

**Get template.** A template's roles (who signs) and fields (what they fill in).

View only: yes; runs `GET /templates/{id}`.

| Argument | Type | Description |
| --- | --- | --- |
| `template_id` (required) | integer | The template. |

## `create_template`

**Create template.** Create a template from PDF or image documents. Fields come from text tags in the PDF, fillable form fields, or `fields` with page positions.

View only: no; runs `POST /templates`.

| Argument | Type | Description |
| --- | --- | --- |
| `documents` (required) | array of objects | 1 to 10 documents, each `{ name, file }`, where `file` is base64 content or an https URL to download. [Text tags](https://signwith.co/docs/api/text-tags) in a PDF become fields. |
| `name` | string | Template name. |
| `folder` | string | Folder name. |
| `fields` | array of objects | Fields to place: each has `type` (text, signature, initials, date, checkbox, number, phone, select, radio, multiple, image, file, stamp), `areas` (`page`, `x`, `y`, `w`, `h` as fractions of the page, optional `document` index), and optional `name`, `role`, `required` and `options`. |

## `update_template`

**Update template.** Rename a template or its roles, move it to a folder, or replace its fields.

View only: no; runs `PATCH /templates/{id}`.

| Argument | Type | Description |
| --- | --- | --- |
| `template_id` (required) | integer | The template. |
| `name` | string | New name. |
| `folder` | string | New folder. |
| `roles` | array of strings | Role names in signing order. |
| `fields` | array of objects | Replaces all existing fields. Fields to place: each has `type` (text, signature, initials, date, checkbox, number, phone, select, radio, multiple, image, file, stamp), `areas` (`page`, `x`, `y`, `w`, `h` as fractions of the page, optional `document` index), and optional `name`, `role`, `required` and `options`. |

## `duplicate_template`

**Duplicate template.** Copy a template to make a variant.

View only: no; runs `POST /templates/{id}/duplicate`.

| Argument | Type | Description |
| --- | --- | --- |
| `template_id` (required) | integer | The template to copy. |
| `name` | string | Name of the copy. |

## `archive_template`

**Archive template.** Archive a template so it no longer appears in lists.

View only: no; asks you to confirm first; runs `POST /templates/{id}/archive`.

| Argument | Type | Description |
| --- | --- | --- |
| `template_id` (required) | integer | The template. |

## `send_signature_request`

**Send for signature.** Send a template to people to sign. Takes an idempotency_key so a retry never sends twice.

View only: no; asks you to confirm first; runs `POST /signature_requests`.

| Argument | Type | Description |
| --- | --- | --- |
| `template_id` (required) | integer | The template to send. |
| `signers` (required) | array of objects | One per role: `role`, `email` or `phone`, and optional `name`, `prefill` (values keyed by field name), `external_id` and `require_email_otp`. |
| `signing_order` | string | `sequential` (default) or `parallel`. |
| `message` | object | Custom email `subject` and `body`. |
| `send_email` | boolean | Email signers their links (default true). |
| `expires_at` | string (date-time) | When the request expires. |
| `redirect_url` | string (URL) | Where signers go after signing. |
| `require_email_otp` | boolean | Require an email one-time code for every signer. |
| `idempotency_key` | string | Reuse the same key when retrying so nothing is sent twice. |

## `list_signature_requests`

**List signature requests.** List signature requests by status or template, or search signers.

View only: yes; runs `GET /signature_requests`.

| Argument | Type | Description |
| --- | --- | --- |
| `status` | string | `open`, `completed`, `declined`, `expired` or `canceled`. |
| `template_id` | integer | Only requests from this template. |
| `q` | string | Search signers by name, email or phone. |
| `limit` | integer | Page size, 1 to 100 (default 20). |
| `cursor` | integer | `next_cursor` from the previous page. |

## `get_signature_request`

**Get signature request.** Who has signed, viewed or declined, and the signed documents once complete.

View only: yes; runs `GET /signature_requests/{id}`.

| Argument | Type | Description |
| --- | --- | --- |
| `signature_request_id` (required) | integer | The signature request. |

## `remind_signers`

**Remind signers.** Re-send the signing email to everyone whose turn it is. At most once an hour.

View only: no; asks you to confirm first; runs `POST /signature_requests/{id}/remind`.

| Argument | Type | Description |
| --- | --- | --- |
| `signature_request_id` (required) | integer | The signature request. |

## `cancel_signature_request`

**Cancel signature request.** Cancel a signature request so nobody can sign it. Can't be undone.

View only: no; asks you to confirm first; runs `POST /signature_requests/{id}/cancel`.

| Argument | Type | Description |
| --- | --- | --- |
| `signature_request_id` (required) | integer | The signature request. |

## `update_signer`

**Update signer.** Fix a signer's name, email or phone, prefill fields, or resend their link.

View only: no; runs `PATCH /signers/{id}`.

| Argument | Type | Description |
| --- | --- | --- |
| `signer_id` (required) | integer | The signer. |
| `name` | string | Corrected name. |
| `email` | string | Corrected email. |
| `phone` | string | Corrected phone. |
| `prefill` | object | Field values to set, keyed by field name. |
| `resend` | boolean | Email the signing link again. |

## `list_credit_packs`

**List credit packs.** The credit packs the user can buy, with prices.

View only: yes; not offered in ChatGPT; runs `GET /credit_packs`.

No arguments.

## `buy_credits`

**Buy credits.** Start a purchase and return a checkout link for the user to pay in their browser.

View only: no; not offered in ChatGPT; runs `POST /checkouts`.

| Argument | Type | Description |
| --- | --- | --- |
| `credit_pack_id` (required) | integer | A pack from list_credit_packs. |
| `discount_code` | string | Optional discount code. |

## `get_checkout`

**Get checkout.** Whether a credit purchase has been paid.

View only: yes; not offered in ChatGPT; runs `GET /checkouts/{id}`.

| Argument | Type | Description |
| --- | --- | --- |
| `checkout_id` (required) | string | From buy_credits. |

## `verify_document`

**Verify signed PDF.** Check whether a PDF was signed with SignWith and its digital signatures are valid.

View only: yes; runs `POST /documents/verify`.

| Argument | Type | Description |
| --- | --- | --- |
| `file` (required) | string | The PDF, base64-encoded. |

## `send_feedback`

**Send feedback to SignWith.** Pass a bug report, feature request or question to the SignWith team.

View only: yes; runs `POST /feedback`.

| Argument | Type | Description |
| --- | --- | --- |
| `message` (required) | string | What happened, up to 5,000 characters. |
| `type` | string | `bug`, `feature_request`, `feedback` or `question`. |
| `context` | object | Optional `client`, `tool`, `signature_request_id`, `template_id` and `error_code`. |
