{
 "slug": "pandadoc",
 "name": "PandaDoc",
 "url": "https://pandadoc.com",
 "domain": "pandadoc.com",
 "category": "e-signature",
 "category_name": "E-signature",
 "tested_at": "2026-10-15",
 "run": "20261015T062049Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T025315Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261015T062049Z",
   "date": "2026-10-15",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 4,
    "signed": true,
    "inbox": [
     "matfy.com"
    ],
    "robots": "skip"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 2,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "portal"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server; a docs page for each core task",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "portal",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": "0/9",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.3"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 4,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "9f4b18b8d5ad",
  "kb_version": "3+overlay-1353601952",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 4,
  "signed": true,
  "inbox": [
   "matfy.com"
  ],
  "robots": "skip"
 },
 "same_level_drives": 2,
 "drives": 2,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Google reCAPTCHA (invisible, score)",
  "visible": false,
  "type": "network",
  "human": null,
  "how": "Check the Web Bot Auth signature on the sign-up request and skip reCAPTCHA (or lower the score threshold) for signed agents; or offer a documented sign-up API with email verification.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "edge"
  },
  "signed": {
   "state": "check",
   "kind": "signup",
   "at": "2026-10-15"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "developers.pandadoc.com: llms.txt, markdown pages (.md and Accept: text/markdown), OpenAPI 3.0.3 (94 paths, 128 operations), agent-skills index, docs MCP; all fetched headless."
  },
  "signup": {
   "status": "blocked",
   "cause": "check",
   "note": "The free 14-day trial form (no card) at signup.pandadoc.com took both steps, then the final POST /api/flow/{id}/signup/ answered 400 \"Captcha is not valid\": an invisible reCAPTCHA refused our agent's browser with no challenge shown, so there is nothing a human could solve."
  },
  "verify": {
   "status": "",
   "cause": "check",
   "note": "No account was created, so no verification mail came to the agent's inbox.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "cause": "check",
   "note": "API keys come from the Dev Center in the web app (Production keys need sales approval); MCP OAuth (DCR worked headless) ends at the PandaDoc login. Both need the account the captcha refused.",
   "reached": false
  },
  "first_call": {
   "status": "",
   "cause": "check",
   "route": "account",
   "note": "No key or token: every API operation and the product MCP need an account.",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: no account.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P2",
   "rails": [
    "card checkout in the app (Settings > Billing / Payment details: card or PayPal)"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": true,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "route": "portal",
   "checkout": {
    "reached": "no",
    "processor": "none",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "",
    "currency": "",
    "period": "month",
    "plan": "",
    "last_button": ""
   },
   "person": null,
   "ours": "account",
   "note": "No 402, x402 or MPP anywhere; we paid nothing. No billing API in the OpenAPI. Support docs: plans change in Settings > Billing > Manage plan, paid by card or PayPal. The 14-day trial needs no card. The checkout could not be walked: no account, and the public pricing page answers our agent's browser with a Vercel Security Checkpoint block (Code 21). is graded from the docs, not seen.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "Nothing to cancel: no account and no plan were started. Support docs: cancel in Settings > Billing after \"Before you cancel, please contact us first\" and a cancellation form.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created (sign-up refused). Support docs: \"If you'd like to delete your account, please reach out to our Support team\" (by mail only). The sign-up flow record bAEozEjxQWvqeHz5YDRKuX with our test email stays on PandaDoc's side.",
   "account": false,
   "reached": false
  }
 },
 "routes": [
  {
   "route": "email_password",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "challenge",
    "owner": "product"
   },
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 12
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "challenge",
    "owner": "product"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 2
  }
 ],
 "checkout": {
  "reached": "no",
  "processor": "none",
  "captcha": "none",
  "three_ds": "not_seen",
  "phone_field": "none",
  "rail_offer": "none",
  "period": "month",
  "card_form": false
 },
 "docs": {
  "at": "2026-10-15",
  "read": 242,
  "listed": 246,
  "sampled": false,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "good",
  "freshness": "fresh",
  "newest": "2026-10-02",
  "core_pages": "9 of 9",
  "capabilities": "covered"
 },
 "claims": null,
 "pay_options": {
  "checked": "2026-10-15",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": false,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": true
 },
 "surface_notes": {
  "api": "REST, 94 paths / 128 operations, API-Key or OAuth2",
  "openapi": "linked from /.well-known/api-catalog",
  "mcp": "official remote MCP (OAuth, DCR); docs-only MCP keyless"
 },
 "can_do": [
  "Read the full API docs, OpenAPI and llms.txt as markdown, headless",
  "Query the keyless docs MCP (the 28 Jul 2026 spec) about the API",
  "Register an OAuth client for the PandaDoc MCP by DCR, headless"
 ],
 "cannot_do": [
  {
   "what": "Create an account",
   "why": "Invisible reCAPTCHA on the final sign-up call answers \"Captcha is not valid\" to our agent's browser"
  },
  {
   "what": "Log in",
   "why": "Imperva answers the login POST with a bot page"
  },
  {
   "what": "Any document, template, signing or quote work (all 9 core capabilities)",
   "why": "Every API and MCP call needs an account and key/token"
  },
  {
   "what": "See pricing or walk the checkout",
   "why": "Vercel Security Checkpoint blocks www.pandadoc.com for our agent; no account for Settings > Billing"
  }
 ],
 "blockers": [
  "Invisible reCAPTCHA on sign-up refuses signed agents (400 Captcha is not valid)",
  "Imperva bot page on the login POST",
  "Vercel Security Checkpoint on www.pandadoc.com"
 ],
 "tips_for_owner": [
  "Let verified agents through the sign-up captcha",
  "Let signed agents through login bot protection",
  "Offer an API or MCP sign-up for sandbox",
  "Add CIMD to the MCP authorization server",
  "Let signed agents read the pricing page",
  "Offer account deletion in the app or API"
 ],
 "tips_for_agents": [
  "Docs are agent-friendly: llms.txt, .md pages, Accept: text/markdown, OpenAPI at /openapi/pandadoc-public-api.json and a keyless docs MCP at developers.pandadoc.com/mcp",
  "With an account made by a person, the product MCP is https://mcp.pandadoc.com/v1/mcp (EU: mcp.pandadoc.eu) with OAuth by DCR; the API uses Authorization: API-Key <key>",
  "The sign-up SPA loses its step if the page reloads: do it in one session"
 ],
 "selfhost": null,
 "summary": "PandaDoc's developer docs are among the most agent-ready we have seen (llms.txt, markdown pages, OpenAPI, a keyless docs MCP and an official OAuth MCP server), but an agent cannot get in: the free trial sign-up passes both form steps and then its invisible reCAPTCHA answers \"Captcha is not valid\" to our agent's browser. With no account there is no key or MCP session, so none of the 9 core capabilities could be tried.",
 "wall": "Invisible reCAPTCHA refuses sign-up",
 "plan_scope": "",
 "robots_stop": null,
 "robots": {
  "rule": "star",
  "step": null,
  "seen": "2026-10-15",
  "held": false
 },
 "plain": {
  "summary": "PandaDoc is a tool for creating, sending and e-signing documents and sales quotes. Its developer docs are unusually easy for an AI agent to read, but the agent could not actually sign up: an invisible security check on the sign-up form rejected it with no visible puzzle to solve. Without an account, none of the document, signing or quoting features could be tried.",
  "can_do": [
   "Read all the developer documentation, guides and API reference without a human",
   "Ask a documentation chatbot questions about the API",
   "Set up the technical handshake for a connection to PandaDoc's AI assistant (short of actually logging in)"
  ],
  "cannot_do": [
   {
    "what": "Create an account",
    "why": "An invisible security check silently rejects the sign-up form"
   },
   {
    "what": "Log in",
    "why": "A separate security system blocks the login page"
   },
   {
    "what": "Create, send, sign, or track any document or quote",
    "why": "All of this needs an account, which could not be created"
   },
   {
    "what": "See pricing or complete a purchase",
    "why": "The pricing page is also blocked by a security check, and there is no account to reach billing"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Document creation",
   "capability": "Create a document from a template",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents",
    "mcp": "create document from template (prompt library)",
    "cli": null,
    "ui": "Documents > New Document > From Template"
   },
   "check": "GET /public/v1/documents/{id} returns status document.draft with the template's content populated",
   "source": "https://developers.pandadoc.com/reference/create-document; https://developers.pandadoc.com/docs/create-document-from-template"
  },
  {
   "id": "cap-02",
   "group": "Document creation",
   "capability": "Create a document from an uploaded PDF/DocX/RTF",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/create",
    "mcp": "upload a PDF as a new template/document",
    "cli": null,
    "ui": "Documents > New Document > Upload"
   },
   "check": "GET /public/v1/documents/{id} shows document.draft and source file reflected",
   "source": "https://developers.pandadoc.com/reference/create-document-from-upload; https://developers.pandadoc.com/docs/create-document-from-file"
  },
  {
   "id": "cap-03",
   "group": "eSignature",
   "capability": "Send a document to recipients for signature",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/send",
    "mcp": "'Send <document_name>'",
    "cli": null,
    "ui": "Document editor > Send"
   },
   "check": "GET /public/v1/documents/{id} status becomes document.sent",
   "source": "https://developers.pandadoc.com/reference/send-document; https://www.pandadoc.com/electronic-signature-software/"
  },
  {
   "id": "cap-04",
   "group": "eSignature",
   "capability": "Sign a document (recipient completes fields and e-signs)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/session (embedded signing)",
    "mcp": null,
    "cli": null,
    "ui": "Signing link / embedded signing session"
   },
   "check": "GET /public/v1/documents/{id} status transitions to document.completed once all recipients sign",
   "source": "https://developers.pandadoc.com/reference/create-document-session; https://developers.pandadoc.com/docs/embedded-signing; https://www.pandadoc.com/electronic-signature-software/"
  },
  {
   "id": "cap-05",
   "group": "Document editing",
   "capability": "Build/edit document content (pricing tables, text blocks, tables, images, fields) in the drag-and-drop editor",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PATCH /public/v1/documents/{id} and content-block endpoints",
    "mcp": "update a text block, populate pricing table",
    "cli": null,
    "ui": "Document/Template editor"
   },
   "check": "GET /public/v1/documents/{id}/details shows updated pricing table rows or text block content",
   "source": "https://developers.pandadoc.com/docs/working-with-pricing-tables; https://developers.pandadoc.com/docs/working-with-text-blocks; https://developers.pandadoc.com/docs/working-with-tables"
  },
  {
   "id": "cap-06",
   "group": "Templates",
   "capability": "Create and manage reusable templates",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/templates, PATCH /public/v1/templates/{id}, DELETE /public/v1/templates/{id}",
    "mcp": "list/inspect templates",
    "cli": null,
    "ui": "Templates tab"
   },
   "check": "GET /public/v1/templates/{id} reflects created/updated/absent template",
   "source": "https://developers.pandadoc.com/reference/create-template; https://developers.pandadoc.com/reference/updatetemplate; https://developers.pandadoc.com/reference/delete-template"
  },
  {
   "id": "cap-07",
   "group": "Quoting / CPQ",
   "capability": "Build quotes and sales proposals with pricing and product catalog items",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PATCH /public/v1/documents/{id}/quotes/{quoteId}; GET/POST /public/v1/catalog-items",
    "mcp": "create a sales proposal with pricing table",
    "cli": null,
    "ui": "Document editor > Pricing/Quote Builder"
   },
   "check": "GET document details shows updated quote line items/totals",
   "source": "https://developers.pandadoc.com/reference/update-quote; https://developers.pandadoc.com/reference/search-catalog-items; https://www.pandadoc.com/"
  },
  {
   "id": "cap-08",
   "group": "Document tracking",
   "capability": "Track document status and real-time viewer/signer activity",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/documents/{id}/status; webhooks document_state_changed",
    "mcp": "'Check if document has been signed'",
    "cli": null,
    "ui": "Document dashboard"
   },
   "check": "GET /public/v1/documents/{id}/status returns current status code matching UI view",
   "source": "https://developers.pandadoc.com/reference/document-status; https://developers.pandadoc.com/reference/handledocumentstatechanged"
  },
  {
   "id": "cap-09",
   "group": "Download/export",
   "capability": "Download a completed/signed document as a verifiable PDF",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/documents/{id}/download-protected",
    "mcp": null,
    "cli": null,
    "ui": "Document > Download"
   },
   "check": "Downloaded PDF bytes returned with 200 and valid signature certificate page",
   "source": "https://developers.pandadoc.com/reference/download-protected-document; https://developers.pandadoc.com/docs/how-to-download-completed-document"
  },
  {
   "id": "cap-10",
   "group": "Document creation",
   "capability": "Manually change a document's status (mark completed/paid/expired/rejected)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/status",
    "mcp": "'Mark document as paid'",
    "cli": null,
    "ui": "Document editor > change status"
   },
   "check": "GET /public/v1/documents/{id} status field matches requested value",
   "source": "https://developers.pandadoc.com/reference/change-document-status-manually"
  },
  {
   "id": "cap-11",
   "group": "Document lifecycle",
   "capability": "Revert a document back to draft for further editing",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/draft",
    "mcp": null,
    "cli": null,
    "ui": "Document > Move to Draft"
   },
   "check": "GET /public/v1/documents/{id} status becomes document.draft",
   "source": "https://developers.pandadoc.com/reference/draft"
  },
  {
   "id": "cap-12",
   "group": "Recipients",
   "capability": "Manage document recipients (add/remove/update, set signing order, reassign signer)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/DELETE/PATCH /public/v1/documents/{id}/recipients",
    "mcp": "'Reassign document from sarah to mike'",
    "cli": null,
    "ui": "Document editor > Recipients"
   },
   "check": "GET /public/v1/documents/{id}/details recipients array reflects the change",
   "source": "https://developers.pandadoc.com/reference/manage-document-recipients; https://developers.pandadoc.com/reference/change-signer; https://developers.pandadoc.com/docs/set-signing-order"
  },
  {
   "id": "cap-13",
   "group": "Recipients",
   "capability": "Require identity verification before viewing/signing (passcode, SMS, KBA, ID check)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "recipient-level settings on send/create document",
    "mcp": null,
    "cli": null,
    "ui": "Document editor > Recipient settings > Verification"
   },
   "check": "GET document details shows recipient verification method configured",
   "source": "https://developers.pandadoc.com/docs/enable-verification"
  },
  {
   "id": "cap-14",
   "group": "Reminders",
   "capability": "Send manual or automatic reminders to recipients",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/remind; PATCH auto-reminder settings",
    "mcp": "'Send a reminder for all contracts tagged Q4-2024'",
    "cli": null,
    "ui": "Document > Remind"
   },
   "check": "GET auto-reminder status endpoint shows reminder sent/scheduled per recipient",
   "source": "https://developers.pandadoc.com/reference/createmanualreminder; https://developers.pandadoc.com/reference/updatedocumentautoremindersettings"
  },
  {
   "id": "cap-15",
   "group": "Search & filter",
   "capability": "List, search, and filter documents (by status, tag, date, value, linked object)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/documents",
    "mcp": "'Find all contracts worth more than $100,000 signed last quarter'",
    "cli": null,
    "ui": "Documents list + filters"
   },
   "check": "GET /public/v1/documents?q=...&status=... returns matching subset",
   "source": "https://developers.pandadoc.com/reference/list-documents; https://developers.pandadoc.com/docs/filter-search-documents"
  },
  {
   "id": "cap-16",
   "group": "Organization",
   "capability": "Organize documents/templates into folders",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/folders; POST /public/v1/documents/{id}/move",
    "mcp": "'Archive all completed documents in the 2023 Contracts folder'",
    "cli": null,
    "ui": "Documents/Templates > Folders"
   },
   "check": "GET /public/v1/documents/folders lists folder; document's folder_uuid matches",
   "source": "https://developers.pandadoc.com/docs/organize-folders; https://developers.pandadoc.com/reference/document-move-to-folder"
  },
  {
   "id": "cap-17",
   "group": "Content library",
   "capability": "Create and reuse content library items (clauses, blocks) in documents",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/content-library-items; POST .../append-to-document",
    "mcp": "'add our standard GDPR compliance clause from the content library'",
    "cli": null,
    "ui": "Content Library"
   },
   "check": "GET document details shows content block inserted from the library item",
   "source": "https://developers.pandadoc.com/reference/create-content-library-item; https://developers.pandadoc.com/docs/create-with-content-placeholders-from-template"
  },
  {
   "id": "cap-18",
   "group": "Attachments & sections",
   "capability": "Attach files and combine multiple documents into one bundle (sections)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/attachments; POST /public/v1/documents/{id}/sections",
    "mcp": null,
    "cli": null,
    "ui": "Document editor > Attachments / Bundle"
   },
   "check": "GET /public/v1/documents/{id}/attachments or /sections lists the added item",
   "source": "https://developers.pandadoc.com/reference/document-attachments; https://developers.pandadoc.com/reference/create-bundle"
  },
  {
   "id": "cap-19",
   "group": "Audit",
   "capability": "View a document's full audit trail (views, edits, signatures, IPs, timestamps)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/documents/{id}/audit-trail",
    "mcp": "'Show me the full audit trail for document'",
    "cli": null,
    "ui": "Document > Audit Trail"
   },
   "check": "GET /public/v1/documents/{id}/audit-trail returns chronological event list matching UI",
   "source": "https://developers.pandadoc.com/reference/list-document-audit-trail"
  },
  {
   "id": "cap-20",
   "group": "Export",
   "capability": "Export a document as DOCX",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/docx-export",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "GET export task status endpoint returns success with downloadable DOCX link",
   "source": "https://developers.pandadoc.com/reference/createexportdocxtask"
  },
  {
   "id": "cap-21",
   "group": "Embedding",
   "capability": "Embed the PandaDoc editor, sending flow, or signing session inside a third-party app",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/session (e-token)",
    "mcp": null,
    "cli": null,
    "ui": "Embedded Editing/Signing Playground"
   },
   "check": "Generated e-token loads the embedded iframe showing the correct document",
   "source": "https://developers.pandadoc.com/docs/embedded-use-cases; https://developers.pandadoc.com/docs/embedded-editing-e-token"
  },
  {
   "id": "cap-22",
   "group": "Forms",
   "capability": "Create and share web forms that generate documents from submissions",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /public/v1/forms",
    "mcp": null,
    "cli": null,
    "ui": "Forms tab / JS Form Embed"
   },
   "check": "GET /public/v1/forms lists the created form and a submission produces a new document",
   "source": "https://developers.pandadoc.com/reference/list-forms; https://developers.pandadoc.com/docs/javascript-form-embed"
  },
  {
   "id": "cap-23",
   "group": "Bulk operations",
   "capability": "Bulk import/send/delete documents",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "DELETE (bulk) /public/v1/documents",
    "mcp": "'Find all documents in draft >30 days and expire them'",
    "cli": null,
    "ui": "Documents list > Bulk send / Bulk import"
   },
   "check": "GET /public/v1/documents confirms the targeted documents were removed/updated in one pass",
   "source": "https://developers.pandadoc.com/reference/bulkdeletedocuments; https://support.pandadoc.com/en/articles/9714844-bulk-import-documents-to-pandadoc"
  },
  {
   "id": "cap-24",
   "group": "Notifications",
   "capability": "Subscribe to document/template lifecycle events via webhooks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/webhook-subscriptions",
    "mcp": null,
    "cli": null,
    "ui": "Settings > Integrations > Webhooks"
   },
   "check": "GET /public/v1/webhook-subscriptions/{uuid} shows active subscription; triggering event delivers payload to endpoint",
   "source": "https://developers.pandadoc.com/reference/create-webhooks-subscription; https://developers.pandadoc.com/docs/webhook-setup"
  },
  {
   "id": "cap-25",
   "group": "CRM linking",
   "capability": "Link documents to CRM records (two-way CRM sync)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/documents/{id}/linked-objects",
    "mcp": "'Find all documents associated with Acme Corp'",
    "cli": null,
    "ui": "Document > Linked Objects / CRM integration panel"
   },
   "check": "GET /public/v1/documents/{id}/linked-objects lists the linked CRM record",
   "source": "https://developers.pandadoc.com/reference/link-to-crm; https://developers.pandadoc.com/docs/integrations-overview"
  },
  {
   "id": "cap-26",
   "group": "Contacts",
   "capability": "Manage a contacts list for use as recipients",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/PATCH/DELETE /public/v1/contacts",
    "mcp": null,
    "cli": null,
    "ui": "Contacts tab"
   },
   "check": "GET /public/v1/contacts/{id} reflects created/updated/deleted contact",
   "source": "https://developers.pandadoc.com/reference/create-contact; https://developers.pandadoc.com/reference/update-contact; https://developers.pandadoc.com/reference/delete-contact"
  },
  {
   "id": "cap-27",
   "group": "Workflow",
   "capability": "Route a document through an internal approval workflow before sending",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "approval flag on send-document",
    "mcp": "'Send document through our standard approval workflow'",
    "cli": null,
    "ui": "Document editor > Send for approval"
   },
   "check": "GET /public/v1/documents/{id}/status shows document.waiting_approval before transitioning to sent",
   "source": "https://developers.pandadoc.com/reference/send-document; https://www.pandadoc.com/pricing/ (Deal room Approval workflows, Business plan)"
  },
  {
   "id": "cap-28",
   "group": "Notary",
   "capability": "Request online notarization for a document",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/notarization-requests",
    "mcp": null,
    "cli": null,
    "ui": "notary.pandadoc.com"
   },
   "check": "GET /public/v1/notarization-requests/{id} shows request status progressing (e.g. completed)",
   "source": "https://developers.pandadoc.com/reference/create-notarization-request"
  },
  {
   "id": "cap-29",
   "group": "Account admin",
   "capability": "Manage organization users, workspaces, and member roles",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/users; POST /public/v1/workspaces; PATCH member role",
    "mcp": null,
    "cli": null,
    "ui": "Settings > Team / Workspaces"
   },
   "check": "GET /public/v1/users or /public/v1/workspaces reflects the created/updated entity",
   "source": "https://developers.pandadoc.com/reference/create-user; https://developers.pandadoc.com/reference/create-workspace; https://developers.pandadoc.com/reference/changememberrole"
  },
  {
   "id": "cap-30",
   "group": "Account admin",
   "capability": "Generate and manage API keys",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/api-keys",
    "mcp": null,
    "cli": null,
    "ui": "Developer Dashboard > API keys"
   },
   "check": "GET /public/v1/api-keys lists the newly created key id",
   "source": "https://developers.pandadoc.com/reference/create-api-key; https://developers.pandadoc.com/reference/[redacted]"
  },
  {
   "id": "cap-31",
   "group": "Branding",
   "capability": "Apply custom branding (logo, colors) to documents and workspace",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "PATCH /public/v1/workspaces/{id} (branding fields)",
    "mcp": null,
    "cli": null,
    "ui": "Settings > Branding"
   },
   "check": "GET /public/v1/workspaces/{id} shows updated branding fields",
   "source": "https://developers.pandadoc.com/reference/updateworkspace; https://www.pandadoc.com/pricing/ (Custom branding, Business plan)"
  },
  {
   "id": "cap-32",
   "group": "Compliance/privacy",
   "capability": "Configure workspace AI privacy settings",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "PATCH /public/v1/workspaces/{id}/privacy-settings",
    "mcp": null,
    "cli": null,
    "ui": "Settings > Privacy"
   },
   "check": "GET /public/v1/workspaces/{id}/privacy-settings reflects the updated flags",
   "source": "https://developers.pandadoc.com/reference/updateworkspaceprivacysettings"
  },
  {
   "id": "cap-33",
   "group": "Observability",
   "capability": "View API request logs for debugging integrations",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "GET /public/v2/logs",
    "mcp": "'what's the request ID for a support escalation'",
    "cli": null,
    "ui": "Developer Dashboard > API Logs"
   },
   "check": "GET /public/v2/logs/{id} returns the specific request's status code and request id",
   "source": "https://developers.pandadoc.com/reference/listlogsv2; https://developers.pandadoc.com/reference/detailslogv2"
  },
  {
   "id": "cap-34",
   "group": "Mobile",
   "capability": "Create, send, and sign documents from the PandaDoc mobile app",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "iOS/Android app"
   },
   "check": "Mobile app document list shows a document created/sent from the phone",
   "source": "http://web.archive.org/web/20260702171903/https://www.pandadoc.com/mobile/; http://web.archive.org/web/20260702171903/https://www.pandadoc.com/pricing/"
  },
  {
   "id": "cap-35",
   "group": "Integrations",
   "capability": "Connect to CRM/productivity integrations (Salesforce, HubSpot, MS Dynamics, Zapier)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings > Integrations"
   },
   "check": "Settings > Integrations shows the connected integration as active",
   "source": "https://developers.pandadoc.com/docs/integrations-overview; https://www.pandadoc.com/integrations/"
  }
 ],
 "attempts": [
  {
   "t": "01:17",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "task": "Read docs, llms.txt, OpenAPI",
   "result": "done",
   "evidence": "llms.txt (52 KB) at developers.pandadoc.com/llms.txt; OpenAPI pandadoc-public-api.json openapi 3.0.3, info.version 8.22.0, 94 paths, server https://api.pandadoc.com; api-catalog linkset; agent-skills index (read-the-docs SKILL.md)",
   "notes": "docs_pass verdict complete",
   "capability": "Docs"
  },
  {
   "t": "01:17",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "task": "MCP server/discover on product MCP https://mcp.pandadoc.com/v1/mcp",
   "result": "done",
   "evidence": "POST server/discover 2026-07-28 -> 401, WWW-Authenticate: Bearer resource_metadata=\"https://mcp.pandadoc.com/.well-known/oauth-protected-resource/v1/mcp\"; PRM 200 JSON (authorization_servers https://mcp.pandadoc.com/, scopes read write documents:read documents:edit documents:send); AS metadata has registration_endpoint (DCR), no client_id_metadata_document_supported, no device endpoint; /v1/mcp/server-card 404",
   "capability": "Docs"
  },
  {
   "t": "01:17",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "task": "MCP server/discover on docs MCP https://developers.pandadoc.com/mcp (ReadMe)",
   "result": "done",
   "evidence": "200 JSON supportedVersions [\"2026-07-28\"], serverInfo \"PandaDoc for Developers: API Reference, SDK, and Documentation\"; server card at developers.pandadoc.com/.well-known/mcp/server-card.json (application/json, remotes streamable-http)",
   "capability": "Docs"
  },
  {
   "t": "01:17",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "task": "A2A agent card, AI catalog, aipref, markdown",
   "result": "done",
   "evidence": "agent-card.json 404 on developers.; www.pandadoc.com answers 429 Vercel Security Checkpoint (x-vercel-mitigated: challenge) to our signed agent; ai-catalog.json 404/301; no Content-Usage in robots.txt of app./api./developers.; Accept: text/markdown on developers docs -> text/markdown, Vary: Accept; .md URLs -> text/markdown",
   "capability": "Docs"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "email_password",
   "route": "browser",
   "documented": true,
   "task": "Sign up for the free 14-day trial (no card) at signup.pandadoc.com with the agent's inbox",
   "result": "blocked",
   "verified": false,
   "evidence": "Form steps 1 (email+password) and 2 (first/last name, company size Solo, team Other) accepted (POST /api/flow 201, /steps 201); final POST /api/flow/{id}/signup/ -> 400 {\"detail\":\"Captcha is not valid\",\"code\":\"captcha\"}; page shows \"Something went wrong. There was a problem creating your account. Please try again or contact us.\" No mail arrived. Invisible reCAPTCHA (no visible challenge) scored our agent's browser as a bot.",
   "notes": "Same result on two complete submissions (first incomplete because each pw call reloaded the SPA step).",
   "cause": "check",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   },
   "capability": "Sign up"
  },
  {
   "t": "11:54",
   "cap": "login",
   "way": "email_password",
   "route": "browser",
   "documented": true,
   "task": "Check whether an account was created anyway: log in at app.pandadoc.com/login",
   "result": "blocked",
   "verified": false,
   "evidence": "POST https://app.pandadoc.com/login/ answered 200 with an Imperva/Incapsula bot page (<META NAME=\"ROBOTS\" CONTENT=\"NOINDEX, NOFOLLOW\"> ... /_Incapsula_Resource script) instead of a login result; the page stays on the login form, no error shown",
   "notes": "Imperva (x-cdn: Imperva) bot protection on the login POST; account most likely never created (signup returned captcha error)",
   "capability": "login"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "keyless",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No keyless API: every documented operation needs an API key or OAuth token (OpenAPI security apiKey/oauth2); developer docs and docs MCP are keyless but only docs",
   "capability": "Sign up",
   "evidence": "No keyless API: every documented operation needs an API key or OAuth token (OpenAPI security apiKey/oauth2); developer docs and docs MCP are keyless but only docs"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "local",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No local edition, CLI or self-hosted product documented",
   "capability": "Sign up",
   "evidence": "No local edition, CLI or self-hosted product documented"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "claimable",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No claimable resource documented",
   "capability": "Sign up",
   "evidence": "No claimable resource documented"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "pay_per_call",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "pay_probe.json: no 402 / x402 / MPP anywhere; pay_tx.json: nothing paid",
   "capability": "Sign up",
   "evidence": "pay_probe.json: no 402 / x402 / MPP anywhere; pay_tx.json: nothing paid"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "api_signup",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No sign-up API or /auth.md documented; developers.pandadoc.com quick start sends to a web Sandbox account sign-up; pandadoc.com/auth.md answered 429 (Vercel checkpoint) to door probe",
   "capability": "Sign up",
   "evidence": "No sign-up API or /auth.md documented; developers.pandadoc.com quick start sends to a web Sandbox account sign-up; pandadoc.com/auth.md answered 429 (Vercel checkpoint) to door probe"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "authmd",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No agent_auth in https://mcp.pandadoc.com/.well-known/oauth-authorization-server",
   "capability": "Sign up",
   "evidence": "No agent_auth in https://mcp.pandadoc.com/.well-known/oauth-authorization-server"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "sso_agent",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No Sign in with AgentID offered on sign-up or login",
   "capability": "Sign up",
   "evidence": "No Sign in with AgentID offered on sign-up or login"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "email_code",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "Only email+password on the form",
   "capability": "Sign up",
   "evidence": "Only email+password on the form"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "magic_link",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "Only email+password on the form",
   "capability": "Sign up",
   "evidence": "Only email+password on the form"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "sso_github",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No GitHub button on signup or login",
   "capability": "Sign up",
   "evidence": "No GitHub button on signup or login"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "sso_google",
   "result": "skipped",
   "not_tried": "no_kit",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "Google offered on signup and login; pw sso google: this drive has no Google account",
   "capability": "Sign up",
   "evidence": "Google offered on signup and login; pw sso google: this drive has no Google account"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "sso_linkedin",
   "result": "skipped",
   "not_tried": "no_kit",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "LinkedIn offered on signup and login; our agent has no LinkedIn account",
   "capability": "Sign up",
   "evidence": "LinkedIn offered on signup and login; our agent has no LinkedIn account"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "sso_microsoft",
   "result": "skipped",
   "not_tried": "no_kit",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "Microsoft and Slack offered on login only; no account of ours there",
   "capability": "Sign up",
   "evidence": "Microsoft and Slack offered on login only; no account of ours there"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "stripe_projects",
   "result": "skipped",
   "not_tried": "no_kit",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "Not listed on Stripe Projects (pay_probe registries empty)",
   "capability": "Sign up",
   "evidence": "Not listed on Stripe Projects (pay_probe registries empty)"
  },
  {
   "t": "11:54",
   "cap": "signup",
   "way": "device_login",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": true,
   "verified": false,
   "notes": "No CLI; MCP AS metadata lists no device_authorization_endpoint",
   "capability": "Sign up",
   "evidence": "No CLI; MCP AS metadata lists no device_authorization_endpoint"
  },
  {
   "t": "12:43",
   "cap": "signup",
   "way": "oauth_consent",
   "route": "mcp",
   "documented": true,
   "task": "MCP OAuth: register a client by DCR and sign in to https://mcp.pandadoc.com/v1/mcp",
   "result": "blocked",
   "verified": false,
   "evidence": "POST https://mcp.pandadoc.com/register (DCR) -> 201 client_id issued, headless. /authorize -> mcp.pandadoc.com/consent \"Application Access Request\" (Allow Access / Deny); Allow -> https://app.pandadoc.com/login/?next=/oauth2/authorize...: needs a PandaDoc account, which the sign-up refused (captcha) and whose login POST Imperva answers with a bot page",
   "notes": "DCR only (no CIMD, no device flow) in AS metadata; PRM served correctly. Consent needs an existing account.",
   "cause": "check",
   "capability": "Sign up"
  },
  {
   "t": "13:35",
   "cap": "pay",
   "step": "probe",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "task": "Public pay probes: 402/x402/MPP, registries, billing API, trial card",
   "evidence": "pay_probe.json: no 402 on pandadoc.com, api., x402./mpp./agents. (no such hosts); registries (mpp.dev, Stripe Projects, x402 Bazaar) empty; pay_tx.json: nothing paid (\"no 402 on the product's own endpoint ...\"). OpenAPI (94 paths) has no billing/subscription operations. Sign-up page: \"Start a free 14-day trial / NO CREDIT CARD REQUIRED\". Support \"Account Billing and Ownership\": plan changes at Settings > Billing > Manage plan, card or PayPal under Settings > Payment details.",
   "capability": "Pay"
  },
  {
   "t": "13:35",
   "cap": "pay",
   "step": "checkout",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Walk to the last click of the cheapest paid plan",
   "evidence": "No account (sign-up refused by captcha), so Settings > Billing cannot be opened. Public pricing page https://www.pandadoc.com/pricing/ answers our agent's browser with \"Vercel Security Checkpoint, Failed to verify your browser, Code 21\".",
   "notes": "Checkout not reached: account wall",
   "capability": "Pay"
  },
  {
   "t": "13:35",
   "cap": "credentials",
   "key": "create",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Create an API key headless",
   "evidence": "Docs: keys come from the Dev Center in the web app (\"visit the Dev Center and generate a Sandbox or Production key\"; Production keys \"require approval. Please contact our Sales team\"); POST /public/v1/api-keys exists but itself needs an Org Admin key. No account could be made (sign-up captcha), so no key.",
   "cause": "check",
   "capability": "Key"
  },
  {
   "t": "13:35",
   "cap": "verify",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Verify email",
   "evidence": "No verification mail: the sign-up was refused at the final step (\"Captcha is not valid\"); inbox the agent's inbox empty",
   "cause": "check",
   "capability": "Verify"
  },
  {
   "t": "13:35",
   "cap": "first_call",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "First API call (GET /public/v1/members/current)",
   "evidence": "No key: account not created. api.pandadoc.com robots.txt is \"User-agent: * / Disallow: /\" (a crawler rule; does not stop an account step)",
   "cause": "check",
   "capability": "First call"
  },
  {
   "t": "13:35",
   "cap": "first_action",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Create a document",
   "evidence": "No account, no key",
   "capability": "First action"
  },
  {
   "t": "13:35",
   "cap": "cancel",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "task": "Cancel plan",
   "evidence": "Nothing started that renews (no account). Support \"Account Billing and Ownership\": \"Before you cancel, please contact us first ... Fill out the form and confirm the cancellation\" (Settings > Billing, web UI with a retention form)",
   "notes": "n/a: nothing to cancel",
   "capability": "Cancel"
  },
  {
   "t": "13:35",
   "cap": "delete",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "task": "Delete account",
   "evidence": "No account was created (sign-up 400 captcha). Support: \"If you'd like to delete your account, please reach out to our Support team.\" The sign-up flow object bAEozEjxQWvqeHz5YDRKuX holds our email server-side; no way to remove it ourselves.",
   "notes": "nothing_made",
   "capability": "Delete"
  },
  {
   "t": "13:44",
   "cap": "cap-28",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/v2/notary/notarization-requests', '/public/v2/notary/notarization-requests/{session_request_id}']; not callable without an account (sign-up refused by captcha)",
   "capability": "Request online notarization for a document"
  },
  {
   "t": "13:44",
   "cap": "cap-29",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/beta/privacy-settings/workspaces/{workspace_id}', '/public/v1/workspaces', '/public/v1/workspaces/{workspace_id}/deactivate', '/public/v1/workspaces/{workspace_id}/members']; not callable without an account (sign-up refused by captcha)",
   "capability": "Manage organization users, workspaces, and member roles"
  },
  {
   "t": "13:44",
   "cap": "cap-30",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/v1/workspaces/{workspace_id}/api-keys']; not callable without an account (sign-up refused by captcha)",
   "capability": "Generate and manage API keys"
  },
  {
   "t": "13:44",
   "cap": "cap-31",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/beta/privacy-settings/workspaces/{workspace_id}', '/public/v1/workspaces/{workspace_id}/deactivate', '/public/v1/workspaces/{workspace_id}/members', '/public/v1/workspaces/{workspace_id}/members/{member_id}']; not callable without an account (sign-up refused by captcha)",
   "capability": "Apply custom branding (logo, colors) to documents and workspace"
  },
  {
   "t": "13:44",
   "cap": "cap-32",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/beta/privacy-settings/workspaces/{workspace_id}']; not callable without an account (sign-up refused by captcha)",
   "capability": "Configure workspace AI privacy settings"
  },
  {
   "t": "13:44",
   "cap": "cap-33",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "OpenAPI 8.22.0 lists ['/public/v1/logs', '/public/v1/logs/{id}', '/public/v2/logs', '/public/v2/logs/{id}']; not callable without an account (sign-up refused by captcha)",
   "capability": "View API request logs for debugging integrations"
  },
  {
   "t": "13:44",
   "cap": "cap-34",
   "route": "none",
   "documented": false,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "No API surface in the OpenAPI; app/UI-only per the map; not callable without an account (sign-up refused by captcha)",
   "capability": "Create, send, and sign documents from the PandaDoc mobile app"
  },
  {
   "t": "13:44",
   "cap": "cap-35",
   "route": "none",
   "documented": false,
   "result": "blocked",
   "verified": false,
   "task": "Check the capability against the docs",
   "evidence": "No API surface in the OpenAPI; app/UI-only per the map; not callable without an account (sign-up refused by captcha)",
   "capability": "Connect to CRM/productivity integrations (Salesforce, HubSpot, MS Dynamics, Zapier)"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-01",
   "surface": "api",
   "claim": "POST /public/v1/documents",
   "doc_url": "https://developers.pandadoc.com/reference/create-document",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create a document from a template",
   "task": "POST /public/v1/documents",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-01",
   "surface": "mcp",
   "claim": "create document from template (prompt library)",
   "doc_url": "https://developers.pandadoc.com/reference/create-document",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create a document from a template",
   "task": "create document from template (prompt library)",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-02",
   "surface": "api",
   "claim": "POST /public/v1/documents/create",
   "doc_url": "https://developers.pandadoc.com/reference/create-document-from-upload",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create a document from an uploaded PDF/DocX/RTF",
   "task": "POST /public/v1/documents/create",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-02",
   "surface": "mcp",
   "claim": "upload a PDF as a new template/document",
   "doc_url": "https://developers.pandadoc.com/reference/create-document-from-upload",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create a document from an uploaded PDF/DocX/RTF",
   "task": "upload a PDF as a new template/document",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-03",
   "surface": "api",
   "claim": "POST /public/v1/documents/{id}/send",
   "doc_url": "https://developers.pandadoc.com/reference/send-document",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Send a document to recipients for signature",
   "task": "POST /public/v1/documents/{id}/send",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-03",
   "surface": "mcp",
   "claim": "'Send <document_name>'",
   "doc_url": "https://developers.pandadoc.com/reference/send-document",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Send a document to recipients for signature",
   "task": "'Send <document_name>'",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-04",
   "surface": "api",
   "claim": "POST /public/v1/documents/{id}/session (embedded signing)",
   "doc_url": "https://developers.pandadoc.com/reference/create-document-session",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Sign a document (recipient completes fields and e-signs)",
   "task": "POST /public/v1/documents/{id}/session (embedded signing)",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-05",
   "surface": "api",
   "claim": "PATCH /public/v1/documents/{id} and content-block endpoints",
   "doc_url": "https://developers.pandadoc.com/docs/working-with-pricing-tables",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Build/edit document content (pricing tables, text blocks, tables, images, fields) in the drag-and-drop editor",
   "task": "PATCH /public/v1/documents/{id} and content-block endpoints",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-05",
   "surface": "mcp",
   "claim": "update a text block, populate pricing table",
   "doc_url": "https://developers.pandadoc.com/docs/working-with-pricing-tables",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Build/edit document content (pricing tables, text blocks, tables, images, fields) in the drag-and-drop editor",
   "task": "update a text block, populate pricing table",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-06",
   "surface": "api",
   "claim": "POST /public/v1/templates, PATCH /public/v1/templates/{id}, DELETE /public/v1/templates/{id}",
   "doc_url": "https://developers.pandadoc.com/reference/create-template",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create and manage reusable templates",
   "task": "POST /public/v1/templates, PATCH /public/v1/templates/{id}, DELETE /public/v1/templates/{id}",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-06",
   "surface": "mcp",
   "claim": "list/inspect templates",
   "doc_url": "https://developers.pandadoc.com/reference/create-template",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Create and manage reusable templates",
   "task": "list/inspect templates",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-07",
   "surface": "api",
   "claim": "PATCH /public/v1/documents/{id}/quotes/{quoteId}; GET/POST /public/v1/catalog-items",
   "doc_url": "https://developers.pandadoc.com/reference/update-quote",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Build quotes and sales proposals with pricing and product catalog items",
   "task": "PATCH /public/v1/documents/{id}/quotes/{quoteId}; GET/POST /public/v1/catalog-items",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-07",
   "surface": "mcp",
   "claim": "create a sales proposal with pricing table",
   "doc_url": "https://developers.pandadoc.com/reference/update-quote",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Build quotes and sales proposals with pricing and product catalog items",
   "task": "create a sales proposal with pricing table",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-08",
   "surface": "api",
   "claim": "GET /public/v1/documents/{id}/status; webhooks document_state_changed",
   "doc_url": "https://developers.pandadoc.com/reference/document-status",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Track document status and real-time viewer/signer activity",
   "task": "GET /public/v1/documents/{id}/status; webhooks document_state_changed",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-08",
   "surface": "mcp",
   "claim": "'Check if document has been signed'",
   "doc_url": "https://developers.pandadoc.com/reference/document-status",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Track document status and real-time viewer/signer activity",
   "task": "'Check if document has been signed'",
   "route": "mcp",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  },
  {
   "kind": "claim",
   "t": "13:50",
   "cap": "cap-09",
   "surface": "api",
   "claim": "GET /public/v1/documents/{id}/download-protected",
   "doc_url": "https://developers.pandadoc.com/reference/download-protected-document",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA",
   "capability": "Docs claim: Download a completed/signed document as a verifiable PDF",
   "task": "GET /public/v1/documents/{id}/download-protected",
   "route": "api",
   "evidence": "needs an account/key (API) or OAuth sign-in to an account (MCP); sign-up refused by invisible reCAPTCHA"
  }
 ],
 "stale": false,
 "icon": "/logos/pandadoc.png",
 "monitored": false,
 "verdict": "Needs a person to get in: PandaDoc sits at L1, stopped before any work could start. Sign-up passes both steps of the free trial form, then the final submit answers \"Captcha is not valid\": an invisible reCAPTCHA refuses our agent's browser without showing a challenge, so there is no step a human could clear either. The docs open without an account: llms.txt, markdown pages, a full OpenAPI spec and the docs MCP all load headless. Only the key page, the official OAuth MCP login and every API call sit behind the account the captcha refused, so none of the core capabilities could be tried. Paying and cancelling were never reached: no account was created.",
 "page": "https://agentdrives.com/tools/pandadoc?via=api"
}