{
 "slug": "heap",
 "name": "Heap",
 "url": "https://heap.io",
 "domain": "heap.io",
 "category": "product-analytics",
 "category_name": "Product analytics",
 "tested_at": "2026-10-12",
 "run": "20261012T091004Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T020518Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261012T091004Z",
   "date": "2026-10-12",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 3,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "obey"
   }
  }
 ],
 "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 and an OpenAPI",
   "have": [
    "llms_txt",
    "openapi"
   ]
  },
  {
   "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": null,
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 90,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 90,
  "security": null,
  "standards": [
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "reported",
 "driver": {
  "version": 3,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "076cd4c65a1a",
  "kb_version": "3+overlay-1353601952",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 3,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "obey"
 },
 "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 (image challenge)",
  "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": "developers.heap.io/llms.txt (200 text/plain); .md pages and Accept: text/markdown give text/markdown with Vary: Accept; OpenAPI 3.1.0 embedded in each server-side reference page."
  },
  "signup": {
   "status": "human",
   "note": "Web form only (heapanalytics.com/signup). On submit a reCAPTCHA v2 image puzzle appeared.",
   "via": ""
  },
  "verify": {
   "status": "",
   "note": "Not reached: sign-up stopped at reCAPTCHA.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Not reached. Docs: API key generated in the web app (Account > Manage > Privacy & Security); POST /api/public/v0/auth_token swaps app_id:api_key for a token.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "Not reached: server-side APIs need your own workspace app_id.",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "card checkout (Chargebee script allowed in sign-up page CSP; not seen)"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": true,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No 402 on any host, no MPP/Stripe Projects/Bazaar listing, no billing API in docs. Pricing: Free up to 10k monthly sessions; Growth 'Sign up and install the free snippet to get an estimate!'. Checkout behind sign-up, not seen. We paid nothing.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "not tested: no plan or trial was started. No billing API documented; cancel presumably in the web app (unknown).",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created, so nothing to delete. Docs list no account-deletion API (only the end-user User Deletion API).",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-12",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": false,
  "llms_txt": true,
  "webhooks": false,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST server-side ingest (track, bulk track, identify, user/account properties) + user deletion",
  "openapi": "3.1.0, embedded per reference page",
  "llms_txt": "developers.heap.io/llms.txt only; heap.io/llms.txt 404"
 },
 "can_do": [
  "Read Heap's developer docs as Markdown via developers.heap.io/llms.txt and .md pages"
 ],
 "cannot_do": [
  {
   "what": "Create a Heap account",
   "why": "reCAPTCHA image puzzle on the only (web) sign-up form"
  },
  {
   "what": "Send events, identify users, build charts",
   "why": "needs a workspace app_id or login, behind sign-up"
  },
  {
   "what": "Get an API key headless",
   "why": "docs say the key is generated in the web app only"
  }
 ],
 "blockers": [
  "reCAPTCHA v2 image puzzle on heapanalytics.com/signup"
 ],
 "tips_for_owner": [
  "Let verified agents sign up",
  "Let agents create API keys headless",
  "Publish an official Heap MCP server",
  "Add a billing API or agent rail",
  "Return problem+json errors on the API"
 ],
 "tips_for_agents": [
  "Start at developers.heap.io/llms.txt; every page has a .md version with an embedded OpenAPI 3.1.0 definition",
  "Server-side endpoints live on heapanalytics.com (EU: c.eu.heap-api.com); Track is limited to 30 requests per 30 s per identity per app_id",
  "A human must sign up (reCAPTCHA) and generate the API key in the web app"
 ],
 "selfhost": null,
 "summary": "Heap's developer docs suit agents: an llms.txt, Markdown pages and an OpenAPI 3.1.0 definition per reference page. The only sign-up route is a web form, and it showed a reCAPTCHA image puzzle to our agent. No account was made and no capability could be driven.",
 "wall": "reCAPTCHA image puzzle on sign-up form",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Heap is a product analytics tool that tracks clicks, events, and user behavior on websites and apps. An AI agent could read all of Heap's developer documentation on its own, but could not create an account because the sign-up form showed a picture puzzle (CAPTCHA) that only a person can solve. With no account, none of the actual analytics features could be tried.",
  "can_do": [
   "Read all of Heap's technical documentation automatically, including a version written for AI tools.",
   "Understand the error messages the API gives back."
  ],
  "cannot_do": [
   {
    "what": "Create a Heap account",
    "why": "The sign-up form shows an image puzzle that only a person can solve."
   },
   {
    "what": "Send data, view charts, or use any analytics feature",
    "why": "All of these require a logged-in account, which could not be created."
   },
   {
    "what": "Get an API key",
    "why": "Heap only hands out API keys inside the web app after logging in."
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Capture",
   "capability": "Autocapture every click, view, swipe, and form fill with one snippet",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Install snippet / mobile SDK; Data Definitions"
   },
   "check": "New pageview/click event appears in Live view without any manual tracking code",
   "source": "https://heap.io/platform/capture; https://developers.heap.io/docs/overview"
  },
  {
   "id": "cap-02",
   "group": "Capture",
   "capability": "Send custom tracked events via client-side track API",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "heap.track (client JS)",
    "mcp": null,
    "cli": null,
    "ui": "Data Definitions > Events"
   },
   "check": "GET event in Live view shows the custom event name and properties just sent",
   "source": "https://developers.heap.io/reference/track"
  },
  {
   "id": "cap-03",
   "group": "Capture",
   "capability": "Send custom events from the server (server-side Track API)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST https://heapanalytics.com/api/track",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Event appears in Live view attributed to the given user_id shortly after POST",
   "source": "https://developers.heap.io/reference/track-1"
  },
  {
   "id": "cap-05",
   "group": "Identity",
   "capability": "Identify a user and merge anonymous history into a known profile",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "heap.identify / POST .../api/identify",
    "mcp": null,
    "cli": null,
    "ui": "Users table"
   },
   "check": "User profile in Users table shows merged pre- and post-identify event history under one identity",
   "source": "https://developers.heap.io/reference/identify; https://developers.heap.io/reference/identify-1"
  },
  {
   "id": "cap-06",
   "group": "Identity",
   "capability": "Attach custom user properties (client or server)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "heap.addUserProperties / POST .../api/add-user-properties",
    "mcp": null,
    "cli": null,
    "ui": "User detail page"
   },
   "check": "User detail page shows the new property key/value after the call",
   "source": "https://developers.heap.io/reference/adduserproperties; https://developers.heap.io/reference/add-user-properties"
  },
  {
   "id": "cap-12",
   "group": "Analysis",
   "capability": "Build charts (Events, Funnels, Retention, Graphs) from captured data",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analyze > Charts"
   },
   "check": "Saved chart definition returns a populated visualization with current event counts",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-14",
   "group": "Analysis",
   "capability": "Visualize user journeys / path comparisons between events",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analyze > Journeys"
   },
   "check": "Journey map renders path branches with counts after selecting a starting event",
   "source": "https://heap.io/platform/journey-maps; https://heap.io/pricing"
  },
  {
   "id": "cap-16",
   "group": "Analysis",
   "capability": "Ask Sense Chat (Contentsquare AI assistant) questions over product analytics data",
   "weight": "core",
   "plan": "growth",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Sense Chat panel"
   },
   "check": "Chat returns a chart/answer referencing actual workspace event data for a typed question",
   "source": "https://heap.io/platform/artificial-intelligence; https://heap.io/pricing"
  },
  {
   "id": "cap-22",
   "group": "Session Replay",
   "capability": "Watch a session replay video of a specific user session",
   "weight": "core",
   "plan": "pro",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Funnel/chart drill-down > Session Replay player"
   },
   "check": "Clicking a dropped-off user in a funnel opens a replay video matching that user's recorded session",
   "source": "https://heap.io/platform/session-replay; https://heap.io/pricing"
  },
  {
   "id": "cap-30",
   "group": "Data Management",
   "capability": "Track events from native/cross-platform mobile apps (iOS, Android, React Native, Flutter)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "Mobile SDKs (Swift/Android/React Native/Flutter track calls)",
    "mcp": null,
    "cli": null,
    "ui": "Mobile install guides"
   },
   "check": "A tap/screen-view event captured on-device appears in Live view tagged with the mobile platform",
   "source": "https://developers.heap.io/docs/ios; https://developers.heap.io/docs/android; https://developers.heap.io/docs/react-native-quick-start; https://developers.heap.io/docs/flutter-quick-start"
  },
  {
   "id": "cap-04",
   "group": "Capture",
   "capability": "Bulk-send many custom events in one call",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST .../api/track/bulk",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "All events in the batch show up in Live view with correct timestamps",
   "source": "https://developers.heap.io/reference/bulk-track"
  },
  {
   "id": "cap-07",
   "group": "Identity",
   "capability": "Bulk-attach user properties for many users at once",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST .../api/add-user-properties/bulk",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Spot-checked users in the batch show the new property values",
   "source": "https://developers.heap.io/reference/bulk-add-user-properties"
  },
  {
   "id": "cap-08",
   "group": "Identity",
   "capability": "Attach custom account-level properties",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST .../api/add-account-properties",
    "mcp": null,
    "cli": null,
    "ui": "Account analytics (Pro+)"
   },
   "check": "Account properties panel shows the new field for the given account id",
   "source": "https://developers.heap.io/reference/add-account-properties"
  },
  {
   "id": "cap-10",
   "group": "Capture",
   "capability": "Attach stateful global event properties to all subsequent events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "heap.addEventProperties",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Events sent after the call carry the added properties until clearEventProperties is called",
   "source": "https://developers.heap.io/reference/addeventproperties"
  },
  {
   "id": "cap-11",
   "group": "Governance",
   "capability": "Delete a user's data from the workspace",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "User Deletion (Delete) API",
    "mcp": null,
    "cli": null,
    "ui": "Privacy / data management settings"
   },
   "check": "Deleted user_id no longer resolves to any events or profile in Live view/Users table",
   "source": "https://developers.heap.io/reference/user-deletion"
  },
  {
   "id": "cap-13",
   "group": "Analysis",
   "capability": "Build conversion funnels across steps",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analyze > Funnels"
   },
   "check": "Funnel chart shows per-step conversion/drop-off counts matching underlying event volume",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-15",
   "group": "Analysis",
   "capability": "Measure retention cohorts over time",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analyze > Retention"
   },
   "check": "Retention chart shows cohort percentages for each period after the triggering event",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-17",
   "group": "Analysis",
   "capability": "Get automatic Top Events influencing a funnel/conversion",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Illuminate > Top Events"
   },
   "check": "Top Events table populates ranked events between two selected funnel steps",
   "source": "https://heap.io/platform/illuminate"
  },
  {
   "id": "cap-18",
   "group": "Analysis",
   "capability": "Run Effort Analysis on a funnel to see interaction counts and time-on-step",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Illuminate > Effort Analysis"
   },
   "check": "Effort Analysis view shows interaction count, time spent, and revisit rate per funnel step",
   "source": "https://heap.io/platform/illuminate"
  },
  {
   "id": "cap-19",
   "group": "Analysis",
   "capability": "Get automatic Group Suggestions (segments that most affect conversion)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Chart/Funnel > Group Suggestions"
   },
   "check": "Running a funnel/graph query surfaces a ranked list of suggested user segments",
   "source": "https://heap.io/platform/illuminate"
  },
  {
   "id": "cap-20",
   "group": "Analysis",
   "capability": "Get Rage Click alerts on repeated rapid clicks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Illuminate > Rage Clicks"
   },
   "check": "A rage-click event/alert appears tied to the element and page where rapid repeated clicks occurred",
   "source": "https://heap.io/platform/illuminate"
  },
  {
   "id": "cap-23",
   "group": "Session Replay",
   "capability": "Search/filter replays by event, path, error, or clicked text",
   "weight": "secondary",
   "plan": "pro",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Session Replay search"
   },
   "check": "Searching by an event name jumps the replay player to the matching timestamp",
   "source": "https://heap.io/platform/session-replay"
  },
  {
   "id": "cap-24",
   "group": "Session Replay",
   "capability": "Share a session replay with a teammate via email/link",
   "weight": "secondary",
   "plan": "pro",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Session Replay player > Share"
   },
   "check": "Recipient receives and can open the shared replay link pointing to the same session",
   "source": "https://heap.io/platform/session-replay"
  },
  {
   "id": "cap-25",
   "group": "Session Replay",
   "capability": "Exclude/mask sensitive data from captured sessions and replays",
   "weight": "secondary",
   "plan": "pro",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Privacy settings; code-level ignore attributes"
   },
   "check": "A field marked ignored/masked shows redacted content (e.g. ****) in replay and Live view",
   "source": "https://heap.io/platform/session-replay; https://developers.heap.io/docs/ignoring-sensitive-data-and-pii"
  },
  {
   "id": "cap-26",
   "group": "Reporting",
   "capability": "Create and customize report charts with alerts",
   "weight": "secondary",
   "plan": "pro",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Reports > Alerts"
   },
   "check": "An alert fires/notifies when the configured chart metric crosses its threshold",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-27",
   "group": "Reporting",
   "capability": "Export chart/query data as CSV",
   "weight": "secondary",
   "plan": "growth",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Chart > Export CSV"
   },
   "check": "Downloaded CSV file contains rows matching the chart's displayed data",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-29",
   "group": "Data Management",
   "capability": "Install Heap via Guides/no-code integrations (GTM, Shopify, WordPress, Segment, etc.)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Install snippet via guide"
   },
   "check": "After following a guide, events begin appearing in Live view for that platform without manual coding",
   "source": "https://developers.heap.io/docs/overview"
  },
  {
   "id": "cap-31",
   "group": "Data Management",
   "capability": "Integrate with 100+ third-party tools (data warehouse, CRM, marketing) to send/receive data",
   "weight": "secondary",
   "plan": "premier",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Integrations marketplace"
   },
   "check": "Enabling an integration shows synced records (e.g. warehouse table rows) matching Heap event data",
   "source": "https://heap.io/platform/integrations; https://heap.io/pricing"
  },
  {
   "id": "cap-32",
   "group": "Data Management",
   "capability": "Define and manage custom events/properties via Plugin Framework",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Heap Event Message Schema (Plugin Framework)",
    "mcp": null,
    "cli": null,
    "ui": "Data Definitions"
   },
   "check": "A plugin-defined transformation produces an event with the expected modified schema in Live view",
   "source": "https://developers.heap.io/docs/plugin-framework"
  },
  {
   "id": "cap-09",
   "group": "Identity",
   "capability": "Bulk-attach account properties for many accounts",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST .../api/add-account-properties/bulk",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Spot-checked accounts show updated property values after the bulk call",
   "source": "https://developers.heap.io/reference/bulk-add-account-properties"
  },
  {
   "id": "cap-21",
   "group": "Analysis",
   "capability": "Get Pageview Suggestions surfacing commonly viewed pageview types",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Illuminate > Pageview Suggestions"
   },
   "check": "Pageview Suggestions list shows top pageview types ranked by traffic",
   "source": "https://heap.io/platform/illuminate"
  },
  {
   "id": "cap-28",
   "group": "Reporting",
   "capability": "Customize chart appearance (colors, grouping, display options)",
   "weight": "peripheral",
   "plan": "growth",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Chart customization panel"
   },
   "check": "Chart re-renders with the selected color/grouping customization applied and persisted on reload",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-33",
   "group": "Governance",
   "capability": "Sign in with SSO",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account/org settings > SSO"
   },
   "check": "User can authenticate into the workspace via the configured SSO provider",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-34",
   "group": "Governance",
   "capability": "Manage advanced user permissions/roles",
   "weight": "peripheral",
   "plan": "premier",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Org settings > Users & permissions"
   },
   "check": "A user assigned a restricted role is blocked from an action permitted to an admin role",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-35",
   "group": "Governance",
   "capability": "Choose region-specific data storage",
   "weight": "peripheral",
   "plan": "premier",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > Data residency"
   },
   "check": "Workspace data storage region setting matches the region selected at provisioning",
   "source": "https://heap.io/pricing"
  },
  {
   "id": "cap-36",
   "group": "Governance",
   "capability": "Maintain multiple projects within one organization",
   "weight": "peripheral",
   "plan": "premier",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Org settings > Projects"
   },
   "check": "A second project can be created and shows isolated event data from the first project",
   "source": "https://heap.io/pricing"
  }
 ],
 "attempts": [
  {
   "t": "01:01",
   "cap": "discovery",
   "capability": "docs",
   "task": "Find developer docs and llms.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.heap.io/llms.txt 200 text/plain lists client-side and server-side API reference as .md; robots.txt of developers.heap.io has \"# LLM Information: https://developers.heap.io/llms.txt\"",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://developers.heap.io/llms.txt"
   }
  },
  {
   "t": "01:02",
   "cap": "discovery",
   "capability": "markdown docs",
   "task": "Accept: text/markdown and .md URL on a reference page",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET developers.heap.io/reference/track-1 with Accept: text/markdown -> 200 content-type text/markdown, vary: Accept, Accept-Encoding; /reference/track-1.md -> 200 text/markdown"
  },
  {
   "t": "01:02",
   "cap": "discovery",
   "capability": "agent cards / aipref",
   "task": "robots.txt Content-Usage, ai-catalog, agent-card, MCP, OAuth PRM",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "www.heap.io/robots.txt: \"User-Agent: *\" + Sitemap, no Content-Usage/Content-signal. /.well-known/ai-catalog.json and /.well-known/agent-card.json 404 text/html on www.heap.io; agent-card 404 on heapanalytics.com; heapanalytics.com/.well-known/oauth-protected-resource 404 html; www.heap.io/llms.txt 404; pay_probe: mcp.heap.io no such host, heap.io/mcp 308 to site. No MCP server found."
  },
  {
   "t": "02:44",
   "cap": "signup",
   "capability": "sign up",
   "task": "Create a Heap free-trial account (web form is the only route)",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "heapanalytics.com/signup: React form (first/last name, work email, password, optional phone, company, size, storage region, ToS). Headless: page loads google.com/recaptcha/api.js, no documented sign-up API. Browser: after Start Free Trial a reCAPTCHA image puzzle (\"Select all images with bicycles\") appeared (pw visible_challenge: true, shot 003.png).",
   "notes": "First goto returned 504 Gateway Time-out, one retry loaded. Human-needed: reCAPTCHA v2 image challenge.",
   "quality": {
    "error_legibility": "n/a",
    "recoverable": "no"
   }
  },
  {
   "t": "02:44",
   "cap": "verify",
   "capability": "verify",
   "task": "verify after sign-up",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": ""
  },
  {
   "t": "02:44",
   "cap": "credentials",
   "capability": "credentials",
   "task": "credentials after sign-up",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": ""
  },
  {
   "t": "02:44",
   "cap": "first_call",
   "capability": "The first call",
   "task": "The first call after sign-up",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": ""
  },
  {
   "t": "02:44",
   "cap": "first_action",
   "capability": "The first action",
   "task": "The first action after sign-up",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": ""
  },
  {
   "t": "03:15",
   "cap": "discovery",
   "capability": "public API error shapes",
   "task": "Unauthenticated calls on documented server-side endpoints",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST heapanalytics.com/api/track without app_id -> 400 text/plain \"postBody should have required property 'app_id'\"; POST /api/public/v0/auth_token without Basic auth -> 401 text/plain \"Unauthorized\"; POST /api/public/v0/user_deletion without token -> 401 text/plain \"Unauthorized\". No WWW-Authenticate, no 402, no problem+json, no RateLimit headers.",
   "notes": "Each API reference .md embeds an OpenAPI definition (\"openapi\": \"3.1.0\", server https://heapanalytics.com/).",
   "quality": {
    "error_legibility": "clear",
    "docs_match": "match",
    "docs_url": "https://developers.heap.io/reference/track-1.md"
   }
  },
  {
   "t": "03:16",
   "cap": "pay",
   "capability": "pay step public probes",
   "task": "Find an agent way to pay: 402, registries, billing API, checkout",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pay_probe.json: no 402 challenges, no MPP/Stripe Projects/Bazaar listings, no x402./mpp./agents./api. hosts, heap.io/llms.txt 404. pay_tx.json: refused, \"no 402 on the product's own domain asks for USDC\". Own probes: /api/track, /api/public/v0/* answer 400/401 text/plain, no 402. developers.heap.io/llms.txt lists no billing API. Pricing page: Free (up to 10k monthly sessions, Get Started -> heapanalytics.com/signup), Growth (\"Sign up and install the free snippet to get an estimate!\"), Pro, higher tiers. Sign-up page CSP allows js.chargebee.com (card checkout lead, not seen: behind sign-up).",
   "notes": "Checkout and whether the trial needs a card could not be seen: sign-up stopped at reCAPTCHA. Sign-up form itself asks no card."
  },
  {
   "t": "03:16",
   "cap": "cancel",
   "capability": "cancel plan",
   "task": "Cancel a started plan",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "not tested: no plan or trial was started (no account: sign-up stopped at reCAPTCHA). No billing API in developers.heap.io/llms.txt."
  },
  {
   "t": "03:16",
   "cap": "delete",
   "capability": "delete account",
   "task": "Delete the account",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No account was created (sign-up stopped at reCAPTCHA image puzzle), so nothing to delete. Docs: only a User Deletion API for end users in a workspace (developers.heap.io/reference/user-deletion.md); no account-deletion API listed."
  }
 ],
 "stale": false,
 "icon": "/logos/heap.png",
 "monitored": false,
 "verdict": "Needs a person to get in: L1 · Needs a person. Our agent read Heap's docs, which already suit an agent well: an llms.txt, Markdown pages, and an OpenAPI definition on every reference page. Sign-up only runs through a web form, and submitting it showed a reCAPTCHA image puzzle our agent couldn't get past. No account was made, so verifying, getting a key and calling the API were never reached. Paying wasn't tested either: checkout sits behind the same sign-up, and Heap's Growth pricing asks a person to sign up for an estimate. With no account, there was nothing to cancel or delete.",
 "page": "https://agentdrives.com/tools/heap?via=api"
}