The Pandadoc MCP connector routes your AI agent's tool calls to Pandadoc's own MCP server through Scalekit. Each user signs in to Pandadoc once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 22 tools.
- Tools
- 22
- What they doRead · write · destructive
- 11 · 8 · 311 read8 write3 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Create documents: build a document from a PandaDoc template, from markdown content, or from a PDF/DOCX file URL
- Send for signature: send a draft to its recipients with a custom subject and message, control email notifications, and set forwarding and approval options
- Manage recipients: add CC recipients, edit a recipient’s details, reassign a signer to another contact, or remove a recipient
- Track status and history: check document status, retrieve the full audit trail, and manually mark a document Completed, Paid, Expired, or Declined
- Find and read documents: list with status, folder, tag, sorting and date-range filters, full-text search, and pull content, details, summaries, or metadata (single or batched across up to 40 documents)
- Work with templates: list templates, inspect a template’s roles, fields, tokens and pricing tables, or create a new template from a PDF URL
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Pandadoc MCP connection
In AgentKit > Connections, create a Pandadoc MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Pandadoc MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'pandadocmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Pandadoc MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'pandadocmcp_documents_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "pandadocmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Pandadoc MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="pandadocmcp_documents_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolpandadocmcp_documents_audit_trail_getRetrieve the full audit trail for a document, showing all events including views, signatures, and status changes.Read-onlyDocuments Audit Trail Get
Retrieve the full audit trail for a document, showing all events including views, signatures, and status changes.
Inputs
document_idstringrequired- Document ID
pandadocmcp_documents_content_getGet the content of a document in HTML or PDF format by document ID.Read-onlyDocuments Content Get
Get the content of a document in HTML or PDF format by document ID.
Inputs
content_formatstringrequired- Content format to return. Must be one of: 'plaintext' or 'markdown'.one of
plaintextmarkdown document_idstringrequired- Document ID
pandadocmcp_documents_details_getRetrieve full details for a document including metadata, recipients, fields, and status.Read-onlyDocuments Details Get
Retrieve full details for a document including metadata, recipients, fields, and status.
Inputs
document_idstringrequired- Document ID
pandadocmcp_documents_listList documents with filters for status, folder, tag, free-text search, sorting, and created/completed date ranges.Read-onlyDocuments List
List documents with filters for status, folder, tag, free-text search, sorting, and created/completed date ranges. Returns paginated results.
Inputs
completed_fromstring- Only documents completed on or after this ISO-8601 datetime.
completed_tostring- Only documents completed before this ISO-8601 datetime.
countstring- Limits the size of the response. Default is 50 documents, maximum is 100 documents.
created_fromstring- Only documents created on or after this ISO-8601 datetime, e.g. ``2026-03-01T00:00:00Z``.
created_tostring- Only documents created before this ISO-8601 datetime, e.g. ``2026-03-31T23:59:59Z``.
folder_uuidstring- UUID of the folder to list from (folder_uuid, NOT folder_id).
pagestring- Paginates the search result. Increase value to get the next page of results.
qstring- Filters documents by name or reference number (stored on the template level).
sort_bystring- Field to sort documents by. Defaults to date_status_changed when omitted.
sort_orderstring- Sort direction, ascending when omitted. Keep consistent across pages of the same query.
statusstring- Filters documents by status. Valid values: Draft, Sent, Completed, Uploaded, Error, Viewed, Waiting for Approval, Approved, Rejected, Waiting for Payment, Paid, Expired, Declined, External Review, Scheduled.
tagstring- Filters documents by tag.
pandadocmcp_documents_metadata_batch_getRetrieve metadata for 1-40 documents in one request.Read-onlyDocuments Metadata Batch Get
Retrieve metadata for 1-40 documents in one request. Preferred over calling Get Document Metadata in a loop; a failure for one document does not fail the batch.
Inputs
document_idsarrayrequired- 1-40 document IDs to fetch metadata for. Duplicates are rejected by the server.
field_keysstring- Optional case-sensitive filter on metadata field `key` (the human-readable name returned as `results[].key` by the single-document endpoint, e.g. `Contract value`). Unknown keys are silently ignored. When omitted, every populated field is returned per document.
pandadocmcp_documents_metadata_getGet AI-extracted metadata fields from a document, combining document and content data into structured key-value pairs.Read-onlyDocuments Metadata Get
Get AI-extracted metadata fields from a document, combining document and content data into structured key-value pairs.
Inputs
document_idstringrequired- Document ID
limitstring- Maximum number of fields to return in one response. Omit for API default (100). Max 100.
offsetstring- Number of fields to skip before starting to collect the result set. For predictable paging, use multiples of `limit`.
pandadocmcp_documents_searchFull-text search across documents with optional filters for status, date range, and pagination.Read-onlyDocuments Search
Full-text search across documents with optional filters for status, date range, and pagination.
Inputs
querystringrequired- Full-text search string (matches document content and metadata).
countstring- Page size: public API ``count`` query param. Omit for default (30). Max 100.
date_filter_columnstring- Which document timestamp the date window applies to. If you set any date filter, set **all three** of ``date_filter_column``, ``from_date``, and ``to_date``. Allowed values: ``date_created``, ``date_expiration``, ``last_modified``, ``signature_date``, ``effective_date``.
from_datestring- Inclusive window start (ISO-8601), e.g. ``2026-03-01T00:00:00Z``. Use together with ``date_filter_column`` and ``to_date``.
pagestring- Page number (1-based). Omit to use API default (1).
statusstring- Restrict hits to documents with these statuses (omit to ignore status). Valid values: Draft, Sent, Completed, Uploaded, Error, Viewed, Waiting for Approval, Approved, Rejected, Waiting for Payment, Paid, Expired, Declined, External Review, Scheduled. Example: ["Sent", "Completed"].
to_datestring- Inclusive window end (ISO-8601), e.g. ``2026-03-31T23:59:59Z``. Use together with ``date_filter_column`` and ``from_date``.
pandadocmcp_documents_status_getGet the current status of a document by ID.Read-onlyDocuments Status Get
Get the current status of a document by ID.
Inputs
document_idstringrequired- Document ID
pandadocmcp_documents_summary_getGet an AI-generated or standard summary for a document by ID.Read-onlyDocuments Summary Get
Get an AI-generated or standard summary for a document by ID.
Inputs
document_idstringrequired- Document ID
summary_typestringrequired- Summary granularity to return. Must be one of: 'detailed', 'short', or 'headline'.one of
detailedshortheadline
pandadocmcp_templates_details_getGet full details for a template including roles, fields, tokens, and pricing tables.Read-onlyTemplates Details Get
Get full details for a template including roles, fields, tokens, and pricing tables.
Inputs
template_idstringrequired- Template ID
pandadocmcp_templates_listList templates with optional filters for search, tags, folder, and shared/deleted status.Read-onlyTemplates List
List templates with optional filters for search, tags, folder, and shared/deleted status.
Inputs
countstring- Specify how many templates to return.
deletedstring- Returns only the deleted templates.
fieldsstring- A comma-separated list of additional fields to include in the response.
folder_uuidstring- UUID of the folder where the templates are stored.
pagestring- Specify which page of the dataset to return.
qstring- Search query. Filter by template name.
sharedstring- Returns only the shared templates.
tagstring- Search tag. Filter by template tag.
template_idstring- Specify template ID.
pandadocmcp_documents_createCreate a document from a template, markdown content, or a PDF/DOCX file URL.WriteDocuments Create
Create a document from a template, markdown content, or a PDF/DOCX file URL. Pass a single 'request' object whose 'source' selects the creation mode; each source accepts only its own parameters. Creation is asynchronous - poll Get Document Status until the document is Draft or Error. IMPORTANT for pricing_tables: row/column field names (e.g. 'name', 'price', 'qty') are defined per-template, not fixed globally. Before populating pricing_tables, call templates_details_get on the target template_uuid and read the real column names from its pricing.tables[].items[] / merged_data - do not guess casing or names from examples.
Inputs
requeststringrequired- Document to create. Set `source` to `template` (create from a PandaDoc template), `markdown` (create from markdown content), or `file` (create from a PDF/DOCX file URL). Each source accepts only its own parameters.
pandadocmcp_documents_fields_assignAssign, reassign, or unassign document fields to recipients.WriteDocuments Fields Assign
Assign, reassign, or unassign document fields to recipients. Document must be in draft status.
- Idempotent
Inputs
assignmentsarrayrequired- List of field-to-recipient assignments. Each item maps a field UUID to a recipient UUID (or null to unassign).
document_idstringrequired- Document ID
pandadocmcp_documents_sendSend a draft document to recipients for review and signature with optional message, subject, and CC settings.WriteDocuments Send
Send a draft document to recipients for review and signature with optional message, subject, and CC settings.
Inputs
document_idstringrequired- Document ID
forwarding_settingsstring- Settings for document and signature forwarding. Controls whether recipients can forward the document or reassign their fields to another person.
messagestring- A message that will be sent by email with a link to the document to sign.
reply_tostring- Email address used as reply-to for the document. Must be enabled for the account by support.
selected_approversstring- Configuration for selecting approvers from approval workflow groups. Copy 'steps' from the 'approval_execution' section of Document Details and set 'is_selected' to true for the desired approver.
senderstring- Set a sender of a document as an email or membership_id.
silentstring- If true, disables email notifications for document recipients and the sender. Also disables scheduled reminders. Does not affect 'Approve document' email notification.
skip_unfilled_variablesboolean- Must be false by default. Only set to true when the user has explicitly chosen to send with empty variables.default
false subjectstring- Value that will be used as the email subject.
pandadocmcp_documents_updateUpdate a draft document — name, recipients, fields, tokens, images, pricing tables, and metadata.WriteDocuments Update
Update a draft document — name, recipients, fields, tokens, images, pricing tables, and metadata. Document must be in draft status.
Inputs
document_idstringrequired- Document ID
fieldsstring- Document fields as key-value pairs
imagesstring- Images
metadatastring- Document metadata as key-value pairs
namestring- Document name
pricing_tablesstring- Pricing tables to populate by name
recipientsstring- List of recipients. Each should have email, first_name, last_name, etc.
tablesstring- Tables to populate by name
tagsstring- Document tags
textsstring- List of text blocks to update. Each item should have 'name' and 'data' fields
tokensstring- Document tokens (variables). Each should have name and value.
urlstring- Document URL
pandadocmcp_recipients_add_ccAdd a CC (non-signing) recipient to a document using an existing contact ID.WriteRecipients Add Cc
Add a CC (non-signing) recipient to a document using an existing contact ID. Cannot add to expired or declined documents.
- Idempotent
Inputs
contact_idstringrequired- Contact UUID to add as CC.
document_idstringrequired- Document UUID
kindstring- 'contact' or 'contact_group'.one of
contactcontact_groupdefaultcontact
pandadocmcp_recipients_editUpdate a recipient's details such as email, name, phone, company, address, or redirect.WriteRecipients Edit
Update a recipient's details such as email, name, phone, company, address, or redirect. A signer's email cannot be changed after they have signed.
- Idempotent
Inputs
document_idstringrequired- Document UUID
recipient_idstringrequired- Recipient UUID from document details.
citystring- City.
companystring- Company name.
countrystring- Country.
delivery_methodsstring- Delivery methods (email/sms).
emailstring- New email address.
first_namestring- First name.
job_titlestring- Job title.
last_namestring- Last name.
phonestring- Phone number.
postal_codestring- Postal / ZIP code.
redirectstring- Post-signing redirect (is_enabled, url).
statestring- State or region.
street_addressstring- Street address.
pandadocmcp_recipients_reassignReplace a signer with another contact, transferring all assigned fields to the new signer.WriteRecipients Reassign
Replace a signer with another contact, transferring all assigned fields to the new signer. Cannot reassign recipients who have already signed.
Inputs
document_idstringrequired- Document UUID
new_contact_idstringrequired- Contact UUID of the new signer.
recipient_idstringrequired- Recipient UUID of the signer to replace.
kindstring- 'contact' or 'contact_group'.one of
contactcontact_groupdefaultcontact
pandadocmcp_templates_createCreate a new template from a publicly accessible PDF URL with optional name, folder, tokens, and owner.WriteTemplates Create
Create a new template from a publicly accessible PDF URL with optional name, folder, tokens, and owner.
Inputs
urlstringrequired- Secure (HTTPS) and publicly accessible URL to the PDF document
folder_uuidstring- Folder ID where the created template should be stored
metadatastring- Arbitrary key-value data to associate with the template
namestring- The name of the template
owner_emailstring- Owner email for the template
owner_membership_idstring- Owner membership_id for the template
tokensstring- CUSTOM variables as list of {name, value} pairs
pandadocmcp_documents_archiveArchive a document by ID to remove it from active lists without permanently deleting it.DestructiveDocuments Archive
Archive a document by ID to remove it from active lists without permanently deleting it.
- Idempotent
Inputs
document_idstringrequired- Document ID to archive
pandadocmcp_documents_status_changeManually change a document's status.DestructiveDocuments Status Change
Manually change a document's status. Only Completed, Paid, Expired, and Declined are settable; other statuses are managed automatically by PandaDoc.
Inputs
document_idstringrequired- Document ID
statusstringrequired- Target status. Valid values: Completed, Paid, Expired, Declined.
notestring- Optional note for the status change
notify_recipientsboolean- Whether to notify recipients of the status changedefault
false
pandadocmcp_recipients_deleteRemove a recipient from a document.DestructiveRecipients Delete
Remove a recipient from a document. Signers can only be removed while the document is in draft; CC recipients can be removed in any status except expired or declined.
- Idempotent
Inputs
document_idstringrequired- Document UUID
recipient_idstringrequired- Recipient UUID to remove.
No tools match.