---
title: MCP Tools Reference
description: Complete reference for all 57 Seal MCP tools, 6 guided prompts, and knowledge resources
---

# MCP Tools Reference

The Seal MCP server provides 57 tools, 6 pre-built workflow prompts, and a knowledge base of product documentation — giving AI assistants complete, confident access to your Seal account.

## Guided Prompts

Prompts are pre-built workflow templates. Instead of knowing which tools to call, just ask Claude to use one of these — it will guide you through each step.

| Prompt                 | What it does                                                       |
| ---------------------- | ------------------------------------------------------------------ |
| `send-document`        | Upload a PDF → create document → add recipients → send for signing |
| `check-signing-status` | Find documents → check who signed → optionally send reminders      |
| `use-template`         | Browse templates → create document → add recipients → send         |
| `verify-document`      | Verify cryptographic integrity → audit trail → download URL        |
| `setup-webhooks`       | Browse events → create endpoint → save signing secret              |
| `void-document`        | Find document → confirm → provide reason → cancel                  |

**Example:** "Use the send-document prompt" or "Help me send a contract using the Seal prompt"

---

## Knowledge Resources

The MCP server exposes Seal product documentation as readable resources at `seal://docs/{topic}`.

| Resource URI                     | Topic                                          |
| -------------------------------- | ---------------------------------------------- |
| `seal://docs`                    | Index of all topics                            |
| `seal://docs/overview`           | What Seal is and how it works                  |
| `seal://docs/document-states`    | State machine and lifecycle                    |
| `seal://docs/recipient-roles`    | signer vs approver vs viewer                   |
| `seal://docs/field-types`        | All field types and properties                 |
| `seal://docs/sequential-signing` | How ordered signing groups work                |
| `seal://docs/webhooks`           | Events, payload format, signature verification |
| `seal://docs/limits`             | Rate limits, file limits, quotas               |
| `seal://docs/authentication`     | API keys, scopes, security best practices      |

Claude reads these automatically when you ask product questions like "how does sequential signing work?" or "what events can I subscribe to?"

---

## Account Tools

### seal_get_account_info

Get information about the current Seal workspace — organization name, member counts, document counts by status, signing settings, and whether AI features are enabled.

**Parameters:** None

**Returns:** Organization details, member/document counts, and settings summary

---

## Analytics Tools

### seal_get_analytics

Get document signing analytics and metrics for your workspace. Returns document counts, completion rate, and median signing time for a configurable date range.

**Parameters:**

- `from` (string, optional): Start of date range as ISO 8601 timestamp (default: 30 days ago)
- `to` (string, optional): End of date range as ISO 8601 timestamp (default: now)

**Returns:** Period-filtered document metrics + live workspace snapshot by status

---

## Audit Log Tools

### seal_list_audit_log

List organization-wide audit log entries. Returns a chronological history of all actions — document sends, signings, settings changes, member management, and more.

**Parameters:**

- `limit` (number, optional): Number of entries (1–100, default 20)
- `cursor` (string, optional): Pagination cursor from previous response
- `document_id` (string, optional): Filter entries for a specific document
- `action` (string, optional): Filter by action type (e.g. `recipient.signed`, `document.completed`)
- `created_after` (string, optional): ISO 8601 timestamp lower bound
- `created_before` (string, optional): ISO 8601 timestamp upper bound

**Returns:** `{ entries: ApiAuditLogEntry[], has_more, next_cursor? }`

---

## Contact Tools

### seal_list_contacts

List contacts in your workspace contact directory with optional filtering by status or search term.

**Parameters:**

- `limit` (number, optional): Number of results (1–100, default 20)
- `cursor` (string, optional): Pagination cursor
- `status` (string, optional): Filter by status — `active`, `inactive`, or `lead`
- `search` (string, optional): Case-insensitive search by name or email

**Returns:** `{ contacts: ApiContact[], has_more, next_cursor? }`

### seal_get_contact

Get full details for a specific contact by ID.

**Parameters:**

- `id` (string, required): Contact ID

**Returns:** Full contact object

### seal_create_contact

Add a new contact to your workspace directory.

**Parameters:**

- `first_name` (string, required): First name
- `last_name` (string, required): Last name
- `email` (string, required): Email address
- `phone` (string, optional): Phone number
- `company` (string, optional): Company or organization
- `title` (string, optional): Job title
- `status` (string, optional): `active`, `inactive`, or `lead` (default: `active`)
- `notes` (string, optional): Free-form notes
- `tags` (array, optional): Array of tag strings

**Returns:** `{ id: string }` — the new contact ID

### seal_delete_contact

Permanently delete a contact from the directory. Cannot be undone.

**Parameters:**

- `id` (string, required): Contact ID

**Returns:** `{ success: boolean }`

---

## Document Tools

### seal_list_documents

List documents in your workspace with optional filtering by status, title search, or creation date range.

**Parameters:**

- `limit` (number, optional): Number of results (1–100, default 20)
- `cursor` (string, optional): Pagination cursor from previous response
- `status` (string, optional): Filter by status — `draft`, `sent`, `in_progress`, `completed`, `cancelled`, `declined`
- `title_search` (string, optional): Case-insensitive substring match on document title
- `created_after` (string, optional): ISO 8601 timestamp — return documents created after this date
- `created_before` (string, optional): ISO 8601 timestamp — return documents created before this date

**Returns:** Paginated array of document objects

**Example:**

```
User: "Find all completed documents from last month"
Claude: [Calls seal_list_documents with status=completed and created_after/created_before]
```

### seal_get_document

Get detailed information about a specific document.

**Parameters:**

- `id` (string, required): Document ID
- `include_recipients` (boolean, optional): Include recipient details in response

**Returns:** Document object with optional recipients

### seal_create_document

Create a new document in draft status.

**Parameters:**

- `title` (string, required): Document title
- `storage_id` (string, required): Storage ID from a prior `seal_upload_file` or `seal_upload_file_content` call
- `file_size` (number, required): File size in bytes
- `file_type` (string, optional): MIME type (default `application/pdf`)
- `description` (string, optional): Document description
- `page_count` (number, optional): Number of pages
- `deadline` (string, optional): Signing deadline as ISO 8601 timestamp

**Returns:** `{ id: string }` — the new document ID

### seal_update_document

Update document metadata. Only works for documents in draft status.

**Parameters:**

- `id` (string, required): Document ID
- `title` (string, optional): New document title
- `description` (string, optional): New document description
- `deadline` (string, optional): New signing deadline as ISO 8601 timestamp

**Returns:** `{ success: boolean }`

### seal_delete_document

Delete a document. Only draft documents can be deleted. Use `seal_void_document` for sent documents.

**Parameters:**

- `id` (string, required): Document ID

**Returns:** `{ success: boolean }`

### seal_send_document

Send a document to recipients for signing. The document must be in draft status and have at least one recipient.

**Parameters:**

- `id` (string, required): Document ID
- `message` (string, optional): Custom message to include in the signing email

**Returns:** `{ success: boolean }`

### seal_void_document

Cancel a document and prevent further signing. All recipients will be notified.

**Parameters:**

- `id` (string, required): Document ID
- `reason` (string, required): Reason for voiding the document

**Returns:** `{ success: boolean }`

### seal_download_document

Get the download URL for a document. Returns the signed PDF if available, otherwise the original.

**Parameters:**

- `id` (string, required): Document ID

**Returns:** `{ url: string }` — signed download URL

### seal_get_document_access

Get the sharing/access mode for a document.

**Parameters:**

- `id` (string, required): Document ID

**Returns:** `{ document_id, sharing_mode }` — one of `private`, `workspace`, or `specific`

### seal_update_document_access

Update the sharing/access mode for a document.

**Parameters:**

- `id` (string, required): Document ID
- `sharing_mode` (string, required): `private` (owner only), `workspace` (all members, Pro), or `specific` (granted users, Pro)

**Returns:** `{ success: boolean }`

### seal_bulk_send_documents

Send multiple draft documents for signing at once. Each must have recipients.

**Parameters:**

- `document_ids` (array, required): Array of document IDs to send (max 50)
- `message` (string, optional): Custom message for signing invitation emails

**Returns:** `{ succeeded, failed, total_requested, results[] }` with per-document status

### seal_bulk_void_documents

Void multiple documents at once. Cannot void completed, already-cancelled, or declined documents.

**Parameters:**

- `document_ids` (array, required): Array of document IDs to void (max 50)
- `reason` (string, required): Reason for voiding

**Returns:** `{ succeeded, failed, total_requested, results[] }` with per-document status

---

## Member Tools

### seal_list_members

List all members of your Seal workspace with their role and status.

**Parameters:**

- `role` (string, optional): Filter by role — `owner`, `admin`, `member`, or `viewer`

**Returns:** Array of member objects sorted by role hierarchy

### seal_get_member

Get detailed information about a specific workspace member.

**Parameters:**

- `id` (string, required): Membership record ID (from `seal_list_members`)

**Returns:** Member object with name, email, role, status, and join date

---

## Recipient Tools

### seal_list_recipients

List all recipients for a document.

**Parameters:**

- `document_id` (string, required): Document ID

**Returns:** `{ recipients: ApiRecipient[] }`

### seal_get_recipient

Get detailed information about a specific recipient.

**Parameters:**

- `document_id` (string, required): Document ID
- `id` (string, required): Recipient ID

**Returns:** Recipient object

### seal_add_recipient

Add a new recipient to a document. The document must be in draft status.

**Parameters:**

- `document_id` (string, required): Document ID
- `email` (string, required): Recipient email address
- `name` (string, required): Recipient display name
- `role` (string, required): `signer`, `approver`, or `viewer`
- `order` (number, optional): Signing order for sequential workflows
- `message` (string, optional): Custom message for this recipient

**Returns:** `{ id: string }` — the new recipient ID

### seal_update_recipient

Update a recipient's details. The document must be in draft status.

**Parameters:**

- `document_id` (string, required): Document ID
- `id` (string, required): Recipient ID
- `name` (string, optional): New display name
- `role` (string, optional): New recipient role
- `order` (number, optional): New signing order
- `message` (string, optional): New custom message

**Returns:** `{ success: boolean }`

### seal_remove_recipient

Remove a recipient from a document. The document must be in draft status.

**Parameters:**

- `document_id` (string, required): Document ID
- `id` (string, required): Recipient ID

**Returns:** `{ success: boolean }`

### seal_send_reminder

Send a reminder email to a recipient who hasn't signed yet.

**Parameters:**

- `document_id` (string, required): Document ID
- `id` (string, required): Recipient ID
- `message` (string, optional): Custom reminder message

**Returns:** `{ success: boolean }`

### seal_add_recipients_bulk

Add multiple recipients to a document at once. Processes in batches of 5 with partial failure reporting.

**Parameters:**

- `document_id` (string, required): Document ID
- `recipients` (array, required): Array of recipient objects — each with `email`, `name`, `role`, and optional `order` and `message`

**Returns:** `{ added, failed, total_requested, recipients[] }`

### seal_update_recipients_bulk

Update multiple recipients for a document at once.

**Parameters:**

- `document_id` (string, required): Document ID
- `updates` (array, required): Array of update objects — each with `id` and optional `name`, `role`, `order`, `message`

**Returns:** `{ updated, failed, total_requested, recipients[] }`

## Settings Tools

### seal_get_settings

Get all organization settings for your workspace. Returns signing behavior, notification preferences, AI configuration, and security settings.

**Parameters:** None

**Returns:** Settings object with `signing`, `notifications`, `ai`, and `security` categories

### seal_update_settings

Update organization settings. All categories and all fields within each category are optional — only provide what you want to change.

**Parameters:**

- `signing` (object, optional): `allowed_signature_types`, `default_deadline_days`, `esign_consent_text`
- `notifications` (object, optional): `reminder_schedule`, `expiration_alert_days`, `send_completion_email`, `send_viewed_notification`
- `ai` (object, optional): `enabled`, `auto_analyze`
- `security` (object, optional): `ip_allowlist`, `allow_api_access`, `require_mfa`, `session_timeout_minutes`

**Returns:** `{ success: boolean }`

---

## Template Tools

### seal_list_templates

List all templates in your organization.

**Parameters:**

- `limit` (number, optional): Number of results (1–100, default 20)
- `cursor` (string, optional): Pagination cursor from previous response
- `status` (string, optional): Filter by status — `active` or `archived`

**Returns:** Paginated array of template objects

### seal_get_template

Get detailed information about a template.

**Parameters:**

- `id` (string, required): Template ID
- `include_fields` (boolean, optional): Include field definitions in response

**Returns:** Template object

### seal_get_template_fields

Get all field definitions for a template. Fields define where signatures and data entry points are located.

**Parameters:**

- `id` (string, required): Template ID

**Returns:** `{ fields: ApiTemplateField[] }`

### seal_create_template

Create a new template from an existing document. The document's field layout is copied to the template.

**Parameters:**

- `document_id` (string, required): Source document ID
- `name` (string, required): Template name
- `description` (string, optional): Template description

**Returns:** `{ id: string }` — the new template ID

### seal_update_template

Update template metadata.

**Parameters:**

- `id` (string, required): Template ID
- `name` (string, optional): New template name
- `description` (string, optional): New template description
- `status` (string, optional): New status — `active` or `archived`

**Returns:** `{ success: boolean }`

### seal_delete_template

Soft-delete a template. The template will be marked as deleted but not removed from the database.

**Parameters:**

- `id` (string, required): Template ID

**Returns:** `{ success: boolean }`

### seal_use_template

Create a new document from a template. The new document inherits the template's field layout.

**Parameters:**

- `id` (string, required): Template ID
- `title` (string, optional): Title for the new document (defaults to template name)
- `description` (string, optional): Description for the new document

**Returns:** `{ id: string }` — the new document ID

## Signature Tools

### seal_list_signatures

List all signatures for a document.

**Parameters:**

- `document_id` (string, required): Document ID

**Returns:** `{ signatures: ApiSignature[] }`

### seal_get_signature

Get detailed information about a specific signature.

**Parameters:**

- `document_id` (string, required): Document ID
- `id` (string, required): Signature ID

**Returns:** Signature object with method, timestamp, and cryptographic hash

### seal_verify_document

Verify the cryptographic integrity of all signatures on a document. Returns whether each signature is valid and the document hasn't been tampered with.

**Parameters:**

- `document_id` (string, required): Document ID

**Returns:** Verification result with per-signature validity status

### seal_get_audit_trail

Get the complete audit trail for a document. Shows all events including views, signatures, and modifications with timestamps.

**Parameters:**

- `document_id` (string, required): Document ID
- `limit` (number, optional): Maximum number of entries to return (1–100)

**Returns:** `{ entries: ApiAuditEntry[] }`

## Upload Tools

### seal_upload_file

Upload a PDF file from a local file path. **Only available in stdio mode** — not accessible when using the HTTP transport since it reads files from the server's filesystem.

**Parameters:**

- `file_path` (string, required): Absolute path to the PDF file

**Returns:** `{ storage_id, file_name, file_size }` — use `storage_id` with `seal_create_document`

### seal_upload_file_content

Upload a PDF using base64-encoded content. Works in both stdio and HTTP modes.

**Parameters:**

- `file_name` (string, required): Original filename (e.g., `contract.pdf`)
- `content_base64` (string, required): Base64-encoded PDF content

**Returns:** `{ storage_id, file_name, file_size }` — use `storage_id` with `seal_create_document`

## Webhook Tools

### seal_list_webhooks

List all webhook endpoints configured for your organization, including delivery statistics.

**Parameters:** None

**Returns:** Array of webhook endpoint objects with stats

### seal_get_webhook

Get details for a specific webhook endpoint.

**Parameters:**

- `id` (string, required): Webhook endpoint ID

**Returns:** Webhook endpoint object with delivery statistics

### seal_create_webhook

Create a new webhook endpoint. **The signing secret is returned only once** — store it securely.

**Parameters:**

- `name` (string, required): Friendly name (max 100 chars)
- `url` (string, required): HTTPS delivery URL
- `events` (array, required): Event types to subscribe to — pass an empty array to receive all events
- `description` (string, optional): Description of this endpoint

**Returns:** `{ id, secret }` — the endpoint ID and signing secret

**Example:**

```
User: "Create a webhook for document completions on https://myapp.com/hooks/seal"
Claude: [Calls seal_list_webhook_event_types to find event name, then seal_create_webhook]
```

### seal_update_webhook

Update a webhook endpoint's configuration. Only provide fields you want to change.

**Parameters:**

- `id` (string, required): Webhook endpoint ID
- `name` (string, optional): New friendly name
- `url` (string, optional): New HTTPS delivery URL
- `events` (array, optional): New set of event types
- `description` (string, optional): New description
- `status` (string, optional): `active`, `paused`, or `disabled`

**Returns:** `{ success: boolean }`

### seal_delete_webhook

Permanently delete a webhook endpoint and all its delivery history. Cannot be undone.

**Parameters:**

- `id` (string, required): Webhook endpoint ID

**Returns:** `{ success: boolean }`

### seal_rotate_webhook_secret

Rotate the signing secret for a webhook endpoint. **The old secret stops working immediately** — update your server before rotating.

**Parameters:**

- `id` (string, required): Webhook endpoint ID

**Returns:** `{ secret: string }` — the new signing secret

### seal_list_webhook_event_types

List all available webhook event types with descriptions. Use this before creating webhooks to discover subscribable events.

**Parameters:** None

**Returns:** Array of `{ type, category, description }` objects

**Available event types:**

| Event                | Category   | Description                            |
| -------------------- | ---------- | -------------------------------------- |
| `document.created`   | Documents  | A new document was created             |
| `document.sent`      | Documents  | A document was sent for signing        |
| `document.viewed`    | Documents  | A document was viewed by a recipient   |
| `document.completed` | Documents  | All recipients have signed             |
| `document.voided`    | Documents  | A document was voided/cancelled        |
| `document.expired`   | Documents  | A document deadline passed             |
| `document.declined`  | Documents  | A recipient declined to sign           |
| `recipient.added`    | Recipients | A recipient was added                  |
| `recipient.viewed`   | Recipients | A recipient viewed the document        |
| `recipient.signed`   | Recipients | A recipient signed                     |
| `recipient.approved` | Recipients | A recipient approved                   |
| `recipient.declined` | Recipients | A recipient declined                   |
| `recipient.reminded` | Recipients | A reminder was sent                    |
| `template.created`   | Templates  | A new template was created             |
| `template.updated`   | Templates  | A template was modified                |
| `template.used`      | Templates  | A document was created from a template |

## Tool Categories

| Category   | Tool Count | Description                                                |
| ---------- | ---------- | ---------------------------------------------------------- |
| Account    | 1          | Workspace info, member counts, document stats              |
| Analytics  | 1          | Document metrics, completion rates, signing trends         |
| Audit Log  | 1          | Organization-wide event history with filters               |
| Contacts   | 4          | Workspace contact directory (list, get, create, delete)    |
| Documents  | 12         | Create, manage, send, search, access, and bulk operations  |
| Members    | 2          | List and view workspace team members                       |
| Recipients | 8          | Manage document recipients, reminders, and bulk operations |
| Settings   | 2          | Read and update workspace configuration                    |
| Templates  | 7          | Create and use document templates                          |
| Signatures | 4          | Verify signatures and access audit trails                  |
| Uploads    | 2          | Upload PDF files for document creation                     |
| Webhooks   | 7          | Configure and manage webhook endpoints                     |

## Common Workflows

### Create and Send Document

```
1. seal_upload_file / seal_upload_file_content — upload PDF
2. seal_create_document — create document with the storage_id
3. seal_add_recipient / seal_add_recipients_bulk — add recipients
4. seal_send_document — send for signing
```

### Use a Template

```
1. seal_list_templates — find the template
2. seal_get_template_fields — inspect required fields
3. seal_use_template — create a new document from the template
4. seal_add_recipients_bulk — add recipients
5. seal_send_document — send for signing
```

### Track Document Status

```
1. seal_list_documents — get all documents (filter by status)
2. seal_get_document — get specific document with recipients
3. seal_list_recipients — check each recipient's signing status
4. seal_send_reminder — send nudges to pending recipients
```

### Verify Signed Document

```
1. seal_verify_document — verify cryptographic integrity
2. seal_get_audit_trail — get full activity history
3. seal_download_document — get the signed PDF URL
```

### Set Up Webhooks

```
1. seal_list_webhook_event_types — discover available events
2. seal_create_webhook — create endpoint with chosen events
3. seal_list_webhooks — verify configuration and check stats
4. seal_rotate_webhook_secret — rotate secret if compromised
```

## Error Handling

All tools return errors in a consistent RFC 7807 format:

```json
{
  "type": "VALIDATION_ERROR",
  "status": 400,
  "title": "Invalid email format",
  "details": { "email": ["Must be a valid email address"] }
}
```

Common error types:

- `VALIDATION_ERROR` — Invalid or missing parameters
- `NOT_FOUND` — Resource doesn't exist or you lack access
- `PERMISSION_DENIED` — Insufficient permissions
- `RATE_LIMIT_EXCEEDED` — Too many requests
- `AUTH_ERROR` — Missing or invalid authentication

## Rate Limits

MCP tools share the same rate limits as the REST API:

- **60 requests per minute**
- **1,000 requests per hour**

## Next Steps

- **[MCP Authentication](/docs/mcp/authentication)** — OAuth setup guide
- **[API Reference](/docs/api-reference)** — Detailed REST API documentation
- **[Quick Start](/docs/getting-started/quick-start)** — Integration tutorial
