{
 "slug": "mixpanel",
 "name": "Mixpanel",
 "url": "https://mixpanel.com",
 "domain": "mixpanel.com",
 "category": "product-analytics",
 "category_name": "Product analytics",
 "tested_at": "2026-10-06",
 "run": "20261006T022626Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T022626Z",
   "date": "2026-10-06",
   "level": 3,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  }
 ],
 "level": 3,
 "level_name": "Does the work",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "part",
   "text": "Work done: 50% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: stopped at the card form",
   "value": "ready",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "part",
   "text": "Work done: 50% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: stopped at the card form",
   "value": "ready",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "browser_signup",
   "label": "Sign-up in a browser",
   "routes": [],
   "minutes": 9.5,
   "core": "2/4"
  }
 ],
 "minutes": 9.5,
 "next": {
  "to": 4,
  "text": "Next: do 80% of the core work (now 50%)"
 },
 "stop": "delete",
 "core": "2/4",
 "scores": {
  "coverage": 38,
  "reliability": 100,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP",
    "state": "behind",
    "behind": 1,
    "value": "2025-11-25"
   },
   {
    "standard": "MCP discovery",
    "state": "behind",
    "behind": null,
    "value": "legacy"
   },
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.2"
   },
   {
    "standard": "A2A",
    "state": "behind",
    "behind": 1,
    "value": "0.3"
   }
  ]
 },
 "reliability_method": "first-try",
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": 50,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "59d395064c20",
  "kb_version": "2",
  "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": 1,
 "drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "docs.mixpanel.com/llms.txt (65 KB) lists every page as .md and 14 OpenAPI specs; Accept: text/markdown returns markdown; docs MCP at docs.mixpanel.com/mcp speaks 28 Jul 2026."
  },
  "signup": {
   "status": "browser",
   "note": "No sign-up API or agent registration. Web form at /register/ (email + terms), then a 3-question onboarding and an organization form; no CAPTCHA met."
  },
  "verify": {
   "status": "browser",
   "note": "Magic-link mail arrived within a minute; the link opens a 'Log in to Mixpanel' page with a Log In button."
  },
  "credentials": {
   "status": "browser",
   "note": "First credential needs the web UI: service account (secret shown once) in Project Settings > Service Accounts, project token in Project Settings. MCP OAuth needs a browser consent page (DCR only, no device flow). The GDPR API needs a separate personal token generated in the UI.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /api/app/me with service-account basic auth -> 200."
  },
  "first_action": {
   "status": "headless",
   "note": "POST api.mixpanel.com/import -> num_records_imported 6, read back by the export API."
  },
  "pay": {
   "status": "browser",
   "grade": "P2",
   "rails": [
    "Stripe Elements card form in the in-app Upgrade Plan modal"
   ],
   "rail_ids": [
    "stripe-elements",
    "card"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No x402/MPP/L402 (subdomains do not resolve, Query API 402 carries no payment header, not in Bazaar or mpp.dev). Growth costs $0.00 for the first 1M events but asks for a card ('Why is a credit card required if my plan costs $0?'). No billing API or MCP billing tool. Stopped at the card form."
  },
  "cancel": {
   "status": "n/a",
   "grade": "n/a",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "No paid plan was started.",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "No delete API exists (14 OpenAPI specs and docs MCP search confirm this is UI-only). Settings > Org > Delete Organization > Submit queues deletion, with a confirmation mail saying data is deleted after 90 days. Right after submitting, the service account still got 200 from /api/app/me and the export API still returned the ingested events: login/API access was not rejected during the drive, so deletion cannot be confirmed as done.",
   "left": "stuck",
   "account": true
  }
 },
 "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
   },
   {
    "id": "card",
    "name": "Card checkout",
    "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": true,
  "cli": false,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST: ingestion, export, query, lexicon, flags, experiments, GDPR, service accounts, warehouse, pipelines",
  "openapi": "14 specs; 3.0.2/3.0.3 and 3.1.0 mixed; flag cohort_definition is an opaque object",
  "mcp": "official, 66 tools, the older 25 Nov 2025 spec; query tools 402 on free",
  "llms_txt": "docs.mixpanel.com/llms.txt; cards cover the docs MCP only, not the product MCP"
 },
 "can_do": [
  "Send events and user profiles with the Ingestion API and read them back with the raw export API",
  "Create, enable, target by user property, evaluate and delete feature flags over the documented API",
  "Create, launch and delete an experiment over the API (results need variants, metrics and exposure data)",
  "Document events and properties in Lexicon over the Schemas API and read them back via MCP",
  "Create, read and delete a board via the MCP server with a service account",
  "File a GDPR deletion request over the API with a GDPR token it generated in the web UI"
 ],
 "cannot_do": [
  {
   "what": "Sign up, verify or get a first API credential headless",
   "why": "Web form + magic link; service accounts and tokens are created in the web UI only"
  },
  {
   "what": "Run Insights, Funnels, Retention or any Query API call on the free plan",
   "why": "HTTP 402 'Your plan does not allow API calls'; MCP query tools return the same"
  },
  {
   "what": "Save a cohort on the free plan",
   "why": "'plan does not allow saving cohorts'"
  },
  {
   "what": "Upgrade without a human card",
   "why": "Stripe card form required even for the $0 Growth plan; no agent payment rail"
  },
  {
   "what": "Delete the account headless",
   "why": "Delete Organization is a web UI button; deletion runs 90 days later"
  }
 ],
 "blockers": [
  "Query API (and MCP query tools) blocked on the free plan with HTTP 402",
  "First credential only through the web UI"
 ],
 "tips_for_owner": [
  "Allow a small Query API quota on free",
  "Let an agent get its first credential headless",
  "Move the MCP server to the 28 Jul 2026 spec",
  "Add CIMD or device flow to MCP OAuth",
  "Document cohort_definition and validate experiment launch",
  "Offer an API to delete an organization"
 ],
 "tips_for_agents": [
  "Create a service account in the web UI (Project Settings > Service Accounts, role Admin); it works for REST (basic auth) and for MCP as 'Authorization: Bearer Basic <base64 user:secret>'.",
  "Ingestion /import needs time, distinct_id and $insert_id; with strict=1 errors name the failing field.",
  "On the free plan every Query API and MCP query tool returns 402: ingest, export, flags, experiments, lexicon and boards still work.",
  "MCP tool schemas are opaque objects: call Get-Query-Schema / Describe-Cohort-Schema first and expect to learn field names from validation errors.",
  "Flag evaluation (api.mixpanel.com/flags) needs the project token as basic auth and can take 1-2 minutes to reflect a change; disable a flag before deleting it.",
  "The GDPR API takes only a personal GDPR token from Profile > Data & Privacy, not a service account."
 ],
 "selfhost": null,
 "summary": "An agent can sign up for Mixpanel's free plan in a browser without a CAPTCHA, but the first credential (a service account) exists only in the web UI. With it, ingestion, raw export, feature flags with targeting, experiments, Lexicon and boards (via the official 66-tool MCP server) all work headless. Every analysis query (Insights, funnels, retention, MCP Run-Query) returns HTTP 402 on the free plan, upgrading needs a card in a Stripe form, and deleting the organization is a web button with a 90-day delay.",
 "wall": "Query API blocked on the free plan",
 "plan_scope": "free plan",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Mixpanel is a product-analytics tool. An agent can sign itself up on the free plan and, once it creates its first API key in the web dashboard, can log events, set feature flags, run a basic A/B test, document data fields, and build a simple dashboard entirely on its own. It stops because every actual analysis (trends, funnels, retention) is locked behind a paid plan that still requires a human to type in a credit card, and there's no way to fully delete the account by itself.",
  "can_do": [
   "Sign up and verify an account by itself in a browser, no CAPTCHA",
   "Send and read back event and user data automatically",
   "Turn feature flags on/off and target them to specific users automatically",
   "Document what each event and property means, and read it back automatically",
   "Build a simple dashboard automatically",
   "Start and launch a basic A/B test automatically, though with no way to see results without manual setup"
  ],
  "cannot_do": [
   {
    "what": "Get its very first API key without a browser",
    "why": "only available through the website dashboard, not any automated process"
   },
   {
    "what": "Run any trend, funnel, retention, or cohort analysis",
    "why": "the free plan blocks all analysis queries with an error asking to upgrade"
   },
   {
    "what": "Upgrade the plan by itself",
    "why": "even a free upgrade needs a human to enter a credit card"
   },
   {
    "what": "Fully delete the account by itself",
    "why": "deletion is a button in the dashboard, and the organization is only deleted after 90 days"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "Build an Insights (trend) report",
   "plan": "Growth",
   "evidence": "Free plan: Query API answers HTTP 402 'Your plan does not allow API calls. Upgrade at mixpanel.com/pricing' (MCP Run-Query same error)"
  },
  {
   "capability": "Analyze funnels and drop-off",
   "plan": "Growth",
   "evidence": "Free plan: Query API answers HTTP 402 'Your plan does not allow API calls. Upgrade at mixpanel.com/pricing'"
  },
  {
   "capability": "Analyze retention",
   "plan": "Growth",
   "evidence": "Free plan: Query API answers HTTP 402 'Your plan does not allow API calls. Upgrade at mixpanel.com/pricing'"
  },
  {
   "capability": "Segment users into cohorts",
   "plan": "Growth",
   "evidence": "MCP Create-Cohort: 'plan does not allow saving cohorts'"
  },
  {
   "capability": "Record and watch session replays",
   "plan": "Growth (API)",
   "evidence": "MCP Get-User-Replays-Data: 'Your plan does not allow API calls'"
  },
  {
   "capability": "Build a Metric Tree",
   "plan": "add-on",
   "evidence": "pricing page: 'Metric Trees Add-on'"
  },
  {
   "capability": "Query raw/aggregated data via API",
   "plan": "Growth",
   "evidence": "Free plan: Query API answers HTTP 402 'Your plan does not allow API calls. Upgrade at mixpanel.com/pricing'"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Analytics",
   "capability": "Track events and user properties",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /import (Ingestion API), api.mixpanel.com/track",
    "mcp": null,
    "cli": null,
    "ui": "SDK autocapture / Lexicon"
   },
   "check": "Raw Data Export API GET /api/2.0/export returns the event with its properties",
   "source": "https://docs.mixpanel.com/reference/ingestion-api; https://docs.mixpanel.com/docs/what-is-mixpanel"
  },
  {
   "id": "cap-02",
   "group": "Analytics",
   "capability": "Build an Insights (trend) report",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "Query API /api/2.0/insights",
    "mcp": "query analytics",
    "cli": null,
    "ui": "Reports > Insights"
   },
   "check": "Saved report appears under Project Reports and GET /api/2.0/insights returns the saved query's series",
   "source": "https://mixpanel.com/platform/product-analytics/; https://docs.mixpanel.com/reference/query-api"
  },
  {
   "id": "cap-03",
   "group": "Analytics",
   "capability": "Analyze funnels and drop-off",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/2.0/funnels",
    "mcp": "query analytics",
    "cli": null,
    "ui": "Reports > Funnels"
   },
   "check": "GET /api/2.0/funnels returns step-by-step conversion counts for the saved funnel id",
   "source": "https://mixpanel.com/platform/product-analytics/; https://mixpanel.com/pricing/"
  },
  {
   "id": "cap-04",
   "group": "Analytics",
   "capability": "Analyze retention",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/2.0/retention",
    "mcp": "query analytics",
    "cli": null,
    "ui": "Reports > Retention"
   },
   "check": "GET /api/2.0/retention returns cohort retention matrix for the configured report",
   "source": "https://mixpanel.com/pricing/ (Funnels & retention analysis); https://docs.mixpanel.com/reference/query-api"
  },
  {
   "id": "cap-05",
   "group": "Analytics",
   "capability": "Segment users into cohorts",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "Query API cohort endpoints",
    "mcp": "manage Lexicon/cohorts",
    "cli": null,
    "ui": "Users > Cohorts"
   },
   "check": "New cohort shows in cohort list and filters an Insights report by that cohort id",
   "source": "https://docs.mixpanel.com/docs/users/cohorts; https://mixpanel.com/pricing/"
  },
  {
   "id": "cap-06",
   "group": "Session Replay",
   "capability": "Record and watch session replays",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "surface replay",
    "cli": null,
    "ui": "Session Replay"
   },
   "check": "Replay player loads a recorded session for a given user/event and is viewable frame by frame",
   "source": "https://mixpanel.com/platform/session-replay/; https://docs.mixpanel.com/docs/session-replay/"
  },
  {
   "id": "cap-07",
   "group": "Experiments",
   "capability": "Run an A/B experiment",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "api.mixpanel.com/flags (assignment)",
    "mcp": "trigger, configure, launch experiments",
    "cli": null,
    "ui": "Experiments"
   },
   "check": "Experiment dashboard shows variant assignment counts and a significance readout for the running experiment",
   "source": "https://mixpanel.com/platform/experiments/; https://docs.mixpanel.com/docs/experiments"
  },
  {
   "id": "cap-08",
   "group": "Experiments",
   "capability": "Create and toggle a feature flag",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "Feature Flags API api.mixpanel.com/flags",
    "mcp": "trigger, configure, launch (beta)",
    "cli": null,
    "ui": "Feature Flags"
   },
   "check": "GET api.mixpanel.com/flags for a test user returns the expected variant after the flag is toggled",
   "source": "https://docs.mixpanel.com/reference/feature-flags-api; https://docs.mixpanel.com/docs/featureflags"
  },
  {
   "id": "cap-09",
   "group": "Strategy",
   "capability": "Build a Metric Tree connecting KPIs",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Metric Trees"
   },
   "check": "Metric Tree view shows the new node wired to its parent metric with live values",
   "source": "https://mixpanel.com/platform/metric-trees/; https://mixpanel.com/pricing/ (Metric Trees is an Enterprise/add-on item)"
  },
  {
   "id": "cap-10",
   "group": "Dashboards",
   "capability": "Create a dashboard/board of saved reports",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "build dashboards from plain language",
    "cli": null,
    "ui": "Boards"
   },
   "check": "New board appears in Boards list containing the added report tiles",
   "source": "https://mixpanel.com/ai/mcp; https://mixpanel.com/pricing/ (Saved reports)"
  },
  {
   "id": "cap-11",
   "group": "Monitoring",
   "capability": "Create a threshold or anomaly-detection alert",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Report bell icon / Project Settings > Alerts"
   },
   "check": "Project Settings > Alerts table lists the new alert with status Valid and fires a test notification via Test Alert",
   "source": "https://docs.mixpanel.com/docs/features/alerts"
  },
  {
   "id": "cap-12",
   "group": "Monitoring",
   "capability": "Run root cause analysis on a metric change",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Alert row > RCA / RCA board"
   },
   "check": "RCA board URL opens showing contributing segments for the triggered alert",
   "source": "https://docs.mixpanel.com/docs/features/alerts; https://mixpanel.com/pricing/ (Root cause analysis)"
  },
  {
   "id": "cap-13",
   "group": "Query",
   "capability": "Query raw/aggregated data via API",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/2.0/insights, /api/2.0/funnels, /api/2.0/retention, JQL",
    "mcp": "query and analyze",
    "cli": null,
    "ui": null
   },
   "check": "API response JSON matches the equivalent UI report's numbers for the same parameters",
   "source": "https://docs.mixpanel.com/reference/query-api"
  },
  {
   "id": "cap-14",
   "group": "Query",
   "capability": "Export raw event data",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET data.mixpanel.com/api/2.0/export",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Downloaded export file contains newline-delimited JSON events matching the queried date range",
   "source": "https://docs.mixpanel.com/reference/raw-data-export-api"
  },
  {
   "id": "cap-15",
   "group": "Governance",
   "capability": "Manage event/property definitions in Lexicon",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Lexicon Schemas API mixpanel.com/api/app/projects",
    "mcp": "tag events, add descriptions, hide deprecated properties",
    "cli": null,
    "ui": "Lexicon"
   },
   "check": "Lexicon page shows the updated description/tag and GET schemas API returns the same metadata",
   "source": "https://docs.mixpanel.com/reference/lexicon-schemas-api; https://mixpanel.com/ai/mcp"
  },
  {
   "id": "cap-16",
   "group": "Session Replay",
   "capability": "Filter replays into a playlist by events/cohorts",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "investigate session replays",
    "cli": null,
    "ui": "Session Replay filters / Magic Playlists"
   },
   "check": "Replay list narrows to sessions matching the applied event/property filter and can be saved as a playlist",
   "source": "https://mixpanel.com/platform/session-replay/"
  },
  {
   "id": "cap-17",
   "group": "Session Replay",
   "capability": "Get an AI-generated replay summary",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Replay player AI Summary panel"
   },
   "check": "Opening a replay shows an AI-generated text summary of key moments without manual playback",
   "source": "https://mixpanel.com/platform/session-replay/; https://mixpanel.com/pricing/ (AI summaries)"
  },
  {
   "id": "cap-18",
   "group": "Session Replay",
   "capability": "View heatmaps and clickmaps",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Heatmaps"
   },
   "check": "Heatmap overlay renders click density on the selected page URL",
   "source": "https://mixpanel.com/platform/session-replay/"
  },
  {
   "id": "cap-19",
   "group": "Experiments",
   "capability": "Target an experiment or flag by cohort",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Feature Flags API targeting rules",
    "mcp": "configure experiments",
    "cli": null,
    "ui": "Experiments/Flags targeting rules"
   },
   "check": "Flag evaluation API returns the targeted variant only for users matching the configured cohort",
   "source": "https://docs.mixpanel.com/docs/featureflags; https://mixpanel.com/platform/experiments/"
  },
  {
   "id": "cap-20",
   "group": "Experiments",
   "capability": "Run a visual web experiment (no-code editor)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Web Experiments visual editor"
   },
   "check": "Visual editor change is live on the target page for assigned visitors (feature marked Coming Soon)",
   "source": "https://mixpanel.com/platform/experiments/ (Web Experiments, Coming Soon)"
  },
  {
   "id": "cap-21",
   "group": "Data Management",
   "capability": "Sync a data warehouse connector",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Warehouse Connectors API mixpanel.com/api/app/projects",
    "mcp": null,
    "cli": null,
    "ui": "Data Management > Warehouse Connectors"
   },
   "check": "Connector run status shows Completed and new warehouse rows appear as Mixpanel events",
   "source": "https://docs.mixpanel.com/reference/warehouse-connectors-api; https://mixpanel.com/platform/data-warehouse-connectors/"
  },
  {
   "id": "cap-22",
   "group": "Data Management",
   "capability": "Export data to own warehouse via Data Pipelines",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Data Pipelines API data.mixpanel.com/api/2.0/nessie",
    "mcp": null,
    "cli": null,
    "ui": "Data Management > Data Pipelines"
   },
   "check": "Destination bucket/warehouse receives the exported event files on the configured schedule",
   "source": "https://docs.mixpanel.com/reference/overview-2"
  },
  {
   "id": "cap-23",
   "group": "Data Management",
   "capability": "Analyze grouped entities (Group Analytics)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Query API group_key params",
    "mcp": null,
    "cli": null,
    "ui": "Insights group-by entity"
   },
   "check": "Report grouped by company/account id shows per-group metrics instead of per-user",
   "source": "https://mixpanel.com/pricing/ (Group analytics, Add-on)"
  },
  {
   "id": "cap-25",
   "group": "Agent Workflow",
   "capability": "Build data apps with Mixpanel Headless (Python)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Headless Python package",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "A Python script calling the Headless package returns the same query results as the UI report",
   "source": "https://mixpanel.com/ai/headless"
  },
  {
   "id": "cap-26",
   "group": "Compliance",
   "capability": "Retrieve or delete a user's data for GDPR/CCPA",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GDPR API mixpanel.com/api/app/data-retrievals",
    "mcp": null,
    "cli": null,
    "ui": "Project Settings > Privacy"
   },
   "check": "GDPR API job status reaches Complete and a follow-up export/query no longer returns the deleted user's events",
   "source": "https://docs.mixpanel.com/reference/gdpr-api"
  },
  {
   "id": "cap-27",
   "group": "Account Admin",
   "capability": "Manage organizations and projects programmatically",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "Platform API platform-us.mixpanel.com/v1",
    "mcp": null,
    "cli": null,
    "ui": "Organization Settings"
   },
   "check": "GET Platform API project endpoint reflects a project created or renamed via the same API",
   "source": "https://docs.mixpanel.com/reference/platform-api"
  },
  {
   "id": "cap-28",
   "group": "Account Admin",
   "capability": "Manage roles, permissions, and SSO/SCIM",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Organization Settings > Users & Roles"
   },
   "check": "A user assigned a restricted project role is blocked from editing a report they don't have access to",
   "source": "https://mixpanel.com/pricing/ (Project-level roles & permissions, SAML-based SSO & SCIM)"
  },
  {
   "id": "cap-29",
   "group": "Account Admin",
   "capability": "View audit log of account activity",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Organization Settings > Audit Log"
   },
   "check": "Audit log lists the recent report/alert/flag change with actor and timestamp",
   "source": "https://mixpanel.com/pricing/ (Audit log)"
  },
  {
   "id": "cap-30",
   "group": "Account Admin",
   "capability": "Install a marketplace integration",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Integrations marketplace"
   },
   "check": "Connected integration appears as Active in the Integrations list and forwards data to/from the third-party tool",
   "source": "https://mixpanel.com/partners/integrations"
  }
 ],
 "attempts": [
  {
   "t": "01:08",
   "cap": "discovery",
   "capability": "MCP version",
   "task": "POST server/discover to https://mcp.mixpanel.com/mcp (no auth)",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "HTTP 200 JSON-RPC error -32601 'Method not found: server/discover'; sets mcp-session-id header -> legacy server. initialize offering 2026-07-28 without token -> 401 WWW-Authenticate Bearer resource_metadata=https://mcp.mixpanel.com/.well-known/oauth-protected-resource/mcp",
   "notes": "product MCP is legacy (stateful sessions)"
  },
  {
   "t": "01:08",
   "cap": "discovery",
   "capability": "MCP auth metadata",
   "task": "GET PRM + AS metadata on mcp.mixpanel.com",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PRM /.well-known/oauth-protected-resource/mcp 200 application/json, authorization_servers [https://mcp.mixpanel.com/mcp]; AS metadata at https://mcp.mixpanel.com/.well-known/oauth-authorization-server: registration_endpoint https://mixpanel.com/oauth/mcp/register/ (DCR), no client_id_metadata_document_supported, grants authorization_code+refresh_token, S256. No device flow. Note: PRM names issuer path .../mcp but AS metadata is served at root (path-suffixed /mcp/.well-known/oauth-authorization-server 404).",
   "notes": ""
  },
  {
   "t": "01:08",
   "cap": "discovery",
   "capability": "Docs MCP",
   "task": "server/discover on https://docs.mixpanel.com/mcp",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "result.supportedVersions [\"2026-07-28\"]: modern docs MCP (Mintlify), tools search_mixpanel etc.",
   "notes": ""
  },
  {
   "t": "01:08",
   "cap": "discovery",
   "capability": "Cards",
   "task": "server-card, ai-catalog, agent-card on mixpanel.com, mcp.mixpanel.com, docs.mixpanel.com",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "mixpanel.com: all /.well-known/* 404 HTML. mcp.mixpanel.com/mcp/server-card 404. docs.mixpanel.com/.well-known/agent-card.json 200 JSON protocolVersion 0.3 (docs only); docs.mixpanel.com/.well-known/mcp/server-card.json 200 (docs MCP card, legacy path); /.well-known/agent-skills/index.json 200; ai-catalog.json 404",
   "notes": ""
  },
  {
   "t": "01:08",
   "cap": "discovery",
   "capability": "aipref / markdown",
   "task": "robots.txt and Accept: text/markdown",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "mixpanel.com/robots.txt: no Content-Usage line; docs.mixpanel.com/robots.txt: 'Content-Signal: ai-train=yes, search=yes, ai-input=yes' (Cloudflare Content Signals, parses). Accept: text/markdown on docs page -> content-type text/markdown, vary includes Accept; .md URL also 200 text/markdown. llms.txt at docs.mixpanel.com/llms.txt lists 14 OpenAPI specs.",
   "notes": ""
  },
  {
   "t": "01:42",
   "cap": "docs",
   "capability": "Find docs",
   "task": "GET docs.mixpanel.com/llms.txt and .md pages",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "llms.txt 200 (65 KB), OpenAPI specs listed under /openapi/*.yaml, per-page .md 200 text/markdown",
   "notes": ""
  },
  {
   "t": "01:42",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Find a headless/documented sign-up API",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "No sign-up API, auth.md, agent registration or claimable resource: mixpanel.com/auth.md 404, /.well-known/oauth-* on mixpanel.com 404; /register/ is a JS app (form: email + terms checkbox).",
   "notes": "",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "03:01",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Web form at mixpanel.com/register/ (email + terms)",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Form accepted the agent's inbox; page shows 'We sent a verification email to the agent's inbox'. No CAPTCHA signals detected.",
   "notes": ""
  },
  {
   "t": "03:36",
   "cap": "verify",
   "capability": "Verify email",
   "task": "Open magic link from inbox in browser",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Mail 'Verify your email to start using Mixpanel' arrived within ~1 min; magic link -> 'Log in to Mixpanel' page -> Log In -> /onboarding?from_register=True",
   "notes": ""
  },
  {
   "t": "05:53",
   "cap": "signup",
   "capability": "Onboarding",
   "task": "Complete onboarding (name, work, role, organization AgentDrives, US data center)",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Landed on https://mixpanel.com/project/[redacted]/view/[redacted]/app/home 'Welcome, AgentDrives'. Organization size '1', industry 'Other'. No CAPTCHA.",
   "notes": ""
  },
  {
   "t": "08:52",
   "cap": "credentials",
   "capability": "API credentials",
   "task": "Create a service account (Admin role) in Project Settings > Service Accounts",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Service account [redacted] created in web UI; secret shown once. Project token read from Project Settings. No documented headless path to the first credential (Service Accounts API itself needs an existing SA/user auth; OAuth for MCP needs browser consent).",
   "notes": ""
  },
  {
   "t": "09:31",
   "cap": "first_call",
   "capability": "First API call",
   "task": "GET https://mixpanel.com/api/app/me with service account basic auth",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200 JSON user object for [redacted]",
   "notes": ""
  },
  {
   "t": "09:31",
   "cap": "cap-01",
   "capability": "Track events and user properties",
   "task": "Import 6 events (Sign Up, Create Report) for 3 users via POST api.mixpanel.com/import?strict=1, set a profile via /engage",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "import -> {\"code\":200,\"num_records_imported\":6}; engage -> 1; Raw export returned the events with their properties (source=agentdrives, $insert_id)",
   "notes": "Bad record -> 400 JSON naming failed_records[0].field 'properties.time' must not be missing (not problem+json)",
   "quality": {
    "verify_route": "yes",
    "error_legibility": "clear",
    "docs_match": "match",
    "recoverable": "yes"
   }
  },
  {
   "t": "09:31",
   "cap": "first_action",
   "capability": "First real action",
   "task": "Ingest events via /import",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "num_records_imported 6, read back by export API",
   "notes": ""
  },
  {
   "t": "09:31",
   "cap": "cap-14",
   "capability": "Export raw event data",
   "task": "GET data.mixpanel.com/api/2.0/export for last 3 days",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200 newline-delimited JSON with the 6 imported events and their properties",
   "notes": "",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "10:27",
   "cap": "cap-13",
   "capability": "Query raw/aggregated data via API",
   "task": "Segmentation, events/names, funnels/list, retention via Query API on free plan",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "HTTP 402 application/json {\"error\": \"Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\"} on /api/query/segmentation, /events/names, /funnels/list, /retention; MCP Run-Query -> isError \"Failed to execute Run-Query: Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\". No PAYMENT-REQUIRED / WWW-Authenticate payment header.",
   "notes": "",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "10:27",
   "cap": "cap-02",
   "capability": "Build an Insights (trend) report",
   "task": "MCP Run-Query insights: total Sign Up per day, last 7 days",
   "route": "mcp",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "HTTP 402 application/json {\"error\": \"Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\"} on /api/query/segmentation, /events/names, /funnels/list, /retention; MCP Run-Query -> isError \"Failed to execute Run-Query: Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\". No PAYMENT-REQUIRED / WWW-Authenticate payment header.",
   "notes": "free plan blocks the Query API that MCP Run-Query uses",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "11:00",
   "cap": "cap-05",
   "capability": "Segment users into cohorts",
   "task": "MCP Create-Cohort: users with plan=free (after 2 schema-validation retries)",
   "route": "mcp",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Create-Cohort isError 'Failed to execute Create-Cohort: plan does not allow saving cohorts'. Earlier tries got clear validation errors (missing format discriminator; groups[0].event and behavioralFiltersOperator required).",
   "notes": "",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "yes"
   }
  },
  {
   "t": "11:24",
   "cap": "cap-10",
   "capability": "Create a dashboard/board of saved reports",
   "task": "MCP Create-Dashboard 'AgentDrives test board' with a text card (one retry after validation error)",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Create-Dashboard -> id 11567640 url https://mixpanel.com/project/[redacted]/app/boards#id=11567640; List-Dashboards and Get-Dashboard return it with creator agentdrives-drive SA. Report tiles not added: saved reports need Query API (402 on free).",
   "notes": "first try: 'contents.0.text.html_content Field required' -- tool schema is an opaque object, field names only learnt from errors",
   "quality": {
    "verify_route": "yes",
    "error_legibility": "clear",
    "recoverable": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "12:17",
   "cap": "cap-08",
   "capability": "Create and toggle a feature flag",
   "task": "POST Feature Flags Management API (create disabled flag agentdrives_test_flag, 100% 'on'), PUT status=enabled, evaluate via GET api.mixpanel.com/flags for ad-user-1",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST -> 201 id [id]; PUT -> 200 status enabled; GET flag -> status enabled; GET api.mixpanel.com/flags?token=..&context={distinct_id:ad-user-1} -> {\"agentdrives_test_flag\":{\"variant_key\":\"on\",\"variant_value\":true}} (first evaluations right after enabling returned {} for ~1-2 min: propagation delay)",
   "notes": "",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "idempotent": "n/a"
   }
  },
  {
   "t": "12:23",
   "cap": "cap-15",
   "capability": "Manage event/property definitions in Lexicon",
   "task": "POST Lexicon Schemas API /projects/[redacted]/schemas/event/Sign Up (description, displayName, tag, 2 property descriptions); read back via GET and MCP Get-Events",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST -> 200 {\"status\":\"ok\"}; GET returns description 'A user created an account (AgentDrives test)', displayName 'Sign Up (AD)', tags ['agentdrives']; MCP Get-Events shows same",
   "notes": "",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "12:56",
   "cap": "cap-07",
   "capability": "Run an A/B experiment",
   "task": "Experiments API: POST create 'AgentDrives test experiment', PUT /launch; read back with MCP Get-Experiment (compute_exposures, compute_metrics)",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "POST -> 201 id b2368e2b-...; PUT launch -> 200 status active, start_date set; MCP Get-Experiment shows status active, variants [], metrics [] -- no variant assignment counts or significance readout (no variants/metrics/flag linked, no exposure data). API launched an experiment with no variants and no metrics without any validation error.",
   "notes": "'created' returned as 2026-10-05T19:39:04 (project-local time, no offset) next to 'modified' 2026-10-06T02:39:04 (UTC): timezone inconsistency",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "error_legibility": "silent"
   }
  },
  {
   "t": "13:51",
   "cap": "cap-26",
   "capability": "Retrieve or delete a user's data for GDPR/CCPA",
   "task": "POST /api/app/data-deletions/v3.0/?token=… for distinct_id ad-user-3 with service-account basic auth; then look for the GDPR OAuth token in Settings > Profile > Data & Privacy (browser)",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "SA auth -> 401 {\"status\": \"error\", \"error\": \"You do not have the required scope(s) for this request\"}. The GDPR API takes only a personal GDPR OAuth token (spec security: OAuthToken), generated in the web UI under Settings > Profile > Data & Privacy > GDPR API (we first missed the Generate control on that page; see next attempt).",
   "notes": "",
   "quality": {
    "error_legibility": "vague",
    "docs_match": "match",
    "recoverable": "yes"
   }
  },
  {
   "t": "16:53",
   "cap": "pay",
   "capability": "Pay step",
   "task": "Probe 402 rails (x402./mpp./agents. subdomains, Bazaar, mpp.dev, docs text), then in-app Upgrade Plan flow in browser up to the payment step (no card entered)",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "x402./mpp./agents.mixpanel.com do not resolve; Query API 402 is a plain JSON plan error with no PAYMENT-REQUIRED or WWW-Authenticate Payment header; no Mixpanel listing in x402 Bazaar (352 KB) or mpp.dev/api/services (514 KB); llms.txt has no x402/MPP/machine payments. Upgrade Plan modal: Growth $0.00/month for first 1M events, steps Events > Session Replay > Experiments > Add-ons > 'Select payment details': Stripe Elements card form (Card Number, Expiration, CVV, Country) with Stripe invisible hCaptcha frame; text 'Why is a credit card required if my plan costs $0?'. No billing API or MCP billing tool (66 MCP tools, none billing).",
   "notes": "stopped before entering a card"
  },
  {
   "t": "16:54",
   "cap": "cap-03",
   "capability": "Analyze funnels and drop-off",
   "task": "GET /api/query/funnels/list and /funnels on free plan",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "HTTP 402 application/json {\"error\": \"Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\"} on /api/query/segmentation, /events/names, /funnels/list, /retention; MCP Run-Query -> isError \"Failed to execute Run-Query: Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\". No PAYMENT-REQUIRED / WWW-Authenticate payment header.",
   "notes": "",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "16:54",
   "cap": "cap-04",
   "capability": "Analyze retention",
   "task": "GET /api/query/retention born_event=Sign Up event=Create Report",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "HTTP 402 application/json {\"error\": \"Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\"} on /api/query/segmentation, /events/names, /funnels/list, /retention; MCP Run-Query -> isError \"Failed to execute Run-Query: Your plan does not allow API calls. Upgrade at mixpanel.com/pricing\". No PAYMENT-REQUIRED / WWW-Authenticate payment header.",
   "notes": "",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "18:28",
   "cap": "cap-19",
   "capability": "Target an experiment or flag by cohort",
   "task": "Create flag agentdrives_targeted_flag via Feature Flags Management API with a rollout cohort_definition (user property plan == free); evaluate for ad-user-1 (plan=free profile) and ad-user-2 (no profile)",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST -> 201; GET flag shows rollout cohort_definition with cohort_hash; GET api.mixpanel.com/flags: ad-user-1 gets agentdrives_targeted_flag 'on', ad-user-2 does not (only the untargeted flag).",
   "notes": "cohort_definition is an opaque object in the OpenAPI (additionalProperties: true); its selector shape is not documented there, we used the shape of cohort selectors. Saved-cohort targeting not tried (saving cohorts is plan-gated).",
   "quality": {
    "verify_route": "yes",
    "docs_match": "drift"
   }
  },
  {
   "t": "18:28",
   "cap": "cap-06",
   "capability": "Record and watch session replays",
   "task": "MCP Get-User-Replays-Data for ad-user-1, last 3 days",
   "route": "mcp",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "isError 'Failed to execute Get-User-Replays-Data: Your plan does not allow API calls. Upgrade at mixpanel.com/pricing'. Recording replays needs the browser SDK on a website we do not have; the replay player is web UI only.",
   "notes": "",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "19:16",
   "cap": "cleanup",
   "capability": "Remove created objects",
   "task": "DELETE flags (after disabling), DELETE experiment, MCP Delete-Dashboard, DELETE lexicon schema",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Flags: first DELETE 400 {\"error\": \"Unable to delete enabled feature flag\", \"type\": \"CannotDeleteEnabledFlag\"}; PUT status disabled then DELETE 200, list []. Experiment DELETE 200, GET 404 ExperimentDoesNotExist. Dashboard deleted, List-Dashboards empty. Lexicon DELETE 200 delete_count 1. Ingested events cannot be removed except by GDPR deletion (blocked) or deleting the project/org.",
   "notes": "",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "yes",
    "verify_route": "yes"
   }
  },
  {
   "t": "22:00",
   "cap": "cap-26",
   "capability": "Retrieve or delete a user's data for GDPR/CCPA",
   "task": "Generate GDPR OAuth token in web UI (Profile > Data & Privacy > Generate), then POST /api/app/data-deletions/v3.0/?token=… for ad-user-3 and GET the job status",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "POST -> 201 {\"status\": \"ok\", \"results\": {\"task_id\": \"[id]\"}}; GET status -> PENDING (compliance_type gdpr, distinct_ids [ad-user-3]). Not Complete within the drive (docs: deletions can take multiple weeks).",
   "notes": "credential for this API needs the web UI (personal token); the service account cannot call it",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "24:01",
   "cap": "delete",
   "capability": "Delete account and data",
   "task": "Look for a documented delete-org/project API, then Settings > Org > Overview > Delete Organization > Submit in browser",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "No delete API in the 14 OpenAPI specs or docs (docs MCP search: 'Deleting an Organization' is a UI button). UI showed 'Users will maintain access to your organization for 90 days, after which it will be deleted' -> Submit -> 'Okay, we have queued your account for deletion.' Mail 'Mixpanel Account Deletion for AgentDrives' 02:50 UTC: 'After 90 days, your organization and all organization-owned projects will be deleted.' Right after, the service account still answered /api/app/me 200 and the export API still returned our events (90-day grace period).",
   "notes": "",
   "quality": {
    "verify_route": "yes"
   }
  },
  {
   "t": "24:01",
   "cap": "cancel",
   "capability": "Cancel plan",
   "task": "No paid plan was started (free plan); nothing to cancel",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "Free plan only; the Growth upgrade stopped at the Stripe card form.",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-09",
   "capability": "Build a Metric Tree connecting KPIs",
   "task": "Check plan for Metric Trees",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "mixpanel.com/pricing lists 'Metric Trees Add-on' (not in Free); no API or MCP tool for metric trees",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-11",
   "capability": "Create a threshold or anomaly-detection alert",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid; no API or MCP tool for alerts",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-12",
   "capability": "Run root cause analysis on a metric change",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid; no API",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-16",
   "capability": "Filter replays into a playlist by events/cohorts",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "no replays (needs browser SDK on a website); MCP replay tool 402 on free",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-17",
   "capability": "Get an AI-generated replay summary",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-18",
   "capability": "View heatmaps and clickmaps",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "no heatmap data (needs browser SDK on a website)",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-20",
   "capability": "Run a visual web experiment (no-code editor)",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid, Coming Soon",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-21",
   "capability": "Sync a data warehouse connector",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid; needs a warehouse we do not have",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-22",
   "capability": "Export data to own warehouse via Data Pipelines",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid add-on; needs a bucket/warehouse",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-23",
   "capability": "Analyze grouped entities (Group Analytics)",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid add-on (Group Analytics, seen in the upgrade modal)",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-25",
   "capability": "Build data apps with Mixpanel Headless (Python)",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-27",
   "capability": "Manage organizations and projects programmatically",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid (Platform API)",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-28",
   "capability": "Manage roles, permissions, and SSO/SCIM",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-29",
   "capability": "View audit log of account activity",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "paid; MCP Get-Audit-Log limited beta",
   "notes": ""
  },
  {
   "t": "24:01",
   "cap": "cap-30",
   "capability": "Install a marketplace integration",
   "task": "not attempted",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "not tried in the time",
   "notes": ""
  }
 ],
 "stale": false,
 "icon": "/logos/mixpanel.png",
 "monitored": false,
 "verdict": "Gets in on its own: L3 · Does the work. Sign-up is a browser form with no CAPTCHA, but the first credential, a service account, only exists in the web UI, and so does the key for the project token. From there our agent ran ingestion, raw export, feature flags, experiments, Lexicon and boards headless through the official MCP server, with each task read back. Every analysis query returned a payment-required response on the free plan, and upgrading asked for a card in a checkout form. Deleting the organization is a web button, and the confirmation mail says data clears after a wait, so our agent could not confirm the account was gone before the drive ended.",
 "page": "https://agentdrives.com/tools/mixpanel?via=api"
}