{
  "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": 1277,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 17,
        "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-07T18:20:40.455487214Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 220,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 167,
          "p95ms24h": 298,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "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-07T18:20:40.455487214Z"
      }
    },
    "answer": "OpenPanel scores 61 (C) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in every scored category.",
    "b": {
      "slug": "openpanel",
      "name": "OpenPanel",
      "vendor": "OpenPanel AB",
      "vendorUrl": "https://openpanel.dev",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "OpenPanel is open-source web and product analytics from OpenPanel AB in Stockholm, with events, funnels, retention and profiles. It runs in OpenPanel's EU cloud or self-hosted, with REST APIs and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/openpanel",
      "markdownUrl": "https://www.anchorterminal.com/tools/openpanel.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/openpanel.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/openpanel.json",
      "dns": "openpanel.grade.anchorterminal.com",
      "repo": "https://github.com/Openpanel-dev/openpanel",
      "license": "AGPL-3.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.openpanel.dev/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@openpanel/sdk"
        },
        {
          "registry": "npm",
          "name": "@openpanel/web"
        }
      ],
      "auth": "api-key",
      "authNotes": "API clients have a client ID and secret and one of three types. write clients reach only the Track API, read clients the Export and Insights APIs for one project, root clients every API across the organisation. The MCP token is base64(clientId:clientSecret), sent as `Authorization: Bearer`, or as `?token=` in the URL for clients that can't set headers. Only read and root clients can use MCP. Onboarding creates a read-only MCP client for the first project.",
      "pricing": "freemium",
      "pricingNotes": "Cloud plans are priced by events a month, from $2.50 a month, with $30 a month for 250,000 events; seats and projects are unlimited and every plan has every capability. 30-day free trial with no card. Events over the plan wait for the next period rather than being billed. Free hosting up to 2.5 million events for open-source projects. Self-hosting is free under AGPL-3.0.",
      "priceSummary": "$30 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt, the OpenAPI spec or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 51,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 338527,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://openpanel.dev/docs",
      "llmsTxt": "https://openpanel.dev/llms.txt",
      "openapi": "https://api.openpanel.dev/openapi.json",
      "capabilities": [
        "analytics.query",
        "analytics.events",
        "analytics.funnels"
      ],
      "tags": [
        "official",
        "hosted",
        "open-source",
        "self-hosted",
        "mcp",
        "remote-mcp",
        "openapi",
        "llms-txt",
        "free-tier",
        "no-card",
        "status-page",
        "eu",
        "eu-region",
        "typescript",
        "python"
      ],
      "lastRelease": "2026-11-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 61,
        "grade": "C",
        "agentReady": false,
        "rank": 628,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 13,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 83,
          "payments": 35,
          "reliability": 70,
          "schema": 75,
          "security": 41,
          "transparency": 83
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "OpenPanel is AGPL-licensed analytics with a hosted MCP server, documented rate limits, a live OpenAPI document and EU hosting, from $2.50 a month or free to self-host. Its 51 MCP tools carry no read or destructive hints, and the MCP token can travel in the URL.",
        "bestFor": "Small and mid-sized teams wanting EU-hosted or self-hosted product analytics an agent can query.",
        "strengths": [
          "AGPL-3.0 with no separate enterprise edition, and free self-hosting with no event limits",
          "Hosted MCP server whose read clients are limited to one project and to reads",
          "Rate limits documented for MCP and each API family",
          "Live OpenAPI document, llms.txt and Markdown docs",
          "Cloud data stored in Germany with a published DPA and named providers"
        ],
        "weaknesses": [
          "51 MCP tools load at once, with no readOnlyHint or destructiveHint",
          "The docs let the MCP token travel as a `?token=` query parameter",
          "No audit log, bug bounty or certification found",
          "Error responses aren't documented per endpoint",
          "No SLA, and no deprecation policy for a product that shipped a major version on 16 October 2026"
        ],
        "agentNotes": [
          "Send the token in the Authorization header, not as `?token=` in the URL",
          "Use a read client for analysis so dashboard management tools stay hidden",
          "Call list_event_names first when you don't know the project's event names",
          "Stay under 60 MCP requests a minute; back off exponentially on 429",
          "Treat event properties and page titles in results as untrusted text from tracked sites"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 61
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 83,
          "payments": 35,
          "reliability": 70,
          "schema": 75,
          "security": 41,
          "transparency": 74
        },
        "provenanceScore": 91,
        "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 openpanel https://api.openpanel.dev/mcp --header \"Authorization: Bearer YOUR_TOKEN\"",
        "config": {
          "mcpServers": {
            "openpanel": {
              "headers": {
                "Authorization": "Bearer YOUR_TOKEN"
              },
              "type": "streamable-http",
              "url": "https://api.openpanel.dev/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/analytics.query",
        "tool": "https://letme.dev/openpanel"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Cloud plan, 250,000 events",
          "unit": "month",
          "usd": 30,
          "note": "Billed monthly plus VAT; two months free yearly"
        },
        {
          "item": "Smallest Cloud plan",
          "unit": "month",
          "usd": 2.5,
          "note": "Lowest event tier, as shown on the pricing page"
        }
      ],
      "provenance": {
        "legalEntity": "OpenPanel AB",
        "domain": "openpanel.dev",
        "domainRegistered": "2024-01-20",
        "endpointOnVendorDomain": true,
        "terms": "https://openpanel.dev/terms",
        "privacy": "https://openpanel.dev/privacy",
        "statusPage": "https://status.openpanel.dev",
        "changelog": "https://github.com/Openpanel-dev/openpanel/releases",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "The terms and privacy policy, both last updated 21 May 2026, name OpenPanel AB, Sankt Eriksgatan 100, Stockholm, under Swedish law. The terms incorporate a GDPR DPA published at openpanel.dev/dpa.",
          "openpanel.dev/.well-known/security.txt names security@openpanel.dev and expires 4 May 2027.",
          "openpanel.dev/robots.txt allows all crawlers, llms.txt and Markdown pages. openpanel.dev/changelog returned 404; releases are tagged on GitHub.",
          "RDAP gives openpanel.dev a registration date of 20 January 2024."
        ],
        "score": 91
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/openpanel.json",
      "live": {
        "slug": "openpanel",
        "probe": {
          "target": "https://api.openpanel.dev/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:44.634870089Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 122,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 69,
          "p95ms24h": 132,
          "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.openpanel.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:32.199116066Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@openpanel/sdk",
            "version": "1.3.4",
            "seenAt": "2026-11-06T23:53:11.060660619Z"
          },
          {
            "registry": "npm",
            "name": "@openpanel/web",
            "version": "1.4.4",
            "seenAt": "2026-11-06T23:53:11.962651116Z"
          }
        ],
        "githubStars": 7261,
        "npmWeekly": 338527,
        "securityTxt": {
          "url": "https://openpanel.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-05-04T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:00:33.076283922Z"
        },
        "llmsTxt": {
          "url": "https://openpanel.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:32.617452156Z"
        },
        "pages": [
          {
            "url": "https://openpanel.dev/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:30.663230155Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "452fd88cab93"
          },
          {
            "url": "https://openpanel.dev/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:32.807963388Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "dc695f7544f4"
          }
        ],
        "mcpTools": {
          "url": "https://api.openpanel.dev/mcp",
          "checkedAt": "2026-11-07T01:46:35.998524582Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:46:35.998524582Z"
        },
        "updatedAt": "2026-11-07T18:20:44.634870089Z"
      }
    },
    "edges": [
      {
        "by": 41,
        "category": "reliability",
        "leads": "openpanel",
        "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 OpenPanel Cloud with the hosted lines. OpenStatus page at status.openpanel.dev with API and Tracker components (20). In the 90 days from 8 August, one incident, degraded API performance for about two hours on 1 October 2026, caused by Hetzner private-network problems reaching the ClickHouse servers (15 of 30). Limits are documented with numbers for MCP (60 a minute per client) and the Export, Insights and Manage APIs (15). The docs say a 429 is returned and to back off exponentially; no Retry-After or idempotency guidance (10 of 15). No SLA was found (0). Generally available (10). 20+15+15+10+0+10 = 70."
        },
        "scores": {
          "a": 29,
          "b": 70
        }
      },
      {
        "by": 38,
        "category": "transparency",
        "leads": "openpanel",
        "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": "AGPL-3.0 for the whole product, and the about page says there is no enterprise edition (30). Terms and privacy policy of 21 May 2026 agree, with a DPA published, transient IP use, data ownership kept by the customer, and providers named with locations. Retention periods are general rather than stated in days (22 of 30). No deprecation policy or dated notices found; v3.0.0 was a major release on 16 October 2026 (4 of 20). Sub-processors and data locations disclosed in the privacy policy (Hetzner, Germany) (18 of 20). 30+22+4+18 = 74."
        },
        "scores": {
          "a": 45,
          "b": 83
        }
      },
      {
        "by": 26,
        "category": "schema",
        "leads": "openpanel",
        "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": "A live OpenAPI 3.0.3 document with 93 operations, 67 described, generated by the framework and titled 'Elysia Documentation' version 0.0.0; MCP tools are defined in TypeScript with typed inputs (22 of 25). llms.txt, llms-full.txt and Markdown pages (10). Tool descriptions say when to use them, for example list_event_names is to be called first when event names aren't known (14 of 20). 143 enums in the spec and typed MCP inputs (11 of 15). Curl examples in the API docs; error responses aren't documented per endpoint (9 of 15). Tagged releases on GitHub with notes, unversioned API paths and no changelog page (9 of 15). 22+10+14+11+9+9 = 75."
        },
        "scores": {
          "a": 49,
          "b": 75
        }
      },
      {
        "by": 9,
        "category": "maintenance",
        "leads": "openpanel",
        "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": "v3.30.0 was tagged on 6 November 2026 (30). 60 tagged releases between 8 August and 6 November (20). 572 commits since 8 August, a Discord server, a feedback board and email; issue response times weren't read because the GitHub API refused us for its rate limit (15 of 25). The official MCP registry has only a third-party OpenPanel server, not OpenPanel's own; official SDKs are current (10 of 15). Workflows build Docker images, SDKs and self-hosting releases; no test workflow was found in .github/workflows (8 of 10). 30+20+15+10+8 = 83."
        },
        "scores": {
          "a": 74,
          "b": 83
        }
      },
      {
        "by": 8,
        "category": "security",
        "leads": "openpanel",
        "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": "Client credentials with three types (write, read for one project, root for the organisation), created and deleted in the dashboard (25), less 10 because the docs give `?token=` in the MCP URL as an option (15 of 30). Read clients are read-only and limited to one project, and onboarding creates a read-only MCP client. No approval step for root-client writes (14 of 20). Tools return event properties, page titles and profile data sent from tracked sites, and no prompt-injection guidance was found (3 of 15). No audit log was found (0). SECURITY.md with a private advisory route and response times, a valid security.txt, and no bug bounty or certification found (9 of 20). 15+14+3+0+9 = 41."
        },
        "scores": {
          "a": 33,
          "b": 41
        }
      },
      {
        "by": 5,
        "category": "ergonomics",
        "leads": "openpanel",
        "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": "51 MCP tools, more than 30 (5). We added 3 because a read client doesn't get the 9 dashboard management tools (8 of 25). Insights endpoints take startDate, endDate, range, filters, cursor and limit (18 of 20). Errors aren't documented beyond 401 and 429 (12 of 20). No readOnlyHint or destructiveHint in the MCP source, no idempotency keys; delete_dashboard refuses a non-empty dashboard without forceDelete (3 of 20). Few required parameters, and SDKs for JavaScript, React, Next.js, Vue, React Native, Swift, Kotlin and Python (13 of 15). 8+18+12+3+13 = 54."
        },
        "scores": {
          "a": 49,
          "b": 54
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Mostly Good Metrics",
        "b": "OpenPanel AB",
        "name": "Vendor"
      },
      {
        "a": "https://app.mostlygoodmetrics.com/mcp",
        "b": "https://api.openpanel.dev/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "AGPL-3.0",
        "name": "Licence"
      },
      {
        "a": "53",
        "b": "51",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-16",
        "b": "2026-11-06",
        "name": "Last release"
      },
      {
        "a": "2025-12-01",
        "b": "2026-05-21",
        "name": "Terms last updated"
      },
      {
        "a": "2025-12-01",
        "b": "2026-05-21",
        "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": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "81 npm/wk",
        "b": "339k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "OpenPanel scores 61 (C) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, Mostly Good Metrics or OpenPanel?"
      },
      {
        "answer": "Mostly Good Metrics takes an API key or an OAuth sign-in. OpenPanel needs an API key.",
        "question": "Do Mostly Good Metrics and OpenPanel need an API key?"
      },
      {
        "answer": "Yes. Mostly Good Metrics has a hosted endpoint at https://app.mostlygoodmetrics.com/mcp and OpenPanel at https://api.openpanel.dev/mcp.",
        "question": "Can an agent call Mostly Good Metrics and OpenPanel without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Mostly Good Metrics. OpenPanel is open source (AGPL-3.0).",
        "question": "Are Mostly Good Metrics and OpenPanel open source?"
      }
    ],
    "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, 70 against 29",
          "Schema \u0026 documentation, 75 against 49",
          "Agent ergonomics, 54 against 49",
          "Security \u0026 auth, 41 against 33",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 83 against 74",
          "Transparency \u0026 trust, 83 against 45"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "Small and mid-sized teams wanting EU-hosted or self-hosted product analytics an agent can query.",
        "slug": "openpanel",
        "watchFor": "51 MCP tools load at once, with no readOnlyHint or destructiveHint"
      }
    ],
    "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-openpanel.json",
        "title": "Amplitude vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Basedash MCP vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/basedash-mcp-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Countly vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/countly-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Fullstory vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-openpanel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-openpanel.json",
        "title": "GrowthBook vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Matomo vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/matomo-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Mixpanel vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/mixpanel-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-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-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-optimizely.json",
        "title": "OpenPanel vs Optimizely Experimentation",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-optimizely"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openpanel-vs-pendo.json",
        "title": "OpenPanel vs Pendo",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-pendo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openpanel-vs-posthog.json",
        "title": "OpenPanel vs PostHog",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-posthog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openpanel-vs-statsig.json",
        "title": "OpenPanel vs Statsig",
        "url": "https://www.anchorterminal.com/compare/openpanel-vs-statsig"
      },
      {
        "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/flagsmith-vs-openpanel.json",
        "title": "Flagsmith vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/flagsmith-vs-openpanel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-openpanel.json",
        "title": "Harness Feature Management \u0026 Experimentation vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-openpanel"
      },
      {
        "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-openpanel.json",
        "title": "Heap vs OpenPanel",
        "url": "https://www.anchorterminal.com/compare/heap-vs-openpanel"
      },
      {
        "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": 41,
        "edge": "openpanel",
        "key": "reliability",
        "mostly-good-metrics": 29,
        "name": "Reliability",
        "openpanel": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "edge": "openpanel",
        "key": "schema",
        "mostly-good-metrics": 49,
        "name": "Schema \u0026 documentation",
        "openpanel": 75,
        "weight": 13
      },
      {
        "by": 5,
        "edge": "openpanel",
        "key": "ergonomics",
        "mostly-good-metrics": 49,
        "name": "Agent ergonomics",
        "openpanel": 54,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "openpanel",
        "key": "security",
        "mostly-good-metrics": 33,
        "name": "Security \u0026 auth",
        "openpanel": 41,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "openpanel",
        "key": "payments",
        "mostly-good-metrics": 30,
        "name": "Payments \u0026 pricing",
        "openpanel": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "edge": "openpanel",
        "key": "maintenance",
        "mostly-good-metrics": 74,
        "name": "Maintenance \u0026 community",
        "openpanel": 83,
        "weight": 7
      },
      {
        "by": 38,
        "edge": "openpanel",
        "key": "transparency",
        "mostly-good-metrics": 45,
        "name": "Transparency \u0026 trust",
        "openpanel": 83,
        "weight": 7
      }
    ],
    "summary": "OpenPanel scores 61 (C) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in every scored category. 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.",
      "openpanel": "OpenPanel is AGPL-licensed analytics with a hosted MCP server, documented rate limits, a live OpenAPI document and EU hosting, from $2.50 a month or free to self-host. Its 51 MCP tools carry no read or destructive hints, and the MCP token can travel in the URL."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel",
    "json": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.min.md"
  },
  "markdown": "OpenPanel scores 61 (C) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in every scored category. Both do analytics queries.\n\n- Mostly Good Metrics: grade E, 41.7/100, rank #1277 of 1486. Markdown https://www.anchorterminal.com/tools/mostly-good-metrics.md · JSON https://www.anchorterminal.com/api/v1/tools/mostly-good-metrics.json\n- OpenPanel: grade C, 61/100, rank #628 of 1486. Markdown https://www.anchorterminal.com/tools/openpanel.md · JSON https://www.anchorterminal.com/api/v1/tools/openpanel.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### 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### OpenPanel (C)\n\nGood for: Small and mid-sized teams wanting EU-hosted or self-hosted product analytics an agent can query.\n\nAhead on:\n- Reliability, 70 against 29\n- Schema \u0026 documentation, 75 against 49\n- Agent ergonomics, 54 against 49\n- Security \u0026 auth, 41 against 33\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 83 against 74\n- Transparency \u0026 trust, 83 against 45\n\nAlso in its favour:\n- Open source\n\nWatch for: 51 MCP tools load at once, with no readOnlyHint or destructiveHint\n\n\n## Why the edge\n\n### Reliability: OpenPanel +41\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- OpenPanel (70): Graded on OpenPanel Cloud with the hosted lines. OpenStatus page at status.openpanel.dev with API and Tracker components (20). In the 90 days from 8 August, one incident, degraded API performance for about two hours on 1 October 2026, caused by Hetzner private-network problems reaching the ClickHouse servers (15 of 30). Limits are documented with numbers for MCP (60 a minute per client) and the Export, Insights and Manage APIs (15). The docs say a 429 is returned and to back off exponentially; no Retry-After or idempotency guidance (10 of 15). No SLA was found (0). Generally available (10). 20+15+15+10+0+10 = 70.\n\n### Transparency \u0026 trust: OpenPanel +38\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- OpenPanel (83): AGPL-3.0 for the whole product, and the about page says there is no enterprise edition (30). Terms and privacy policy of 21 May 2026 agree, with a DPA published, transient IP use, data ownership kept by the customer, and providers named with locations. Retention periods are general rather than stated in days (22 of 30). No deprecation policy or dated notices found; v3.0.0 was a major release on 16 October 2026 (4 of 20). Sub-processors and data locations disclosed in the privacy policy (Hetzner, Germany) (18 of 20). 30+22+4+18 = 74.\n\n### Schema \u0026 documentation: OpenPanel +26\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- OpenPanel (75): A live OpenAPI 3.0.3 document with 93 operations, 67 described, generated by the framework and titled 'Elysia Documentation' version 0.0.0; MCP tools are defined in TypeScript with typed inputs (22 of 25). llms.txt, llms-full.txt and Markdown pages (10). Tool descriptions say when to use them, for example list_event_names is to be called first when event names aren't known (14 of 20). 143 enums in the spec and typed MCP inputs (11 of 15). Curl examples in the API docs; error responses aren't documented per endpoint (9 of 15). Tagged releases on GitHub with notes, unversioned API paths and no changelog page (9 of 15). 22+10+14+11+9+9 = 75.\n\n### Maintenance \u0026 community: OpenPanel +9\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- OpenPanel (83): v3.30.0 was tagged on 6 November 2026 (30). 60 tagged releases between 8 August and 6 November (20). 572 commits since 8 August, a Discord server, a feedback board and email; issue response times weren't read because the GitHub API refused us for its rate limit (15 of 25). The official MCP registry has only a third-party OpenPanel server, not OpenPanel's own; official SDKs are current (10 of 15). Workflows build Docker images, SDKs and self-hosting releases; no test workflow was found in .github/workflows (8 of 10). 30+20+15+10+8 = 83.\n\n### Security \u0026 auth: OpenPanel +8\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- OpenPanel (41): Client credentials with three types (write, read for one project, root for the organisation), created and deleted in the dashboard (25), less 10 because the docs give `?token=` in the MCP URL as an option (15 of 30). Read clients are read-only and limited to one project, and onboarding creates a read-only MCP client. No approval step for root-client writes (14 of 20). Tools return event properties, page titles and profile data sent from tracked sites, and no prompt-injection guidance was found (3 of 15). No audit log was found (0). SECURITY.md with a private advisory route and response times, a valid security.txt, and no bug bounty or certification found (9 of 20). 15+14+3+0+9 = 41.\n\n### Agent ergonomics: OpenPanel +5\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- OpenPanel (54): 51 MCP tools, more than 30 (5). We added 3 because a read client doesn't get the 9 dashboard management tools (8 of 25). Insights endpoints take startDate, endDate, range, filters, cursor and limit (18 of 20). Errors aren't documented beyond 401 and 429 (12 of 20). No readOnlyHint or destructiveHint in the MCP source, no idempotency keys; delete_dashboard refuses a non-empty dashboard without forceDelete (3 of 20). Few required parameters, and SDKs for JavaScript, React, Next.js, Vue, React Native, Swift, Kotlin and Python (13 of 15). 8+18+12+3+13 = 54.\n\n## Score by category\n\n| Category | Weight | Mostly Good Metrics | OpenPanel | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 29 | 70 | OpenPanel +41 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 49 | 75 | OpenPanel +26 |\n| Agent ergonomics | 13% (16.2 this run) | 49 | 54 | OpenPanel +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 33 | 41 | OpenPanel +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 35 | OpenPanel +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 74 | 83 | OpenPanel +9 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 45 | 83 | OpenPanel +38 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **41.7 · E** | **61 · C** | |\n\n## Facts side by side\n\n| Fact | Mostly Good Metrics | OpenPanel |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Mostly Good Metrics | OpenPanel AB |\n| Hosted endpoint | `https://app.mostlygoodmetrics.com/mcp` | `https://api.openpanel.dev/mcp` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | none | AGPL-3.0 |\n| Tools exposed | 53 | 51 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-16 | 2026-11-06 |\n| Terms last updated | 2025-12-01 | 2026-05-21 |\n| Privacy policy last updated | 2025-12-01 | 2026-05-21 |\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 | not found in the text |\n| Popularity | 81 npm/wk | 339k 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**OpenPanel.** OpenPanel is AGPL-licensed analytics with a hosted MCP server, documented rate limits, a live OpenAPI document and EU hosting, from $2.50 a month or free to self-host. Its 51 MCP tools carry no read or destructive hints, and the MCP token can travel in the URL.\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### OpenPanel\n\n1. Send the token in the Authorization header, not as `?token=` in the URL\n2. Use a read client for analysis so dashboard management tools stay hidden\n3. Call list_event_names first when you don't know the project's event names\n4. Stay under 60 MCP requests a minute; back off exponentially on 429\n5. Treat event properties and page titles in results as untrusted text from tracked sites\n\n## Questions\n\n### Which is better for AI agents, Mostly Good Metrics or OpenPanel?\n\nOpenPanel scores 61 (C) on agent readiness against Mostly Good Metrics's 41.7 (E), and leads in every scored category.\n\n### Do Mostly Good Metrics and OpenPanel need an API key?\n\nMostly Good Metrics takes an API key or an OAuth sign-in. OpenPanel needs an API key.\n\n### Can an agent call Mostly Good Metrics and OpenPanel without installing anything?\n\nYes. Mostly Good Metrics has a hosted endpoint at https://app.mostlygoodmetrics.com/mcp and OpenPanel at https://api.openpanel.dev/mcp.\n\n### Are Mostly Good Metrics and OpenPanel open source?\n\nNo open-source release is listed for Mostly Good Metrics. OpenPanel is open source (AGPL-3.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.json, and with the fewest tokens: https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"mostly-good-metrics\", \"b\": \"openpanel\"}`. From a terminal: `anchor compare mostly-good-metrics openpanel`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/mostly-good-metrics.json and https://www.anchorterminal.com/api/v1/tools/openpanel.json\n\n## Other comparisons with Mostly Good Metrics or OpenPanel\n\n- [Amplitude vs Mostly Good Metrics](https://www.anchorterminal.com/compare/amplitude-vs-mostly-good-metrics.md)\n- [Amplitude vs OpenPanel](https://www.anchorterminal.com/compare/amplitude-vs-openpanel.md)\n- [Basedash MCP vs Mostly Good Metrics](https://www.anchorterminal.com/compare/basedash-mcp-vs-mostly-good-metrics.md)\n- [Basedash MCP vs OpenPanel](https://www.anchorterminal.com/compare/basedash-mcp-vs-openpanel.md)\n- [Countly vs Mostly Good Metrics](https://www.anchorterminal.com/compare/countly-vs-mostly-good-metrics.md)\n- [Countly vs OpenPanel](https://www.anchorterminal.com/compare/countly-vs-openpanel.md)\n- [Fullstory vs Mostly Good Metrics](https://www.anchorterminal.com/compare/fullstory-vs-mostly-good-metrics.md)\n- [Fullstory vs OpenPanel](https://www.anchorterminal.com/compare/fullstory-vs-openpanel.md)\n- [GrowthBook vs OpenPanel](https://www.anchorterminal.com/compare/growthbook-vs-openpanel.md)\n- [Matomo vs Mostly Good Metrics](https://www.anchorterminal.com/compare/matomo-vs-mostly-good-metrics.md)\n- [Matomo vs OpenPanel](https://www.anchorterminal.com/compare/matomo-vs-openpanel.md)\n- [Mixpanel vs Mostly Good Metrics](https://www.anchorterminal.com/compare/mixpanel-vs-mostly-good-metrics.md)\n- [Mixpanel vs OpenPanel](https://www.anchorterminal.com/compare/mixpanel-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 Statsig](https://www.anchorterminal.com/compare/mostly-good-metrics-vs-statsig.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 Optimizely Experimentation](https://www.anchorterminal.com/compare/openpanel-vs-optimizely.md)\n- [OpenPanel vs Pendo](https://www.anchorterminal.com/compare/openpanel-vs-pendo.md)\n- [OpenPanel vs PostHog](https://www.anchorterminal.com/compare/openpanel-vs-posthog.md)\n- [OpenPanel vs Statsig](https://www.anchorterminal.com/compare/openpanel-vs-statsig.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- [Flagsmith vs OpenPanel](https://www.anchorterminal.com/compare/flagsmith-vs-openpanel.md)\n- [Harness Feature Management \u0026 Experimentation vs OpenPanel](https://www.anchorterminal.com/compare/harness-fme-vs-openpanel.md)\n- [Heap vs Mostly Good Metrics](https://www.anchorterminal.com/compare/heap-vs-mostly-good-metrics.md)\n- [Heap vs OpenPanel](https://www.anchorterminal.com/compare/heap-vs-openpanel.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 OpenPanel",
        "url": ""
      }
    ],
    "description": "OpenPanel scores 61 (C) 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",
      "OpenPanel C 61",
      "scores"
    ],
    "h1": "Mostly Good Metrics vs OpenPanel",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/mostly-good-metrics-vs-openpanel",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Mostly Good Metrics vs OpenPanel for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/mostly-good-metrics-vs-openpanel"
  },
  "tokens": {
    "markdown": 4550,
    "slim": 2480
  },
  "version": 1
}
