# How to connect PandaDoc MCP to Claude

```json
{
  "title": "How to connect PandaDoc MCP to Claude",
  "toolkit": "PandaDoc MCP",
  "toolkit_slug": "pandadoc_mcp",
  "framework": "Claude Cowork",
  "framework_slug": "claude-cowork",
  "url": "https://composio.dev/toolkits/pandadoc_mcp/framework/claude-cowork",
  "markdown_url": "https://composio.dev/toolkits/pandadoc_mcp/framework/claude-cowork.md",
  "updated_at": "2026-09-24T15:33:49.836Z"
}
```

## Introduction

Claude is Anthropic's AI assistant, available on the web, in the desktop app, and on mobile. Cowork is its agent for knowledge work, and it runs on all of those surfaces too. Connected to your apps, Claude can work with your files and services to accomplish complex tasks on your behalf.
This guide walks you through the easiest and most secure way to connect your PandaDoc account to Claude via Composio Connect, enabling it to create a proposal from Sales template, send document to john@example.com for signature, list all sent PandaDoc documents and status, and more such actions on your behalf without compromising your account security.
Setup is the same on Claude Web, Desktop, and Cowork, and you only need to do it once. The connector is tied to your account, so it's available in all three.

## Also integrate PandaDoc MCP with

- [ChatGPT](https://composio.dev/toolkits/pandadoc_mcp/framework/chatgpt)
- [Hermes](https://composio.dev/toolkits/pandadoc_mcp/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/pandadoc_mcp/framework/atomic-agent)

## Connect PandaDoc MCP to Claude Cowork

### Connecting PandaDoc to Claude Web, Desktop, and Cowork
Two ways to add the Composio connector. Pick whichever you prefer.
### 1. Add with one click
Click the button. Claude opens with the Composio connector filled in. Click Add, then go to step 2.
[Add to Claude](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Composio&connectorUrl=https%3A%2F%2Fconnect.composio.dev%2Fmcp)
### Add manually
In Claude Desktop, click Customize in the left sidebar, then select Connectors and click the + icon at the top.
Click Add custom connector and paste in the Composio MCP server URL:

```bash
https://connect.composio.dev/mcp
```

## What is the PandaDoc MCP server, and what's possible with it?

The PandaDoc MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your PandaDoc account. It provides structured and secure access so your agent can perform PandaDoc operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `PANDADOC_MCP_DOCUMENTS_ARCHIVE` | Documents archive | Archive a document by ID. Uses PandaDoc delete endpoint with forever=false for reversible deletion. |
| `PANDADOC_MCP_DOCUMENTS_AUDIT_TRAIL_GET` | Documents audit trail get | Retrieve audit trail for a document. |
| `PANDADOC_MCP_DOCUMENTS_CONTENT_GET` | Documents content get | Returns the textual content of a document in plaintext or markdown format. |
| `PANDADOC_MCP_DOCUMENTS_CREATE` | Documents create | # Create document Create a new PandaDoc document. Pass a single `request` object and set its `source` to choose how the document is created: - `source: "template"` — from an existing template. Required: `template_uuid`. Also accepts `name`, `recipients`, `fields`, `tokens`, `metadata`, `tags`, `images`, `pricing_tables`, `tables`, `texts`, `folder_uuid`, `owner`, `detect_title_variables`, `content_placeholders`. - `source: "markdown"` — from markdown content. Required: `name`, `document_markdown`. Also accepts `recipients` (individual recipients only; groups are not supported), `role_fields`, `folder_uuid`. - `source: "file"` — from a downloadable PDF or DOCX file URL. Required: `name`, `url`. Also accepts `recipients`, `parse_form_fields`, `fields`, `tokens`, `metadata`, `tags`, `folder_uuid`, `owner`. The schema is polymorphic on `source`: each source accepts **only** its own parameters. Passing a parameter that belongs to another source is rejected by validation, so you never need to guess which fields are ignored. Not for editing an existing document — use `documents_update` for that. ## Asynchronous creation Document creation is asynchronous for every `source` (template, markdown, and file). A successful tool response means creation was accepted, not that the document is ready. The document typically starts in `Uploaded` and later becomes `Draft`, or `Error` if creation fails (invalid file, markdown conversion failure, validation errors, etc.). After calling this tool: 1. Poll `documents_status_get` until status is `Draft` or `Error`. 2. If `Draft`, the document is ready to edit, send, or fetch details/content. 3. If `Error`, report that creation failed — do not call details/content/edit/send on it. 4. While status is still `Uploaded`, do not assume success and do not call tools that require a ready document. ## Template Create a document populated from an existing PandaDoc template. Requires `template_uuid`. Recipients are optional — omit them to use template defaults or to add them later. If the template isn't known yet, call `templates_list` first, then `templates_details_get` to discover its roles, fields, and variables. Optionally set fields, tokens, pricing tables, recipients, and other template data. ## File Create a document from a PDF or DOCX file referenced by `url`. The URL must be directly downloadable (no auth, no HTML interstitials) — presigned S3/GCS/Azure URLs or direct CDN links work best; Google Drive and Dropbox share links do not (they return HTML, not the file). To parse fillable PDF form fields, set `parse_form_fields: true` and provide `fields` mapping **every** form field name to a recipient role — omitting any causes failure. ## Markdown Create a new document in PandaDoc from markdown when there is only text representing the document content. Document content must be generated according to the guidelines below. The response includes a `document_url` field with a direct URL to open the created document in PandaDoc. ### Markdown guidelines You can use standard CommonMark and GitHub-Flavored Markdown (tables, strikethrough, etc), plus the following custom extensions: #### Custom Syntax Extensions ##### 1. Variables Variables are placeholder values that the document creator fills in PandaDoc before sending to recipients. Prioritize variables over fields for any value that the sender controls or pre-fills, even if it may be visible to recipients. **Syntax:** `[VariableName]` or `[Variable.Name]` or `[Multi.Part.Variable]` - Can include underscores, numbers, and multiple dot-separated parts **Use variables for values controlled by the document creator:** - Document metadata: `[Effective.Date]`, `[Agreement.Number]`, `[Contract.Value]` - Company/sender information: `[Company.Name]`, `[Company.Address]` - Pre-calculated values: `[Invoice.Total]`, `[Discount.Amount]` - Recipient information already known: `[Recipient.CompanyName]`, `[Recipient.FirstName]` **Key principle:** If the sender controls the value, use a variable. ##### 2. Fields Fields are interactive form elements that recipients fill in or interact with during the signing process. Recipients see these as input boxes, checkboxes, or signature areas. **Use fields for values controlled by the recipient:** - Recipient signatures: `[[signature]]` - Recipient personal data they must enter: `[[text]]`, `[[email]]`, `[[phone]]`, `[[date]]` - Recipient choices/consents: `[[checkbox]]` - Information only the recipient knows or decides **Key principle:** If the recipient controls the value, use a field. Fields can be prefilled with default values, but are typically left empty for the recipient to fill. **Syntax:** `[[field_type attributes]]` **Field Types:** - `text` - Text input field - `email` - Email input field - `phone` - Phone number input field (**`format` is required** — see below) - `number` - Number input field - `date` - Date input field - `checkbox` - Checkbox field - `signature` - Digital signature field - `dropdown` - Dropdown selection field (**`option` is required** — see below) **Attributes (HTML-style):** - `required="true"` - Makes field required - `placeholder="text"` - Placeholder text - `checked="true"` - Pre-checked (checkbox only) - `value="timestamp"` - For date fields, use UNIX timestamp with millisecond precision (e.g., value="1718406000000"). For other fields, use plain text (e.g., value="John Doe"). - `format="US"` or `format="international"` - **Required for `phone` fields.** Must be exactly `"US"` or `"international"`. There is no default — omitting it causes a validation error. - `date_format="yyyy/MM/dd"` - Date format in ICU notation (e.g., `"dd/MM/yyyy"`, `"MM-dd-yyyy"`). Defaults to `"yyyy/MM/dd"` if omitted. - `option="Text"` - **Required for `dropdown` fields.** Repeatable — add one per option (e.g., `option="Yes" option="No"`). To assign a stable UUID to an option, use `option="uuid:Text"` format. - `id="Client_Text1"` - Specify an external ID that describes who should fill this field and what it represents (e.g., `id="Client_Signature"`, `id="Landlord_FullName"`, `id="Buyer_Email"`). Use the pattern `_` so the field can later be assigned to the correct recipient. Multiple fields MAY share the same ID (they'll be synced — when one is filled, all are filled with the same value), but they MUST have the same type and attributes. **Examples:** - `[[text placeholder="Enter name"]]` - `[[email required="true" placeholder="Email address"]]` - `[[phone format="US"]]` - `[[phone format="international"]]` - `[[number]]` - `[[date required="true" value="1718406000000"]]` - `[[date date_format="dd/MM/yyyy"]]` - `[[checkbox checked="true"]]` - `[[dropdown option="Yes" option="No"]]` - `[[dropdown option="Yes" option="No" value="Yes" placeholder="Choose..."]]` **Important:** Fields with the same ID must have the same type and attributes. For example, you cannot have `[[text id="Field1"]]` and `[[email id="Field1"]]` in the same document as well as `[[text id="Field2" placeholder="Full Legal Name" ]]` and `[[text id="Field2"]]` because they have different attributes. **Dropdown constraints:** - At least one `option` attribute is required. - Option texts must be unique within the dropdown. - If `value` is set, it must match one of the defined option texts exactly; otherwise a validation error occurs. ##### 3. Standalone Checkboxes Checkboxes use GFM syntax but can appear anywhere, not just in lists: - `[ ]` - Unchecked - `[x]` - Checked - Can be used inline, standalone, or in task lists ##### 4. Page Breaks **Syntax:** `---` (three hyphens) creates a page break. **IMPORTANT:** Page breaks should be rare and intentional. Most documents don't need page breaks. Only use `---` when content **must** be on separate pages for a specific reason: - Legal/structural requirement - Document structure demands it **Do NOT use `---`:** - Between sections (use headings: `## Section Title`) - As visual decoration (use blank lines) - Simply because there's a section transition ### Limitations (Features NOT Supported) **Do NOT include:** - Blockquotes inside lists - Images inside links inline with text (e.g., `[![image](url)](link)`) |
| `PANDADOC_MCP_DOCUMENTS_DETAILS_GET` | Documents details get | Retrieve a document's full structure by document_id: name, status, dates, version, reference number, creator, template, recipients, fields, variables, tokens, tags, pricing/grand total, and linked objects. Use to inspect a document before acting on it. Does not return extracted metadata — use `documents_metadata_get` for that; for the overall status only, use `documents_status_get`. |
| `PANDADOC_MCP_DOCUMENTS_FIELDS_ASSIGN` | Documents fields assign | Assign, reassign, or unassign document fields to recipients. The document must be in draft status. Provide a list of field-to-recipient mappings. Set recipient_id to null to unassign a field. Use get document details to obtain field UUIDs (fields[].uuid) and recipient IDs (recipients[].id). Once a field is assigned, that recipient becomes a signer for it. If it's unclear which recipient a field belongs to, ask the user before assigning. |
| `PANDADOC_MCP_DOCUMENTS_LIST` | Documents list | Paginated document listing with structured filters: status, folder, tag, free-text search, sorting, and created/completed date ranges. Examples: 'list 50 Draft docs' · 'documents in folder tagged onboarding' · 'page 3 sorted by date_modified' For natural-language queries, prefer ``ai_search`` if available. |
| `PANDADOC_MCP_DOCUMENTS_METADATA_BATCH_GET` | Documents metadata batch get | Returns metadata for a list of 1-40 documents in a single request — the batch variant of `documents_metadata_get`. Prefer this tool over calling `documents_metadata_get` in a loop. The response is `{count, results[]}`; each entry is keyed by `document_id` and discriminated by `status` (`ok`, `extraction_pending`, `extraction_failed`, `extraction_not_started`, `not_found`, `access_denied`, `internal_error`). A failure for one document does not fail the whole request. |
| `PANDADOC_MCP_DOCUMENTS_METADATA_GET` | Documents metadata get | Returns the metadata fields populated for the document. Each result combines the field definition (`id`, `key`, `field_type`, `settings`) with the extracted or manually-set value (`value`, `acceptance_status`). When extraction is not done, returns a structured envelope `{code, description, retry_after?}` where `code` is one of: `extraction_pending` (in progress — retry after `retry_after` seconds), `not_started` (typically the document is not yet completed — retry once it is), or `failed` (do not retry; contact support). |
| `PANDADOC_MCP_DOCUMENTS_SEARCH` | Documents search | Full-text search with status/date filters. Examples: 'NDA in completed docs' · 'modified 2026-01-01–2026-03-31' · 'sent docs Q1 2026' For natural-language queries, prefer ``ai_search`` if available. If the user refers to a document by name and an ID is needed for a downstream operation, use this tool to resolve the name to an ID first. Do not ask the user for a document ID before attempting this lookup. |
| `PANDADOC_MCP_DOCUMENTS_SEND` | Documents send | Send a document to its recipients. The document must be in Draft status. After sending, the status changes to Sent and recipients receive a notification. Use skip_unfilled_variables to send even when some variables are empty. Always confirm with the user before sending. |
| `PANDADOC_MCP_DOCUMENTS_STATUS_CHANGE` | Documents status change | Manually change a document's status. Only these transitions are allowed: Completed, Paid, Expired, or Declined. Status changes are restricted based on the current document status. Other statuses (such as Sent, Viewed, Approved) are set automatically by the system and cannot be set with this tool. |
| `PANDADOC_MCP_DOCUMENTS_STATUS_GET` | Documents status get | Retrieve the overall document status (e.g. Draft, Sent, Completed, Expired). Some statuses are set automatically by the system: Sent (when the document is sent), Viewed (when a recipient opens it), Approved/Rejected (via approval workflows). For per-recipient signing progress use documents_details_get. Right after creating a document it may still be processing — if so, wait briefly and check again before acting. |
| `PANDADOC_MCP_DOCUMENTS_SUMMARY_GET` | Documents summary get | Returns a summary for the specified document. Supports three granularity levels: detailed, short, or headline. If not ready, returns `{retry_after: N}` where N is seconds to wait before retrying. |
| `PANDADOC_MCP_DOCUMENTS_UPDATE` | Documents update | Update a document. Document must be in Draft status. You can update text blocks, fields, and other document properties. After creating a new document, wait for it to reach Draft status before updating. To modify individual recipients, use `recipients_*` tools — the `recipients` param here replaces the entire list. |
| `PANDADOC_MCP_RECIPIENTS_ADD_CC` | Recipients add cc | Add a CC (non-signing) recipient to a document. Requires an existing contact ID. Cannot add to Expired or Declined documents. Adding a contact that is already a CC recipient is silently ignored. This tool only adds CC recipients; signers must be set via `documents_create` or `documents_update`. |
| `PANDADOC_MCP_RECIPIENTS_DELETE` | Recipients delete | Remove a recipient from a document. Signers can only be removed in Draft status. CC recipients can be removed in any status except Expired/Declined. |
| `PANDADOC_MCP_RECIPIENTS_EDIT` | Recipients edit | Update one recipient's details (email, name, phone, company, address, redirect) in place. Signers can be edited in Draft, Waiting Approval, Approved, Rejected, Sent, or Viewed status. A signer's email cannot be changed after they have signed. CC recipients can be edited in any status except Expired or Declined. Get recipient_id from document details first. Cannot use emails of existing contacts — use `recipients_reassign` for that. |
| `PANDADOC_MCP_RECIPIENTS_REASSIGN` | Recipients reassign | Replace a signer with another contact. Transfers all assigned fields to the new signer. The original signer is removed. Cannot reassign already-signed recipients. To just fix a signer's email/name, use `recipients_edit`. |
| `PANDADOC_MCP_TEMPLATES_CREATE` | Templates create | Create a new template from a PDF URL. Provide a secure (HTTPS) publicly accessible URL to the PDF document. |
| `PANDADOC_MCP_TEMPLATES_DETAILS_GET` | Templates details get | Inspect a template's schema — roles, fields, variables, pricing tables, content placeholders, tags, metadata — usually to prepare a `documents_create` call (e.g. 'what roles does the Sales Contract template expect?'). Typical flow: `templates_list` -> this tool -> `documents_create`. Not for listing templates or fetching a regular document. |
| `PANDADOC_MCP_TEMPLATES_LIST` | Templates list | Discover, browse, or pick a template by name, tag, or folder (e.g. 'what templates do we have?', 'find the NDA template'). If the user refers to a template by name and an ID is needed for a downstream operation, use this tool to resolve the name to an ID first. Do not ask the user for a template ID before attempting this lookup. Returns a paginated list of templates. Pass a returned `id` as `templates_details_get`'s `template_id` to inspect roles/fields/variables, or as `documents_create`'s `template_uuid` to generate a document. Not for searching documents (use `documents_list`) or creating one. |

## Supported Triggers

None listed.

## Troubleshooting

### 1. Why does Claude not use the Composio connector for PandaDoc?

The connector can show as connected, but Claude must use it in each PandaDoc conversation.
- Click + at the lower left of the chat, or type /.
- Hover Connectors.
- Turn on Composio.
- Ask Claude to connect to PandaDoc again.

### 2. Why does Claude show an MCP server error before PandaDoc connects?

Claude can show Couldn't reach the MCP server or Authorization with the MCP server failed when you add the connector for PandaDoc.
- Check that the connector URL is https://connect.composio.dev/mcp.
- Connectors run from Anthropic's cloud, so your device network is usually not the problem.
- Add the connector again from Customize > Connectors, then ask Claude to connect PandaDoc.
- If it fails again, send the error and the ofid_ reference id to support@composio.dev.

### 3. Why does the PandaDoc authorization link not work?

The Composio connector is one server. Your PandaDoc account connects separately when Claude asks for it.
- If the browser does not open, or the link expires, ask Claude to retry the PandaDoc connection.
- Composio creates a fresh PandaDoc authorization link.
- Open that link in your browser and finish the PandaDoc sign-in.

### 4. Why do PandaDoc actions fail after they worked before?

The PandaDoc connection can expire or lose permission.
- Ask Claude to inspect the PandaDoc connection.
- If the connection is unhealthy, disconnect it when Claude prompts you.
- Reconnect the PandaDoc account and retry the action.
- If Claude shows a permission prompt, approve it before Claude changes data in PandaDoc.
- If the action still fails with a permission error, check that the connected account has that permission in PandaDoc itself.

### 5. How do I switch to a different PandaDoc account?

Claude can manage the PandaDoc connection for you.
- Ask Claude to disconnect or delete the current PandaDoc account.
- Ask Claude to connect PandaDoc again.
- Open the new Composio authorization link for PandaDoc.
- Sign in with the other PandaDoc account in the browser.
- After the account connects, ask Claude to retry the PandaDoc task.

### 6. Why is my PandaDoc connection missing in Claude Desktop or on a Team plan?

The connector belongs to your Claude account, so your PandaDoc connection works in Claude Web, Desktop, and Cowork.
- In Claude Desktop, open Customize > Connectors.
- Next to Composio, click ⋮ and click Clear cache.
- If PandaDoc tools still do not appear, click ⋮, disconnect, remove the connector, and add it again.
- On Team or Enterprise, an Owner or Primary Owner must enable the connector before you can connect PandaDoc.

## Creating MCP Server - Stand-alone vs Composio SDK

The PandaDoc MCP server connects Claude Web, Desktop, and Cowork to your PandaDoc account through Composio. Once connected, Claude can use the available PandaDoc tools and triggers to complete tasks on your behalf.

## Complete Code

None listed.

## How to build PandaDoc MCP Agent with another framework

- [ChatGPT](https://composio.dev/toolkits/pandadoc_mcp/framework/chatgpt)
- [Hermes](https://composio.dev/toolkits/pandadoc_mcp/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/pandadoc_mcp/framework/atomic-agent)

## Related Toolkits

- [Google Drive](https://composio.dev/toolkits/googledrive) - Google Drive is a cloud storage platform for uploading, sharing, and collaborating on files. It's perfect for keeping your documents accessible and organized across devices.
- [Google Docs](https://composio.dev/toolkits/googledocs) - Google Docs is a cloud-based word processor that enables document creation and real-time collaboration. Its seamless sharing and version history make team editing and content management a breeze.
- [Google Super](https://composio.dev/toolkits/googlesuper) - Google Super is an all-in-one suite combining Gmail, Drive, Calendar, Sheets, Analytics, and more. It gives you a unified platform to manage your digital life, boosting productivity and organization.
- [ActiveMerge](https://composio.dev/toolkits/active_merge) - ActiveMerge is a document automation platform for generating documents, images, merged files, and e-signature workflows. It helps teams turn templates and stored files into finished, shareable documents faster.
- [Affinda](https://composio.dev/toolkits/affinda) - Affinda is an AI-powered document processing platform that automates data extraction from resumes, invoices, and more. It streamlines document-heavy workflows by turning files into structured, actionable data.
- [Agility cms](https://composio.dev/toolkits/agility_cms) - Agility CMS is a headless content management system for building and managing digital experiences across platforms. It lets teams update content quickly and deliver omnichannel experiences with ease.
- [Airparser](https://composio.dev/toolkits/airparser) - Airparser is an AI-powered parser for extracting structured data from emails, documents, PDFs, and files. It turns messy inbound content into clean fields your apps and workflows can use.
- [Algodocs](https://composio.dev/toolkits/algodocs) - Algodocs is an AI-powered platform that automates data extraction from business documents. It delivers fast, secure, and accurate processing without templates or manual training.
- [Api2pdf](https://composio.dev/toolkits/api2pdf) - Api2Pdf is a REST API for generating PDFs from HTML, URLs, and documents using powerful engines like wkhtmltopdf and Headless Chrome. It streamlines document conversion and automation for developers and businesses.
- [Archive.org](https://composio.dev/toolkits/archive_org) - Archive.org is the Internet Archive's digital library of websites, books, audio, video, and images. Use it to preserve, explore, and access historical web captures and public-domain media.
- [Aryn](https://composio.dev/toolkits/aryn) - Aryn is an AI-powered platform for parsing, extracting, and analyzing data from unstructured documents. Use it to automate document processing and unlock actionable insights from your files.
- [Boldsign](https://composio.dev/toolkits/boldsign) - Boldsign is a digital eSignature platform for sending, signing, and tracking documents online. Organizations use it to automate agreements and manage legally binding workflows efficiently.
- [Boloforms](https://composio.dev/toolkits/boloforms) - BoloForms is an eSignature platform built for small businesses, offering unlimited signatures, templates, and forms. It simplifies digital document signing and team collaboration at a predictable, fixed price.
- [Box](https://composio.dev/toolkits/box) - Box is a cloud content management and file sharing platform for businesses. It helps teams securely store, organize, and collaborate on files from anywhere.
- [Box MCP](https://composio.dev/toolkits/box_mcp) - Box MCP is Box's hosted MCP server that exposes enterprise files, folders, and metadata. It provides secure, centralized access to corporate content for search and management.
- [Carbone](https://composio.dev/toolkits/carbone) - Carbone is a blazing-fast report generator that turns JSON data into PDFs, Word docs, spreadsheets, and more using flexible templates. It lets you automate document creation at scale with minimal code.
- [Castingwords](https://composio.dev/toolkits/castingwords) - CastingWords is a transcription service specializing in human-powered, accurate transcripts via a simple API. Get seamless audio-to-text conversion for interviews, meetings, podcasts, and more.
- [CertSeal](https://composio.dev/toolkits/cert_seal) - CertSeal is an API platform for issuing and managing verifiable digital certificates. Use it to automate trusted certificate workflows for recipients, batches, designs, and webhooks.
- [Cloudconvert](https://composio.dev/toolkits/cloudconvert) - CloudConvert is a powerful file conversion service supporting over 200 file formats. It streamlines converting, compressing, and managing documents, media, and more, all in one place.
- [Cloudlayer](https://composio.dev/toolkits/cloudlayer) - Cloudlayer is a document and asset generation service for creating PDFs and images via API or SDKs. It lets you automate high-quality doc creation, saving dev time and reducing manual work.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and PandaDoc MCP?

With a standalone PandaDoc MCP server, the agents and LLMs can only access a fixed set of PandaDoc tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from PandaDoc and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Claude Cowork?

Yes, you can. Claude Cowork fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right PandaDoc tools.

### Can I manage the permissions and scopes for PandaDoc while using Tool Router?

Yes, absolutely. You can configure which PandaDoc scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your PandaDoc data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
