PandaDoc API Patterns — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited PandaDoc API Patterns (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
PandaDoc provides a hosted MCP server at https://developers.pandadoc.com/mcp for AI tool integration. The MCP server provides direct API access to PandaDoc's document automation platform, documentation search, and code generation assistance.
pandadoc-search-docs andpandadoc-get-code-sample search PandaDoc's developer documentation, not your PandaDoc account; use pandadoc-documents.
pandadoc-documents.
PandaDoc hosts an official MCP server. Authentication uses an API key passed via the Authorization header:
MCP Server URL: https://developers.pandadoc.com/mcp
Required Header:
| Header | Value | Description |
|---|---|---|
Authorization | API-Key <key> | API key from PandaDoc Settings |
| Mode | Auth Required | Use Case |
|---|---|---|
| Documentation search | No | Browsing PandaDoc API docs and guides |
| Code generation assistance | No | Generating code snippets for PandaDoc integration |
| Live API calls | Yes | Creating documents, sending for signature, checking status |
Note: Documentation search and code generation work without an API key. All live API operations (creating documents, managing templates, sending for signature) require a valid API key.
export PANDADOC_API_KEY="your-api-key"{
"mcpServers": {
"pandadoc": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://developers.pandadoc.com/mcp",
"--header", "Authorization:API-Key YOUR_API_KEY"
]
}
}
}| Tool | Description | Key Parameters |
|---|---|---|
pandadoc-list-documents | List and filter documents | status, q (search query), tag, count, page, order_by, template_id, folder_uuid |
pandadoc-get-document | Get a single document's details | id (required) |
pandadoc-get-document-status | Get document status | id (required) |
pandadoc-create-document | Create a document from template | template_uuid, name, recipients, tokens, fields, pricing_tables, folder_uuid |
pandadoc-send-document | Send a document for signature | id (required), message, subject, silent |
pandadoc-download-document | Download a completed document | id (required) |
| Tool | Description | Key Parameters |
|---|---|---|
pandadoc-list-templates | List available templates | q (search query), count, page, tag, folder_uuid |
pandadoc-get-template | Get template details | id (required) |
| Tool | Description | Key Parameters |
|---|---|---|
pandadoc-add-recipient | Add a recipient to a document | document_id (required), email, first_name, last_name, role, signing_order |
| Tool | Description | Key Parameters |
|---|---|---|
pandadoc-search-docs | Search PandaDoc API documentation | query (required) |
pandadoc-get-code-sample | Generate code samples | endpoint, language |
List tools use 1-based page pagination with configurable count:
Pagination Parameters:
| Parameter | Description | Default | Max |
|---|---|---|---|
page | Page number (1-based) | 1 | - |
count | Results per page | 50 | 100 |
To fetch all results, call the list tool repeatedly, incrementing page from 1 until the number of results returned is less than count:
page=1 and count=100page=2| Parameter | Values | Description |
|---|---|---|
status | document.draft, document.sent, document.completed, document.viewed, document.waiting_approval, document.approved, document.rejected, document.waiting_pay, document.paid, document.voided, document.declined, document.expired | Filter by document status |
q | string | Search documents by name |
tag | string | Filter by document tag |
template_id | UUID | Filter by source template |
folder_uuid | UUID | Filter by folder |
order_by | date_created, date_modified, name, date_status_changed | Sort field |
| Parameter | Values | Description |
|---|---|---|
q | string | Search templates by name |
tag | string | Filter by template tag |
folder_uuid | UUID | Filter by folder |
Single Document:
{
"id": "msFYActMfJHqNTKH9tcPFa",
"name": "Acme Corp - Managed Services Agreement",
"status": "document.sent",
"date_created": "2026-01-15T10:30:00.000000Z",
"date_modified": "2026-01-16T14:22:00.000000Z",
"expiration_date": "2026-02-15T00:00:00.000000Z",
"version": "2",
"recipients": [
{
"email": "[email protected]",
"first_name": "John",
"last_name": "Smith",
"role": "Client",
"signing_order": 1,
"has_completed": false
}
],
"tokens": [
{
"name": "Client.Company",
"value": "Acme Corporation"
}
],
"grand_total": {
"amount": "2500.00",
"currency": "USD"
}
}Paginated Document List:
{
"results": [
{
"id": "msFYActMfJHqNTKH9tcPFa",
"name": "Acme Corp - Managed Services Agreement",
"status": "document.sent",
"date_created": "2026-01-15T10:30:00.000000Z"
}
]
}| Plan | Limit |
|---|---|
| Business | 300 requests per minute |
| Enterprise | 600 requests per minute |
When rate limited, the API returns HTTP 429. Wait before retrying. Use exponential backoff for automated retries.
| Error | HTTP Code | Cause | Resolution |
|---|---|---|---|
| Unauthorized | 401 | Invalid or missing API key | Check PANDADOC_API_KEY and regenerate if needed |
| Forbidden | 403 | Insufficient permissions | Verify API key has required access scope |
| Not Found | 404 | Document/template ID does not exist | Verify the resource ID |
| Rate Limited | 429 | Too many requests | Wait and retry with exponential backoff |
| Validation Error | 422 | Invalid request parameters | Check required fields and parameter formats |
| Server Error | 500 | PandaDoc internal error | Retry after a brief delay |
https://developers.pandadoc.com/mcppandadoc-search-docs (no auth required) to verify connectivitypandadoc-list-documents with count=1 to verify authenticationstatus, q, and tag parameters to narrow resultsdraft status before sendinghas_completed for each recipient to monitor progress~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.