{
  "data": {
    "a": {
      "slug": "harness-fme",
      "name": "Harness Feature Management \u0026 Experimentation",
      "vendor": "Harness Inc.",
      "vendorUrl": "https://www.harness.io",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "Harness Feature Management \u0026 Experimentation (FME), formerly Split, manages feature flags, targeting, metrics and experiments. Agents reach it through the Admin API at api.split.io and the FME toolset of the Harness MCP server.",
      "url": "https://www.anchorterminal.com/tools/harness-fme",
      "markdownUrl": "https://www.anchorterminal.com/tools/harness-fme.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/harness-fme.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/harness-fme.json",
      "dns": "harness-fme.grade.anchorterminal.com",
      "repo": "https://github.com/harness/mcp-server",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.harness.io/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "harness-mcp-v2"
        }
      ],
      "auth": "mixed",
      "authNotes": "The Admin API takes an Admin API key as a Bearer token, or a Harness personal access token (PAT) or service account token (SAT) in `x-api-key`. Admin keys carry fixed roles that can be combined and cannot be edited after creation, and a key cannot create another with more roles. The local MCP server reads HARNESS_API_KEY. The hosted MCP endpoint uses Harness Platform OAuth and must be enabled per account by Harness Support.",
      "pricing": "freemium",
      "pricingNotes": "An FME Free Plan is enabled from inside a Harness account; its limits are not published. The Enterprise plan and FME pricing are by quotation through sales. No FME prices appear on harness.io/pricing.",
      "priceSummary": "Freemium",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the FME docs, the Split API reference or harness.io/pricing (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 11,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 8800,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developer.harness.io/feature-management-experimentation/feature-management-and-experimentation-documentation",
      "llmsTxt": "https://developer.harness.io/llms.txt",
      "capabilities": [
        "analytics.flags",
        "analytics.experiments",
        "analytics.events"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "remote-mcp",
        "oauth",
        "llms-txt",
        "free-tier",
        "sales-led",
        "status-page",
        "soc2",
        "iso27001",
        "typescript",
        "python",
        "cli",
        "closed-source"
      ],
      "lastRelease": "2026-11-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.2,
        "grade": "B",
        "agentReady": false,
        "rank": 257,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 81,
          "payments": 15,
          "reliability": 80,
          "schema": 71,
          "security": 79,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Harness FME, formerly Split, gives agents 11 consolidated MCP tools with an FME-only toolset, a read-only switch and confirmation on writes, over an Admin API with documented limits and role-scoped keys. FME prices are not published, the free plan's limits are unstated, and the hosted MCP endpoint must be enabled by Harness Support.",
        "bestFor": "Teams already on Harness, or Split customers, who want agents to inspect and change flags and segments with guard rails.",
        "strengths": [
          "11 generic MCP tools with `--toolsets=fme`, readOnlyHint on reads and elicitation before writes",
          "HARNESS_READ_ONLY blocks every create, update, delete and execute call",
          "Admin API keys with fixed, combinable roles, plus Harness PATs and SATs",
          "Documented rate limit with remaining and reset headers, and automatic backoff in the MCP server",
          "SOC 2 Type II, ISO 27001 and FedRAMP 20x, with FME audit logs and MCP audit sinks"
        ],
        "weaknesses": [
          "No FME prices are published; Enterprise is by quotation and free plan limits are unstated",
          "The hosted MCP endpoint must be enabled per account by Harness Support",
          "The FME MCP docs page still describes building a Go binary, unlike the current npm package",
          "About 20 Admin API requests per 10 seconds per organisation, which large lists can hit",
          "No public OpenAPI file for the Admin API was found"
        ],
        "agentNotes": [
          "Start the MCP server with `--toolsets=fme` so only FME resource types load",
          "Call `harness_describe(resource_type='fme_feature_flag')` before a create or update to see the fields",
          "Filter fme_feature_flag lists by name, tags or rollout status rather than listing every flag",
          "Set HARNESS_READ_ONLY for analysis tasks; leave confirmation on for kill, restore and delete",
          "On 429, wait at least the larger X-RateLimit-Reset-Seconds value before retrying"
        ],
        "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": 69.2
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 81,
          "payments": 15,
          "reliability": 80,
          "schema": 71,
          "security": 79,
          "transparency": 60
        },
        "provenanceScore": 61,
        "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": {
        "install": "npx harness-mcp-v2@latest",
        "config": {
          "mcpServers": {
            "harness": {
              "args": [
                "harness-mcp-v2@latest",
                "--toolsets=fme"
              ],
              "command": "npx",
              "env": {
                "HARNESS_API_KEY": "pat.xxx"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/analytics.flags",
        "tool": "https://letme.dev/harness-fme"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Harness Inc.",
        "domain": "harness.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.harness.io/legal/subscription-terms",
        "privacy": "https://www.harness.io/legal/privacy",
        "statusPage": "https://status.harness.io",
        "changelog": "https://github.com/harness/mcp-server/releases",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The Admin API is on api.split.io, the former Split domain, and the hosted MCP endpoint on mcp.harness.io.",
          "The privacy statement names Harness Inc. as controller and Harness France SAS as EU representative. Its header says last updated 23 October 2026 and its body says version of 14 October 2026.",
          "developer.harness.io/robots.txt allows all and carries Content-Signal ai-train=yes, search=yes, ai-input=yes. docs.split.io allows all but edit and login paths.",
          "www.harness.io/.well-known/security.txt answered with an invalid-request page. The security page gives security@harness.io and a private bug bounty on request.",
          "RDAP gave no registration date for harness.io."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/harness-fme.json",
      "live": {
        "slug": "harness-fme",
        "probe": {
          "target": "https://mcp.harness.io/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:29.454967067Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 211,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 195,
          "p95ms24h": 280,
          "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.harness.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:21:14.597545686Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "harness/mcp-server",
            "version": "v3.2.40",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:32:13.419387707Z"
          },
          {
            "registry": "npm",
            "name": "harness-mcp-v2",
            "version": "3.2.40",
            "seenAt": "2026-11-06T23:32:12.430886041Z"
          }
        ],
        "githubStars": 112,
        "npmWeekly": 8800,
        "securityTxt": {
          "url": "https://harness.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:19.957252225Z"
        },
        "llmsTxt": {
          "url": "https://developer.harness.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:41.749004752Z"
        },
        "pages": [
          {
            "url": "https://www.harness.io/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:30.551687912Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b15935b42065"
          },
          {
            "url": "https://www.harness.io/legal/subscription-terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:35.70684084Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "871b29e12dd4"
          }
        ],
        "updatedAt": "2026-11-07T18:21:14.597545686Z"
      }
    },
    "answer": "Harness Feature Management \u0026 Experimentation scores 69.2 (B) on agent readiness against Heap's 48.2 (D), and leads in 5 of 7 scored categories. Heap leads on payments \u0026 pricing and transparency \u0026 trust.",
    "b": {
      "slug": "heap",
      "name": "Heap",
      "vendor": "Contentsquare (Content Square, Inc.)",
      "vendorUrl": "https://www.heap.io",
      "kind": "http-api",
      "category": "product-analytics",
      "summary": "Heap is Contentsquare's product analytics service, which captures web and mobile interactions automatically. Its server-side HTTP API accepts custom events, identities, user and account properties, and user deletion requests.",
      "url": "https://www.anchorterminal.com/tools/heap",
      "markdownUrl": "https://www.anchorterminal.com/tools/heap.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/heap.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/heap.json",
      "dns": "heap.grade.anchorterminal.com",
      "license": "Proprietary service under Contentsquare's master services agreement. The React Native bridge and the Node client on npm are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://heapanalytics.com",
      "packages": [
        {
          "registry": "npm",
          "name": "heap-api"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. Track, identify and property calls need only `app_id`, the environment ID shown on the Projects page and used in the web snippet, with no secret. User deletion needs an API key that an admin generates under Account, Manage, Privacy \u0026 Security, exchanged by HTTP Basic for a temporary Bearer token. No OAuth, scopes or partner approval were found in the developer docs.",
      "pricing": "freemium",
      "pricingNotes": "Free plan up to 10,000 sessions a month with six months of history, APIs included, so an agent's owner can start without a contract. Growth is priced by estimate after signup, and Pro and Premier by quote. Whether signup asks for a card was not established (https://www.heap.io/pricing, checked 2026-10-07).",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs or on the pricing page (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 213,
        "pypiWeekly": null,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://developers.heap.io",
      "llmsTxt": "https://developers.heap.io/llms.txt",
      "capabilities": [
        "analytics.events"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "llms-txt",
        "free-tier",
        "no-oauth",
        "write-only",
        "eu-region",
        "status-page",
        "soc2",
        "sales-led"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 48.2,
        "grade": "D",
        "agentReady": false,
        "rank": 1120,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 49,
          "maintenance": 63,
          "payments": 25,
          "reliability": 47,
          "schema": 57,
          "security": 41,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "Heap's server-side API suits an agent that records events. Limits are published, bulk calls take 1,000 items and track accepts an idempotency key. The API returns no analytics, and ingest calls carry no secret beyond the environment ID. Heap's help centre lists a Heap MCP article, which a bot check stopped us reading, so the MCP server is ungraded.",
        "bestFor": "An agent that records backend events or enriches user and account properties in a company's existing Heap project, or that files privacy deletions.",
        "strengths": [
          "Rate limits are published. Track allows 30 requests per 30 seconds per identity, and bulk track 15,000 events a minute per environment",
          "Track and bulk track accept an `idempotency_key`, and bulk calls take up to 1,000 events or users per request",
          "llms.txt and a Markdown copy of every developer page, with an OpenAPI 3.1 fragment embedded in the reference pages we read",
          "Free plan with up to 10,000 sessions a month and six months of history, with APIs and the User Privacy API included",
          "Sub-processor list (June 2026) names AWS regions in Ireland, Frankfurt and Virginia, and the customer chooses Europe or the USA"
        ],
        "weaknesses": [
          "No query, export or definitions endpoint in the developer reference. Reading results needs the app, Heap Connect or the MCP server we couldn't read",
          "Track, identify and property calls carry no secret. The only identifier is the environment ID that the web snippet also publishes",
          "No SLA covers the API itself. Contentsquare's 99.5 per cent availability on Pro and Enterprise is measured on the user interface",
          "Paid plans have no public price. Growth asks for an estimate after signup, and Pro and Premier say Contact Us",
          "Error responses for track and identify are documented as a 400 with an empty object, and no 429 guidance was found"
        ],
        "agentNotes": [
          "Send EU projects to https://c.eu.heap-api.com instead of https://heapanalytics.com. The path stays the same",
          "Pass one of `identity` or `user_id` on track, never both",
          "Set `idempotency_key` on every track event so a retry doesn't duplicate it",
          "Stay under 30 requests per 30 seconds per identity, or batch up to 1,000 events in one bulk call",
          "For deletion, exchange the app_id and API key of the Main Production environment for a token first. Any other environment ID returns Unauthorized"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 48.2
          }
        ],
        "editorialScores": {
          "ergonomics": 49,
          "maintenance": 63,
          "payments": 25,
          "reliability": 47,
          "schema": 57,
          "security": 41,
          "transparency": 61
        },
        "provenanceScore": 71,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"app_id\": \"11\",\n    \"identity\": \"alice@example.com\",\n    \"event\": \"Send Transactional Email\",\n    \"properties\": {\"subject\": \"Welcome to My App!\"}\n  }' \\\n  https://heapanalytics.com/api/track"
      },
      "letme": {
        "capability": "https://letme.dev/analytics.events",
        "tool": "https://letme.dev/heap"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Free",
          "unit": "month",
          "usd": 0,
          "note": "up to 10,000 sessions a month"
        }
      ],
      "provenance": {
        "legalEntity": "Content Square, Inc.",
        "domain": "heap.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.heap.io/legal/heap-master-services-agreement",
        "privacy": "https://www.heap.io/privacy",
        "statusPage": "https://status.heap.io",
        "changelog": "https://developers.heap.io/docs/heapjs-5-changelog",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The Heap master services agreement URL redirects to Contentsquare's terms at contentsquare.com/legal/terms-conditions. The entity schedule names Content Square, Inc., 60 Hudson St, New York, for customers in the Americas, and other Contentsquare entities elsewhere.",
          "heap.io/terms is a website terms of use from Heap Inc., a Delaware corporation, last updated 30 August 2019. heap.io/privacy says the Heap policy has been consolidated into Contentsquare's.",
          "API calls go to heapanalytics.com and, for EU projects, c.eu.heap-api.com. Both are Heap domains named in the vendor's docs, not heap.io itself.",
          "www.heap.io/.well-known/security.txt and heapanalytics.com/.well-known/security.txt return 404. contentsquare.com publishes a signed security.txt that expires on 31 January 2028.",
          "RDAP has no service for .io through rdap.org, so the registration date of heap.io was not established.",
          "The only changelogs found are for the SDKs (heap.js 5, Android, iOS, React Native, Flutter). No changelog for the server-side API was found."
        ],
        "score": 71
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/heap.json",
      "live": {
        "slug": "heap",
        "probe": {
          "target": "https://heapanalytics.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:29.666649767Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 525,
          "authRequired": false,
          "uptime24h": 99.58,
          "uptime30d": 99.95,
          "p50ms24h": 375,
          "p95ms24h": 623,
          "samples24h": 239,
          "samples30d": 7463,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 253
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 240
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 186
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.heap.io",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-11-07T18:21:15.452578226Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "heap-api",
            "version": "1.0.1",
            "seenAt": "2026-11-06T23:32:32.393792952Z"
          }
        ],
        "npmWeekly": 30,
        "securityTxt": {
          "url": "https://heap.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:09.648091398Z"
        },
        "llmsTxt": {
          "url": "https://developers.heap.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:41.286344858Z"
        },
        "domain": {
          "domain": "heap.io",
          "checkedAt": "2026-11-01T14:21:01.065060526Z"
        },
        "pages": [
          {
            "url": "https://developers.heap.io/docs/heapjs-5-changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:59.707627429Z",
            "changedAt": "2026-11-05T12:28:13.588228653Z",
            "fingerprint": "1a6c97992ee3"
          },
          {
            "url": "https://www.heap.io/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:40.537453733Z",
            "changedAt": "2026-10-22T01:32:52.077065334Z",
            "fingerprint": "93f237b387d9"
          },
          {
            "url": "https://www.heap.io/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:42.80598927Z",
            "changedAt": "2026-10-22T01:32:52.370154517Z",
            "fingerprint": "f6fde754bf93"
          },
          {
            "url": "https://www.heap.io/legal/heap-master-services-agreement",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:38.187893789Z",
            "changedAt": "2026-10-22T01:32:48.135332495Z",
            "fingerprint": "93db7683f754"
          }
        ],
        "updatedAt": "2026-11-07T18:21:15.452578226Z"
      }
    },
    "edges": [
      {
        "by": 38,
        "category": "security",
        "leads": "harness-fme",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Admin API keys with combinable roles that can't be widened after creation, Harness PATs and SATs for central management, and Harness Platform OAuth on the hosted MCP endpoint. Credentials travel in headers (28 of 30). HARNESS_READ_ONLY removes every write, writes go through elicitation with a risk threshold for auto-approval, and FME change requests add approval for flag changes (19 of 20). No prompt-injection guidance; the tools return flag names, descriptions and rule data written by people (3 of 15). FME admin, environment and object audit logs, plus structured MCP audit events to file, webhook or OpenTelemetry sinks (13 of 15). SOC 1 and SOC 2 Type II, ISO 27001, 27017 and 27018, FedRAMP 20x, a security@harness.io disclosure route with a 24-hour response, a private bug bounty on request and annual external penetration tests. No security.txt (16 of 20). 28+19+3+13+16 = 79.",
          "b": "Track, identify and property calls carry no secret. The OpenAPI fragment declares an empty security requirement and the only identifier is the environment ID that the web snippet publishes. User deletion uses one admin-generated API key per account, exchanged for a temporary token. No scopes or rotation guidance found (8 of 30). Ingest is write-only by design. Deletion of up to 10,000 users has no confirmation step (5). The API returns no untrusted content (10). Audit logs are unchecked because help.heap.io answered with a bot check, so none are counted (0). Contentsquare publishes a signed security.txt valid to 31 January 2028 on contentsquare.com (not on heap.io), a disclosure policy, an invitation-only YesWeHack bounty, SOC 2 Type II and ISO 27001 (18). Total 41. Per the 7 October check, not re-read on 4 November, because heap.io and contentsquare.com terms bar robots and crawling."
        },
        "scores": {
          "a": 79,
          "b": 41
        }
      },
      {
        "by": 34,
        "category": "ergonomics",
        "leads": "harness-fme",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "11 consolidated tools, and `--toolsets=fme` narrows the server to FME (25). Flag lists filter server-side by name, tag and rollout status, and the Admin API paginates with markerLimit (17 of 20). Documented status codes, 429 headers, and a harness_diagnose tool. Error bodies aren't documented per endpoint (14 of 20). harness_list and harness_get carry readOnlyHint, write tools ask for confirmation by elicitation, and harness_delete is marked destructive. No idempotency keys (15 of 20). Two required settings (API key, optional org and project, account ID read from the token); a Python Admin API wrapper and CLI, and SDKs in more than a dozen languages for evaluation (12 of 15). 25+17+14+15+12 = 83.",
          "b": "Responses are an empty object, so context cost is small, but there is nothing to read back (15). No pagination or filtering because the reference has no read endpoint. Bulk calls take 1,000 events or users (5). Errors on track and identify are a bare 400. User deletion returns `err.message` with 401 and 404 explained (6). `idempotency_key` on track and bulk track, and property writes overwrite, so retries are safe (15). Track needs three fields and timestamps default to now. No current official server SDK was found. heap-api on npm is 1.0.1 from 2016 (8). Total 49. Per the 7 October check, not re-read on 4 November, because developers.heap.io sits on a host whose terms bar robots."
        },
        "scores": {
          "a": 83,
          "b": 49
        }
      },
      {
        "by": 33,
        "category": "reliability",
        "leads": "harness-fme",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted FME Admin API with the hosted lines. Statuspage at status.harness.io with an FME component among 196 (20). In the 90 days from 8 August, two FME incidents: API write operations returned 499 errors for 30 minutes on 20 August (minor) and the FME user interface was unavailable for 15 minutes on 23 August (major, interface only; flag evaluation was unaffected per the post). No API outage of an hour or more (20 of 30). About 20 Admin API requests per 10 seconds per organisation and per IP, documented on the MCP page (15). 429 responses carry remaining and reset headers with guidance to wait for the larger reset, and the MCP server backs off and retries three times (15). No SLA was found on harness.io/pricing or the FME docs (0). FME is generally available and the MCP server is at 3.2.40 (10). 20+20+15+15+0+10 = 80.",
          "b": "Graded on the server-side API with the hosted lines. Heap's status page is an Atlassian Statuspage at status.heap.io, the address heap.io links to, which sits on a heap.io host whose terms bar robots, so it wasn't read on 4 November. The same page also answers at heap.statuspage.io, but that copy names status.heap.io as its canonical address and no Heap page links to it, so it wasn't used. The 7 October component and incident readings came only from Statuspage's JSON API, which this run doesn't use, so they are struck. No component list could be read (0) and no incident history could be read (5). Rate limits published with numbers, 30 requests per 30 seconds per identity on track and 15,000 events a minute per environment on bulk track, per the 7 October check, not re-read on 4 November (15). No 429 or backoff guidance found, but track takes an `idempotency_key`, per the 7 October check, not re-read on 4 November (7, the earlier partial kept, since keys without any 429 or backoff guidance meet none of the line's values in full). Contentsquare's support package states 99.5 per cent availability for Product Analytics Pro and Enterprise, measured on the user interface, per the 7 October check, not re-read on 4 November (10). The API carries no beta label (10). 0+5+15+7+10+10 = 47."
        },
        "scores": {
          "a": 80,
          "b": 47
        }
      },
      {
        "by": 18,
        "category": "maintenance",
        "leads": "harness-fme",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "harness-mcp-v2 3.2.40 was tagged on 4 November 2026 (30). 14 tagged MCP releases between 8 August and 4 November (20). 100 commits since 8 August in the clone; FME docs and SDK release notes are dated, with support and a community site. Issue response times weren't read because the GitHub API refused us for its rate limit (15 of 25). Not found in the official MCP registry under a Harness namespace; official SDKs are current (8 of 15). MIT package with npm shrinkwrap and tests; CI state not read (8 of 10). 30+20+15+8+8 = 81.",
          "b": "heap.js 5.3.17 shipped on 6 October 2026, but that is the browser SDK. The server-side track reference last changed on 3 June 2026 and has no changelog, so we scored this line between the two (20 of 30). heap.js 5.3.15, 5.3.16 and 5.3.17 and Android Core 0.9.5 fall inside 90 days (20). Dated public changelogs and a community at community.contentsquare.com, whose response times we didn't check (8). Client SDKs for web, Android, iOS, React Native and Flutter are current. The Node server client is from 2016 (10). CI not checked (5). Total 63. Per the 7 October check, not re-read on 4 November (developers.heap.io is paused on its terms). The three heap.js releases still fall inside the 90 days from 6 August."
        },
        "scores": {
          "a": 81,
          "b": 63
        }
      },
      {
        "by": 14,
        "category": "schema",
        "leads": "harness-fme",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No public OpenAPI file for the Admin API was found; the reference is a ReadMe site with a Postman collection. The MCP server's 11 tools have typed inputs, and harness_describe returns each FME resource's fields (18 of 25). llms.txt on both developer.harness.io and docs.split.io, and every page as Markdown with `.md` (10). The README describes each tool and when writes ask for confirmation; resource details sit behind harness_describe rather than in the tool text (13 of 20). The generic tools take a resource_type string and a body, so per-resource constraints aren't in the schema (8 of 15). An error-code page lists 400, 401, 402, 403, 404, 409 and 429 with causes, and docs carry curl examples (10 of 15). Tagged MCP releases and dated SDK versioning policy; the Admin API has v1 and v2 paths and deprecation notices for Split-era endpoints (12 of 15). 18+10+13+8+10+12 = 71.",
          "b": "OpenAPI 3.1 fragments are embedded in the Markdown of the track and identify pages. No single spec file was found, the property pages we read had empty fragments and user deletion is prose only (15). llms.txt and a .md copy of every page (10). Descriptions state purpose, limits and reserved keys, with little on when not to use a call (12). Required fields are marked and lengths stated in prose, with string types throughout, no enums and a free-form `properties` object (8). Curl examples on every page. Track and identify document 200 and 400 with an empty object, and only user deletion describes its error body (7). SDK changelogs are dated, but no changelog or version policy for the server-side API was found. Paths mix unversioned, v1 and v0 (5). Total 57. Per the 7 October check, not re-read on 4 November, because developers.heap.io sits on a host whose terms bar robots."
        },
        "scores": {
          "a": 71,
          "b": 57
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "heap",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). No FME prices are published; harness.io/pricing lists FME only under Enterprise, priced by quotation (0). The docs describe a Start FME Free Plan step inside a Harness account; its limits and whether a card is needed aren't stated (15 of 20). A person signs up for Harness in a browser and creates a key or token (0). 0+0+15+0 = 15.",
          "b": "No x402, MPP or L402 (0). The Free plan and its 10,000-session limit are public. Growth needs an estimate after signup and Pro and Premier say Contact Us, so no paid price is published (5). Free plan with APIs included. No card is mentioned on the pricing page, and the signup form needs JavaScript we couldn't run (20). A person signs up in a browser and copies the environment ID (0). Total 25. Per the 7 October check, not re-read on 4 November (www.heap.io is paused on its terms)."
        },
        "scores": {
          "a": 15,
          "b": 25
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Harness Inc.",
        "b": "Contentsquare (Content Square, Inc.)",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.harness.io/mcp",
        "b": "https://heapanalytics.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under Contentsquare's master services agreement. The React Native bridge and the Node client on npm are MIT",
        "name": "Licence"
      },
      {
        "a": "11",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-11-04",
        "b": "2026-10-06",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "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": "8.8k npm/wk",
        "b": "213 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Harness Feature Management \u0026 Experimentation scores 69.2 (B) on agent readiness against Heap's 48.2 (D), and leads in 5 of 7 scored categories. Heap leads on payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Harness Feature Management \u0026 Experimentation or Heap?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Harness Feature Management \u0026 Experimentation and Heap need an API key?"
      },
      {
        "answer": "Yes. Harness Feature Management \u0026 Experimentation has a hosted endpoint at https://mcp.harness.io/mcp and Heap at https://heapanalytics.com.",
        "question": "Can an agent call Harness Feature Management \u0026 Experimentation and Heap without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 47",
          "Schema \u0026 documentation, 71 against 57",
          "Agent ergonomics, 83 against 49",
          "Security \u0026 auth, 79 against 41",
          "Maintenance \u0026 community, 81 against 63"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Teams already on Harness, or Split customers, who want agents to inspect and change flags and segments with guard rails.",
        "slug": "harness-fme",
        "watchFor": "No FME prices are published; Enterprise is by quotation and free plan limits are unstated"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 25 against 15",
          "Transparency \u0026 trust, 66 against 61"
        ],
        "also": null,
        "goodFor": "An agent that records backend events or enriches user and account properties in a company's existing Heap project, or that files privacy deletions.",
        "slug": "heap",
        "watchFor": "No query, export or definitions endpoint in the developer reference. Reading results needs the app, Heap Connect or the MCP server we couldn't read"
      }
    ],
    "history": {
      "harness-fme": null,
      "heap": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-04",
          "delta": -5,
          "from": 53.2,
          "fromGrade": "D",
          "to": 48.2,
          "toGrade": "D"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 53.1,
          "fromGrade": "D",
          "to": 53.2,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 53,
          "fromGrade": "D",
          "to": 53.1,
          "toGrade": "D"
        }
      ]
    },
    "job": {
      "capability": "analytics.events",
      "name": "Event analytics"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amplitude-vs-harness-fme.json",
        "title": "Amplitude vs Harness Feature Management \u0026 Experimentation",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-harness-fme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/countly-vs-harness-fme.json",
        "title": "Countly vs Harness Feature Management \u0026 Experimentation",
        "url": "https://www.anchorterminal.com/compare/countly-vs-harness-fme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flagsmith-vs-harness-fme.json",
        "title": "Flagsmith vs Harness Feature Management \u0026 Experimentation",
        "url": "https://www.anchorterminal.com/compare/flagsmith-vs-harness-fme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-launchdarkly.json",
        "title": "Harness Feature Management \u0026 Experimentation vs LaunchDarkly",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-launchdarkly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-mixpanel.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Mixpanel",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-mixpanel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-optimizely.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Optimizely Experimentation",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-optimizely"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-posthog.json",
        "title": "Harness Feature Management \u0026 Experimentation vs PostHog",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-posthog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-statsig.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Statsig",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-statsig"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amplitude-vs-heap.json",
        "title": "Amplitude vs Heap",
        "url": "https://www.anchorterminal.com/compare/amplitude-vs-heap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/countly-vs-heap.json",
        "title": "Countly vs Heap",
        "url": "https://www.anchorterminal.com/compare/countly-vs-heap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flagsmith-vs-heap.json",
        "title": "Flagsmith vs Heap",
        "url": "https://www.anchorterminal.com/compare/flagsmith-vs-heap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fullstory-vs-harness-fme.json",
        "title": "Fullstory vs Harness Feature Management \u0026 Experimentation",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-harness-fme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fullstory-vs-heap.json",
        "title": "Fullstory vs Heap",
        "url": "https://www.anchorterminal.com/compare/fullstory-vs-heap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-heap.json",
        "title": "GrowthBook vs Heap",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-heap"
      },
      {
        "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/harness-fme-vs-woopra.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Woopra",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-matomo.json",
        "title": "Heap vs Matomo",
        "url": "https://www.anchorterminal.com/compare/heap-vs-matomo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-mixpanel.json",
        "title": "Heap vs Mixpanel",
        "url": "https://www.anchorterminal.com/compare/heap-vs-mixpanel"
      },
      {
        "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/heap-vs-pendo.json",
        "title": "Heap vs Pendo",
        "url": "https://www.anchorterminal.com/compare/heap-vs-pendo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-posthog.json",
        "title": "Heap vs PostHog",
        "url": "https://www.anchorterminal.com/compare/heap-vs-posthog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-statsig.json",
        "title": "Heap vs Statsig",
        "url": "https://www.anchorterminal.com/compare/heap-vs-statsig"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-userpilot.json",
        "title": "Heap vs Userpilot",
        "url": "https://www.anchorterminal.com/compare/heap-vs-userpilot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heap-vs-woopra.json",
        "title": "Heap vs Woopra",
        "url": "https://www.anchorterminal.com/compare/heap-vs-woopra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/growthbook-vs-harness-fme.json",
        "title": "GrowthBook vs Harness Feature Management \u0026 Experimentation",
        "url": "https://www.anchorterminal.com/compare/growthbook-vs-harness-fme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-fme-vs-matomo.json",
        "title": "Harness Feature Management \u0026 Experimentation vs Matomo",
        "url": "https://www.anchorterminal.com/compare/harness-fme-vs-matomo"
      },
      {
        "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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 33,
        "edge": "harness-fme",
        "harness-fme": 80,
        "heap": 47,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 14,
        "edge": "harness-fme",
        "harness-fme": 71,
        "heap": 57,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 34,
        "edge": "harness-fme",
        "harness-fme": 83,
        "heap": 49,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 38,
        "edge": "harness-fme",
        "harness-fme": 79,
        "heap": 41,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "edge": "heap",
        "harness-fme": 15,
        "heap": 25,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 18,
        "edge": "harness-fme",
        "harness-fme": 81,
        "heap": 63,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 5,
        "edge": "heap",
        "harness-fme": 61,
        "heap": 66,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Harness Feature Management \u0026 Experimentation scores 69.2 (B) on agent readiness against Heap's 48.2 (D), and leads in 5 of 7 scored categories. Heap leads on payments \u0026 pricing and transparency \u0026 trust. Both do event analytics.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "harness-fme": "Harness FME, formerly Split, gives agents 11 consolidated MCP tools with an FME-only toolset, a read-only switch and confirmation on writes, over an Admin API with documented limits and role-scoped keys. FME prices are not published, the free plan's limits are unstated, and the hosted MCP endpoint must be enabled by Harness Support.",
      "heap": "Heap's server-side API suits an agent that records events. Limits are published, bulk calls take 1,000 items and track accepts an idempotency key. The API returns no analytics, and ingest calls carry no secret beyond the environment ID. Heap's help centre lists a Heap MCP article, which a bot check stopped us reading, so the MCP server is ungraded."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/harness-fme-vs-heap",
    "json": "https://www.anchorterminal.com/compare/harness-fme-vs-heap.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/harness-fme-vs-heap.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/harness-fme-vs-heap.min.md"
  },
  "markdown": "Harness Feature Management \u0026 Experimentation scores 69.2 (B) on agent readiness against Heap's 48.2 (D), and leads in 5 of 7 scored categories. Heap leads on payments \u0026 pricing and transparency \u0026 trust. Both do event analytics.\n\n- Harness Feature Management \u0026 Experimentation: grade B, 69.2/100, rank #257 of 1486. Markdown https://www.anchorterminal.com/tools/harness-fme.md · JSON https://www.anchorterminal.com/api/v1/tools/harness-fme.json\n- Heap: grade D, 48.2/100, rank #1120 of 1486. Markdown https://www.anchorterminal.com/tools/heap.md · JSON https://www.anchorterminal.com/api/v1/tools/heap.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### Harness Feature Management \u0026 Experimentation (B)\n\nGood for: Teams already on Harness, or Split customers, who want agents to inspect and change flags and segments with guard rails.\n\nAhead on:\n- Reliability, 80 against 47\n- Schema \u0026 documentation, 71 against 57\n- Agent ergonomics, 83 against 49\n- Security \u0026 auth, 79 against 41\n- Maintenance \u0026 community, 81 against 63\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: No FME prices are published; Enterprise is by quotation and free plan limits are unstated\n\n### Heap (D)\n\nGood for: An agent that records backend events or enriches user and account properties in a company's existing Heap project, or that files privacy deletions.\n\nAhead on:\n- Payments \u0026 pricing, 25 against 15\n- Transparency \u0026 trust, 66 against 61\n\nWatch for: No query, export or definitions endpoint in the developer reference. Reading results needs the app, Heap Connect or the MCP server we couldn't read\n\n\n## Why the edge\n\n### Security \u0026 auth: Harness Feature Management \u0026 Experimentation +38\n\n- Harness Feature Management \u0026 Experimentation (79): Admin API keys with combinable roles that can't be widened after creation, Harness PATs and SATs for central management, and Harness Platform OAuth on the hosted MCP endpoint. Credentials travel in headers (28 of 30). HARNESS_READ_ONLY removes every write, writes go through elicitation with a risk threshold for auto-approval, and FME change requests add approval for flag changes (19 of 20). No prompt-injection guidance; the tools return flag names, descriptions and rule data written by people (3 of 15). FME admin, environment and object audit logs, plus structured MCP audit events to file, webhook or OpenTelemetry sinks (13 of 15). SOC 1 and SOC 2 Type II, ISO 27001, 27017 and 27018, FedRAMP 20x, a security@harness.io disclosure route with a 24-hour response, a private bug bounty on request and annual external penetration tests. No security.txt (16 of 20). 28+19+3+13+16 = 79.\n- Heap (41): Track, identify and property calls carry no secret. The OpenAPI fragment declares an empty security requirement and the only identifier is the environment ID that the web snippet publishes. User deletion uses one admin-generated API key per account, exchanged for a temporary token. No scopes or rotation guidance found (8 of 30). Ingest is write-only by design. Deletion of up to 10,000 users has no confirmation step (5). The API returns no untrusted content (10). Audit logs are unchecked because help.heap.io answered with a bot check, so none are counted (0). Contentsquare publishes a signed security.txt valid to 31 January 2028 on contentsquare.com (not on heap.io), a disclosure policy, an invitation-only YesWeHack bounty, SOC 2 Type II and ISO 27001 (18). Total 41. Per the 7 October check, not re-read on 4 November, because heap.io and contentsquare.com terms bar robots and crawling.\n\n### Agent ergonomics: Harness Feature Management \u0026 Experimentation +34\n\n- Harness Feature Management \u0026 Experimentation (83): 11 consolidated tools, and `--toolsets=fme` narrows the server to FME (25). Flag lists filter server-side by name, tag and rollout status, and the Admin API paginates with markerLimit (17 of 20). Documented status codes, 429 headers, and a harness_diagnose tool. Error bodies aren't documented per endpoint (14 of 20). harness_list and harness_get carry readOnlyHint, write tools ask for confirmation by elicitation, and harness_delete is marked destructive. No idempotency keys (15 of 20). Two required settings (API key, optional org and project, account ID read from the token); a Python Admin API wrapper and CLI, and SDKs in more than a dozen languages for evaluation (12 of 15). 25+17+14+15+12 = 83.\n- Heap (49): Responses are an empty object, so context cost is small, but there is nothing to read back (15). No pagination or filtering because the reference has no read endpoint. Bulk calls take 1,000 events or users (5). Errors on track and identify are a bare 400. User deletion returns `err.message` with 401 and 404 explained (6). `idempotency_key` on track and bulk track, and property writes overwrite, so retries are safe (15). Track needs three fields and timestamps default to now. No current official server SDK was found. heap-api on npm is 1.0.1 from 2016 (8). Total 49. Per the 7 October check, not re-read on 4 November, because developers.heap.io sits on a host whose terms bar robots.\n\n### Reliability: Harness Feature Management \u0026 Experimentation +33\n\n- Harness Feature Management \u0026 Experimentation (80): Graded on the hosted FME Admin API with the hosted lines. Statuspage at status.harness.io with an FME component among 196 (20). In the 90 days from 8 August, two FME incidents: API write operations returned 499 errors for 30 minutes on 20 August (minor) and the FME user interface was unavailable for 15 minutes on 23 August (major, interface only; flag evaluation was unaffected per the post). No API outage of an hour or more (20 of 30). About 20 Admin API requests per 10 seconds per organisation and per IP, documented on the MCP page (15). 429 responses carry remaining and reset headers with guidance to wait for the larger reset, and the MCP server backs off and retries three times (15). No SLA was found on harness.io/pricing or the FME docs (0). FME is generally available and the MCP server is at 3.2.40 (10). 20+20+15+15+0+10 = 80.\n- Heap (47): Graded on the server-side API with the hosted lines. Heap's status page is an Atlassian Statuspage at status.heap.io, the address heap.io links to, which sits on a heap.io host whose terms bar robots, so it wasn't read on 4 November. The same page also answers at heap.statuspage.io, but that copy names status.heap.io as its canonical address and no Heap page links to it, so it wasn't used. The 7 October component and incident readings came only from Statuspage's JSON API, which this run doesn't use, so they are struck. No component list could be read (0) and no incident history could be read (5). Rate limits published with numbers, 30 requests per 30 seconds per identity on track and 15,000 events a minute per environment on bulk track, per the 7 October check, not re-read on 4 November (15). No 429 or backoff guidance found, but track takes an `idempotency_key`, per the 7 October check, not re-read on 4 November (7, the earlier partial kept, since keys without any 429 or backoff guidance meet none of the line's values in full). Contentsquare's support package states 99.5 per cent availability for Product Analytics Pro and Enterprise, measured on the user interface, per the 7 October check, not re-read on 4 November (10). The API carries no beta label (10). 0+5+15+7+10+10 = 47.\n\n### Maintenance \u0026 community: Harness Feature Management \u0026 Experimentation +18\n\n- Harness Feature Management \u0026 Experimentation (81): harness-mcp-v2 3.2.40 was tagged on 4 November 2026 (30). 14 tagged MCP releases between 8 August and 4 November (20). 100 commits since 8 August in the clone; FME docs and SDK release notes are dated, with support and a community site. Issue response times weren't read because the GitHub API refused us for its rate limit (15 of 25). Not found in the official MCP registry under a Harness namespace; official SDKs are current (8 of 15). MIT package with npm shrinkwrap and tests; CI state not read (8 of 10). 30+20+15+8+8 = 81.\n- Heap (63): heap.js 5.3.17 shipped on 6 October 2026, but that is the browser SDK. The server-side track reference last changed on 3 June 2026 and has no changelog, so we scored this line between the two (20 of 30). heap.js 5.3.15, 5.3.16 and 5.3.17 and Android Core 0.9.5 fall inside 90 days (20). Dated public changelogs and a community at community.contentsquare.com, whose response times we didn't check (8). Client SDKs for web, Android, iOS, React Native and Flutter are current. The Node server client is from 2016 (10). CI not checked (5). Total 63. Per the 7 October check, not re-read on 4 November (developers.heap.io is paused on its terms). The three heap.js releases still fall inside the 90 days from 6 August.\n\n### Schema \u0026 documentation: Harness Feature Management \u0026 Experimentation +14\n\n- Harness Feature Management \u0026 Experimentation (71): No public OpenAPI file for the Admin API was found; the reference is a ReadMe site with a Postman collection. The MCP server's 11 tools have typed inputs, and harness_describe returns each FME resource's fields (18 of 25). llms.txt on both developer.harness.io and docs.split.io, and every page as Markdown with `.md` (10). The README describes each tool and when writes ask for confirmation; resource details sit behind harness_describe rather than in the tool text (13 of 20). The generic tools take a resource_type string and a body, so per-resource constraints aren't in the schema (8 of 15). An error-code page lists 400, 401, 402, 403, 404, 409 and 429 with causes, and docs carry curl examples (10 of 15). Tagged MCP releases and dated SDK versioning policy; the Admin API has v1 and v2 paths and deprecation notices for Split-era endpoints (12 of 15). 18+10+13+8+10+12 = 71.\n- Heap (57): OpenAPI 3.1 fragments are embedded in the Markdown of the track and identify pages. No single spec file was found, the property pages we read had empty fragments and user deletion is prose only (15). llms.txt and a .md copy of every page (10). Descriptions state purpose, limits and reserved keys, with little on when not to use a call (12). Required fields are marked and lengths stated in prose, with string types throughout, no enums and a free-form `properties` object (8). Curl examples on every page. Track and identify document 200 and 400 with an empty object, and only user deletion describes its error body (7). SDK changelogs are dated, but no changelog or version policy for the server-side API was found. Paths mix unversioned, v1 and v0 (5). Total 57. Per the 7 October check, not re-read on 4 November, because developers.heap.io sits on a host whose terms bar robots.\n\n### Payments \u0026 pricing: Heap +10\n\n- Harness Feature Management \u0026 Experimentation (15): No x402, MPP or L402 (0). No FME prices are published; harness.io/pricing lists FME only under Enterprise, priced by quotation (0). The docs describe a Start FME Free Plan step inside a Harness account; its limits and whether a card is needed aren't stated (15 of 20). A person signs up for Harness in a browser and creates a key or token (0). 0+0+15+0 = 15.\n- Heap (25): No x402, MPP or L402 (0). The Free plan and its 10,000-session limit are public. Growth needs an estimate after signup and Pro and Premier say Contact Us, so no paid price is published (5). Free plan with APIs included. No card is mentioned on the pricing page, and the signup form needs JavaScript we couldn't run (20). A person signs up in a browser and copies the environment ID (0). Total 25. Per the 7 October check, not re-read on 4 November (www.heap.io is paused on its terms).\n\n## Score by category\n\n| Category | Weight | Harness Feature Management \u0026 Experimentation | Heap | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 47 | Harness Feature Management \u0026 Experimentation +33 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 71 | 57 | Harness Feature Management \u0026 Experimentation +14 |\n| Agent ergonomics | 13% (16.2 this run) | 83 | 49 | Harness Feature Management \u0026 Experimentation +34 |\n| Security \u0026 auth | 14% (17.5 this run) | 79 | 41 | Harness Feature Management \u0026 Experimentation +38 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 15 | 25 | Heap +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 81 | 63 | Harness Feature Management \u0026 Experimentation +18 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 66 | Heap +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.2 · B** | **48.2 · D** | |\n\n## Facts side by side\n\n| Fact | Harness Feature Management \u0026 Experimentation | Heap |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Harness Inc. | Contentsquare (Content Square, Inc.) |\n| Hosted endpoint | `https://mcp.harness.io/mcp` | `https://heapanalytics.com` |\n| Transports | HTTP, stdio, Streamable HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | none | Proprietary service under Contentsquare's master services agreement. The React Native bridge and the Node client on npm are MIT |\n| Tools exposed | 11 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-11-04 | 2026-10-06 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | couldn't be read |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 8.8k npm/wk | 213 npm/wk |\n\n## How the scores have moved\n\n### Harness Feature Management \u0026 Experimentation\n\nNo score change since it was listed.\n\n### Heap\n\n- -5.0 on 4 November 2026: correction\n- +0.1 on 28 October 2026: new evidence\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**Harness Feature Management \u0026 Experimentation.** Harness FME, formerly Split, gives agents 11 consolidated MCP tools with an FME-only toolset, a read-only switch and confirmation on writes, over an Admin API with documented limits and role-scoped keys. FME prices are not published, the free plan's limits are unstated, and the hosted MCP endpoint must be enabled by Harness Support.\n\n**Heap.** Heap's server-side API suits an agent that records events. Limits are published, bulk calls take 1,000 items and track accepts an idempotency key. The API returns no analytics, and ingest calls carry no secret beyond the environment ID. Heap's help centre lists a Heap MCP article, which a bot check stopped us reading, so the MCP server is ungraded.\n\n## Before you call either\n\n### Harness Feature Management \u0026 Experimentation\n\n1. Start the MCP server with `--toolsets=fme` so only FME resource types load\n2. Call `harness_describe(resource_type='fme_feature_flag')` before a create or update to see the fields\n3. Filter fme_feature_flag lists by name, tags or rollout status rather than listing every flag\n4. Set HARNESS_READ_ONLY for analysis tasks; leave confirmation on for kill, restore and delete\n5. On 429, wait at least the larger X-RateLimit-Reset-Seconds value before retrying\n\n### Heap\n\n1. Send EU projects to https://c.eu.heap-api.com instead of https://heapanalytics.com. The path stays the same\n2. Pass one of `identity` or `user_id` on track, never both\n3. Set `idempotency_key` on every track event so a retry doesn't duplicate it\n4. Stay under 30 requests per 30 seconds per identity, or batch up to 1,000 events in one bulk call\n5. For deletion, exchange the app_id and API key of the Main Production environment for a token first. Any other environment ID returns Unauthorized\n\n## Questions\n\n### Which is better for AI agents, Harness Feature Management \u0026 Experimentation or Heap?\n\nHarness Feature Management \u0026 Experimentation scores 69.2 (B) on agent readiness against Heap's 48.2 (D), and leads in 5 of 7 scored categories. Heap leads on payments \u0026 pricing and transparency \u0026 trust.\n\n### Do Harness Feature Management \u0026 Experimentation and Heap need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Harness Feature Management \u0026 Experimentation and Heap without installing anything?\n\nYes. Harness Feature Management \u0026 Experimentation has a hosted endpoint at https://mcp.harness.io/mcp and Heap at https://heapanalytics.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/harness-fme-vs-heap.json, and with the fewest tokens: https://www.anchorterminal.com/compare/harness-fme-vs-heap.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"harness-fme\", \"b\": \"heap\"}`. From a terminal: `anchor compare harness-fme heap`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/harness-fme.json and https://www.anchorterminal.com/api/v1/tools/heap.json\n\n## Other comparisons with Harness Feature Management \u0026 Experimentation or Heap\n\n- [Amplitude vs Harness Feature Management \u0026 Experimentation](https://www.anchorterminal.com/compare/amplitude-vs-harness-fme.md)\n- [Countly vs Harness Feature Management \u0026 Experimentation](https://www.anchorterminal.com/compare/countly-vs-harness-fme.md)\n- [Flagsmith vs Harness Feature Management \u0026 Experimentation](https://www.anchorterminal.com/compare/flagsmith-vs-harness-fme.md)\n- [Harness Feature Management \u0026 Experimentation vs LaunchDarkly](https://www.anchorterminal.com/compare/harness-fme-vs-launchdarkly.md)\n- [Harness Feature Management \u0026 Experimentation vs Mixpanel](https://www.anchorterminal.com/compare/harness-fme-vs-mixpanel.md)\n- [Harness Feature Management \u0026 Experimentation vs Optimizely Experimentation](https://www.anchorterminal.com/compare/harness-fme-vs-optimizely.md)\n- [Harness Feature Management \u0026 Experimentation vs PostHog](https://www.anchorterminal.com/compare/harness-fme-vs-posthog.md)\n- [Harness Feature Management \u0026 Experimentation vs Statsig](https://www.anchorterminal.com/compare/harness-fme-vs-statsig.md)\n- [Amplitude vs Heap](https://www.anchorterminal.com/compare/amplitude-vs-heap.md)\n- [Countly vs Heap](https://www.anchorterminal.com/compare/countly-vs-heap.md)\n- [Flagsmith vs Heap](https://www.anchorterminal.com/compare/flagsmith-vs-heap.md)\n- [Fullstory vs Harness Feature Management \u0026 Experimentation](https://www.anchorterminal.com/compare/fullstory-vs-harness-fme.md)\n- [Fullstory vs Heap](https://www.anchorterminal.com/compare/fullstory-vs-heap.md)\n- [GrowthBook vs Heap](https://www.anchorterminal.com/compare/growthbook-vs-heap.md)\n- [Harness Feature Management \u0026 Experimentation vs OpenPanel](https://www.anchorterminal.com/compare/harness-fme-vs-openpanel.md)\n- [Harness Feature Management \u0026 Experimentation vs Woopra](https://www.anchorterminal.com/compare/harness-fme-vs-woopra.md)\n- [Heap vs Matomo](https://www.anchorterminal.com/compare/heap-vs-matomo.md)\n- [Heap vs Mixpanel](https://www.anchorterminal.com/compare/heap-vs-mixpanel.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- [Heap vs Pendo](https://www.anchorterminal.com/compare/heap-vs-pendo.md)\n- [Heap vs PostHog](https://www.anchorterminal.com/compare/heap-vs-posthog.md)\n- [Heap vs Statsig](https://www.anchorterminal.com/compare/heap-vs-statsig.md)\n- [Heap vs Userpilot](https://www.anchorterminal.com/compare/heap-vs-userpilot.md)\n- [Heap vs Woopra](https://www.anchorterminal.com/compare/heap-vs-woopra.md)\n- [GrowthBook vs Harness Feature Management \u0026 Experimentation](https://www.anchorterminal.com/compare/growthbook-vs-harness-fme.md)\n- [Harness Feature Management \u0026 Experimentation vs Matomo](https://www.anchorterminal.com/compare/harness-fme-vs-matomo.md)\n- [Harness Feature Management \u0026 Experimentation vs Mostly Good Metrics](https://www.anchorterminal.com/compare/harness-fme-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": "Harness Feature Management \u0026 Experimentation vs Heap",
        "url": ""
      }
    ],
    "description": "Harness Feature Management \u0026 Experimentation scores 69.2 (B) to Heap's 48.2 (D) for event analytics. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Harness Feature Management \u0026 Experimentation B 69.2",
      "Heap D 48.2",
      "scores"
    ],
    "h1": "Harness Feature Management \u0026 Experimentation vs Heap",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/harness-fme-vs-heap",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Harness Feature Management \u0026 Experimentation vs Heap (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/harness-fme-vs-heap"
  },
  "tokens": {
    "markdown": 5300,
    "slim": 3130
  },
  "version": 1
}
