{
  "data": {
    "a": {
      "slug": "mostly-good-metrics",
      "name": "Mostly Good Metrics",
      "vendor": "Mostly Good Metrics",
      "vendorUrl": "https://mostlygoodmetrics.com",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "Mostly Good Metrics is a product analytics service in public beta for indie developers and small teams. Apps send events through five SDKs or an HTTP API, and agents query funnels, retention and experiments through a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/mostly-good-metrics",
      "markdownUrl": "https://www.anchorterminal.com/tools/mostly-good-metrics.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mostly-good-metrics.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mostly-good-metrics.json",
      "dns": "mostly-good-metrics.grade.anchorterminal.com",
      "repo": "https://github.com/Mostly-Good-Metrics",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.mostlygoodmetrics.com/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@mostly-good-metrics/javascript"
        },
        {
          "registry": "npm",
          "name": "@mostly-good-metrics/react-native"
        }
      ],
      "auth": "mixed",
      "authNotes": "The MCP server and the `mgm` CLI use browser OAuth 2.0 with PKCE (S256) and dynamic client registration; the advertised scopes are mcp:tools plus support and newsletter scopes. Event ingestion uses a project API key as a Bearer token, which can be pinned to web origins, Apple bundle IDs or Android package names. Keys are created in the dashboard, the CLI or through MCP tools.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 with 50,000 to 100,000 events a month and no card. Starter $9 a month ($90 a year) for 500,000 events and Pro $29 a month ($290 a year) for 5,000,000, both quoted as lifetime beta prices against $12 and $49. Enterprise has unlimited ingestion.",
      "priceSummary": "$9 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or on the pricing section of the home page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 53,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 81,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.mostlygoodmetrics.com",
      "capabilities": [
        "analytics.query",
        "analytics.funnels",
        "analytics.events",
        "analytics.experiments"
      ],
      "tags": [
        "hosted",
        "mcp",
        "remote-mcp",
        "oauth",
        "free-tier",
        "no-card",
        "beta",
        "closed-source",
        "typescript",
        "cli"
      ],
      "lastRelease": "2026-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.7,
        "grade": "E",
        "agentReady": false,
        "rank": 1295,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 18,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 49,
          "maintenance": 74,
          "payments": 30,
          "reliability": 29,
          "schema": 49,
          "security": 33,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Mostly Good Metrics lets an agent run ad-hoc funnels, retention and up to ten metric queries per call through a hosted MCP server with OAuth, at prices from $0. It is a public beta built by one developer, with no status page, no named legal entity and no security policy found.",
        "bestFor": "Indie and small-team apps that want simple funnels and retention an agent can query.",
        "strengths": [
          "Hosted MCP server with OAuth, PKCE and dynamic client registration; no API key to copy",
          "execute_funnel, execute_retention and execute_query accept inline definitions without saving anything",
          "query_metrics runs 1 to 10 aggregate queries in one call with per-item results",
          "Free plan with no card, and paid plans from $9 a month",
          "Ingestion keys can be pinned to web origins and app bundle IDs"
        ],
        "weaknesses": [
          "Public beta run by one developer, with no named legal entity in the terms",
          "No status page, SLA, security.txt or disclosure policy found",
          "53 MCP tools load at once and one scope grants all of them, including deletes and key revocation",
          "No OpenAPI file or llms.txt",
          "The CLI is installed from source because it isn't on npm yet"
        ],
        "agentNotes": [
          "Use query_metrics for several aggregate questions instead of repeated execute_query calls",
          "Pass inline definitions to execute_funnel and execute_retention rather than creating saved objects",
          "Confirm with the user before delete, revoke_api_key or stop_experiment calls, since the server doesn't ask",
          "Start a fresh agent session after connecting, since a running client may not reload the tool list",
          "On 429 from ingestion, wait for Retry-After before resending events"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.7
          }
        ],
        "editorialScores": {
          "ergonomics": 49,
          "maintenance": 74,
          "payments": 30,
          "reliability": 29,
          "schema": 49,
          "security": 33,
          "transparency": 51
        },
        "provenanceScore": 39,
        "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 mgm https://app.mostlygoodmetrics.com/mcp",
        "config": {
          "mcpServers": {
            "mgm": {
              "url": "https://app.mostlygoodmetrics.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/analytics.query",
        "tool": "https://letme.dev/mostly-good-metrics"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 9,
          "note": "500,000 events a month, lifetime beta price"
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 29,
          "note": "5,000,000 events a month, lifetime beta price"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "mostlygoodmetrics.com",
        "domainRegistered": "2025-12-05",
        "endpointOnVendorDomain": true,
        "terms": "https://mostlygoodmetrics.com/terms",
        "privacy": "https://mostlygoodmetrics.com/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms and privacy policy, both last updated December 2025, name only Mostly Good Metrics and give no legal entity, address or governing law.",
          "mostlygoodmetrics.com/robots.txt has every rule commented out; docs.mostlygoodmetrics.com has no robots.txt.",
          "/.well-known/security.txt returned 404 and no status page was found.",
          "RDAP gives mostlygoodmetrics.com a registration date of 5 December 2025."
        ],
        "score": 39
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mostly-good-metrics.json",
      "live": {
        "slug": "mostly-good-metrics",
        "probe": {
          "target": "https://app.mostlygoodmetrics.com/mcp",
          "method": "get",
          "lastAt": "2026-11-07T19:22:20.651338144Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 138,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 167,
          "p95ms24h": 298,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@mostly-good-metrics/javascript",
            "version": "0.13.1",
            "seenAt": "2026-11-06T23:47:33.682933227Z"
          },
          {
            "registry": "npm",
            "name": "@mostly-good-metrics/react-native",
            "version": "0.9.1",
            "seenAt": "2026-11-06T23:47:34.884784704Z"
          }
        ],
        "npmWeekly": 81,
        "securityTxt": {
          "url": "https://mostlygoodmetrics.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:38.90553607Z"
        },
        "pages": [
          {
            "url": "https://mostlygoodmetrics.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:14:39.017388202Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f43e747ad9a3"
          },
          {
            "url": "https://mostlygoodmetrics.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:14:41.227658165Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "99ed64144abf"
          }
        ],
        "mcpTools": {
          "url": "https://app.mostlygoodmetrics.com/mcp",
          "checkedAt": "2026-11-07T01:46:16.716952564Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:46:16.716952564Z"
        },
        "updatedAt": "2026-11-07T19:22:20.651338144Z"
      }
    },
    "answer": "Userpilot scores 64.4 (B) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in 6 of 7 scored categories.",
    "b": {
      "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": 473,
        "ranked": true,
        "rankOf": 1510,
        "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-07T19:22:42.360158981Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 241,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 496,
          "p95ms24h": 586,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "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-07T19:22:42.360158981Z"
      }
    },
    "edges": [
      {
        "by": 53,
        "category": "reliability",
        "leads": "userpilot",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted service with the hosted lines. No status page was found (0) and no incident history could be read (5). Ingestion limits are documented per plan (1,000 to 100,000 events a minute and 10,000 to 1,000,000 an hour), but no limit for MCP or query calls was found (12 of 15). 429 with Retry-After in the header and body, and the SDKs queue events and back off. No idempotency or safe-retry guidance for writes (12 of 15). No SLA (0). The press kit calls the product a public beta (0). 0+5+12+12+0+0 = 29.",
          "b": "Graded on the hosted service with the hosted lines. Better Stack status page at status.userpilot.io with components for ingestion in three regions, the SDKs, the web application APIs and the website (20). From August to November 2026 the page shows only scheduled maintenance windows of two to four hours, with no incidents; the MCP server isn't a component (30). 600 requests a minute per token for the real-time APIs, but no numbers for MCP or export (12 of 15). 429 documented with exponential backoff guidance; no Retry-After or idempotency guidance (10 of 15). The SLA is a custom Enterprise contract term, not published (0). The MCP server is 1.0.0 in the registry with no beta label (10). 20+30+12+10+0+10 = 82."
        },
        "scores": {
          "a": 29,
          "b": 82
        }
      },
      {
        "by": 29,
        "category": "security",
        "leads": "userpilot",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.0 with PKCE, dynamic client registration and a revocation endpoint for MCP and the CLI; project ingest keys in a Bearer header that can be pinned to origins or app IDs. The only tool scope advertised is mcp:tools, so a connection gets every tool the user can use (24 of 30). Restricted keys and a confirmation step for unrestricted keys in the CLI; no read-only MCP mode or approval for deletes was found (6 of 20). Event properties come from apps and end users and reach the agent, and no prompt-injection guidance was found (3 of 15). No audit log was found (0). No security.txt, disclosure policy or certification was found (0). 24+6+3+0+0 = 33.",
          "b": "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."
        },
        "scores": {
          "a": 33,
          "b": 62
        }
      },
      {
        "by": 22,
        "category": "schema",
        "leads": "userpilot",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI file was found. The docs say every MCP tool describes its own parameters, and the query definition object is documented in full; we didn't open an MCP session to read the schemas (12 of 25). No llms.txt (404) and no Markdown pages served for agents (0). Each tool area is documented with examples, and the docs say when to use query_metrics instead of repeated execute_query calls (10 of 20). The query definition lists metrics, dimensions, date ranges and filter operators (9 of 15). The ingestion API documents its error body and status codes, and query_metrics reports per-item errors (11 of 15). /v1 and /api/v2 paths and dated SDK tags, but no product changelog (7 of 15). 12+0+10+9+11+7 = 49.",
          "b": "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."
        },
        "scores": {
          "a": 49,
          "b": 71
        }
      },
      {
        "by": 14,
        "category": "transparency",
        "leads": "userpilot",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The service is closed; the SDKs and CLI are MIT. Terms of December 2025 with no legal entity named (18 of 30). The privacy policy and terms agree on raw-event retention for the subscription's life and deletion within 14 days of account deletion; the about page says data is not used to train models. No DPA was found (18 of 30). The legacy X-MGM-Key header is still supported, and no deprecation policy was found (3 of 20). The terms name eight sub-processors with their purpose, without data locations (12 of 20). 18+18+3+12 = 51.",
          "b": "A closed service with terms dated 23 April 2024 (15 of 30). The privacy policy of 11 March 2025 names a DPO and two sub-processors (AWS and Cloudflare), while the security page names AWS, Google Cloud and Stripe. The DPA is on request and no customer-data retention period is stated (14 of 30). No deprecation policy or dated API notices found (3 of 20). Sub-processors are named with addresses but not data locations, though an EU ingestion endpoint exists (10 of 20). 15+14+3+10 = 42."
        },
        "scores": {
          "a": 45,
          "b": 59
        }
      },
      {
        "by": 11,
        "category": "ergonomics",
        "leads": "userpilot",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "53 tools, more than 30 (5). We added 3 because Goals and Alerts tools load only where enabled and query_metrics batches up to 10 queries (8 of 25). Date ranges, grouping and filters on queries; no documented page or limit parameters for lists (12 of 20). JSON errors with a message, and per-item status in batch results (13 of 20). Annotations weren't readable without a session, the tool list includes deletes and key revocation, and no idempotency keys were found (4 of 20). Five client SDKs and a CLI with `--json` output (12 of 15). 8+12+13+4+12 = 49.",
          "b": "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."
        },
        "scores": {
          "a": 49,
          "b": 60
        }
      },
      {
        "by": 5,
        "category": "maintenance",
        "leads": "userpilot",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "CLI v0.1.4 was tagged on 16 October 2026 (30). The JavaScript SDK released 0.12.0, 0.13.0 and 0.13.1 between 5 September and 2 October, and the Swift SDK 1.0.0 and 1.0.1 on 2 October (20). A closed service with no public changelog, support by email and GitHub repositories for the SDKs; issue activity wasn't read because the GitHub API refused us for its rate limit (6 of 25). Not in the official MCP registry; official SDKs in five languages are current (10 of 15). CI workflows on the SDK and CLI repositories (8 of 10). 30+20+6+10+8 = 74.",
          "b": "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."
        },
        "scores": {
          "a": 74,
          "b": 79
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Mostly Good Metrics",
        "b": "Userpilot, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://app.mostlygoodmetrics.com/mcp",
        "b": "https://mcp.userpilot.io/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "53",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.userpilot/mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-16",
        "b": "2026-10-11",
        "name": "Last release"
      },
      {
        "a": "2025-12-01",
        "b": "2024-04-23",
        "name": "Terms last updated"
      },
      {
        "a": "2025-12-01",
        "b": "2025-03-11",
        "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": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "81 npm/wk",
        "b": "236k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Userpilot scores 64.4 (B) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Mostly Good Metrics or Userpilot?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Mostly Good Metrics and Userpilot need an API key?"
      },
      {
        "answer": "Yes. Mostly Good Metrics has a hosted endpoint at https://app.mostlygoodmetrics.com/mcp and Userpilot at https://mcp.userpilot.io/mcp.",
        "question": "Can an agent call Mostly Good Metrics and Userpilot without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Indie and small-team apps that want simple funnels and retention an agent can query.",
        "slug": "mostly-good-metrics",
        "watchFor": "Public beta run by one developer, with no named legal entity in the terms"
      },
      {
        "aheadOn": [
          "Reliability, 82 against 29",
          "Schema \u0026 documentation, 71 against 49",
          "Agent ergonomics, 60 against 49",
          "Security \u0026 auth, 62 against 33",
          "Maintenance \u0026 community, 79 against 74",
          "Transparency \u0026 trust, 59 against 45"
        ],
        "also": null,
        "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"
      }
    ],
    "history": null,
    "job": {
      "capability": "analytics.query",
      "name": "Analytics queries"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amplitude-vs-mostly-good-metrics.json",
        "title": "Amplitude vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-mostly-good-metrics"
      },
      {
        "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/basedash-mcp-vs-mostly-good-metrics.json",
        "title": "Basedash MCP vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/basedash-mcp-vs-mostly-good-metrics"
      },
      {
        "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/countly-vs-mostly-good-metrics.json",
        "title": "Countly vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/countly-vs-mostly-good-metrics"
      },
      {
        "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/fullstory-vs-mostly-good-metrics.json",
        "title": "Fullstory vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-mostly-good-metrics"
      },
      {
        "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/growthbook-vs-userpilot.json",
        "title": "GrowthBook vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/matomo-vs-mostly-good-metrics.json",
        "title": "Matomo vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/matomo-vs-mostly-good-metrics"
      },
      {
        "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/mixpanel-vs-mostly-good-metrics.json",
        "title": "Mixpanel vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/mixpanel-vs-mostly-good-metrics"
      },
      {
        "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/mostly-good-metrics-vs-openpanel.json",
        "title": "Mostly Good Metrics vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-optimizely.json",
        "title": "Mostly Good Metrics vs Optimizely Experimentation",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-optimizely"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-pendo.json",
        "title": "Mostly Good Metrics vs Pendo",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-pendo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-posthog.json",
        "title": "Mostly Good Metrics vs PostHog",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-posthog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-rudderstack-mcp.json",
        "title": "Mostly Good Metrics vs RudderStack MCP",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-rudderstack-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-statsig.json",
        "title": "Mostly Good Metrics vs Statsig",
        "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-statsig"
      },
      {
        "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/optimizely-vs-userpilot.json",
        "title": "Optimizely Experimentation vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/optimizely-vs-userpilot"
      },
      {
        "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/posthog-vs-userpilot.json",
        "title": "PostHog vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/posthog-vs-userpilot"
      },
      {
        "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/userpilot-vs-woopra.json",
        "title": "Userpilot vs Woopra",
        "url": "https://www.anchorterminal.com/compare/userpilot-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-mostly-good-metrics.json",
        "title": "Heap vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/heap-vs-mostly-good-metrics"
      },
      {
        "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/rudderstack-mcp-vs-userpilot.json",
        "title": "RudderStack MCP vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/rudderstack-mcp-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flagsmith-vs-mostly-good-metrics.json",
        "title": "Flagsmith vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/flagsmith-vs-mostly-good-metrics"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-mostly-good-metrics.json",
        "title": "GrowthBook vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-mostly-good-metrics"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-mostly-good-metrics.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-mostly-good-metrics"
      },
      {
        "json": "https://www.anchorterminal.com/compare/launchdarkly-vs-mostly-good-metrics.json",
        "title": "LaunchDarkly vs Mostly Good Metrics",
        "url": "https://www.anchorterminal.com/compare/launchdarkly-vs-mostly-good-metrics"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 53,
        "edge": "userpilot",
        "key": "reliability",
        "mostly-good-metrics": 29,
        "name": "Reliability",
        "userpilot": 82,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 22,
        "edge": "userpilot",
        "key": "schema",
        "mostly-good-metrics": 49,
        "name": "Schema \u0026 documentation",
        "userpilot": 71,
        "weight": 13
      },
      {
        "by": 11,
        "edge": "userpilot",
        "key": "ergonomics",
        "mostly-good-metrics": 49,
        "name": "Agent ergonomics",
        "userpilot": 60,
        "weight": 13
      },
      {
        "by": 29,
        "edge": "userpilot",
        "key": "security",
        "mostly-good-metrics": 33,
        "name": "Security \u0026 auth",
        "userpilot": 62,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "mostly-good-metrics": 30,
        "name": "Payments \u0026 pricing",
        "userpilot": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "userpilot",
        "key": "maintenance",
        "mostly-good-metrics": 74,
        "name": "Maintenance \u0026 community",
        "userpilot": 79,
        "weight": 7
      },
      {
        "by": 14,
        "edge": "userpilot",
        "key": "transparency",
        "mostly-good-metrics": 45,
        "name": "Transparency \u0026 trust",
        "userpilot": 59,
        "weight": 7
      }
    ],
    "summary": "Userpilot scores 64.4 (B) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in 6 of 7 scored categories. Both do analytics queries.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "mostly-good-metrics": "Mostly Good Metrics lets an agent run ad-hoc funnels, retention and up to ten metric queries per call through a hosted MCP server with OAuth, at prices from $0. It is a public beta built by one developer, with no status page, no named legal entity and no security policy found.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot",
    "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.min.md"
  },
  "markdown": "Userpilot scores 64.4 (B) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in 6 of 7 scored categories. Both do analytics queries.\n\n- Mostly Good Metrics: grade E, 41.7/100, rank #1295 of 1510. Markdown https://www.anchorterminal.com/tools/mostly-good-metrics.md · JSON https://www.anchorterminal.com/api/v1/tools/mostly-good-metrics.json\n- Userpilot: grade B, 64.4/100, rank #473 of 1510. Markdown https://www.anchorterminal.com/tools/userpilot.md · JSON https://www.anchorterminal.com/api/v1/tools/userpilot.json\n- Best product analytics and experimentation tools for AI agents: https://www.anchorterminal.com/best/product-analytics/index.md\n- All 170 product analytics comparisons: https://www.anchorterminal.com/compare/product-analytics/index.md\n\n## Which one, for what\n\n### Mostly Good Metrics (E)\n\nGood for: Indie and small-team apps that want simple funnels and retention an agent can query.\n\nWatch for: Public beta run by one developer, with no named legal entity in the terms\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- Reliability, 82 against 29\n- Schema \u0026 documentation, 71 against 49\n- Agent ergonomics, 60 against 49\n- Security \u0026 auth, 62 against 33\n- Maintenance \u0026 community, 79 against 74\n- Transparency \u0026 trust, 59 against 45\n\nWatch for: Plans start at $299 a month, and the HTTP API needs Growth from $849\n\n\n## Why the edge\n\n### Reliability: Userpilot +53\n\n- Mostly Good Metrics (29): Graded on the hosted service with the hosted lines. No status page was found (0) and no incident history could be read (5). Ingestion limits are documented per plan (1,000 to 100,000 events a minute and 10,000 to 1,000,000 an hour), but no limit for MCP or query calls was found (12 of 15). 429 with Retry-After in the header and body, and the SDKs queue events and back off. No idempotency or safe-retry guidance for writes (12 of 15). No SLA (0). The press kit calls the product a public beta (0). 0+5+12+12+0+0 = 29.\n- Userpilot (82): Graded on the hosted service with the hosted lines. Better Stack status page at status.userpilot.io with components for ingestion in three regions, the SDKs, the web application APIs and the website (20). From August to November 2026 the page shows only scheduled maintenance windows of two to four hours, with no incidents; the MCP server isn't a component (30). 600 requests a minute per token for the real-time APIs, but no numbers for MCP or export (12 of 15). 429 documented with exponential backoff guidance; no Retry-After or idempotency guidance (10 of 15). The SLA is a custom Enterprise contract term, not published (0). The MCP server is 1.0.0 in the registry with no beta label (10). 20+30+12+10+0+10 = 82.\n\n### Security \u0026 auth: Userpilot +29\n\n- Mostly Good Metrics (33): OAuth 2.0 with PKCE, dynamic client registration and a revocation endpoint for MCP and the CLI; project ingest keys in a Bearer header that can be pinned to origins or app IDs. The only tool scope advertised is mcp:tools, so a connection gets every tool the user can use (24 of 30). Restricted keys and a confirmation step for unrestricted keys in the CLI; no read-only MCP mode or approval for deletes was found (6 of 20). Event properties come from apps and end users and reach the agent, and no prompt-injection guidance was found (3 of 15). No audit log was found (0). No security.txt, disclosure policy or certification was found (0). 24+6+3+0+0 = 33.\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\n### Schema \u0026 documentation: Userpilot +22\n\n- Mostly Good Metrics (49): No OpenAPI file was found. The docs say every MCP tool describes its own parameters, and the query definition object is documented in full; we didn't open an MCP session to read the schemas (12 of 25). No llms.txt (404) and no Markdown pages served for agents (0). Each tool area is documented with examples, and the docs say when to use query_metrics instead of repeated execute_query calls (10 of 20). The query definition lists metrics, dimensions, date ranges and filter operators (9 of 15). The ingestion API documents its error body and status codes, and query_metrics reports per-item errors (11 of 15). /v1 and /api/v2 paths and dated SDK tags, but no product changelog (7 of 15). 12+0+10+9+11+7 = 49.\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\n### Transparency \u0026 trust: Userpilot +14\n\n- Mostly Good Metrics (45): The service is closed; the SDKs and CLI are MIT. Terms of December 2025 with no legal entity named (18 of 30). The privacy policy and terms agree on raw-event retention for the subscription's life and deletion within 14 days of account deletion; the about page says data is not used to train models. No DPA was found (18 of 30). The legacy X-MGM-Key header is still supported, and no deprecation policy was found (3 of 20). The terms name eight sub-processors with their purpose, without data locations (12 of 20). 18+18+3+12 = 51.\n- Userpilot (59): A closed service with terms dated 23 April 2024 (15 of 30). The privacy policy of 11 March 2025 names a DPO and two sub-processors (AWS and Cloudflare), while the security page names AWS, Google Cloud and Stripe. The DPA is on request and no customer-data retention period is stated (14 of 30). No deprecation policy or dated API notices found (3 of 20). Sub-processors are named with addresses but not data locations, though an EU ingestion endpoint exists (10 of 20). 15+14+3+10 = 42.\n\n### Agent ergonomics: Userpilot +11\n\n- Mostly Good Metrics (49): 53 tools, more than 30 (5). We added 3 because Goals and Alerts tools load only where enabled and query_metrics batches up to 10 queries (8 of 25). Date ranges, grouping and filters on queries; no documented page or limit parameters for lists (12 of 20). JSON errors with a message, and per-item status in batch results (13 of 20). Annotations weren't readable without a session, the tool list includes deletes and key revocation, and no idempotency keys were found (4 of 20). Five client SDKs and a CLI with `--json` output (12 of 15). 8+12+13+4+12 = 49.\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\n### Maintenance \u0026 community: Userpilot +5\n\n- Mostly Good Metrics (74): CLI v0.1.4 was tagged on 16 October 2026 (30). The JavaScript SDK released 0.12.0, 0.13.0 and 0.13.1 between 5 September and 2 October, and the Swift SDK 1.0.0 and 1.0.1 on 2 October (20). A closed service with no public changelog, support by email and GitHub repositories for the SDKs; issue activity wasn't read because the GitHub API refused us for its rate limit (6 of 25). Not in the official MCP registry; official SDKs in five languages are current (10 of 15). CI workflows on the SDK and CLI repositories (8 of 10). 30+20+6+10+8 = 74.\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\n## Score by category\n\n| Category | Weight | Mostly Good Metrics | Userpilot | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 29 | 82 | Userpilot +53 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 49 | 71 | Userpilot +22 |\n| Agent ergonomics | 13% (16.2 this run) | 49 | 60 | Userpilot +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 33 | 62 | Userpilot +29 |\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) | 74 | 79 | Userpilot +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 45 | 59 | Userpilot +14 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **41.7 · E** | **64.4 · B** | |\n\n## Facts side by side\n\n| Fact | Mostly Good Metrics | Userpilot |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Mostly Good Metrics | Userpilot, Inc. |\n| Hosted endpoint | `https://app.mostlygoodmetrics.com/mcp` | `https://mcp.userpilot.io/mcp` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Tools exposed | 53 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | `io.userpilot/mcp` |\n| Last release | 2026-10-16 | 2026-10-11 |\n| Terms last updated | 2025-12-01 | 2024-04-23 |\n| Privacy policy last updated | 2025-12-01 | 2025-03-11 |\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 | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 81 npm/wk | 236k npm/wk |\n\n## Verdicts\n\n**Mostly Good Metrics.** Mostly Good Metrics lets an agent run ad-hoc funnels, retention and up to ten metric queries per call through a hosted MCP server with OAuth, at prices from $0. It is a public beta built by one developer, with no status page, no named legal entity and no security policy found.\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## Before you call either\n\n### Mostly Good Metrics\n\n1. Use query_metrics for several aggregate questions instead of repeated execute_query calls\n2. Pass inline definitions to execute_funnel and execute_retention rather than creating saved objects\n3. Confirm with the user before delete, revoke_api_key or stop_experiment calls, since the server doesn't ask\n4. Start a fresh agent session after connecting, since a running client may not reload the tool list\n5. On 429 from ingestion, wait for Retry-After before resending events\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## Questions\n\n### Which is better for AI agents, Mostly Good Metrics or Userpilot?\n\nUserpilot scores 64.4 (B) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in 6 of 7 scored categories.\n\n### Do Mostly Good Metrics and Userpilot need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Mostly Good Metrics and Userpilot without installing anything?\n\nYes. Mostly Good Metrics has a hosted endpoint at https://app.mostlygoodmetrics.com/mcp and Userpilot at https://mcp.userpilot.io/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.json, and with the fewest tokens: https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"mostly-good-metrics\", \"b\": \"userpilot\"}`. From a terminal: `anchor compare mostly-good-metrics userpilot`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/mostly-good-metrics.json and https://www.anchorterminal.com/api/v1/tools/userpilot.json\n\n## Other comparisons with Mostly Good Metrics or Userpilot\n\n- [Amplitude vs Mostly Good Metrics](https://www.anchorterminal.com/compare/amplitude-vs-mostly-good-metrics.md)\n- [Amplitude vs Userpilot](https://www.anchorterminal.com/compare/amplitude-vs-userpilot.md)\n- [Basedash MCP vs Mostly Good Metrics](https://www.anchorterminal.com/compare/basedash-mcp-vs-mostly-good-metrics.md)\n- [Basedash MCP vs Userpilot](https://www.anchorterminal.com/compare/basedash-mcp-vs-userpilot.md)\n- [Countly vs Mostly Good Metrics](https://www.anchorterminal.com/compare/countly-vs-mostly-good-metrics.md)\n- [Countly vs Userpilot](https://www.anchorterminal.com/compare/countly-vs-userpilot.md)\n- [Fullstory vs Mostly Good Metrics](https://www.anchorterminal.com/compare/fullstory-vs-mostly-good-metrics.md)\n- [Fullstory vs Userpilot](https://www.anchorterminal.com/compare/fullstory-vs-userpilot.md)\n- [GrowthBook vs Userpilot](https://www.anchorterminal.com/compare/growthbook-vs-userpilot.md)\n- [Matomo vs Mostly Good Metrics](https://www.anchorterminal.com/compare/matomo-vs-mostly-good-metrics.md)\n- [Matomo vs Userpilot](https://www.anchorterminal.com/compare/matomo-vs-userpilot.md)\n- [Mixpanel vs Mostly Good Metrics](https://www.anchorterminal.com/compare/mixpanel-vs-mostly-good-metrics.md)\n- [Mixpanel vs Userpilot](https://www.anchorterminal.com/compare/mixpanel-vs-userpilot.md)\n- [Mostly Good Metrics vs OpenPanel](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.md)\n- [Mostly Good Metrics vs Optimizely Experimentation](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-optimizely.md)\n- [Mostly Good Metrics vs Pendo](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-pendo.md)\n- [Mostly Good Metrics vs PostHog](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-posthog.md)\n- [Mostly Good Metrics vs RudderStack MCP](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-rudderstack-mcp.md)\n- [Mostly Good Metrics vs Statsig](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-statsig.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- [Optimizely Experimentation vs Userpilot](https://www.anchorterminal.com/compare/optimizely-vs-userpilot.md)\n- [Pendo vs Userpilot](https://www.anchorterminal.com/compare/pendo-vs-userpilot.md)\n- [PostHog vs Userpilot](https://www.anchorterminal.com/compare/posthog-vs-userpilot.md)\n- [Statsig vs Userpilot](https://www.anchorterminal.com/compare/statsig-vs-userpilot.md)\n- [Userpilot vs Woopra](https://www.anchorterminal.com/compare/userpilot-vs-woopra.md)\n- [Heap vs Mostly Good Metrics](https://www.anchorterminal.com/compare/heap-vs-mostly-good-metrics.md)\n- [Heap vs Userpilot](https://www.anchorterminal.com/compare/heap-vs-userpilot.md)\n- [RudderStack MCP vs Userpilot](https://www.anchorterminal.com/compare/rudderstack-mcp-vs-userpilot.md)\n- [Flagsmith vs Mostly Good Metrics](https://www.anchorterminal.com/compare/flagsmith-vs-mostly-good-metrics.md)\n- [GrowthBook vs Mostly Good Metrics](https://www.anchorterminal.com/compare/growthbook-vs-mostly-good-metrics.md)\n- [Harness Feature Management \u0026 Experimentation vs Mostly Good Metrics](https://www.anchorterminal.com/compare/harness-fme-vs-mostly-good-metrics.md)\n- [LaunchDarkly vs Mostly Good Metrics](https://www.anchorterminal.com/compare/launchdarkly-vs-mostly-good-metrics.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": "Mostly Good Metrics vs Userpilot",
        "url": ""
      }
    ],
    "description": "Userpilot scores 64.4 (B) to Mostly Good Metrics's 41.7 (E) for analytics queries. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Mostly Good Metrics E 41.7",
      "Userpilot B 64.4",
      "scores"
    ],
    "h1": "Mostly Good Metrics vs Userpilot",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/mostly-good-metrics-vs-userpilot",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Mostly Good Metrics vs Userpilot for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-userpilot"
  },
  "tokens": {
    "markdown": 4550,
    "slim": 2530
  },
  "version": 1
}
