{
  "data": {
    "a": {
      "slug": "userpilot",
      "name": "Userpilot",
      "vendor": "Userpilot, Inc.",
      "vendorUrl": "https://userpilot.com",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "Userpilot is a product adoption platform with in-app guides, surveys and product analytics for SaaS and mobile apps. Agents query funnels, trends, retention, users and companies through its hosted MCP server, and send or export data through HTTP APIs.",
      "url": "https://www.anchorterminal.com/tools/userpilot",
      "markdownUrl": "https://www.anchorterminal.com/tools/userpilot.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/userpilot.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/userpilot.json",
      "dns": "userpilot.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.userpilot.io/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "userpilot"
        }
      ],
      "auth": "mixed",
      "authNotes": "The hosted MCP server uses OAuth 2.0 with PKCE, dynamic client registration and a permission screen. Scopes are data:read (always required), people:read, sessions:read, segments:write, reports:write, feedback:write and offline_access; the connection runs under the user's own role and can't delete or reach administration. The HTTP APIs take one environment API key as `Authorization: Token \u003ckey\u003e`, shown on the Environment page; the docs say to contact support to regenerate it.",
      "pricing": "paid",
      "pricingNotes": "Starter $299 a month for up to 2,000 MAU with basic trends and funnels; Growth from $849 a month with advanced analytics and the HTTP API; Enterprise by quote with SSO, activity logs and a custom SLA. Bulk export, import and data warehouse sync are add-ons. 14-day free trial with no card required.",
      "priceSummary": "$299 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt, the MCP docs or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 235722,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.userpilot.com/api-references/overview",
      "llmsTxt": "https://docs.userpilot.com/llms.txt",
      "registryName": "io.userpilot/mcp",
      "capabilities": [
        "analytics.query",
        "analytics.funnels",
        "analytics.events"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "remote-mcp",
        "mcp-registry",
        "oauth",
        "llms-txt",
        "no-card",
        "status-page",
        "soc2",
        "closed-source",
        "webhooks",
        "eu-region"
      ],
      "lastRelease": "2026-10-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.4,
        "grade": "B",
        "agentReady": false,
        "rank": 471,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 8,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 60,
          "maintenance": 79,
          "payments": 30,
          "reliability": 82,
          "schema": 71,
          "security": 62,
          "transparency": 59
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Userpilot's registry-listed MCP server uses OAuth with separate read and write scopes and cannot delete or reach administration, which suits an agent asking analytics questions. Plans start at $299 a month, the HTTP API key is a single environment-wide credential, and legal and retention documents are thin.",
        "bestFor": "SaaS teams already using Userpilot for onboarding who want an agent to answer analytics questions and draft segments and surveys.",
        "strengths": [
          "Hosted MCP server in the official registry as io.userpilot/mcp, with OAuth and PKCE",
          "Scopes split reads of analytics, profiles and session replay from writes of segments, reports and survey drafts",
          "No delete, publish or administration actions are reachable through MCP",
          "Status page with three ingestion regions and no incidents from August to November 2026",
          "llms.txt and Markdown docs, with OpenAPI 3.0 on each API reference page"
        ],
        "weaknesses": [
          "Plans start at $299 a month, and the HTTP API needs Growth from $849",
          "The HTTP API uses one environment-wide key that support has to regenerate",
          "The MCP tool list and its rate limits aren't published",
          "No security.txt, disclosure policy or bug bounty found",
          "The privacy policy and security page name different sub-processors"
        ],
        "agentNotes": [
          "Ask for only the scopes the task needs; profile and session replay reads are separate grants",
          "Expect survey writes to stay drafts that a person reviews and publishes in Userpilot",
          "Refresh the connector's tool list after Userpilot adds tools, since clients cache it",
          "Back off exponentially on 429 from Identify and Track, which allow 600 requests a minute",
          "Use the bulk export job API for raw events rather than looping over analytics tools"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.4
          }
        ],
        "editorialScores": {
          "ergonomics": 60,
          "maintenance": 79,
          "payments": 30,
          "reliability": 82,
          "schema": 71,
          "security": 62,
          "transparency": 42
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http userpilot https://mcp.userpilot.io/mcp",
        "config": {
          "mcpServers": {
            "userpilot": {
              "url": "https://mcp.userpilot.io/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/analytics.query",
        "tool": "https://letme.dev/userpilot"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 299,
          "note": "Up to 2,000 MAU"
        },
        {
          "item": "Growth plan",
          "unit": "month",
          "usd": 849,
          "note": "Starting price; includes advanced product analytics and the HTTP API"
        }
      ],
      "provenance": {
        "legalEntity": "Userpilot, Inc.",
        "domain": "userpilot.com",
        "domainRegistered": "2011-01-08",
        "endpointOnVendorDomain": false,
        "terms": "https://userpilot.com/terms-of-use/",
        "privacy": "https://userpilot.com/privacy-policy/",
        "statusPage": "https://status.userpilot.io",
        "changelog": "https://docs.userpilot.com/developer/installation/mobile/ios/mobile-ios-release-notes",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The MCP server and APIs are on userpilot.io; the website and legal pages are on userpilot.com.",
          "The terms were last updated on 23 April 2024 and the privacy policy on 11 March 2025, which names a DPO and Userpilot, Inc. in Austin, Texas.",
          "docs.userpilot.com/robots.txt carries Content-Signal ai-train=yes, search=yes, ai-input=yes. userpilot.com/robots.txt disallows only search paths.",
          "userpilot.com/.well-known/security.txt returned 404, and the security page names no disclosure policy or bug bounty.",
          "RDAP gives userpilot.com a registration date of 8 January 2011."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/userpilot.json",
      "live": {
        "slug": "userpilot",
        "probe": {
          "target": "https://mcp.userpilot.io/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:21:02.792914465Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 563,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 495,
          "p95ms24h": 585,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.userpilot.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:54.858690533Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.userpilot/mcp",
            "version": "1.0.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "userpilot",
            "version": "1.4.3",
            "seenAt": "2026-11-07T00:14:26.929507083Z"
          }
        ],
        "npmWeekly": 235722,
        "securityTxt": {
          "url": "https://userpilot.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:10.604728076Z"
        },
        "llmsTxt": {
          "url": "https://docs.userpilot.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:15.247254272Z"
        },
        "pages": [
          {
            "url": "https://docs.userpilot.com/developer/installation/mobile/ios/mobile-ios-release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:08:32.05689434Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b489ebf9a491"
          },
          {
            "url": "https://userpilot.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:23:01.88432514Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "299f9d9cd275"
          },
          {
            "url": "https://userpilot.com/terms-of-use/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:23:04.076461926Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "dea374efccdb"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.userpilot.io/mcp",
          "checkedAt": "2026-11-07T01:48:55.558250288Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:48:55.558250288Z"
        },
        "updatedAt": "2026-11-07T18:21:02.792914465Z"
      }
    },
    "answer": "Userpilot scores 64.4 (B) on agent readiness against Woopra's 44.4 (E), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "woopra",
      "name": "Woopra",
      "vendor": "Woopra, Inc.",
      "vendorUrl": "https://www.woopra.com",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "Woopra is a hosted customer journey and product analytics service from Woopra, Inc., an Appier affiliate. Its HTTP tracking API records events and visitor properties, and its REST API returns saved reports, profiles and raw session logs.",
      "url": "https://www.anchorterminal.com/tools/woopra",
      "markdownUrl": "https://www.anchorterminal.com/tools/woopra.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/woopra.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/woopra.json",
      "dns": "woopra.grade.anchorterminal.com",
      "repo": "https://github.com/Woopra/js-client-tracker",
      "license": "Proprietary service under Woopra's terms of service. The browser tracker and the SDKs on GitHub are MIT, and the Node package is ISC",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://www.woopra.com/rest/3.10",
      "packages": [
        {
          "registry": "npm",
          "name": "woopra"
        },
        {
          "registry": "npm",
          "name": "@woopra/browser-tracker"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. REST calls use HTTP Basic with an App ID and Secret Key that each user generates on the Access Keys tab of the members area. Tracking calls need only the project name unless the owner enables Secure Tracking, which adds a generated ID and secret sent by HTTP Basic. No OAuth, scopes or partner approval were found in the docs.",
      "pricing": "paid",
      "pricingNotes": "Pro starts at $999 a month for 5 million events, with a 30-day trial that an agent's owner can start without a contract. Overage fees apply past the event quota, at rates the pricing page does not state. Enterprise is quoted. Whether the trial signup asks for a card was not established (https://www.woopra.com/pricing, checked 2026-10-09).",
      "priceSummary": "$999 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs or on the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 415,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.woopra.com",
      "llmsTxt": "https://docs.woopra.com/llms.txt",
      "capabilities": [
        "analytics.query",
        "analytics.events",
        "analytics.funnels"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "llms-txt",
        "basic-auth",
        "no-oauth",
        "free-trial",
        "status-page",
        "rate-limits",
        "export",
        "sales-led"
      ],
      "lastRelease": "2026-03-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 44.4,
        "grade": "E",
        "agentReady": false,
        "rank": 1202,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 9,
          "payments": 30,
          "reliability": 80,
          "schema": 45,
          "security": 22,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "Woopra's REST API returns saved Trends, Journeys, Retention and Attribution reports, profiles and raw session logs, with published limits of 300 calls a minute and 3,000 a day per project. A report must first be built in the web app, the tracking endpoints accept events without a secret by default, and no changelog or SLA was found.",
        "bestFor": "An agent that reads a company's existing Woopra reports, looks up or edits customer profiles, or exports raw sessions on a schedule.",
        "strengths": [
          "Rate limits are published per project at 300 calls a minute, 600 an hour and 3,000 a day, and limited calls return 429",
          "Report endpoints take `limit`, `offset`, a `snapshot` ID for consistent paging past 1,000 records, and `timeframe_from` and `timeframe_to` overrides",
          "status.woopra.com (Statuspage) lists no incidents for August, September or October 2026 across Data Processing, Data Collection and the front-end application",
          "`/logs/export` returns raw sessions as line-separated JSON, and `/logs/import` loads them in bulk and returns a batch ID to poll",
          "The terms of service (10 December 2025) name nine sub-processors with addresses and countries, and say the customer owns the tracking data"
        ],
        "weaknesses": [
          "Report endpoints run a report saved in the web app by `report_id`. No endpoint to define a query, funnel or segment was found in the reference",
          "`/track/ce` and `/track/identify` accept data with only the project name unless the owner turns on Secure Tracking",
          "No API changelog, deprecation policy or SLA was found. The terms promise commercially reasonable efforts on availability",
          "Server SDKs are old. The Node, Python, Java and Rails repositories were last committed to in 2017, and npm `woopra` is 1.0.2",
          "The terms of service forbid using any robot, spider, scraper or other automated means to access the Site, a term defined to include the Services",
          "Most REST operations document no response schema, and the `/profiles` page repeats the `/trends` description"
        ],
        "agentNotes": [
          "Ask the owner to build and save each report in the web app first, then pass the last path segment of its URL as `report_id`",
          "Authenticate REST calls with HTTP Basic, using the App ID and Secret Key from the Access Keys tab, against `https://www.woopra.com/rest/3.10/`",
          "Stay under 300 calls a minute, 600 an hour and 3,000 a day per project. A 429 carries no documented retry interval, so back off on your own schedule",
          "Reuse the `snapshot` ID from the first response when paging with `offset`, or pages past 1,000 records may not agree",
          "Send `cookie` or a `cv_` identifier such as `cv_email` on every track call. Without one the event lands on a random profile that can't be identified later",
          "When reading `/logs/export`, delete the profile named in each `type: \"delete\"` line. The following lines log its data again under `new_id`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 44.4
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 9,
          "payments": 30,
          "reliability": 80,
          "schema": 45,
          "security": 22,
          "transparency": 45
        },
        "provenanceScore": 78,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-09",
            "maintenance": "2026-10-09",
            "payments": "2026-10-09",
            "reliability": "2026-10-09",
            "schema": "2026-10-09",
            "security": "2026-10-09",
            "transparency": "2026-10-09"
          },
          "last": "2026-10-09",
          "lastMoved": "2026-10-28",
          "oldest": "2026-10-09",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl \\\n--user \u003cApp Id\u003e:\u003cSecret Key\u003e \\\n\"https://www.woopra.com/rest/3.10/trends?project=mybusiness.com\u0026start_day=2017-4-12\u0026end_day=2017-5-19\u0026report_id=83mYcoe6jX\""
      },
      "letme": {
        "capability": "https://letme.dev/analytics.query",
        "tool": "https://letme.dev/woopra"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Pro, 5 million events a month",
          "unit": "month",
          "usd": 999,
          "note": "starting price, overage fees apply"
        }
      ],
      "provenance": {
        "legalEntity": "Woopra, Inc.",
        "domain": "woopra.com",
        "domainRegistered": "2007-02-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.woopra.com/tos",
        "privacy": "https://www.woopra.com/privacy",
        "statusPage": "https://status.woopra.com",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-09",
        "notes": [
          "The terms of service (last updated 10 December 2025) are a contract with Woopra, Inc., its subsidiaries and affiliated companies including Appier, and cover the website and the subscription services in one document. They give 600 California St, Fl 11, San Francisco, CA 94108 as the legal address.",
          "The privacy policy (last updated 1 August 2025) covers customers and site visitors and says it does not apply to end-user data that Woopra processes for customers. It names Appier Netherlands B.V. as EU representative. No public DPA was found, and the GDPR page says a copy is sent on request.",
          "The REST and tracking endpoints answer under https://www.woopra.com/rest and https://www.woopra.com/track, on the vendor's own domain. robots.txt on that host disallows both paths, and we sent no request to either.",
          "www.woopra.com/.well-known/security.txt timed out twice with no bytes received, so its presence is unknown.",
          "status.woopra.com is an Atlassian Statuspage site. Its address was not linked from the pages we read and was tried directly.",
          "No changelog for the API was found. docs.woopra.com/changelog returns 404, and the browser tracker's CHANGELOG.md stops at v5.3.0 of 15 September 2021.",
          "RDAP for woopra.com gives a registration date of 2007-02-23 and Spaceship, Inc. as registrar."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/woopra.json",
      "live": {
        "slug": "woopra",
        "probe": {
          "target": "https://www.woopra.com/rest/3.10",
          "method": "get",
          "lastAt": "2026-11-07T18:21:05.868859386Z",
          "lastOk": false,
          "lastStatus": 500,
          "lastMs": 188,
          "lastNote": "server error",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0.01,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 239,
          "samples30d": 7289,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 0
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 0
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 0
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 1
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 0
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 0
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 0
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-10-20T07:53:20.901989595Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "HTTP 500 server error"
            },
            {
              "start": "2026-10-09T07:40:43.906309049Z",
              "end": "2026-10-20T07:48:04.809204174Z",
              "note": "HTTP 500 server error"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.woopra.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:22:11.654955136Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Woopra/js-client-tracker",
            "version": "v5.3.0",
            "released": "2021-09-16",
            "seenAt": "2026-11-07T00:17:44.037218844Z"
          },
          {
            "registry": "npm",
            "name": "@woopra/browser-tracker",
            "version": "5.2.0-beta.0",
            "seenAt": "2026-11-07T00:17:42.567871491Z"
          },
          {
            "registry": "npm",
            "name": "woopra",
            "version": "1.0.2",
            "seenAt": "2026-11-07T00:17:41.789176314Z"
          }
        ],
        "githubStars": 15,
        "npmWeekly": 153,
        "securityTxt": {
          "url": "https://woopra.com/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-11-07T16:01:40.466479305Z"
        },
        "llmsTxt": {
          "url": "https://docs.woopra.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:23.617781678Z"
        },
        "domain": {
          "domain": "woopra.com",
          "registered": "2007-02-23",
          "source": "https://rdap.verisign.com/com/v1/domain/woopra.com",
          "checkedAt": "2026-11-01T14:12:35.920109892Z"
        },
        "pages": [
          {
            "url": "https://www.woopra.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:37:14.11622214Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0ceb5f681fcb"
          },
          {
            "url": "https://www.woopra.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:37:19.403294537Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "49851c70f2d0"
          },
          {
            "url": "https://www.woopra.com/tos",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:37:19.678879986Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c8908e094e7b"
          }
        ],
        "github": {
          "repo": "woopra/js-client-tracker",
          "checkedAt": "2026-11-02T09:38:50.665585704Z",
          "stars": 15,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-03-16T07:42:59Z",
          "openIssues": 0,
          "openPRs": 3,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 2,
            "unanswered": 0,
            "medianDays": 886.7
          }
        },
        "updatedAt": "2026-11-07T18:22:11.654955136Z"
      }
    },
    "edges": [
      {
        "by": 70,
        "category": "maintenance",
        "leads": "userpilot",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "io.userpilot/mcp 1.0.0 was published to the registry on 11 October 2026 (30). The iOS SDK alone has dated releases on 6 August, 2 September, 27 September and 2 October 2026 (20). A closed service with no public API changelog, support by email and chat (8 of 25). Verified io.userpilot namespace in the official MCP registry (15). Client SDKs are current; there is nothing else public to inspect (6 of 10). 30+20+8+15+6 = 79.",
          "b": "The newest dated change found is a commit to the browser tracker on 16 March 2026, and the REST intro page was last edited on 13 March 2026, both more than 180 days before the check (0). No releases or dated changelog entries in the last 90 days (0). No API changelog. Support is by email and in-app, and response times were not checked (3). The browser tracker's last tag is v5.3.0 from 2021, iOS and Android were last committed to in November 2024, and the Node, Python, Java and Rails SDKs in 2017 (4). The Node README carries a Travis CI badge and no current CI was found (2). Total 9."
        },
        "scores": {
          "a": 79,
          "b": 9
        }
      },
      {
        "by": 40,
        "category": "security",
        "leads": "userpilot",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "The MCP server uses OAuth with PKCE, dynamic client registration, revocation, separate read and write scopes and the user's own role. The HTTP API key is one per environment with many privileges and is regenerated through support. Averaged over both surfaces (22 of 30). Write scopes are optional, profile and replay data need their own scopes, and deletes and administration are unavailable through MCP (19 of 20). Profiles, survey answers and event properties come from end users, and no prompt-injection guidance was found beyond a note that the AI provider processes the data (3 of 15). Access and Activity Logs exist, on Enterprise per the pricing page (9 of 15). SOC 2 Type II with the report on request and penetration tests by certified auditors. No security.txt, disclosure policy or bug bounty (9 of 20). 22+19+3+9+9 = 62.",
          "b": "REST calls use per-user access keys sent by HTTP Basic, with no scopes or rotation guidance found. Tracking calls need only the project name by default, with an optional Secure Tracking secret. Docs examples still show `http://` tracking URLs (15 of 30). The pricing page states group and individual permission controls, but no read-only key or confirmation on `/profile/delete` was found (5). The API returns event and profile text that any caller who knows the project name can write, and no guidance on untrusted content was found (0). No audit log found in the docs (0). No security page, bug bounty or certification was found on the pages read, and security.txt timed out. The privacy policy states Data Privacy Framework certification (2). Total 22."
        },
        "scores": {
          "a": 62,
          "b": 22
        }
      },
      {
        "by": 26,
        "category": "schema",
        "leads": "userpilot",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Every API reference page embeds an OpenAPI 3.0 definition, though no standalone spec file was found (20 of 25). llms.txt and Markdown versions of every page (10). Endpoint pages state their purpose and the MCP docs say what each permission allows; the MCP tool definitions weren't read because that needs a session (12 of 20). Request bodies are typed, mostly as strings and string arrays with few enums (9 of 15). An error reference covers 400, 401, 422 and 429 with causes, and pages carry examples (12 of 15). /v1 paths and dated SDK release notes; no API changelog was found (8 of 15). 20+10+12+9+12+8 = 71.",
          "b": "Each REST reference page embeds an OpenAPI 3.1 fragment in its Markdown copy. No single spec file was found, most operations define no responses, and the tracking endpoints are documented as tables (12). llms.txt and a .md copy of each page, though llms.txt lists four of fourteen REST operations (10). Descriptions are one line. The `/profiles` page repeats the `/trends` text, three profile operations have none, and one page still holds template placeholder text (6). Query parameters carry types and required flags. There are no enums, and profile edits take a JSON string in `data` (6). One curl example for REST and several tracking examples. Tracking response codes are explained, while REST errors are a 400 with an empty object (6). The version sits in the path and 3.10 is the only one supported. No changelog found (5). Total 45."
        },
        "scores": {
          "a": 71,
          "b": 45
        }
      },
      {
        "by": 15,
        "category": "ergonomics",
        "leads": "userpilot",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The tool count isn't published; the docs say the assistant can search hundreds of extra read-only operations on demand, which reads as dynamic loading. Without the list we give the middle band (15 of 25). Export jobs filter by date range, users, events and segments, and job lists paginate (14 of 20). A documented error reference (13 of 20). No deletes or admin through MCP by design; annotations weren't readable and no idempotency keys were found (10 of 20). The HTTP APIs have no official server-side SDK; client SDKs for web and six mobile frameworks (8 of 15). 15+14+13+10+8 = 60.",
          "b": "Report responses can be capped with `limit`, but a report can only be run from a `report_id` saved in the web app, so an agent can't shape a query through the API (12). `limit`, `offset`, a `snapshot` ID for consistent paging and timeframe overrides on reports, and position headers on log export (14). Tracking codes 401, 402 and 403 each name a cause. REST error bodies are not documented (8). No idempotency key or dedupe field was found, and tracking is by GET. Imports return a batch ID to poll (3). Report calls need two parameters. Official SDKs exist in several languages, but the server ones date from 2017 (8). Total 45."
        },
        "scores": {
          "a": 60,
          "b": 45
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Userpilot, Inc.",
        "b": "Woopra, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.userpilot.io/mcp",
        "b": "https://www.woopra.com/rest/3.10",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under Woopra's terms of service. The browser tracker and the SDKs on GitHub are MIT, and the Node package is ISC",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.userpilot/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-11",
        "b": "2026-03-16",
        "name": "Last release"
      },
      {
        "a": "2024-04-23",
        "b": "2025-12-10",
        "name": "Terms last updated"
      },
      {
        "a": "2025-03-11",
        "b": "2025-08-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "236k npm/wk",
        "b": "415 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Userpilot scores 64.4 (B) on agent readiness against Woopra's 44.4 (E), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Userpilot or Woopra?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Userpilot and Woopra need an API key?"
      },
      {
        "answer": "Yes. Userpilot has a hosted endpoint at https://mcp.userpilot.io/mcp and Woopra at https://www.woopra.com/rest/3.10.",
        "question": "Can an agent call Userpilot and Woopra without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 71 against 45",
          "Agent ergonomics, 60 against 45",
          "Security \u0026 auth, 62 against 22",
          "Maintenance \u0026 community, 79 against 9"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "SaaS teams already using Userpilot for onboarding who want an agent to answer analytics questions and draft segments and surveys.",
        "slug": "userpilot",
        "watchFor": "Plans start at $299 a month, and the HTTP API needs Growth from $849"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent that reads a company's existing Woopra reports, looks up or edits customer profiles, or exports raw sessions on a schedule.",
        "slug": "woopra",
        "watchFor": "Report endpoints run a report saved in the web app by `report_id`. No endpoint to define a query, funnel or segment was found in the reference"
      }
    ],
    "history": {
      "userpilot": null,
      "woopra": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": -0.1,
          "from": 44.5,
          "fromGrade": "E",
          "to": 44.4,
          "toGrade": "E"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 44.4,
          "fromGrade": "E",
          "to": 44.5,
          "toGrade": "E"
        }
      ]
    },
    "job": {
      "capability": "analytics.query",
      "name": "Analytics queries"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amplitude-vs-userpilot.json",
        "title": "Amplitude vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amplitude-vs-woopra.json",
        "title": "Amplitude vs Woopra",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/basedash-mcp-vs-userpilot.json",
        "title": "Basedash MCP vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/basedash-mcp-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/basedash-mcp-vs-woopra.json",
        "title": "Basedash MCP vs Woopra",
        "url": "https://www.anchorterminal.com/compare/basedash-mcp-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/countly-vs-userpilot.json",
        "title": "Countly vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/countly-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/countly-vs-woopra.json",
        "title": "Countly vs Woopra",
        "url": "https://www.anchorterminal.com/compare/countly-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fullstory-vs-userpilot.json",
        "title": "Fullstory vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fullstory-vs-woopra.json",
        "title": "Fullstory vs Woopra",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-userpilot.json",
        "title": "GrowthBook vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-woopra.json",
        "title": "GrowthBook vs Woopra",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/matomo-vs-userpilot.json",
        "title": "Matomo vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/matomo-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/matomo-vs-woopra.json",
        "title": "Matomo vs Woopra",
        "url": "https://www.anchorterminal.com/compare/matomo-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mixpanel-vs-userpilot.json",
        "title": "Mixpanel vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/mixpanel-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mixpanel-vs-woopra.json",
        "title": "Mixpanel vs Woopra",
        "url": "https://www.anchorterminal.com/compare/mixpanel-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.json",
        "title": "Mostly Good Metrics vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-woopra.json",
        "title": "Mostly Good Metrics vs Woopra",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openpanel-vs-userpilot.json",
        "title": "OpenPanel vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openpanel-vs-woopra.json",
        "title": "OpenPanel vs Woopra",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/optimizely-vs-userpilot.json",
        "title": "Optimizely Experimentation vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/optimizely-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/optimizely-vs-woopra.json",
        "title": "Optimizely Experimentation vs Woopra",
        "url": "https://www.anchorterminal.com/compare/optimizely-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pendo-vs-userpilot.json",
        "title": "Pendo vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/pendo-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pendo-vs-woopra.json",
        "title": "Pendo vs Woopra",
        "url": "https://www.anchorterminal.com/compare/pendo-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/posthog-vs-userpilot.json",
        "title": "PostHog vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/posthog-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/posthog-vs-woopra.json",
        "title": "PostHog vs Woopra",
        "url": "https://www.anchorterminal.com/compare/posthog-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/statsig-vs-userpilot.json",
        "title": "Statsig vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/statsig-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/statsig-vs-woopra.json",
        "title": "Statsig vs Woopra",
        "url": "https://www.anchorterminal.com/compare/statsig-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flagsmith-vs-woopra.json",
        "title": "Flagsmith vs Woopra",
        "url": "https://www.anchorterminal.com/compare/flagsmith-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-woopra.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Woopra",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-userpilot.json",
        "title": "Heap vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/heap-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-woopra.json",
        "title": "Heap vs Woopra",
        "url": "https://www.anchorterminal.com/compare/heap-vs-woopra"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 2,
        "edge": "userpilot",
        "key": "reliability",
        "name": "Reliability",
        "userpilot": 82,
        "weight": 16,
        "woopra": 80
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "edge": "userpilot",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "userpilot": 71,
        "weight": 13,
        "woopra": 45
      },
      {
        "by": 15,
        "edge": "userpilot",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "userpilot": 60,
        "weight": 13,
        "woopra": 45
      },
      {
        "by": 40,
        "edge": "userpilot",
        "key": "security",
        "name": "Security \u0026 auth",
        "userpilot": 62,
        "weight": 14,
        "woopra": 22
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "userpilot": 30,
        "weight": 10,
        "woopra": 30
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 70,
        "edge": "userpilot",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "userpilot": 79,
        "weight": 7,
        "woopra": 9
      },
      {
        "by": 3,
        "edge": "woopra",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "userpilot": 59,
        "weight": 7,
        "woopra": 62
      }
    ],
    "summary": "Userpilot scores 64.4 (B) on agent readiness against Woopra's 44.4 (E), and leads in 5 of 7 scored categories. Both do analytics queries.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "userpilot": "Userpilot's registry-listed MCP server uses OAuth with separate read and write scopes and cannot delete or reach administration, which suits an agent asking analytics questions. Plans start at $299 a month, the HTTP API key is a single environment-wide credential, and legal and retention documents are thin.",
      "woopra": "Woopra's REST API returns saved Trends, Journeys, Retention and Attribution reports, profiles and raw session logs, with published limits of 300 calls a minute and 3,000 a day per project. A report must first be built in the web app, the tracking endpoints accept events without a secret by default, and no changelog or SLA was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/userpilot-vs-woopra",
    "json": "https://www.anchorterminal.com/compare/userpilot-vs-woopra.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/userpilot-vs-woopra.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/userpilot-vs-woopra.min.md"
  },
  "markdown": "Userpilot scores 64.4 (B) on agent readiness against Woopra's 44.4 (E), and leads in 5 of 7 scored categories. Both do analytics queries.\n\n- Userpilot: grade B, 64.4/100, rank #471 of 1486. Markdown https://www.anchorterminal.com/tools/userpilot.md · JSON https://www.anchorterminal.com/api/v1/tools/userpilot.json\n- Woopra: grade E, 44.4/100, rank #1202 of 1486. Markdown https://www.anchorterminal.com/tools/woopra.md · JSON https://www.anchorterminal.com/api/v1/tools/woopra.json\n- Best product analytics and experimentation tools for AI agents: https://www.anchorterminal.com/best/product-analytics/index.md\n- All 153 product analytics comparisons: https://www.anchorterminal.com/compare/product-analytics/index.md\n\n## Which one, for what\n\n### Userpilot (B)\n\nGood for: SaaS teams already using Userpilot for onboarding who want an agent to answer analytics questions and draft segments and surveys.\n\nAhead on:\n- Schema \u0026 documentation, 71 against 45\n- Agent ergonomics, 60 against 45\n- Security \u0026 auth, 62 against 22\n- Maintenance \u0026 community, 79 against 9\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: Plans start at $299 a month, and the HTTP API needs Growth from $849\n\n### Woopra (E)\n\nGood for: An agent that reads a company's existing Woopra reports, looks up or edits customer profiles, or exports raw sessions on a schedule.\n\nWatch for: Report endpoints run a report saved in the web app by `report_id`. No endpoint to define a query, funnel or segment was found in the reference\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Userpilot +70\n\n- Userpilot (79): io.userpilot/mcp 1.0.0 was published to the registry on 11 October 2026 (30). The iOS SDK alone has dated releases on 6 August, 2 September, 27 September and 2 October 2026 (20). A closed service with no public API changelog, support by email and chat (8 of 25). Verified io.userpilot namespace in the official MCP registry (15). Client SDKs are current; there is nothing else public to inspect (6 of 10). 30+20+8+15+6 = 79.\n- Woopra (9): The newest dated change found is a commit to the browser tracker on 16 March 2026, and the REST intro page was last edited on 13 March 2026, both more than 180 days before the check (0). No releases or dated changelog entries in the last 90 days (0). No API changelog. Support is by email and in-app, and response times were not checked (3). The browser tracker's last tag is v5.3.0 from 2021, iOS and Android were last committed to in November 2024, and the Node, Python, Java and Rails SDKs in 2017 (4). The Node README carries a Travis CI badge and no current CI was found (2). Total 9.\n\n### Security \u0026 auth: Userpilot +40\n\n- Userpilot (62): The MCP server uses OAuth with PKCE, dynamic client registration, revocation, separate read and write scopes and the user's own role. The HTTP API key is one per environment with many privileges and is regenerated through support. Averaged over both surfaces (22 of 30). Write scopes are optional, profile and replay data need their own scopes, and deletes and administration are unavailable through MCP (19 of 20). Profiles, survey answers and event properties come from end users, and no prompt-injection guidance was found beyond a note that the AI provider processes the data (3 of 15). Access and Activity Logs exist, on Enterprise per the pricing page (9 of 15). SOC 2 Type II with the report on request and penetration tests by certified auditors. No security.txt, disclosure policy or bug bounty (9 of 20). 22+19+3+9+9 = 62.\n- Woopra (22): REST calls use per-user access keys sent by HTTP Basic, with no scopes or rotation guidance found. Tracking calls need only the project name by default, with an optional Secure Tracking secret. Docs examples still show `http://` tracking URLs (15 of 30). The pricing page states group and individual permission controls, but no read-only key or confirmation on `/profile/delete` was found (5). The API returns event and profile text that any caller who knows the project name can write, and no guidance on untrusted content was found (0). No audit log found in the docs (0). No security page, bug bounty or certification was found on the pages read, and security.txt timed out. The privacy policy states Data Privacy Framework certification (2). Total 22.\n\n### Schema \u0026 documentation: Userpilot +26\n\n- Userpilot (71): Every API reference page embeds an OpenAPI 3.0 definition, though no standalone spec file was found (20 of 25). llms.txt and Markdown versions of every page (10). Endpoint pages state their purpose and the MCP docs say what each permission allows; the MCP tool definitions weren't read because that needs a session (12 of 20). Request bodies are typed, mostly as strings and string arrays with few enums (9 of 15). An error reference covers 400, 401, 422 and 429 with causes, and pages carry examples (12 of 15). /v1 paths and dated SDK release notes; no API changelog was found (8 of 15). 20+10+12+9+12+8 = 71.\n- Woopra (45): Each REST reference page embeds an OpenAPI 3.1 fragment in its Markdown copy. No single spec file was found, most operations define no responses, and the tracking endpoints are documented as tables (12). llms.txt and a .md copy of each page, though llms.txt lists four of fourteen REST operations (10). Descriptions are one line. The `/profiles` page repeats the `/trends` text, three profile operations have none, and one page still holds template placeholder text (6). Query parameters carry types and required flags. There are no enums, and profile edits take a JSON string in `data` (6). One curl example for REST and several tracking examples. Tracking response codes are explained, while REST errors are a 400 with an empty object (6). The version sits in the path and 3.10 is the only one supported. No changelog found (5). Total 45.\n\n### Agent ergonomics: Userpilot +15\n\n- Userpilot (60): The tool count isn't published; the docs say the assistant can search hundreds of extra read-only operations on demand, which reads as dynamic loading. Without the list we give the middle band (15 of 25). Export jobs filter by date range, users, events and segments, and job lists paginate (14 of 20). A documented error reference (13 of 20). No deletes or admin through MCP by design; annotations weren't readable and no idempotency keys were found (10 of 20). The HTTP APIs have no official server-side SDK; client SDKs for web and six mobile frameworks (8 of 15). 15+14+13+10+8 = 60.\n- Woopra (45): Report responses can be capped with `limit`, but a report can only be run from a `report_id` saved in the web app, so an agent can't shape a query through the API (12). `limit`, `offset`, a `snapshot` ID for consistent paging and timeframe overrides on reports, and position headers on log export (14). Tracking codes 401, 402 and 403 each name a cause. REST error bodies are not documented (8). No idempotency key or dedupe field was found, and tracking is by GET. Imports return a batch ID to poll (3). Report calls need two parameters. Official SDKs exist in several languages, but the server ones date from 2017 (8). Total 45.\n\n## Score by category\n\n| Category | Weight | Userpilot | Woopra | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 82 | 80 | Userpilot +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 71 | 45 | Userpilot +26 |\n| Agent ergonomics | 13% (16.2 this run) | 60 | 45 | Userpilot +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 22 | Userpilot +40 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 79 | 9 | Userpilot +70 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 59 | 62 | Woopra +3 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **64.4 · B** | **44.4 · E** | |\n\n## Facts side by side\n\n| Fact | Userpilot | Woopra |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Userpilot, Inc. | Woopra, Inc. |\n| Hosted endpoint | `https://mcp.userpilot.io/mcp` | `https://www.woopra.com/rest/3.10` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | none | Proprietary service under Woopra's terms of service. The browser tracker and the SDKs on GitHub are MIT, and the Node package is ISC |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.userpilot/mcp` | not listed |\n| Last release | 2026-10-11 | 2026-03-16 |\n| Terms last updated | 2024-04-23 | 2025-12-10 |\n| Privacy policy last updated | 2025-03-11 | 2025-08-01 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 236k npm/wk | 415 npm/wk |\n| Agent reviews | none | 2.3/5 (4) |\n\n## How the scores have moved\n\n### Userpilot\n\nNo score change since it was listed.\n\n### Woopra\n\n- -0.1 on 28 October 2026: correction\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**Userpilot.** Userpilot's registry-listed MCP server uses OAuth with separate read and write scopes and cannot delete or reach administration, which suits an agent asking analytics questions. Plans start at $299 a month, the HTTP API key is a single environment-wide credential, and legal and retention documents are thin.\n\n**Woopra.** Woopra's REST API returns saved Trends, Journeys, Retention and Attribution reports, profiles and raw session logs, with published limits of 300 calls a minute and 3,000 a day per project. A report must first be built in the web app, the tracking endpoints accept events without a secret by default, and no changelog or SLA was found.\n\n## Before you call either\n\n### Userpilot\n\n1. Ask for only the scopes the task needs; profile and session replay reads are separate grants\n2. Expect survey writes to stay drafts that a person reviews and publishes in Userpilot\n3. Refresh the connector's tool list after Userpilot adds tools, since clients cache it\n4. Back off exponentially on 429 from Identify and Track, which allow 600 requests a minute\n5. Use the bulk export job API for raw events rather than looping over analytics tools\n\n### Woopra\n\n1. Ask the owner to build and save each report in the web app first, then pass the last path segment of its URL as `report_id`\n2. Authenticate REST calls with HTTP Basic, using the App ID and Secret Key from the Access Keys tab, against `https://www.woopra.com/rest/3.10/`\n3. Stay under 300 calls a minute, 600 an hour and 3,000 a day per project. A 429 carries no documented retry interval, so back off on your own schedule\n4. Reuse the `snapshot` ID from the first response when paging with `offset`, or pages past 1,000 records may not agree\n5. Send `cookie` or a `cv_` identifier such as `cv_email` on every track call. Without one the event lands on a random profile that can't be identified later\n6. When reading `/logs/export`, delete the profile named in each `type: \"delete\"` line. The following lines log its data again under `new_id`\n\n## Questions\n\n### Which is better for AI agents, Userpilot or Woopra?\n\nUserpilot scores 64.4 (B) on agent readiness against Woopra's 44.4 (E), and leads in 5 of 7 scored categories.\n\n### Do Userpilot and Woopra need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Userpilot and Woopra without installing anything?\n\nYes. Userpilot has a hosted endpoint at https://mcp.userpilot.io/mcp and Woopra at https://www.woopra.com/rest/3.10.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/userpilot-vs-woopra.json, and with the fewest tokens: https://www.anchorterminal.com/compare/userpilot-vs-woopra.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"userpilot\", \"b\": \"woopra\"}`. From a terminal: `anchor compare userpilot woopra`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/userpilot.json and https://www.anchorterminal.com/api/v1/tools/woopra.json\n\n## Other comparisons with Userpilot or Woopra\n\n- [Amplitude vs Userpilot](https://www.anchorterminal.com/compare/amplitude-vs-userpilot.md)\n- [Amplitude vs Woopra](https://www.anchorterminal.com/compare/amplitude-vs-woopra.md)\n- [Basedash MCP vs Userpilot](https://www.anchorterminal.com/compare/basedash-mcp-vs-userpilot.md)\n- [Basedash MCP vs Woopra](https://www.anchorterminal.com/compare/basedash-mcp-vs-woopra.md)\n- [Countly vs Userpilot](https://www.anchorterminal.com/compare/countly-vs-userpilot.md)\n- [Countly vs Woopra](https://www.anchorterminal.com/compare/countly-vs-woopra.md)\n- [Fullstory vs Userpilot](https://www.anchorterminal.com/compare/fullstory-vs-userpilot.md)\n- [Fullstory vs Woopra](https://www.anchorterminal.com/compare/fullstory-vs-woopra.md)\n- [GrowthBook vs Userpilot](https://www.anchorterminal.com/compare/growthbook-vs-userpilot.md)\n- [GrowthBook vs Woopra](https://www.anchorterminal.com/compare/growthbook-vs-woopra.md)\n- [Matomo vs Userpilot](https://www.anchorterminal.com/compare/matomo-vs-userpilot.md)\n- [Matomo vs Woopra](https://www.anchorterminal.com/compare/matomo-vs-woopra.md)\n- [Mixpanel vs Userpilot](https://www.anchorterminal.com/compare/mixpanel-vs-userpilot.md)\n- [Mixpanel vs Woopra](https://www.anchorterminal.com/compare/mixpanel-vs-woopra.md)\n- [Mostly Good Metrics vs Userpilot](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.md)\n- [Mostly Good Metrics vs Woopra](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-woopra.md)\n- [OpenPanel vs Userpilot](https://www.anchorterminal.com/compare/openpanel-vs-userpilot.md)\n- [OpenPanel vs Woopra](https://www.anchorterminal.com/compare/openpanel-vs-woopra.md)\n- [Optimizely Experimentation vs Userpilot](https://www.anchorterminal.com/compare/optimizely-vs-userpilot.md)\n- [Optimizely Experimentation vs Woopra](https://www.anchorterminal.com/compare/optimizely-vs-woopra.md)\n- [Pendo vs Userpilot](https://www.anchorterminal.com/compare/pendo-vs-userpilot.md)\n- [Pendo vs Woopra](https://www.anchorterminal.com/compare/pendo-vs-woopra.md)\n- [PostHog vs Userpilot](https://www.anchorterminal.com/compare/posthog-vs-userpilot.md)\n- [PostHog vs Woopra](https://www.anchorterminal.com/compare/posthog-vs-woopra.md)\n- [Statsig vs Userpilot](https://www.anchorterminal.com/compare/statsig-vs-userpilot.md)\n- [Statsig vs Woopra](https://www.anchorterminal.com/compare/statsig-vs-woopra.md)\n- [Flagsmith vs Woopra](https://www.anchorterminal.com/compare/flagsmith-vs-woopra.md)\n- [Harness Feature Management \u0026 Experimentation vs Woopra](https://www.anchorterminal.com/compare/harness-fme-vs-woopra.md)\n- [Heap vs Userpilot](https://www.anchorterminal.com/compare/heap-vs-userpilot.md)\n- [Heap vs Woopra](https://www.anchorterminal.com/compare/heap-vs-woopra.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Userpilot vs Woopra",
        "url": ""
      }
    ],
    "description": "Userpilot scores 64.4 (B) to Woopra's 44.4 (E) for analytics queries. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Userpilot B 64.4",
      "Woopra E 44.4",
      "scores"
    ],
    "h1": "Userpilot vs Woopra",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/userpilot-vs-woopra",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Userpilot vs Woopra for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/userpilot-vs-woopra"
  },
  "tokens": {
    "markdown": 3950,
    "slim": 2030
  },
  "version": 1
}
