{
 "slug": "typeform",
 "name": "Typeform",
 "url": "https://typeform.com",
 "domain": "typeform.com",
 "category": "forms",
 "category_name": "Forms",
 "tested_at": "2026-10-06",
 "run": "20261006T095637Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261001T212755Z",
   "date": "2026-10-01",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   },
   "drives": 2
  },
  {
   "run": "20261006T095637Z",
   "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": 3,
  "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 and an MCP server",
   "have": [
    "llms_txt",
    "mcp"
   ]
  },
  {
   "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/10",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 75,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 75,
  "security": null,
  "standards": [
   {
    "standard": "MCP client registration",
    "state": "current",
    "behind": null,
    "value": "cimd"
   }
  ]
 },
 "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": 3,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Google reCAPTCHA (invisible) on the Okta sign-up form, plus Typeform's registration inline hook",
  "visible": false,
  "type": "network",
  "human": null,
  "how": "Cause not stated (registration hook, E0000135 'Registration denied'): tell denied sign-ups why. If the invisible reCAPTCHA score feeds the hook, check the Web Bot Auth signature on the sign-up request and let signed agents through, or offer a documented sign-up API with email verification.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "form"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-13"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "Developer docs at www.typeform.com/developers/ (Create, Responses, Webhooks, Embed APIs; MCP server docs with ~66 tools) fetched headless. llms.txt at www.typeform.com/llms.txt covers marketing pages only. No OpenAPI found, no markdown negotiation."
  },
  "signup": {
   "status": "blocked",
   "note": "Web form only (Okta widget with invisible reCAPTCHA, no visible challenge). Submitting in our agent's browser got 400 E0000135 'Registration denied' from Typeform's registration inline hook; the UI said 'Something went wrong. You might already have an account'. No reason given."
  },
  "verify": {
   "status": "",
   "note": "No account was created; no mail arrived.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Personal access tokens are made in the web account; OAuth client registration (DCR and CIMD) works headless, but the token needs a logged-in user's consent at admin.typeform.com/oauth/authorize. No device flow.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "Every API and MCP call needs a token (401 AUTHENTICATION_FAILED / 401 Bearer resource_metadata).",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "No account.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [],
   "rail_ids": [],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No agent payment rail: no 402 on the API, x402./mpp./agents. subdomains redirect to typeform.com, /.well-known/ucp 403, not in the MPP registry or the x402 Bazaar. Paid plans (Basic 39 USD/mo, Plus 79, Business 129) are bought inside the web app after sign-up; checkout not reached because sign-up was denied.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "grade": "n/a",
   "note": "No plan started (no account).",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created, nothing to delete. One OAuth client was registered via DCR; there is no documented route to delete it.",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [],
  "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": false,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST: Create, Responses, Webhooks APIs; personal access token or OAuth",
  "mcp": "official, Streamable HTTP, OAuth, ~66 tools listed in docs (not verified via tools/list)",
  "llms_txt": "marketing pages only, no developer links",
  "sdk": "Embed SDK documented"
 },
 "can_do": [
  "Read Typeform's developer and MCP docs headless",
  "Register an OAuth client headless (DCR or a client metadata document) for the MCP server"
 ],
 "cannot_do": [
  {
   "what": "Create a Typeform account",
   "why": "Sign-up is a web form; our submission was denied by the registration inline hook (E0000135) with no reason given"
  },
  {
   "what": "Get an API token or call the API/MCP server",
   "why": "Tokens need an account (PAT in web settings, or OAuth consent by a logged-in user)"
  },
  {
   "what": "Any form, response or analytics capability",
   "why": "No account"
  }
 ],
 "blockers": [
  "Sign-up denied by Typeform's registration inline hook (Okta E0000135) after invisible reCAPTCHA; no headless sign-up route"
 ],
 "tips_for_owner": [
  "Tell denied sign-ups why they were refused",
  "Let verified agents through sign-up",
  "Offer a headless credential path for agents",
  "Publish an OpenAPI document"
 ],
 "tips_for_agents": [
  "Typeform's MCP server is at https://api.typeform.com/mcp (Streamable HTTP only, OAuth); call accounts-list_accounts first, per the docs.",
  "OAuth clients can self-register (DCR or a client metadata document), but you still need a human with a Typeform account to consent or to make a personal access token.",
  "If sign-up shows 'You might already have an account', check the network response: E0000135 'Registration denied' is a refusal, not an existing account."
 ],
 "selfhost": null,
 "summary": "Typeform has a documented REST API and an official MCP server with proper OAuth discovery (PRM, CIMD, DCR), but an agent cannot get an account: our agent's browser sign-up was silently denied by Typeform's registration inline hook (E0000135) with a misleading 'you might already have an account' message. Without an account there is no token, so no form, response or analytics capability could be driven.",
 "wall": "Sign-up denied by registration hook, no reason",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Typeform lets anyone build and run online forms, with a documented API and an official MCP server for AI agents. An agent testing it on its own could read the docs and start registering as a developer app, but got stuck right at account creation: the sign-up form silently refused the request with no real explanation. Without an account, nothing else (making forms, collecting or analyzing responses, automations, payments) could be tried.",
  "can_do": [
   "Read Typeform's developer and AI-integration documentation on its own",
   "Start the technical registration step for connecting an AI app"
  ],
  "cannot_do": [
   {
    "what": "Create a Typeform account",
    "why": "The sign-up form rejected the attempt with a vague, misleading error message"
   },
   {
    "what": "Get an API key or use the AI tool connection",
    "why": "Both require a Typeform account, which could not be created"
   },
   {
    "what": "Build, publish, or manage forms, responses, or automations",
    "why": "All of these require being logged into an account"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Forms",
   "capability": "Create a form",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /forms",
    "mcp": "forms-public_create_form",
    "cli": null,
    "ui": "Typeform builder"
   },
   "check": "GET /forms/{form_id} returns the new form with matching title",
   "source": "https://www.typeform.com/developers/create/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-02",
   "group": "Forms",
   "capability": "Build AI-generated form from a prompt",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "AI form builder in Typeform admin"
   },
   "check": "New form appears in workspace with fields matching the prompt",
   "source": "https://www.typeform.com/ (\"Build forms at the drop of a prompt\")"
  },
  {
   "id": "cap-03",
   "group": "Forms",
   "capability": "Edit form fields and logic (add/update/delete blocks, conditional logic)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /forms/{form_id}",
    "mcp": "forms-public_validate_patch, forms-public_patch_form",
    "cli": null,
    "ui": "Typeform builder"
   },
   "check": "GET /forms/{form_id} shows updated fields/logic_jumps",
   "source": "https://www.typeform.com/developers/create/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-04",
   "group": "Forms",
   "capability": "Publish a form draft to go live",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "forms-public_publish_form",
    "cli": null,
    "ui": "Typeform builder publish button"
   },
   "check": "Form's public URL serves the published version, not the draft",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-06",
   "group": "Forms",
   "capability": "Delete a form",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /forms/{form_id}",
    "mcp": "forms-public_delete_form",
    "cli": null,
    "ui": "Typeform builder form list"
   },
   "check": "GET /forms/{form_id} returns 404",
   "source": "https://www.typeform.com/developers/create/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-07",
   "group": "Responses",
   "capability": "Collect form responses from respondents",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "public form URL / embed"
   },
   "check": "GET /forms/{form_id}/responses shows new submission",
   "source": "https://www.typeform.com/developers/responses/"
  },
  {
   "id": "cap-08",
   "group": "Responses",
   "capability": "Retrieve form responses on demand",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /forms/{form_id}/responses",
    "mcp": "insights-public_list (per-field only)",
    "cli": null,
    "ui": "Typeform Results tab"
   },
   "check": "Response JSON returned matches submitted answers",
   "source": "https://www.typeform.com/developers/responses/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-09",
   "group": "Responses",
   "capability": "Analyze responses (aggregates, time series, top rankings, sentiment/topic analysis)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "insights-public_discover, insights-public_aggregate, insights-public_timeseries, insights-public_toplist",
    "cli": null,
    "ui": "Typeform Results/Analyze tab"
   },
   "check": "insights-public_aggregate returns counts/averages matching known response set",
   "source": "https://www.typeform.com/developers/mcp/tools/; https://www.typeform.com/ (Advanced Analytics)"
  },
  {
   "id": "cap-11",
   "group": "Automations/Growth Flow",
   "capability": "Create and publish automated workflows (email, webhook, delay, integration steps) triggered by form events",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "automations-public_create_automation, automations-public_add_email_step, automations-public_add_webhook_step, automations-public_add_delay_step, automations-public_add_integration_step, automations-public_publish_automation",
    "cli": null,
    "ui": "Typeform Growth Flow / Automations"
   },
   "check": "automations-public_get_automation shows published automation with configured steps",
   "source": "https://www.typeform.com/developers/mcp/tools/; https://www.typeform.com/ (Growth Flow)"
  },
  {
   "id": "cap-13",
   "group": "Lead capture",
   "capability": "Accept payments in a form (Stripe/PayPal)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder payment field"
   },
   "check": "Test payment submission appears as a completed transaction in connected Stripe/PayPal account",
   "source": "https://www.typeform.com/ (Instant Lead Capture)"
  },
  {
   "id": "cap-05",
   "group": "Forms",
   "capability": "Duplicate a form",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "forms-public_duplicate_form",
    "cli": null,
    "ui": "Typeform builder form list"
   },
   "check": "New form ID exists with same fields/theme, unpublished, 3rd-party connections cleared",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-10",
   "group": "Responses",
   "capability": "Capture video and audio answers from respondents",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder video question type"
   },
   "check": "Response includes a video/audio answer field playable in Results tab",
   "source": "https://www.typeform.com/ (Deeper Insights); https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-12",
   "group": "Automations/Growth Flow",
   "capability": "Pause/stop a running automation",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "automations-public_pause_automation",
    "cli": null,
    "ui": "Typeform Automations list"
   },
   "check": "automations-public_get_automation shows trigger disabled",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-14",
   "group": "Lead capture",
   "capability": "Collect e-signatures in a form",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder signature field"
   },
   "check": "Response includes a signature image/file for the field",
   "source": "https://www.typeform.com/ (Instant Lead Capture)"
  },
  {
   "id": "cap-15",
   "group": "Lead capture",
   "capability": "Schedule meetings from a form (Google Calendar/Calendly)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder scheduling field/integration"
   },
   "check": "Connected calendar shows a new booked event after submission",
   "source": "https://www.typeform.com/ (Instant Lead Capture); https://www.typeform.com/connect/google-calendar/"
  },
  {
   "id": "cap-16",
   "group": "Contacts",
   "capability": "Manage contacts (create, update, delete, bulk upsert)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "contacts-public_create_contact, contacts-public_update_contact, contacts-public_delete_contact, contacts-public_bulk_upsert_contacts",
    "cli": null,
    "ui": "Typeform Contacts & Automations add-on"
   },
   "check": "contacts-public_get_contact returns the created/updated contact",
   "source": "https://www.typeform.com/developers/mcp/tools/; https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-17",
   "group": "Contacts",
   "capability": "Enrich contact/lead data automatically",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform Growth Flow lead enrichment"
   },
   "check": "Contact record shows enriched fields (e.g. company, title) after email submission",
   "source": "https://www.typeform.com/ (Data Enrichment); https://help.typeform.com/hc/en-us/articles/27232463443604-Typeform-for-Growth"
  },
  {
   "id": "cap-18",
   "group": "Contacts",
   "capability": "Create and manage contact lists/segments",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "contacts-public_create_contacts_list, contacts-public_update_contacts_list, contacts-public_delete_contacts_list",
    "cli": null,
    "ui": "Typeform Contacts & Automations add-on"
   },
   "check": "contacts-public_get_contacts_list returns the list with its filter/sort settings",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-19",
   "group": "Contacts",
   "capability": "Define custom contact properties and map form fields to them",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "contacts-public_bulk_create_custom_contacts_database_properties, contacts-public_create_form_property_mappings",
    "cli": null,
    "ui": "Typeform Contacts & Automations add-on"
   },
   "check": "contacts-public_list_contacts_database_properties shows the new property; mapped form submissions populate it",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-20",
   "group": "Research Flow",
   "capability": "Run AI-moderated research studies (recruit, interview, synthesize)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform Research Flow"
   },
   "check": "Research project dashboard shows completed interviews and a generated insights report",
   "source": "https://www.typeform.com/ (Research Flow); https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-21",
   "group": "Research Flow",
   "capability": "Recruit survey/interview participants from a built-in panel",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform Research Flow panel targeting"
   },
   "check": "Research project shows recruited participant count matching targeting criteria",
   "source": "https://www.typeform.com/ (Verified Panel Recruitment); https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-22",
   "group": "Webhooks",
   "capability": "Deliver responses to a URL via webhook",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /forms/{form_id}/webhooks/{tag}",
    "mcp": "automations-public_add_webhook_step, automations-public_update_webhook_step",
    "cli": null,
    "ui": "Typeform Connect panel"
   },
   "check": "Target URL receives POST payload with the new response JSON",
   "source": "https://www.typeform.com/developers/webhooks/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-23",
   "group": "Theming",
   "capability": "Create and edit form themes",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /themes/{theme_id}",
    "mcp": "themes-create_theme, themes-update_theme",
    "cli": null,
    "ui": "Typeform builder Design tab"
   },
   "check": "GET /themes/{theme_id} reflects updated colors/fonts; live forms using it re-render",
   "source": "https://www.typeform.com/developers/create/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-24",
   "group": "Theming",
   "capability": "Apply premium/gallery themes or brand-kit themes to a form",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "themes-public_list_themes, themes-get_theme (apply via patch set_theme)",
    "cli": null,
    "ui": "Typeform builder Design tab"
   },
   "check": "GET /forms/{form_id} shows theme id set to the chosen theme",
   "source": "https://www.typeform.com/developers/mcp/tools/; https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-25",
   "group": "Templates",
   "capability": "Start a form from a template",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform templates gallery"
   },
   "check": "New form pre-populated with the template's fields appears in workspace",
   "source": "https://www.typeform.com/pricing/; https://www.typeform.com/templates/"
  },
  {
   "id": "cap-26",
   "group": "Embed",
   "capability": "Embed a form into a website or web app",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "@typeform/embed SDK snippet"
   },
   "check": "Embedded widget loads the form on the host page and records a response",
   "source": "https://www.typeform.com/developers/embed/"
  },
  {
   "id": "cap-27",
   "group": "Images",
   "capability": "Upload and attach images/videos to a form",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /images",
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder media picker"
   },
   "check": "GET /images/{image_id} returns the uploaded asset; form field references it",
   "source": "https://www.typeform.com/developers/create/"
  },
  {
   "id": "cap-28",
   "group": "Hidden fields",
   "capability": "Pass hidden fields into a form via URL parameters",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder Hidden Fields setting"
   },
   "check": "Response record includes the hidden field value passed in the URL",
   "source": "https://www.typeform.com/developers/create/hidden-fields/; https://www.typeform.com/developers/get-started/"
  },
  {
   "id": "cap-29",
   "group": "Workspaces",
   "capability": "List and organize forms into workspaces",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "workspaces-list_workspaces, forms-public_list_forms",
    "cli": null,
    "ui": "Typeform admin workspace switcher"
   },
   "check": "workspaces-list_workspaces returns the workspace with correct form count",
   "source": "https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-35",
   "group": "Localization",
   "capability": "Offer a form in multiple languages",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder Translations"
   },
   "check": "Form renders in the selected alternate language via locale URL parameter",
   "source": "https://www.typeform.com/ (Multi-Language Support); https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-30",
   "group": "Collaboration",
   "capability": "Add teammates/seats to an organization or workspace",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform admin Members settings"
   },
   "check": "New member appears in workspace member list with assigned role",
   "source": "https://help.typeform.com/hc/en-us/articles/360029295052-Add-users-to-Organizations-and-Workspaces; https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-31",
   "group": "Branding",
   "capability": "Remove Typeform branding / use custom subdomain and domain",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform admin Brand settings"
   },
   "check": "Published form URL uses custom subdomain and page has no Typeform footer",
   "source": "https://help.typeform.com/hc/en-us/articles/360029262372-Remove-Typeform-branding; https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-32",
   "group": "Branding",
   "capability": "Create a brand kit (logos, fonts, assets)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "themes-public_list_themes (brand-kit themes)",
    "cli": null,
    "ui": "Typeform admin Brand kits"
   },
   "check": "Brand kit assets appear selectable when designing a new form theme",
   "source": "https://help.typeform.com/hc/en-us/articles/6903894666004-Apply-brand-assets-and-visuals-to-your-forms-with-brand-kits; https://www.typeform.com/pricing/"
  },
  {
   "id": "cap-33",
   "group": "Integrations",
   "capability": "Connect third-party apps (Slack, HubSpot, Mailchimp, Zapier, Salesforce, etc.)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "automations-public_add_integration_step",
    "cli": null,
    "ui": "Typeform Connect panel"
   },
   "check": "Connected app shows a new record/message triggered by a form submission",
   "source": "https://www.typeform.com/connect/; https://www.typeform.com/developers/mcp/tools/"
  },
  {
   "id": "cap-34",
   "group": "Security/Access",
   "capability": "Enable reCAPTCHA on a form",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Typeform builder Security settings"
   },
   "check": "Public form shows reCAPTCHA challenge before submission is accepted",
   "source": "https://www.typeform.com/pricing/ (Talent plan Features)"
  }
 ],
 "attempts": [
  {
   "t": "00:53",
   "cap": "discovery",
   "capability": "robots/aipref",
   "task": "robots.txt Content-Usage",
   "route": "none",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "www.typeform.com/robots.txt 200: User-agent: * with 3 Disallow (query slugs) + Sitemap; no Content-Usage or Content-signal lines",
   "notes": "no aipref"
  },
  {
   "t": "00:53",
   "cap": "discovery",
   "capability": "llms.txt",
   "task": "find llms.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://www.typeform.com/llms.txt 200 text/plain 4669 bytes, H1 '# Typeform'; marketing links only, no developer/API links",
   "notes": "developer.typeform.com/llms.txt redirects to HTML /developers/"
  },
  {
   "t": "00:53",
   "cap": "discovery",
   "capability": "cards",
   "task": "ai-catalog / agent-card / ucp",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "www.typeform.com/.well-known/ai-catalog.json, agent-card.json, ucp: 403 application/xml S3 AccessDenied; api.typeform.com/mcp/server-card 404",
   "notes": "no cards"
  },
  {
   "t": "00:53",
   "cap": "discovery",
   "capability": "MCP discover",
   "task": "POST server/discover to https://api.typeform.com/mcp",
   "route": "mcp",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "401 WWW-Authenticate: Bearer resource_metadata=https://api.typeform.com/.well-known/oauth-protected-resource; PRM 200 JSON resource=https://api.typeform.com/mcp; AS metadata: client_id_metadata_document_supported true, registration_endpoint present, grant types authorization_code+refresh_token, PKCE S256, no device flow",
   "notes": "auth required before discover; OAuth needs browser consent at admin.typeform.com/oauth/authorize"
  },
  {
   "t": "05:32",
   "cap": "signup",
   "capability": "sign up",
   "task": "find a headless sign-up route",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "Developer docs (personal-access-token page): 'To use our APIs, you need a Typeform account, ... head to www.typeform.com to register'. No sign-up API, CLI or agent registration (no /auth.md, AS metadata has no agent_auth block).",
   "notes": "web form only"
  },
  {
   "t": "05:32",
   "cap": "signup",
   "capability": "sign up",
   "task": "Sign up with email in the browser at admin.typeform.com/signup-email",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "Okta sign-in widget form with invisible reCAPTCHA (no visible challenge). Two submits (first plus one retry to read the error) both showed 'Something went wrong. You might already have an account registered with this email, so you could try to log in.' Network: POST auth.typeform.com/api/v1/registration/.../register -> 400 errorCode E0000135 'Registration cannot be completed at this time', errorCauses 'Registration denied' domain 'inline-hook'. No mail arrived at the address.",
   "notes": "Rejection by Typeform's registration inline hook; the response does not say which signal (bot score, IP, or email) caused it. UI message is misleading (suggests an existing account).",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   }
  },
  {
   "t": "06:33",
   "cap": "credentials",
   "capability": "get API credentials",
   "task": "Register an OAuth client and start the authorization-code flow for the MCP server",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "POST https://api.typeform.com/oauth/register (DCR) -> 201-style JSON client_id issued, token_endpoint_auth_method none. AS metadata also has client_id_metadata_document_supported true (CIMD). admin.typeform.com/oauth/authorize with PKCE S256 + resource=https://api.typeform.com/mcp, not logged in -> page 'You don't have access to this workspace. Contact the workspace owner to request access.'",
   "notes": "Client registration is headless; the token needs a logged-in Typeform user to consent, and we have no account (sign-up denied). Only grants: authorization_code, refresh_token; no device flow. Personal access tokens are generated in the web account only.",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "06:33",
   "cap": "credentials",
   "capability": "get API credentials",
   "task": "Personal access token",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "Docs: 'Log in to your account at Typeform ... click Personal tokens ... Generate a new token'. Requires an account; sign-up was denied.",
   "notes": ""
  },
  {
   "t": "06:33",
   "cap": "pay",
   "capability": "pay step",
   "task": "probe agent payment rails",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "api.typeform.com/forms unauthenticated -> 401 JSON AUTHENTICATION_FAILED, no PAYMENT-REQUIRED/WWW-Authenticate Payment; x402./mpp./agents.typeform.com -> 302 https://typeform.com/; /.well-known/ucp 403 S3 AccessDenied; /auth.md, /SKILL.md 404; api.typeform.com/openapi.json 404; not in mpp.dev/api/services nor CDP x402 Bazaar; pricing page has no x402/402/USDC/agentic commerce text. Pricing: Basic 39 USD/mo, Plus 79, Business 129, Growth plans with '14 days' trial wording; 'Get Basic' links to /signup; 'Try our Free plan'.",
   "notes": "Purchase is inside the web app after sign-up; checkout not reached because sign-up was denied."
  },
  {
   "t": "06:59",
   "cap": "cap-01",
   "capability": "Create a form",
   "task": "Create a form on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-02",
   "capability": "Build AI-generated form from a prompt",
   "task": "Build AI-generated form from a prompt on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-03",
   "capability": "Edit form fields and logic (add/update/delete blocks, conditional logic)",
   "task": "Edit form fields and logic (add/update/delete blocks, conditional logic) on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-04",
   "capability": "Publish a form draft to go live",
   "task": "Publish a form draft to go live on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-06",
   "capability": "Delete a form",
   "task": "Delete a form on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-07",
   "capability": "Collect form responses from respondents",
   "task": "Collect form responses from respondents on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-08",
   "capability": "Retrieve form responses on demand",
   "task": "Retrieve form responses on demand on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-09",
   "capability": "Analyze responses (aggregates, time series, top rankings, sentiment/topic analysis)",
   "task": "Analyze responses (aggregates, time series, top rankings, sentiment/topic analysis) on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-11",
   "capability": "Create and publish automated workflows (email, webhook, delay, integration steps) triggered by form events",
   "task": "Create and publish automated workflows (email, webhook, delay, integration steps) triggered by form events on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "cap-13",
   "capability": "Accept payments in a form (Stripe/PayPal)",
   "task": "Accept payments in a form (Stripe/PayPal) on a free account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No Typeform account: web sign-up denied (Okta inline hook E0000135), and every API/MCP route needs a personal access token or OAuth consent by a logged-in user.",
   "notes": "not attempted past the access wall"
  },
  {
   "t": "06:59",
   "cap": "verify",
   "capability": "verify",
   "task": "verify",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Depends on an account; sign-up denied.",
   "notes": ""
  },
  {
   "t": "06:59",
   "cap": "first_call",
   "capability": "The first call",
   "task": "The first call",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Depends on an account; sign-up denied.",
   "notes": ""
  },
  {
   "t": "06:59",
   "cap": "first_action",
   "capability": "The first action",
   "task": "The first action",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Depends on an account; sign-up denied.",
   "notes": ""
  },
  {
   "t": "06:59",
   "cap": "discovery",
   "capability": "OpenAPI",
   "task": "find an OpenAPI document",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "api.typeform.com/openapi.json 404; developer reference pages (e.g. /developers/create/reference/create-form/) contain no openapi/swagger link",
   "notes": "unknown whether a spec exists elsewhere"
  },
  {
   "t": "06:59",
   "cap": "discovery",
   "capability": "markdown docs",
   "task": "Accept: text/markdown and .md URL on developer docs",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "/developers/get-started/ with Accept: text/markdown -> content-type text/html, vary: Accept-Encoding; /developers/get-started.md -> 404",
   "notes": ""
  },
  {
   "t": "06:59",
   "cap": "docs",
   "capability": "docs",
   "task": "Read developer docs",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "www.typeform.com/developers/: Create, Responses, Webhooks, Embed APIs (103 doc links), MCP server docs (/developers/mcp/: Streamable HTTP at https://api.typeform.com/mcp, OAuth 2.0, ~66 tools on /developers/mcp/tools/), PAT guide",
   "notes": "fetched headless"
  }
 ],
 "stale": false,
 "icon": "/logos/typeform.png",
 "monitored": false,
 "verdict": "A person has to set this up: L1 · Needs a person. Our agent stopped at signup, not at a visible challenge. The Okta form carries an invisible reCAPTCHA. Typeform's own registration hook denied the attempt with \"Registration denied,\" and the app showed a misleading message suggesting an account already existed. Docs, the REST API and the official MCP server are all well documented and reachable without a browser. With no account there was no token, so no form, response or analytics work could be driven. Paying, cancelling and deleting an account were all out of reach for the same reason.",
 "page": "https://agentdrives.com/tools/typeform?via=api"
}