Best for
- Reach for pandadoc-cli when an agent or operator needs to inspect or drive a PandaDoc document workflow from the terminal: creating documents from templates, sending and tracking signing status, or answering pipeline qu…
Servosity/msp-skills/skills/pandadoc/SKILL.md
Every PandaDoc endpoint, plus an offline document pipeline no other PandaDoc tool has - stalled deals, aging, recipient engagement, and open quote value from a local store. Trigger phrases: `check my pandadoc pipeline`, `which proposals are stalled`, `list pandadoc documents`, `create a document from a template`, `how much quote value is open`, `use pandadoc`, `run pandadoc`.
Decision brief
Every PandaDoc endpoint, plus an offline document pipeline no other PandaDoc tool has - stalled deals, aging, recipient engagement, and open quote value from a local store. Trigger phrases: `check my pandadoc pipeline`, `which proposals are stalled`, `list pandadoc documents`, `create a document from a template`, `how much quote value is open`, `use pandado…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Servosity/msp-skills --skill "skills/pandadoc"Inspect the Agent Skill "pandadoc" from https://github.com/Servosity/msp-skills/blob/30e109db0872897de0b88adb38d81d4c292da3ae/skills/pandadoc/SKILL.md at commit 30e109db0872897de0b88adb38d81d4c292da3ae. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Authenticate with a PandaDoc API key. Set PANDADOCAPIKEY and every call sends the Authorization: API-Key header for you.
This skill drives the pandadoc-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
Reach for pandadoc-cli when an agent or operator needs to inspect or drive a PandaDoc document workflow from the terminal: creating documents from templates, sending and tracking signing status, or answering pipeline questions (stalled deals, aging, open quote value, recipient e…
Do not use this CLI for: - Drafting or reviewing contract LANGUAGE - this CLI moves documents through PandaDoc; it does not write or interpret legal text. - E-signing a document yourself - signing happens in the recipient's PandaDoc session, not via this CLI. - Documents stored…
These capabilities aren't available in any other tool for this API.
Permission review
The documentation asks the agent to run terminal commands or scripts.
npx -y @mvanhorn/printing-press-library install pandadoc --cli-onlyThe documentation asks the agent to run terminal commands or scripts.
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/pandadoc/cmd/pandadoc-cli@latestThe documentation asks the agent to create, modify, or delete local files.
`pandadoc-cli content-library-items-upload` - This asynchronous endpoint allows users to create a new CLI by uploading a file.The documentation asks the agent to create, modify, or delete local files.
`pandadoc-cli documents create-folder` - Create a new folder to store your documents.The documentation includes sending, uploading, or posting data to a remote service.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |The documentation includes network, browsing, or remote request actions.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 88/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
This skill drives the pandadoc-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
npx -y @mvanhorn/printing-press-library install pandadoc --cli-only
pandadoc-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.4 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/pandadoc/cmd/pandadoc-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
pandadoc-cli wraps the full PandaDoc Public API and syncs documents, templates, contacts, content library, and webhooks into a local SQLite store. On top of that it answers questions the API can't: which documents are stalled (stalled), how long they've aged (aging), which recipients never sign (engagement), and how much quote value is in flight (value).
Reach for pandadoc-cli when an agent or operator needs to inspect or drive a PandaDoc document workflow from the terminal: creating documents from templates, sending and tracking signing status, or answering pipeline questions (stalled deals, aging, open quote value, recipient engagement) that the PandaDoc API exposes no single endpoint for. It is ideal for MSP/sales operations that live in proposals, quotes, MSAs, and SOWs.
Do not use this CLI for:
These capabilities aren't available in any other tool for this API.
pipeline - See your whole document funnel at a glance - how many are in draft, sent, viewed, completed, or declined.
Reach for this when you need a single status breakdown instead of paging the documents endpoint and counting yourself.
pandadoc-cli pipeline --agent
stalled - Find documents that were sent but never completed within N days - the deals quietly dying.
Use before a pipeline review to surface proposals that need a nudge.
pandadoc-cli stalled --days 14 --agent
aging - Show how long each document has sat in its current status, bucketed by age.
Pick this to spot bottlenecks - where documents pile up between sent and signed.
pandadoc-cli aging --agent
template-stats - Per-template document counts and completion rates - which templates actually close.
Reach for this to retire low-converting templates and double down on winners.
pandadoc-cli template-stats --agent
value - Sum the quote/pricing totals across all open (non-completed) documents - your in-flight dollar value.
Use for a fast forecast of pipeline value without exporting to a spreadsheet.
pandadoc-cli value --status sent --agent
since - Show what changed in the last N hours - new documents and status transitions.
Run at the start of the day to catch every document that moved overnight.
pandadoc-cli since 4h --agent
forecast - Bucket open quote dollars into healthy, aging, and stalled tiers by deal age.
Reach for this when a flat open-value total isn't enough and you need dollars-at-risk by deal age.
pandadoc-cli forecast --agent
engagement - Rank recipients by how often they open and sign vs. let documents sit unread.
Use to find which clients consistently stall so you can change how you route to them.
pandadoc-cli engagement --agent
cold-clients - Rank clients by how long since they last signed anything - spot the accounts going quiet.
Reach for this when you need account-level recency (who went cold), not per-document status or per-recipient rates.
pandadoc-cli cold-clients --days 30 --agent
followup - A ranked nudge worklist: stalled documents joined to recipient emails and days-since-sent, ready for outreach.
Reach for this when you need who-to-nudge with contact emails attached, not just a stalled-document list.
pandadoc-cli followup --days 7 --agent
webhook-coverage - Compare your active webhook subscriptions against the full event catalog to find gaps.
Use to confirm you won't miss a document.state_changed event before relying on automations.
pandadoc-cli webhook-coverage --agent
reminder-gaps - Find sent-but-incomplete documents that have no active auto-reminder set - queries the live API per document (needs PANDADOC_API_KEY).
Reach for this to verify PandaDoc is auto-nudging signers before you nudge manually; unlike the other store-backed analytics it makes live API calls.
pandadoc-cli reminder-gaps --max-scan-docs 25 --agent
contacts - Operations related to managing and retrieving contact details.
pandadoc-cli contacts create - This method adds a contact into a contacts list.pandadoc-cli contacts delete - This method deletes a contact.pandadoc-cli contacts details - Returns contact details by its ID.pandadoc-cli contacts list - This method returns a list of contacts associated with a workspace.pandadoc-cli contacts update - This method updates a contact details.content-library-items - Operations for managing content library items, including retrieving details, checking status, and creating items via file upload.
pandadoc-cli content-library-items create - This API endpoint allows users to create an empty item in the content library.pandadoc-cli content-library-items list - The endpoint retrieves items from the content library in PandaDoc.pandadoc-cli content-library-items status - Requesting the CLI status helps verify that a CLI is in the expected state before invoking additional API methods.content-library-items-upload - Manage content library items upload
pandadoc-cli content-library-items-upload - This asynchronous endpoint allows users to create a new CLI by uploading a file.documents - Operations for managing documents, including appending content library items and creating document sessions for embedded signing.
pandadoc-cli documents bulk-delete - Delete multiple documents in one request by sending a JSON array.pandadoc-cli documents create - > See the [Create document from template](https://developers.pandadoc.pandadoc-cli documents create-folder - Create a new folder to store your documents.pandadoc-cli documents delete - Delete a document by ID.pandadoc-cli documents list - This endpoint will let you list and search for the documents. ### [Here](https://developers.pandadoc.pandadoc-cli documents list-by-linked-object - Get a list of documents connected to a linked object - an entity from an integration.pandadoc-cli documents list-folders - Get the list of folders which contain Documents in your account. > 📘 > > The root folder is not listed in the response.pandadoc-cli documents rename-folder - Rename Documents Folder.pandadoc-cli documents status - It is useful to request document status to ensure a document is in the expected state before calling additional APIpandadoc-cli documents transfer-all-ownership - This method transfers ownership of all documents from one member to another.pandadoc-cli documents update - Use the PATCH method to update a PandaDoc document.documents-upload - Manage documents upload
pandadoc-cli documents-upload - > See the [Create from PDF](https://developers.pandadoc.documents-upload-markdown - Manage documents upload markdown
pandadoc-cli documents-upload-markdown - Upload a Markdown (.md) file to create a new document. The file content will be converted into a PandaDoc document.forms - Operations for managing and retrieving forms, including filtering and sorting options.
pandadoc-cli forms - Retrieve a paginated list of forms with optional filtering and sorting options.logs - Manage logs
pandadoc-cli logs details - Returns details of the specific API log event.pandadoc-cli logs list - Get the list of all logs within the selected workspace. Optionally filter by date, page, and # of items per page.members - Operations for managing and retrieving details about workspace members.
pandadoc-cli members details - A method to retrieve a member's details by ID. User - is an account with a license in the Organization.pandadoc-cli members details-current - Returns the member details of the current user (the owner of the API key).pandadoc-cli members list - Retrieve all members details of the workspace implied by the OAuth token or API key.public - Manage public
pandadoc-cli public add-dsv-named-items - Adds one or more named items to the specified document by ID.pandadoc-cli public create-catalog-item - Create a new catalog item.pandadoc-cli public create-export-docx-task - > ⏱️ Export as DOCX is a non-blocking (asynchronous) operation > The document generation process may take some time.pandadoc-cli public create-notarization-request - Create a notarization request to connect with a notary and complete online notarizations for your signers withinpandadoc-cli public delete-catalog-item - Delete catalog item.pandadoc-cli public delete-notarization-request - Use this method to delete a notarization request. Once notarization request is deleted it cannot be restored.pandadoc-cli public details-log-v2 - Returns details of the specific API log event.pandadoc-cli public document-settings-get - Retrieves the settings for a specified document.pandadoc-cli public document-settings-update - Updates the settings for a specified document.pandadoc-cli public get-catalog-item - Catalog Item Detailspandadoc-cli public get-document-ai-metadata - Returns the AI metadata fields populated for the document.pandadoc-cli public get-document-content - Returns the document content for the specified document. Use query parameter format to select the content format.pandadoc-cli public get-document-summary - Returns a summary for the specified document. Use query parameter type to select summary granularity.pandadoc-cli public get-docx-export-task - > 📘 This endpoint returns the current state of a DOCX export task for a document.pandadoc-cli public list-document-audit-trail - Retrieves the full audit trail for a specified document.pandadoc-cli public list-logs-v2 - Get the list of all logs within the selected workspace. Optionally filter by date, page, and # of items per page.pandadoc-cli public list-notaries - Retrieve a list of notaries associated with your organization.pandadoc-cli public list-notarization-requests - Retrieve a paginated list of notarization requests for your organization.pandadoc-cli public notarization-request-details - Get details about a notarization request by its id.pandadoc-cli public search-catalog-items - This method searches for items in your [product catalog](https://support.pandadoc.pandadoc-cli public search-documents-ai - Find documents from a natural-language query. PandaDoc AI interprets the query and returns the matching documents.pandadoc-cli public template-settings-get - Retrieves the settings for a specified template. Only the language field is currently supported.pandadoc-cli public template-settings-update - Updates the settings for a specified template. Only the language field is currently supported.pandadoc-cli public update-catalog-item - Update catalog item.sms-opt-outs - Manage sms opt outs
pandadoc-cli sms-opt-outs - Retrieves a list of the most recent SMS opt-out changes for each phone numbers used in your workspace.templates - Operations for managing templates, including listing, creating, and deleting templates.
pandadoc-cli templates create - This operation allows you to create a new template by providing the necessary template details.pandadoc-cli templates create-folder - Create a new folder to store your templates.pandadoc-cli templates delete - Delete a templatepandadoc-cli templates list - Retrieves a list of templates. You can filter results by a search query, tags, or fields.pandadoc-cli templates list-folders - Get the list of folders that contain Templates in your account. > 📘 > > The root folder is not listed in the response.pandadoc-cli templates rename-folder - Rename a templates folder.pandadoc-cli templates status - The following is a complete list of all possible template statuses returned:pandadoc-cli templates update - Update a template. Currently supports updating template variables (tokens) and managing template roles.templates-upload - Manage templates upload
pandadoc-cli templates-upload - This asynchronous endpoint allows users to create a new template by uploading a file.users - Manage users
pandadoc-cli users create - Create users, and assign them roles, licenses, and workspaces. - You must be an organization admin to create users.pandadoc-cli users details - Get detailed information about a specific user by their ID, including contact information, license typepandadoc-cli users list - Get a list of all users with membership in your organization, with their contact information, license typewebhook-events - Operations related to webhook events.
pandadoc-cli webhook-events details - This operation fetches detailed information about a specific webhook event using its unique identifier.pandadoc-cli webhook-events list - This operation retrieves a paginated list of all webhook events.webhook-subscriptions - Operations for managing webhook subscriptions, including listing, retrieving details, and updating shared keys.
pandadoc-cli webhook-subscriptions create - This operation creates a new webhook subscription by specifying its details.pandadoc-cli webhook-subscriptions delete - This operation deletes a specific webhook subscription identified by its UUID.pandadoc-cli webhook-subscriptions details - Get webhook subscription by uuidpandadoc-cli webhook-subscriptions list - This operation fetches a paginated list of webhook subscriptions.pandadoc-cli webhook-subscriptions update - This operation updates the details of a webhook subscription.workspaces - Manage workspaces
pandadoc-cli workspaces create - Create a workspace in your organization. - You need to be an Org Admin to create a workspace.pandadoc-cli workspaces get-list - Get a list of all the active workspaces in the organization.When you know what you want to do but not which command does it, ask the CLI directly:
pandadoc-cli which "<capability in your own words>"
which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match - fall back to --help or use a narrower query.
pandadoc-cli sync && pandadoc-cli pipeline --agent
Refresh the store, then print the status funnel for a fast standup view.
pandadoc-cli stalled --days 10 --json --select id,name,status,date_modified
List documents sent but unsigned for 10 days, narrowed to the fields that matter.
pandadoc-cli value --status sent --agent
Sum quote totals across sent documents for a quick pipeline-dollar forecast.
pandadoc-cli engagement --json --select email,documents,completed
Rank recipients by completion rate to spot chronically slow signers.
pandadoc-cli webhook-coverage --agent
Check subscribed event types against the catalog before trusting an automation.
Authenticate with a PandaDoc API key. Set PANDADOC_API_KEY and every call sends the Authorization: API-Key header for you.
Run pandadoc-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable - JSON on stdout, errors on stderr
Filterable - --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
pandadoc-cli contacts list --agent --select id,name,status
Previewable - --dry-run shows the request without sending
Offline-friendly - sync/search commands can use the local SQLite store when available
Non-interactive - never prompts, every input is a flag
Explicit retries - use --idempotent only when an already-existing create should count as success, and --ignore-missing only when a missing delete target should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set - piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
pandadoc-cli feedback "the --since flag is inclusive but docs say exclusive"
pandadoc-cli feedback --stdin < notes.txt
pandadoc-cli feedback list --json --limit 10
Entries are stored locally at ~/.local/share/pandadoc-cli/feedback.jsonl. They are never POSTed unless PANDADOC_FEEDBACK_ENDPOINT is set AND either --send is passed or PANDADOC_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
pandadoc-cli profile save briefing --json
pandadoc-cli --profile briefing contacts list
pandadoc-cli profile list --json
pandadoc-cli profile show briefing
pandadoc-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show pandadoc-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/sales-and-crm/pandadoc/cmd/pandadoc-mcp@latest
claude mcp add pandadoc-mcp -- pandadoc-mcp
claude mcp listwhich pandadoc-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:
pandadoc-cli <command> [subcommand] [args] --agent
pandadoc-cli <command> --help.