{
 "slug": "formspree",
 "name": "Formspree",
 "url": "https://formspree.io",
 "domain": "formspree.io",
 "category": "forms",
 "category_name": "Forms",
 "tested_at": "2026-10-06",
 "run": "20261006T073244Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261002T055634Z",
   "date": "2026-10-02",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261006T073244Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  }
 ],
 "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": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "part",
   "text": "Some docs agents can read: llms.txt",
   "have": [
    "llms_txt"
   ]
  },
  {
   "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": "card_checkout",
   "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/6",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 60,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 60,
  "security": null,
  "standards": []
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "f3d0adeeb256",
  "kb_version": "2+overlay-9e43028a2c",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "start"
 },
 "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 v2",
  "visible": true,
  "type": "challenge",
  "human": "",
  "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": "captcha"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "captcha",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt with a claim-URL guide for agents; help articles serve Markdown via Accept: text/markdown and .md"
  },
  "signup": {
   "status": "human",
   "note": "Web form only (no sign-up API). In the browser, Register raised a reCAPTCHA v2 image challenge.",
   "via": ""
  },
  "verify": {
   "status": "",
   "note": "Never reached: sign-up did not complete",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "CLI deploy key and form API keys come only from the dashboard (API keys on Professional/Business only); no account",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "No credentials and no form of our own; unauthenticated POST /f/<id> only returns FORM_NOT_FOUND",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Creating a form needs an account: dashboard, claim URL (302 to /register) or formspree deploy with a deploy key",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "Stripe in-app card form (Stripe.js / Elements in the web app)"
   ],
   "rail_ids": [
    "stripe-elements"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No 402 rail, no UCP, not in the x402 Bazaar or on mpp.dev. Paid plans are bought with a card in the web app, reachable only after the captcha-gated sign-up; the payment step itself was not reached.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "No plan was started. Docs give no cancel API; the web app has a billing page (web UI). Not exercised.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created. Docs: delete in the web UI (Account > Delete account, with password and 2FA), done within 24 h; no API.",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [
   {
    "id": "stripe-elements",
    "name": "Stripe card form",
    "kind": "checkout",
    "first_party": false,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "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": false,
  "cli": true,
  "sdk": true,
  "mcp": "none",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST submit endpoint /f/{hashid} (no auth) + Forms API /api/0/forms/{hashid}/submissions (Basic auth, Professional+)",
  "openapi": "none found",
  "cli": "@formspree/cli 0.9.6, deploy key from dashboard",
  "sdk": "@formspree/react, @formspree/ajax",
  "mcp": "none found"
 },
 "can_do": [
  "Read Formspree's docs as Markdown and its llms.txt agent guide",
  "Copy ready-made HTML/React form templates from the Form Library"
 ],
 "cannot_do": [
  {
   "what": "Create an account",
   "why": "Sign-up is a web form only, and Register raises a reCAPTCHA v2 image challenge"
  },
  {
   "what": "Create a form endpoint",
   "why": "Every route (dashboard, claim URL, CLI deploy key) needs a signed-in account"
  },
  {
   "what": "Read submissions via API",
   "why": "Needs an account, and the API is on Professional/Business plans only"
  }
 ],
 "blockers": [
  "reCAPTCHA v2 image challenge on the sign-up form"
 ],
 "tips_for_owner": [
  "Let verified agents sign up",
  "Let agents create unclaimed forms",
  "Offer account API keys on free plan",
  "Publish an OpenAPI spec"
 ],
 "tips_for_agents": [
  "Start at https://formspree.io/llms.txt: the designed agent flow is a claim URL a human opens, then pastes the /f/<id> endpoint back",
  "With a deploy key from a human, `formspree deploy -k <key>` over formspree.json is fully headless",
  "Send Accept: application/json to /f/<id> for JSON errors with codes",
  "Help articles serve Markdown: add .md or send Accept: text/markdown"
 ],
 "selfhost": null,
 "summary": "An agent cannot get into Formspree on its own: sign-up is a web form, and Register raised a reCAPTCHA v2 picture puzzle. Every way to create a form (dashboard, claim URL, CLI deploy key) needs that account. The docs serve agents well (llms.txt, Markdown articles), but there is no MCP server, OpenAPI spec or agent auth.",
 "wall": "reCAPTCHA picture puzzle on the sign-up form",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Formspree lets a website owner collect form submissions without writing backend code. An AI agent reading its docs got quite far, the docs are agent-friendly and templates are free to copy, but it could not create an account because the sign-up page showed a picture puzzle (CAPTCHA). Everything else, including making a form or paying for a plan, needs that account first.",
  "can_do": [
   "Read all of Formspree's help pages in a clean, easy-to-parse format",
   "Copy ready-made contact form templates from the public form library"
  ],
  "cannot_do": [
   {
    "what": "Create an account",
    "why": "The sign-up page shows a picture puzzle"
   },
   {
    "what": "Create a working form",
    "why": "Every way to make one needs a signed-in account first"
   },
   {
    "what": "Read submitted form data through the API",
    "why": "That feature needs both an account and a paid plan"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "Fetch submissions programmatically",
   "plan": "Professional, Business",
   "evidence": "help.formspree.io/articles/the-forms-api/form-submissions-api: 'Available on: Professional, Business plans'"
  },
  {
   "capability": "Export submissions to CSV/JSON",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://formspree.io/plans/"
  },
  {
   "capability": "Send auto-response confirmation email to submitter",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/sending-a-confirmation-or-response-email"
  },
  {
   "capability": "Route submissions by rules (rules engine)",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/advanced-features/form-rules"
  },
  {
   "capability": "Accept file upload attachments on a form",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/building-your-form/file-uploads"
  },
  {
   "capability": "Search submissions by keyword",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://formspree.io/plans/"
  },
  {
   "capability": "Connect productivity integrations (Airtable, Asana, GitHub, Google Sheets, Notion, Trello, Linear)",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/plugins"
  },
  {
   "capability": "Connect CRM integrations (HubSpot, Pipedrive, Salesforce, Zoho)",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/use-hubspot-to-create-leads-and-contacts"
  },
  {
   "capability": "Connect newsletter integrations (Mailchimp, MailerLite, ConvertKit, Klaviyo, Constant Contact, ActiveCampaign)",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/use-mailchimp-to-collect-email-addresses"
  },
  {
   "capability": "Connect support-desk integrations (Freshdesk, Gladly, Gorgias, Zendesk)",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/use-zende[redacted]"
  },
  {
   "capability": "Send submissions to a custom webhook URL",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/webhooks"
  },
  {
   "capability": "Trigger Stripe payment on submission",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/plugins/use-stripe-to-accept-payments-with-sca"
  },
  {
   "capability": "Verify webhook signatures",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/advanced-features/verify-webhook-signatures"
  },
  {
   "capability": "Set custom spam rules / blocklist",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/advanced-features/setting-a-blocklist"
  },
  {
   "capability": "Customize 'Thank You' redirect page",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/form-and-project-settings/thank-you-redirect"
  },
  {
   "capability": "Customize notification/autoresponse email templates",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/advanced-features/setting-custom-email-templates"
  },
  {
   "capability": "Set a custom email sending domain",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/advanced-features/setting-email-domain"
  },
  {
   "capability": "Add and manage team members on an account",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://help.formspree.io/articles/account-management/adding-team-members"
  },
  {
   "capability": "Link client email addresses for managed form setup",
   "plan": "paid (Personal/Professional/Business)",
   "evidence": "https://formspree.io/plans/"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "forms",
   "capability": "Create a form endpoint",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "formspree-cli project add-form (deploy)",
    "ui": "Dashboard → + Add New → New Form"
   },
   "check": "New endpoint https://formspree.io/f/{hashid} returns 200/validation error on POST",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-02",
   "group": "forms",
   "capability": "Claim a pre-configured form via Claim URL",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "https://formspree.io/claim?... (login/signup flow)"
   },
   "check": "After claim, pasted endpoint URL https://formspree.io/f/{hashid} is live and matches the fields/action params requested",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-03",
   "group": "forms",
   "capability": "Submit a form (HTML POST / AJAX)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /f/{hashid}",
    "mcp": null,
    "cli": null,
    "ui": "any HTML <form action> or @formspree/ajax / @formspree/react"
   },
   "check": "POST to /f/{hashid} returns success JSON/redirect and submission appears in dashboard inbox",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-04",
   "group": "submissions",
   "capability": "View submissions in inbox with daily analytics",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard → Form → Submissions"
   },
   "check": "Dashboard inbox lists the submitted entry with timestamp and analytics chart updates",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-05",
   "group": "submissions",
   "capability": "Fetch submissions programmatically",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "GET /api/0/forms/{hashid}/submissions",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "GET returns JSON with submissions array containing the field values and _status delivery info",
   "source": "https://help.formspree.io/articles/the-forms-api/form-submissions-api"
  },
  {
   "id": "cap-06",
   "group": "submissions",
   "capability": "Export submissions to CSV/JSON",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard → Form → Export"
   },
   "check": "Downloaded file contains rows matching submissions shown in inbox",
   "source": "https://formspree.io/plans/"
  },
  {
   "id": "cap-07",
   "group": "notifications",
   "capability": "Receive email notification per submission",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "action.email claim param",
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Notifications"
   },
   "check": "Submitting the form delivers an email to the configured address",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-08",
   "group": "notifications",
   "capability": "Send auto-response confirmation email to submitter",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "action.autoresponse.* claim params",
    "mcp": null,
    "cli": "formspree-cli (Send a confirmation email guide)",
    "ui": "Form Settings → Autoresponse"
   },
   "check": "Submitter receives a reply email matching the configured subject/body",
   "source": "https://help.formspree.io/articles/plugins/sending-a-confirmation-or-response-email"
  },
  {
   "id": "cap-09",
   "group": "spam",
   "capability": "Filter spam submissions (Formshield / reCAPTCHA / honeypot)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Spam Filtering"
   },
   "check": "Spam-pattern submission is flagged/excluded from inbox and appears only with ?spam=true",
   "source": "https://help.formspree.io/articles/building-your-form/honeypot-spam-filtering"
  },
  {
   "id": "cap-10",
   "group": "validation",
   "capability": "Define field types and server-side validation rules",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "field.<name>=<type>,<rule> claim param",
    "mcp": null,
    "cli": "formspree.json config",
    "ui": "Form Settings → Fields"
   },
   "check": "Submission missing a required/invalid field is rejected with a validation error response",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-11",
   "group": "routing",
   "capability": "Route submissions by rules (rules engine)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Rules"
   },
   "check": "A submission matching a rule condition is routed/flagged/redirected per the configured rule",
   "source": "https://help.formspree.io/articles/advanced-features/form-rules"
  },
  {
   "id": "cap-12",
   "group": "routing",
   "capability": "Send submissions to multiple/custom recipient emails",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "action.email=a@x.com,b@x.com",
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Emails"
   },
   "check": "All listed recipients receive the notification email for one submission",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-13",
   "group": "files",
   "capability": "Accept file upload attachments on a form",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "field.<name>=file claim param",
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Fields"
   },
   "check": "Submission with a file attached stores it and notification email/dashboard shows a download link",
   "source": "https://help.formspree.io/articles/building-your-form/file-uploads"
  },
  {
   "id": "cap-14",
   "group": "organization",
   "capability": "Group forms into projects",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "project= claim param",
    "mcp": null,
    "cli": "formspree-cli project init",
    "ui": "Dashboard → Projects"
   },
   "check": "New form appears nested under the named project in the dashboard",
   "source": "https://help.formspree.io/articles/form-and-project-settings/getting-started-with-projects"
  },
  {
   "id": "cap-15",
   "group": "search",
   "capability": "Search submissions by keyword",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard → Form → Submissions search box"
   },
   "check": "Search query returns only submissions containing the matching text",
   "source": "https://formspree.io/plans/"
  },
  {
   "id": "cap-16",
   "group": "integrations",
   "capability": "Connect notification integrations (Slack, Discord, Telegram)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "action.slack / action.discord / action.telegram",
    "mcp": null,
    "cli": "formspree-cli (plugin config)",
    "ui": "Form Settings → Plugins"
   },
   "check": "Submission triggers a message posted into the connected Slack/Discord/Telegram channel",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-17",
   "group": "integrations",
   "capability": "Connect productivity integrations (Airtable, Asana, GitHub, Google Sheets, Notion, Trello, Linear)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.airtable / action.asana / action.github / action.googlesheets / action.notion / action.trello",
    "mcp": null,
    "cli": "formspree-cli",
    "ui": "Form Settings → Plugins"
   },
   "check": "Submission creates/updates a row, card, or issue in the connected app",
   "source": "https://help.formspree.io/articles/plugins/plugins"
  },
  {
   "id": "cap-18",
   "group": "integrations",
   "capability": "Connect CRM integrations (HubSpot, Pipedrive, Salesforce, Zoho)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.hubspot / action.pipedrive / action.salesforce",
    "mcp": null,
    "cli": "formspree-cli",
    "ui": "Form Settings → Plugins"
   },
   "check": "Submission creates a lead/contact/deal record visible in the connected CRM",
   "source": "https://help.formspree.io/articles/plugins/use-hubspot-to-create-leads-and-contacts"
  },
  {
   "id": "cap-19",
   "group": "integrations",
   "capability": "Connect newsletter integrations (Mailchimp, MailerLite, ConvertKit, Klaviyo, Constant Contact, ActiveCampaign)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.mailchimp / action.mailerlite / action.convertkit / action.klaviyo",
    "mcp": null,
    "cli": "formspree-cli",
    "ui": "Form Settings → Plugins"
   },
   "check": "Submitter email appears as a new subscriber in the connected list",
   "source": "https://help.formspree.io/articles/plugins/use-mailchimp-to-collect-email-addresses"
  },
  {
   "id": "cap-20",
   "group": "integrations",
   "capability": "Connect support-desk integrations (Freshdesk, Gladly, Gorgias, Zendesk)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.freshdesk / action.gladly / action.gorgias / action.zendesk",
    "mcp": null,
    "cli": "formspree-cli",
    "ui": "Form Settings → Plugins"
   },
   "check": "Submission opens a new ticket in the connected helpdesk",
   "source": "https://help.formspree.io/articles/plugins/use-zende[redacted]"
  },
  {
   "id": "cap-21",
   "group": "integrations",
   "capability": "Send submissions to a custom webhook URL",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.webhook=<url>",
    "mcp": null,
    "cli": "formspree-cli (send-a-webhook guide)",
    "ui": "Form Settings → Plugins → Webhooks"
   },
   "check": "Configured endpoint receives an HTTP POST with the submission payload, and the signature validates per docs",
   "source": "https://help.formspree.io/articles/plugins/webhooks"
  },
  {
   "id": "cap-22",
   "group": "integrations",
   "capability": "Trigger Stripe payment on submission",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "action.stripe",
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Plugins"
   },
   "check": "Submission with payment fields creates a Stripe charge/PaymentIntent visible in Stripe dashboard",
   "source": "https://help.formspree.io/articles/plugins/use-stripe-to-accept-payments-with-sca"
  },
  {
   "id": "cap-24",
   "group": "security",
   "capability": "Verify webhook signatures",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Webhook request includes a signature header that validates against the documented HMAC scheme",
   "source": "https://help.formspree.io/articles/advanced-features/verify-webhook-signatures"
  },
  {
   "id": "cap-25",
   "group": "security",
   "capability": "Restrict form submissions to a specific domain",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Restrict to Domain"
   },
   "check": "Submission from an unlisted origin domain is rejected",
   "source": "https://help.formspree.io/articles/form-and-project-settings/restrict-to-domain"
  },
  {
   "id": "cap-26",
   "group": "security",
   "capability": "Set custom spam rules / blocklist",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Spam Filtering → Custom Rules"
   },
   "check": "Submission matching a custom blocklist pattern is discarded instead of reaching the inbox",
   "source": "https://help.formspree.io/articles/advanced-features/setting-a-blocklist"
  },
  {
   "id": "cap-27",
   "group": "customization",
   "capability": "Customize 'Thank You' redirect page",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Thank You Page"
   },
   "check": "Non-AJAX submission redirects to the configured custom URL instead of the default Formspree page",
   "source": "https://help.formspree.io/articles/form-and-project-settings/thank-you-redirect"
  },
  {
   "id": "cap-28",
   "group": "customization",
   "capability": "Customize notification/autoresponse email templates",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Email Templates"
   },
   "check": "Received notification email shows the custom markup/branding instead of the default template",
   "source": "https://help.formspree.io/articles/advanced-features/setting-custom-email-templates"
  },
  {
   "id": "cap-30",
   "group": "deployment",
   "capability": "Configure and deploy forms via CLI with CI/CD",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "@formspree/cli (formspree-cli project deploy)",
    "ui": null
   },
   "check": "CLI deploy command creates/updates a form matching the local formspree.json config, confirmed in dashboard",
   "source": "https://help.formspree.io/articles/using-the-cli/the-formspree-cli"
  },
  {
   "id": "cap-29",
   "group": "customization",
   "capability": "Set a custom email sending domain",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form Settings → Email Domain"
   },
   "check": "Submission notification email's From header shows the custom domain instead of formspree.io",
   "source": "https://help.formspree.io/articles/advanced-features/setting-email-domain"
  },
  {
   "id": "cap-31",
   "group": "library",
   "capability": "Browse and copy example forms from the Form Library",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "https://formspree.io/library/"
   },
   "check": "Library page lists downloadable/copyable HTML form templates",
   "source": "https://formspree.io/"
  },
  {
   "id": "cap-32",
   "group": "account",
   "capability": "Add and manage team members on an account",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account Settings → Team"
   },
   "check": "Invited teammate gains login access and appears in the team member list",
   "source": "https://help.formspree.io/articles/account-management/adding-team-members"
  },
  {
   "id": "cap-33",
   "group": "account",
   "capability": "Link client email addresses for managed form setup",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account Settings → Linked Emails"
   },
   "check": "Linked email address becomes selectable as a form's notification recipient without re-verification",
   "source": "https://formspree.io/plans/"
  },
  {
   "id": "cap-34",
   "group": "account",
   "capability": "Enable two-factor authentication",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account Settings → Security"
   },
   "check": "Login subsequently requires a 2FA code after password entry",
   "source": "https://help.formspree.io/articles/account-management/setting-up-2-factor-authentication"
  }
 ],
 "attempts": [
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "llms.txt",
   "task": "Fetch /llms.txt",
   "result": "done",
   "evidence": "https://formspree.io/llms.txt 200 text/plain; H1 '# Formspree'; claim-URL guide for agents; robots.txt points to it",
   "notes": "help.formspree.io/llms.txt 404"
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "robots/aipref",
   "task": "Read robots.txt and Content-Usage",
   "result": "done",
   "evidence": "robots.txt: 'User-agent: *' 'Disallow: /legal', Sitemap; no Content-Usage or Content-signal lines; no Content-Usage header on /",
   "notes": ""
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "markdown docs",
   "task": "Accept: text/markdown and .md URL on help article",
   "result": "done",
   "evidence": "help.formspree.io/articles/using-the-cli/the-formspree-cli with Accept: text/markdown -> 200 content-type text/markdown, vary: accept-encoding, accept; same URL + .md -> 200 text/markdown; formspree.io/ also negotiates markdown (vary: Accept)",
   "notes": "no x-markdown-tokens header"
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "agent cards",
   "task": "AI catalog, A2A card, MCP server card",
   "result": "failed",
   "evidence": "/.well-known/ai-catalog.json, /.well-known/agent-card.json, /.well-known/agent.json, /.well-known/mcp/server-card.json all 404 text/html",
   "notes": ""
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "MCP",
   "task": "Find an MCP endpoint",
   "result": "failed",
   "evidence": "formspree.io/mcp 405 text/html; no MCP mentioned in llms.txt or docs; web search finds no official or third-party Formspree MCP server",
   "notes": "no MCP server"
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "OAuth/agent registration",
   "task": "PRM, AS metadata, auth.md, SKILL.md",
   "result": "failed",
   "evidence": "/.well-known/oauth-protected-resource 404, /.well-known/oauth-authorization-server 404, /auth.md 405 html, /SKILL.md 405 html",
   "notes": "API auth is HTTP Basic with per-form API key (docs)"
  },
  {
   "t": "01:30",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "capability": "OpenAPI",
   "task": "Find an OpenAPI spec",
   "result": "failed",
   "evidence": "/openapi.json 405 text/html; docs list REST endpoints (Forms API) in prose, no spec found",
   "notes": ""
  },
  {
   "t": "03:33",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Register via the web form in a real browser",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Filled First/Last/Email/Password, ticked terms, clicked Register -> reCAPTCHA v2 image challenge 'Select all images with bicycles' (visible_challenge true, screenshot browser/shots/005.png).",
   "notes": "reCAPTCHA picture puzzle on sign-up"
  },
  {
   "t": "04:43",
   "cap": "cap-31",
   "capability": "Browse and copy example forms from the Form Library",
   "task": "Find a contact form template and copy its HTML",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET https://formspree.io/library/ 200 (13 categories); /library/contact/contact-me-form/ with Accept: text/markdown 200 text/markdown containing '<form action=\"https://formspree.io/f/{FORM_ID}\"' HTML and React variants",
   "notes": "public, no account needed",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "04:43",
   "cap": "cap-02",
   "capability": "Claim a pre-configured form via Claim URL",
   "task": "Open claim URL name=Contact+Us&field.email=email,required&action.email=the agent's inbox",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "GET https://formspree.io/claim?... -> 302 https://formspree.io/register; claiming needs a signed-in account; sign-up blocked by reCAPTCHA image challenge",
   "notes": "llms.txt documents the claim URL as the agent route, but it hands the form to a signed-in human",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "04:43",
   "cap": "cap-03",
   "capability": "Submit a form (HTML POST / AJAX)",
   "task": "POST a test submission to a form endpoint",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No form of our own (sign-up blocked). POST /f/xyzzyabc with Accept: application/json -> 404 application/json {\"error\":\"Form not found\",\"errors\":[{\"code\":\"FORM_NOT_FOUND\",...}]}",
   "notes": "endpoint and error shape work without auth; we could not create a form to submit to",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "04:43",
   "cap": "cap-01",
   "capability": "Create a form endpoint",
   "task": "New endpoint https://formspree.io/f/{hashid} returns 200/validation error on POST",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-04",
   "capability": "View submissions in inbox with daily analytics",
   "task": "Dashboard inbox lists the submitted entry with timestamp and analytics chart updates",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-05",
   "capability": "Fetch submissions programmatically",
   "task": "GET returns JSON with submissions array containing the field values and _status delivery info",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/the-forms-api/form-submissions-api / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-06",
   "capability": "Export submissions to CSV/JSON",
   "task": "Downloaded file contains rows matching submissions shown in inbox",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://formspree.io/plans/ / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-07",
   "capability": "Receive email notification per submission",
   "task": "Submitting the form delivers an email to the configured address",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-08",
   "capability": "Send auto-response confirmation email to submitter",
   "task": "Submitter receives a reply email matching the configured subject/body",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/sending-a-confirmation-or-response-email / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-09",
   "capability": "Filter spam submissions (Formshield / reCAPTCHA / honeypot)",
   "task": "Spam-pattern submission is flagged/excluded from inbox and appears only with ?spam=true",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-10",
   "capability": "Define field types and server-side validation rules",
   "task": "Submission missing a required/invalid field is rejected with a validation error response",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-11",
   "capability": "Route submissions by rules (rules engine)",
   "task": "A submission matching a rule condition is routed/flagged/redirected per the configured rule",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/advanced-features/form-rules / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-12",
   "capability": "Send submissions to multiple/custom recipient emails",
   "task": "All listed recipients receive the notification email for one submission",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-13",
   "capability": "Accept file upload attachments on a form",
   "task": "Submission with a file attached stores it and notification email/dashboard shows a download link",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/building-your-form/file-uploads / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-14",
   "capability": "Group forms into projects",
   "task": "New form appears nested under the named project in the dashboard",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-15",
   "capability": "Search submissions by keyword",
   "task": "Search query returns only submissions containing the matching text",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://formspree.io/plans/ / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-16",
   "capability": "Connect notification integrations (Slack, Discord, Telegram)",
   "task": "Submission triggers a message posted into the connected Slack/Discord/Telegram channel",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-17",
   "capability": "Connect productivity integrations (Airtable, Asana, GitHub, Google Sheets, Notion, Trello, Linear)",
   "task": "Submission creates/updates a row, card, or issue in the connected app",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/plugins / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-18",
   "capability": "Connect CRM integrations (HubSpot, Pipedrive, Salesforce, Zoho)",
   "task": "Submission creates a lead/contact/deal record visible in the connected CRM",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/use-hubspot-to-create-leads-and-contacts / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-19",
   "capability": "Connect newsletter integrations (Mailchimp, MailerLite, ConvertKit, Klaviyo, Constant Contact, ActiveCampaign)",
   "task": "Submitter email appears as a new subscriber in the connected list",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/use-mailchimp-to-collect-email-addresses / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-20",
   "capability": "Connect support-desk integrations (Freshdesk, Gladly, Gorgias, Zendesk)",
   "task": "Submission opens a new ticket in the connected helpdesk",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/use-zende[redacted] / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-21",
   "capability": "Send submissions to a custom webhook URL",
   "task": "Configured endpoint receives an HTTP POST with the submission payload, and the signature validates per docs",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/webhooks / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-22",
   "capability": "Trigger Stripe payment on submission",
   "task": "Submission with payment fields creates a Stripe charge/PaymentIntent visible in Stripe dashboard",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/plugins/use-stripe-to-accept-payments-with-sca / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-24",
   "capability": "Verify webhook signatures",
   "task": "Webhook request includes a signature header that validates against the documented HMAC scheme",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/advanced-features/verify-webhook-signatures / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-25",
   "capability": "Restrict form submissions to a specific domain",
   "task": "Submission from an unlisted origin domain is rejected",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-26",
   "capability": "Set custom spam rules / blocklist",
   "task": "Submission matching a custom blocklist pattern is discarded instead of reaching the inbox",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/advanced-features/setting-a-blocklist / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-27",
   "capability": "Customize 'Thank You' redirect page",
   "task": "Non-AJAX submission redirects to the configured custom URL instead of the default Formspree page",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/form-and-project-settings/thank-you-redirect / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-28",
   "capability": "Customize notification/autoresponse email templates",
   "task": "Received notification email shows the custom markup/branding instead of the default template",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/advanced-features/setting-custom-email-templates / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-30",
   "capability": "Configure and deploy forms via CLI with CI/CD",
   "task": "CLI deploy command creates/updates a form matching the local formspree.json config, confirmed in dashboard",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "04:43",
   "cap": "cap-29",
   "capability": "Set a custom email sending domain",
   "task": "Submission notification email's From header shows the custom domain instead of formspree.io",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/advanced-features/setting-email-domain / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-32",
   "capability": "Add and manage team members on an account",
   "task": "Invited teammate gains login access and appears in the team member list",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://help.formspree.io/articles/account-management/adding-team-members / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-33",
   "capability": "Link client email addresses for managed form setup",
   "task": "Linked email address becomes selectable as a form's notification recipient without re-verification",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Paid feature per https://formspree.io/plans/ / https://formspree.io/plans (Free plan: 50 submissions/mo, paid from $15/mo); not reachable anyway: sign-up blocked by reCAPTCHA image challenge",
   "notes": ""
  },
  {
   "t": "04:43",
   "cap": "cap-34",
   "capability": "Enable two-factor authentication",
   "task": "Login subsequently requires a 2FA code after password entry",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Needs a Formspree account (dashboard, claim URL, or CLI deploy key from project Settings); sign-up blocked by reCAPTCHA v2 image challenge",
   "notes": "not attempted further"
  },
  {
   "t": "05:17",
   "cap": "cap-30",
   "capability": "Configure and deploy forms via CLI with CI/CD",
   "task": "Install @formspree/cli and deploy a formspree.json with one form",
   "route": "cli",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "npm i @formspree/cli -> v0.9.6 installed in run dir; 'formspree deploy' without key prints how to add FORMSPREE_DEPLOY_KEY to .env; 'formspree deploy -k bogus' -> '✕ Deploy key is not valid'. A deploy key only comes from a CLI project's Settings in the dashboard, which needs an account (sign-up blocked).",
   "notes": "CLI is fully headless once a human hands over a deploy key",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "05:17",
   "cap": "credentials",
   "capability": "Get API credentials",
   "task": "Get a deploy key (CLI) or form API key (Forms API)",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Deploy key: project Settings in dashboard (CLI docs). Form API keys: dashboard, Professional/Business plans (Form Submissions API docs: 'Available on: Professional, Business plans'). No OAuth, no PRM, no agent registration. Needs an account: sign-up blocked.",
   "notes": ""
  },
  {
   "t": "05:17",
   "cap": "pay",
   "capability": "Buy a plan",
   "task": "Probe 402 rails, discovery, registries, checkout",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "No 402 anywhere: /f/<bad> 404 JSON, /api/0/forms 404 html; x402./mpp./agents.formspree.io do not resolve; /.well-known/ucp 404; /openapi.json 405 html; no 'formspree' in CDP x402 Bazaar or mpp.dev/api/services. Plans page: Free $0 (50 submissions/mo), Personal $15/mo, Professional $30/mo, Business $90/mo. Web app bundle loads Stripe.js / react-stripe-js and calls /api-int/account/setup-intent and /api-int/start-subscription (in-app card form). Checkout needs an account first (sign-up behind reCAPTCHA image challenge).",
   "notes": "payment step itself not reached"
  },
  {
   "t": "05:17",
   "cap": "cancel",
   "capability": "Cancel plan",
   "task": "Find a cancel route",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No plan started. Docs (cancellation-and-refund-policy) describe no API; web app bundle has /account/billing and /api-int/cancel, /api-int/cancel-trial -> cancel lives in the web UI",
   "notes": "not exercised"
  },
  {
   "t": "05:17",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Find a delete route",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "Docs deleting-your-account: 'log into your account, click \"Account\" then \"Delete account\" enter your password and two factor authentication code ... Your account will be deleted within 24 hours'. Web UI only, no API. No account was created, so nothing to delete.",
   "notes": ""
  },
  {
   "t": "05:17",
   "cap": "docs",
   "capability": "Find docs",
   "task": "Find docs and agent guidance",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "llms.txt with claim-URL guide; help.formspree.io articles serve markdown (Accept: text/markdown and .md); Forms API and CLI docs fetched",
   "notes": ""
  }
 ],
 "stale": false,
 "icon": "/logos/formspree.png",
 "monitored": false,
 "verdict": "Needs a person to start: L1 · Needs a person. Our agent stopped first at sign-up, where Register raised a Google reCAPTCHA picture puzzle that stood unsolved. Every path to a form (dashboard, claim URL, formspree deploy with a key) runs through that account, so our agent never reached verification, a key or a form of its own; an unauthenticated POST just returned FORM_NOT_FOUND. Paying and cancelling were never reached either, since Formspree sells Professional and Business only after the same gated sign-up, with no cancel API documented. Docs stand out for an agent reading them: llms.txt with a claim-URL guide, and help articles served as Markdown.",
 "page": "https://agentdrives.com/tools/formspree?via=api"
}