{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "metronome",
    "name": "Metronome",
    "vendor": "Metronome (Stripe)",
    "vendorUrl": "https://metronome.com",
    "kind": "http-api",
    "category": "payment-platforms",
    "summary": "Metronome is a hosted usage-based billing platform, part of Stripe. Its REST API ingests usage events, defines billable metrics, rate cards and contracts, and generates invoices, with official SDKs for Python, Node.js, Go, Ruby and Java.",
    "url": "https://www.anchorterminal.com/tools/metronome",
    "markdownUrl": "https://www.anchorterminal.com/tools/metronome.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/metronome.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/metronome.json",
    "repo": "https://github.com/Metronome-Industries/metronome-node",
    "license": "Proprietary service under the Stripe Services Agreement. The SDKs on GitHub are Apache-2.0",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://api.metronome.com",
    "packages": [
      {
        "registry": "npm",
        "name": "@metronome/sdk"
      },
      {
        "registry": "pypi",
        "name": "metronome-sdk"
      },
      {
        "registry": "go",
        "name": "github.com/Metronome-Industries/metronome-go"
      }
    ],
    "auth": "api-key",
    "authNotes": "Bearer tokens, created by a person under Developer, API tokens in the Metronome app and shown once. A sandbox token reaches only sandbox data and a production token only production data. A token has its creator's permissions unless Metronome support scopes it by access level, environment or endpoint. Tokens can be archived, not edited. The API description also describes agentic tokens, whose writes need a person's approval.",
    "pricing": "usage",
    "pricingNotes": "The Startup plan costs 0.8 per cent of billing volume plus $0.04 per 1,000 ingested events, self-serve with a credit card for production. The pricing page says \"Start free\" and a sandbox account is self-serve. Custom plan prices are set by sales, and the docs describe an annual platform fee plus consumption charges on order forms (https://metronome.com/pricing, checked 2026-10-09).",
    "priceSummary": "0.8% fee",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the OpenAPI description, the docs index or the pricing page (checked 2026-10-09).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": 7,
      "npmWeekly": 363390,
      "pypiWeekly": null,
      "asOf": "2026-10-09"
    },
    "docsUrl": "https://docs.metronome.com/guides/get-started/home",
    "llmsTxt": "https://docs.metronome.com/llms.txt",
    "openapi": "https://docs.metronome.com/openapi.json",
    "capabilities": [
      "payments.metering",
      "accounting.invoices"
    ],
    "tags": [
      "hosted",
      "usage-billing",
      "openapi",
      "llms-txt",
      "webhooks",
      "python",
      "typescript",
      "go",
      "ruby",
      "java",
      "status-page",
      "soc2",
      "closed-source",
      "sandbox"
    ],
    "lastRelease": "2026-09-29",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 69.7,
      "grade": "B",
      "agentReady": false,
      "rank": 173,
      "ranked": true,
      "rankOf": 950,
      "categoryRank": 4,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 75,
        "maintenance": 82,
        "payments": 39,
        "reliability": 68,
        "schema": 88,
        "security": 68,
        "transparency": 65
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 68,
          "points": 13.6,
          "reason": "Hosted lines. status.metronome.com runs on incident.io with seven components (20). Its feed lists 13 incidents and three maintenance windows between 22 July and 8 October 2026. On 3 September a vendor's partial outage raised API and ingest error rates for two hours. API errors were also elevated on 22 July, 11 September (about 30 minutes) and 8 October (a two-minute burst), and most of the rest were data export or invoice delays. Durations were read on three incident pages only (10 of 30). Default rate limits are published per tier in requests a second (15). 429 responses carry `X-Metronome-Rate-Limit-Type` and the docs advise backoff, `Idempotency-Key` covers every POST and the SDKs retry twice by default. No `Retry-After` was found (13 of 15). The pricing page names enhanced SLAs on the Custom plan and no SLA document was found (0). The API is generally available (10). 68."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 88,
          "points": 14.3,
          "reason": "A public OpenAPI 3.0.1 description with 142 operations and 509 schemas (25). llms.txt and a Markdown twin of each docs page (10). 131 of 142 operations carry a description longer than 80 characters and 76 have a section on when to use the call. Few say when not to (17 of 20). The description has 345 enums and 774 required lists, with 36 free-form maps (13 of 15). 118 operations carry a request example and 99 a response example. Errors are one `message` string, and only 87 operations document a 4xx response (10 of 15). Paths are versioned `/v1` and `/v2`, and a dated changelog tags API and SDK entries. No dated API versions (13 of 15). 88."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 75,
          "points": 12.19,
          "reason": "Graded on the REST API. List calls take `limit` up to 100 and some switches such as `skip_zero_qty_line_items`. No field selection was found and contract and invoice objects are large (13 of 25). Cursor pagination with `next_page`, and filters on status and dates. Many reads are POST calls with a body (17 of 20). Errors carry an HTTP status and a `message` string with no stable code, and the status-code page gives one remedy per status (11 of 20). `Idempotency-Key` on every POST, `uniqueness_key` on contracts and alerts, and 34-day `transaction_id` deduplication on events (20 of 20). Creating a customer has no required list in the description, ingest aliases stand in for IDs, and official SDKs cover five languages (14 of 15). 75."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 68,
          "points": 11.9,
          "reason": "Bearer tokens are created in the web app, shown once, separate for sandbox and production, and can be archived. Scoping by access level, environment or endpoint exists but is set by contacting support, and by default a token has its creator's permissions (22 of 30). The API description defines agentic tokens whose writes return `403 AgenticMutationBlocked` and wait at `/v1/approval_requests` for a person. How to create such a token was not found in the docs index. Dashboard roles are documented on a page we did not read (15 of 20). The API returns customer-supplied names, custom fields and event properties, and no prompt-injection guidance was found (5 of 15). `/v1/auditLogs` records the user or token, resource, action, IP address and user agent (14 of 15). SOC 2 Type 2 and SOC 1 Type 2 badges, regular penetration tests per the security page, and a Vanta trust centre we could not read. security.txt returned 404 and no bounty or disclosure policy for the service was found (12 of 20). 68."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 39,
          "points": 4.88,
          "reason": "Payment platforms take the highest step that applies on the 40-point protocol line. No x402, MPP or L402 was found in the API description, the docs index or the pricing page (0). The Startup plan's prices are public at 0.8 per cent of billing volume and $0.04 per 1,000 ingested events. The Custom plan has no price (18 of 20). The pricing page says \"Start free\" and the quickstart links a self-serve sandbox sign-up, while production checkout needs a credit card. The sign-up page was not read, so whether the sandbox asks for a card is unconfirmed (15 of 20). A person signs up and creates the token in the web app. The changelog of 10 June 2026 says agents can provision an account through the Stripe Projects CLI, which we did not test and which needs a Stripe account (6 of 20). 39."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 82,
          "points": 7.18,
          "reason": "The changelog's latest entry is dated 29 September 2026, ten days before the check (30). It has 20 dated entries since 14 July 2026 (20). A support portal and a public changelog exist. The SDK issue queues (4 and 13 open items on the Node.js and Python repositories) were not read (9 of 15). Official SDKs in five languages. Python 4.11.1 was tagged on 28 August 2026 and Node.js 3.10.0 on 23 July, and both repositories were pushed to on 6 October (15). The repositories carry CI with lint, build and test jobs, lockfiles and automated releases. CI results were not read (8 of 10). 82."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 65,
          "points": 5.69,
          "note": "editorial 45, provenance 85",
          "reason": "The platform is closed. Metronome's legal centre links the Stripe Services Agreement, last modified 28 September 2026, which does not name Metronome. The SDKs are Apache-2.0 (15 of 30). Stripe's privacy policy of 28 April 2026 and the DPA the agreement incorporates cover data handling. The agreement says Stripe need not retain data after the term and grants Stripe a licence to use customer content to develop and improve its services. No Metronome retention period was found beyond 30 days of webhook delivery history (15 of 30). No deprecation policy was found. One operation is marked deprecated, v1 contract reads point new clients to v2, and SDK releases of 16 January and 2 March 2026 removed fields with changelog entries on the day (7 of 20). Stripe's privacy pages link a sub-processors list we did not read, and Metronome's trust centre is script-drawn. No hosting region was found (8 of 20). 45."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Graded on the REST API. List calls take `limit` up to 100 and some switches such as `skip_zero_qty_line_items`. No field selection was found and contract and invoice objects are large (13 of 25). Cursor pagination with `next_page`, and filters on status and dates. Many reads are POST calls with a body (17 of 20). Errors carry an HTTP status and a `message` string with no stable code, and the status-code page gives one remedy per status (11 of 20). `Idempotency-Key` on every POST, `uniqueness_key` on contracts and alerts, and 34-day `transaction_id` deduplication on events (20 of 20). Creating a customer has no required list in the description, ingest aliases stand in for IDs, and official SDKs cover five languages (14 of 15). 75.",
          "maintenance": "The changelog's latest entry is dated 29 September 2026, ten days before the check (30). It has 20 dated entries since 14 July 2026 (20). A support portal and a public changelog exist. The SDK issue queues (4 and 13 open items on the Node.js and Python repositories) were not read (9 of 15). Official SDKs in five languages. Python 4.11.1 was tagged on 28 August 2026 and Node.js 3.10.0 on 23 July, and both repositories were pushed to on 6 October (15). The repositories carry CI with lint, build and test jobs, lockfiles and automated releases. CI results were not read (8 of 10). 82.",
          "payments": "Payment platforms take the highest step that applies on the 40-point protocol line. No x402, MPP or L402 was found in the API description, the docs index or the pricing page (0). The Startup plan's prices are public at 0.8 per cent of billing volume and $0.04 per 1,000 ingested events. The Custom plan has no price (18 of 20). The pricing page says \"Start free\" and the quickstart links a self-serve sandbox sign-up, while production checkout needs a credit card. The sign-up page was not read, so whether the sandbox asks for a card is unconfirmed (15 of 20). A person signs up and creates the token in the web app. The changelog of 10 June 2026 says agents can provision an account through the Stripe Projects CLI, which we did not test and which needs a Stripe account (6 of 20). 39.",
          "reliability": "Hosted lines. status.metronome.com runs on incident.io with seven components (20). Its feed lists 13 incidents and three maintenance windows between 22 July and 8 October 2026. On 3 September a vendor's partial outage raised API and ingest error rates for two hours. API errors were also elevated on 22 July, 11 September (about 30 minutes) and 8 October (a two-minute burst), and most of the rest were data export or invoice delays. Durations were read on three incident pages only (10 of 30). Default rate limits are published per tier in requests a second (15). 429 responses carry `X-Metronome-Rate-Limit-Type` and the docs advise backoff, `Idempotency-Key` covers every POST and the SDKs retry twice by default. No `Retry-After` was found (13 of 15). The pricing page names enhanced SLAs on the Custom plan and no SLA document was found (0). The API is generally available (10). 68.",
          "schema": "A public OpenAPI 3.0.1 description with 142 operations and 509 schemas (25). llms.txt and a Markdown twin of each docs page (10). 131 of 142 operations carry a description longer than 80 characters and 76 have a section on when to use the call. Few say when not to (17 of 20). The description has 345 enums and 774 required lists, with 36 free-form maps (13 of 15). 118 operations carry a request example and 99 a response example. Errors are one `message` string, and only 87 operations document a 4xx response (10 of 15). Paths are versioned `/v1` and `/v2`, and a dated changelog tags API and SDK entries. No dated API versions (13 of 15). 88.",
          "security": "Bearer tokens are created in the web app, shown once, separate for sandbox and production, and can be archived. Scoping by access level, environment or endpoint exists but is set by contacting support, and by default a token has its creator's permissions (22 of 30). The API description defines agentic tokens whose writes return `403 AgenticMutationBlocked` and wait at `/v1/approval_requests` for a person. How to create such a token was not found in the docs index. Dashboard roles are documented on a page we did not read (15 of 20). The API returns customer-supplied names, custom fields and event properties, and no prompt-injection guidance was found (5 of 15). `/v1/auditLogs` records the user or token, resource, action, IP address and user agent (14 of 15). SOC 2 Type 2 and SOC 1 Type 2 badges, regular penetration tests per the security page, and a Vanta trust centre we could not read. security.txt returned 404 and no bounty or disclosure policy for the service was found (12 of 20). 68.",
          "transparency": "The platform is closed. Metronome's legal centre links the Stripe Services Agreement, last modified 28 September 2026, which does not name Metronome. The SDKs are Apache-2.0 (15 of 30). Stripe's privacy policy of 28 April 2026 and the DPA the agreement incorporates cover data handling. The agreement says Stripe need not retain data after the term and grants Stripe a licence to use customer content to develop and improve its services. No Metronome retention period was found beyond 30 days of webhook delivery history (15 of 30). No deprecation policy was found. One operation is marked deprecated, v1 contract reads point new clients to v2, and SDK releases of 16 January and 2 March 2026 removed fields with changelog entries on the day (7 of 20). Stripe's privacy pages link a sub-processors list we did not read, and Metronome's trust centre is script-drawn. No hosting region was found (8 of 20). 45."
        },
        "sources": [
          {
            "what": "home page, with the notice that Metronome is part of Stripe",
            "url": "https://metronome.com/",
            "seen": "2026-10-09"
          },
          {
            "what": "pricing page",
            "url": "https://metronome.com/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "legal centre, linking Stripe's agreement and privacy policy",
            "url": "https://metronome.com/legal",
            "seen": "2026-10-09"
          },
          {
            "what": "security page",
            "url": "https://metronome.com/company/security",
            "seen": "2026-10-09"
          },
          {
            "what": "post on the completed acquisition by Stripe",
            "url": "https://metronome.com/blog/our-next-chapter-metronome-is-now-part-of-stripe",
            "seen": "2026-10-09"
          },
          {
            "what": "docs index for agents",
            "url": "https://docs.metronome.com/llms.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "OpenAPI description, read as a file and counted by script",
            "url": "https://docs.metronome.com/openapi.json",
            "seen": "2026-10-09"
          },
          {
            "what": "authentication and token scoping",
            "url": "https://docs.metronome.com/api-reference/authentication.md",
            "seen": "2026-10-09"
          },
          {
            "what": "rate limits and platform limits",
            "url": "https://docs.metronome.com/api-reference/rate-limits.md",
            "seen": "2026-10-09"
          },
          {
            "what": "idempotency",
            "url": "https://docs.metronome.com/api-reference/idempotency.md",
            "seen": "2026-10-09"
          },
          {
            "what": "pagination",
            "url": "https://docs.metronome.com/api-reference/pagination.md",
            "seen": "2026-10-09"
          },
          {
            "what": "status codes and the rate-limit header",
            "url": "https://docs.metronome.com/api-reference/status-codes.md",
            "seen": "2026-10-09"
          },
          {
            "what": "audit logs",
            "url": "https://docs.metronome.com/guides/platform-configuration/audit-logs.md",
            "seen": "2026-10-09"
          },
          {
            "what": "security principles",
            "url": "https://docs.metronome.com/guides/platform-configuration/security-principles.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Metronome's own pricing model for order forms",
            "url": "https://docs.metronome.com/guides/platform-configuration/metronome-pricing-model.md",
            "seen": "2026-10-09"
          },
          {
            "what": "API quickstart, sandbox sign-up link and first request",
            "url": "https://docs.metronome.com/guides/get-started/api-quickstart.md",
            "seen": "2026-10-09"
          },
          {
            "what": "SDK guide",
            "url": "https://docs.metronome.com/guides/get-started/developer-sdks.md",
            "seen": "2026-10-09"
          },
          {
            "what": "changelog",
            "url": "https://docs.metronome.com/changelog",
            "seen": "2026-10-09"
          },
          {
            "what": "status page",
            "url": "https://status.metronome.com/",
            "seen": "2026-10-09"
          },
          {
            "what": "status feed the page links",
            "url": "https://status.metronome.com/feed.atom",
            "seen": "2026-10-09"
          },
          {
            "what": "incident of 3 September 2026",
            "url": "https://status.metronome.com/incidents/01M1MKARJAWWTSYYDMCW80B5BT",
            "seen": "2026-10-09"
          },
          {
            "what": "incident of 11 September 2026",
            "url": "https://status.metronome.com/incidents/01M29CF61PAX3TAE3S0RYK5JWX",
            "seen": "2026-10-09"
          },
          {
            "what": "incident of 8 October 2026",
            "url": "https://status.metronome.com/incidents/01M4EDTKD0WW5K3S31Q7PYCESC",
            "seen": "2026-10-09"
          },
          {
            "what": "Stripe Services Agreement, United Kingdom edition after redirect",
            "url": "https://stripe.com/legal/ssa",
            "seen": "2026-10-09"
          },
          {
            "what": "Stripe privacy policy",
            "url": "https://stripe.com/privacy",
            "seen": "2026-10-09"
          },
          {
            "what": "Node.js SDK repository, shallow clone for tags, README, CI and SECURITY.md",
            "url": "https://github.com/Metronome-Industries/metronome-node",
            "seen": "2026-10-09"
          },
          {
            "what": "Python SDK repository, shallow clone for tags and changelog",
            "url": "https://github.com/Metronome-Industries/metronome-python",
            "seen": "2026-10-09"
          },
          {
            "what": "npm weekly downloads for @metronome/sdk",
            "url": "https://api.npmjs.org/downloads/point/last-week/@metronome/sdk",
            "seen": "2026-10-09"
          },
          {
            "what": "RDAP record for metronome.com",
            "url": "https://rdap.org/domain/metronome.com",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "The Stripe Services Agreement governs per Metronome's legal centre but never names Metronome. Whether service-specific terms or an order form add Metronome clauses was not established.",
          "unchecked: trust.metronome.com is a script-drawn Vanta page, so sub-processors, policies and the full list of certifications were not read.",
          "unchecked: signup.metronome.com was not read, so whether a sandbox account asks for a card is unconfirmed.",
          "unchecked: the Stripe Projects CLI route for agents is the changelog's claim of 10 June 2026 and was not tested. No vendor software was run.",
          "unchecked: how an agentic token is created. The approval operations are in the OpenAPI description and no guide page was found in llms.txt.",
          "unchecked: the status feed gives no durations. Three incident pages were read, the other ten incidents were scored from their titles.",
          "unchecked: the MCP registry did not answer a search for metronome. No MCP server was found in the docs index or the Node.js SDK repository.",
          "unchecked: the RBAC, SSO and webhooks guides, Stripe's DPA and sub-processors list, and the SDK issue queues.",
          "The 2 March 2026 SDK release removed the contract `priority` field in a minor version. Whether customers had notice before that day was not established, so no deduction was taken.",
          "The docs tell Python users to run `pip install --pre metronome-sdk` although the repository's latest tag is 4.11.1, a stable version.",
          "The lead named the docs' LLM token billing as a Stripe listing feature. Metronome has its own domain, API, SDKs, prices and status page, so it is graded apart."
        ]
      },
      "negative": 0,
      "verdict": "Metronome's API carries an `Idempotency-Key` on every POST, a public OpenAPI description of 142 operations, and agentic tokens whose writes wait for a person's approval. Prices for the Startup plan are public. Errors return only a `message` string, token scopes are set through support, and the status feed lists 13 incidents since 22 July 2026.",
      "bestFor": "A company that meters usage and bills on contracts, credits and commits, with invoices delivered through Stripe, NetSuite or cloud marketplaces.",
      "strengths": [
        "Public OpenAPI 3.0.1 description with 142 operations and 509 schemas, plus llms.txt and a Markdown twin of each docs page",
        "`Idempotency-Key` accepted on every POST for at least 24 hours, `uniqueness_key` on contracts and alerts, and event `transaction_id` deduplication for 34 days",
        "Agentic tokens get `403 AgenticMutationBlocked` on writes and queue them at `/v1/approval_requests` for a person to approve or deny",
        "Audit log readable at `/v1/auditLogs`, naming the user or API token, the resource, the action, the IP address and the user agent",
        "Startup plan prices are public (0.8 per cent of billing volume and $0.04 per 1,000 ingested events), with a self-serve sandbox sign-up"
      ],
      "weaknesses": [
        "Errors are a single `message` string with no machine-readable code, and the API description documents a 4xx response on 87 of 142 operations",
        "Token scoping by access level, environment or endpoint is set by contacting support. By default a token has its creator's permissions",
        "The status feed lists 13 incidents between 22 July and 8 October 2026, among them two hours of elevated API and ingest errors on 3 September",
        "No SLA document is published. The pricing page names enhanced SLAs on the Custom plan only",
        "The governing terms are Stripe's Services Agreement, which does not name Metronome and grants Stripe a licence to use customer content to develop and improve its services",
        "No deprecation policy was found. SDK releases of 16 January and 2 March 2026 removed fields, announced in the changelog on the day"
      ],
      "agentNotes": [
        "Send an `Idempotency-Key` header on every POST and reuse it on retry. A cached error is returned for the same key, so use a new key after fixing the cause",
        "Give each usage event a stable `transaction_id`. Metronome ignores repeats for 34 days and accepts at most 100 events per `/v1/ingest` call",
        "On 429 read `X-Metronome-Rate-Limit-Type` (`client` or `customer`) and back off. Unlisted endpoints default to 8 requests a second",
        "With an agentic token, expect `403 AgenticMutationBlocked` on writes. Post the original method, path and body to `/v1/approval_requests` and show the person the `approval_url`",
        "Use a sandbox token for testing. The token alone decides whether a call reaches sandbox or production data"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "B",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 69.7
        }
      ],
      "editorialScores": {
        "ergonomics": 75,
        "maintenance": 82,
        "payments": 39,
        "reliability": 68,
        "schema": 88,
        "security": 68,
        "transparency": 45
      },
      "provenanceScore": 85
    },
    "connect": {
      "install": "npm install @metronome/sdk",
      "http": "curl -X POST https://api.metronome.com/v1/billable-metrics/create \\\n  -H \"Authorization: Bearer $METRONOME_API_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"API Calls\",\n    \"aggregation_type\": \"count\",\n    \"event_type_filter\": {\n      \"in_values\": [\"api_call\"]\n    }\n  }'"
    },
    "letme": {
      "capability": "https://letme.dev/payments.metering",
      "tool": "https://letme.dev/metronome"
    },
    "notable": [
      "Metronome's legal centre links Stripe's Services Agreement as its terms of service and Stripe's privacy policy as its privacy policy (https://metronome.com/legal)",
      "The API description carries five approval-request operations for agentic tokens, whose writes return `403 AgenticMutationBlocked` until a person approves them (https://docs.metronome.com/openapi.json)",
      "Default rate limits are published per tier, from 2,750 requests a second overall and 1,100 on `/v1/ingest` down to 8 on unlisted endpoints (https://docs.metronome.com/api-reference/rate-limits)",
      "The changelog of 10 June 2026 says agents can provision a Metronome account and sandbox through the Stripe Projects CLI, and that of 15 June 2026 announces self-serve checkout to production with a credit card (https://docs.metronome.com/changelog)",
      "Billing for LLM tokens entered public preview on 3 September 2026, with rates sourced from Stripe's `/v1/models` API (https://docs.metronome.com/changelog)",
      "The status page runs on incident.io with seven components. Its feed lists 13 incidents and three maintenance windows between 22 July and 8 October 2026 (https://status.metronome.com/feed.atom)"
    ],
    "area": "payments",
    "details": [
      {
        "label": "API",
        "value": "REST at https://api.metronome.com, OpenAPI 3.0.1 with 142 operations (127 under `/v1`, 15 under `/v2`), 123 of them POST, and 509 schemas"
      },
      {
        "label": "Credentials",
        "value": "Bearer tokens made in the web app, separate for sandbox and production, archivable. Scoping by access level, environment or endpoint through support. Agentic tokens queue writes for approval"
      },
      {
        "label": "Rate limits",
        "value": "Defaults in requests a second are 2,750 overall, 1,100 on `/v1/ingest`, 220 on high-frequency reads, 55 on standard operations, 11 on contract, balance and invoice lists, 8 elsewhere. 429 carries `X-Metronome-Rate-Limit-Type`"
      },
      {
        "label": "Idempotency",
        "value": "`Idempotency-Key` on all POST endpoints (kept at least 24 hours), `uniqueness_key` on contracts, alerts and customer commits and credits, `transaction_id` on events (34 days)"
      },
      {
        "label": "Pagination",
        "value": "`limit` (maximum 100) and a `next_page` cursor on list endpoints"
      },
      {
        "label": "Errors",
        "value": "JSON with a single `message` field. Documented codes are 400, 401, 403, 404, 409, 429 and 5XX"
      },
      {
        "label": "Platform limits",
        "value": "Defaults per environment are 5 active and 20 total contracts per customer, 20 subscriptions per contract, 5 active webhook destinations, 50 custom fields per object"
      },
      {
        "label": "SDKs",
        "value": "Python `metronome-sdk` 4.11.1 (28 August 2026), Node.js `@metronome/sdk` 3.10.0 (23 July 2026), Go, Ruby and Java, generated by Stainless, Apache-2.0"
      },
      {
        "label": "Audit",
        "value": "`GET /v1/auditLogs` with actor (user or token name), resource, action, request ID, IP address and user agent, filterable by date and resource"
      },
      {
        "label": "Integrations",
        "value": "Invoicing through Stripe, NetSuite and the AWS, Azure and GCP marketplaces. Tax through Stripe Tax, Avalara and Anrok. Salesforce, Segment and Workato connectors"
      },
      {
        "label": "Certifications",
        "value": "SOC 2 Type 2 and SOC 1 Type 2 badges on the security page. The SOC 2 report is available from a Metronome representative"
      },
      {
        "label": "Status",
        "value": "status.metronome.com on incident.io, components API (Overall, Ingest), Usage Pipeline, Alerts, Dashboard, Data Export and Embeddable Dashboards"
      }
    ],
    "unitPrices": [
      {
        "item": "Startup plan fee on billing volume",
        "unit": "pct",
        "usd": 0.8,
        "note": "plus the event fee. Custom plan priced by sales"
      },
      {
        "item": "Ingested usage event on the Startup plan",
        "unit": "tx",
        "usd": 0.00004,
        "note": "$0.04 per 1,000 ingest events"
      }
    ],
    "provenance": {
      "legalEntity": "Stripe, LLC",
      "domain": "metronome.com",
      "domainRegistered": "1998-11-04",
      "endpointOnVendorDomain": true,
      "terms": "https://stripe.com/legal/ssa",
      "privacy": "https://stripe.com/privacy",
      "statusPage": "https://status.metronome.com",
      "changelog": "https://docs.metronome.com/changelog",
      "securityTxt": "none",
      "checked": "2026-10-09",
      "notes": [
        "Metronome's site says it is now part of Stripe. Its legal centre links two documents, Stripe's Services Agreement as terms of service and Stripe's privacy policy.",
        "The Stripe Services Agreement (General Terms last modified 28 September 2026) names Stripe, LLC as the contracting entity for the United States, with other Stripe entities by country. It does not mention Metronome by name. Our request was redirected to the United Kingdom edition of the page.",
        "The Stripe privacy policy was last updated on 28 April 2026 and covers services supplied under the Stripe Services Agreement. It does not mention Metronome by name.",
        "The API answers at https://api.metronome.com per the OpenAPI description's server entry.",
        "https://metronome.com/.well-known/security.txt returned 404. The SDK repositories' SECURITY.md gives dev-feedback@metronome.com for service security questions.",
        "RDAP for metronome.com gives a registration date of 1998-11-04, which predates the company."
      ],
      "score": 85,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Stripe, LLC",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "metronome.com, registered 1998-11-04 (27 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "api.metronome.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 6 of the 7 things a reader expects, and has 1 clause that costs points",
          "points": 7.1,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects, and has 1 clause that costs points",
          "points": 8,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.metronome.com",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://stripe.com/legal/ssa",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-09-28",
          "words": 19556,
          "points": 7.1,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last modified: September 28, 2026",
              "says": "Last updated 2026-09-28"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "The laws of the state of California are the Governing Law.",
              "says": "The law of the State of California"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Stripe’s aggregate liability for Preview Services is limited to the lesser of the total Fees paid by User to Stripe (excluding all pass-through fees levied by Financial Providers) during the 12 month period before the first event giving rise to liability and USD $1,000.",
              "says": "Capped at the lesser of USD $1,000 and the fees paid in the 12 months before the claim"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "Stripe may add or remove features of the Preview Services, or suspend or terminate User’s access to Preview Services at any time."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "Stripe may offer a Service without charge, or waive a Fee for that Service, and may start charging a Fee for that Service upon at least 30 days notice (or longer period if Law requires) to User.",
              "says": "Gives 30 days of notice before a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "Stripe may specify additional requirements or use restrictions that apply to User´s use of Preview Services in Preview Service Terms or Documentation."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.nonotice",
              "label": "Says the terms or the service can change without notice",
              "found": true,
              "quote": "Stripe may modify this Agreement (or any portion of it) at any time by posting a revised version of the modified portion(s) on the Stripe Legal Page or by notifying User.",
              "costsPoints": true
            },
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "Termination for Convenience. Unless otherwise agreed in writing, Stripe may terminate this Agreement or close User’s Stripe Account at any time."
            },
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "Disputes between User and Stripe are subject to a class action waiver and will be resolved by individual binding arbitration, except as stated otherwise in this Agreement."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "A user who uses an AI agent to access the services is solely responsible for each action initiated by or through the agent.",
              "quote": "If User uses an AI Agent to access the Stripe Services, User is solely responsible for each action initiated by or through the AI Agent."
            },
            {
              "date": "2026-10-08",
              "text": "The user grants Stripe a perpetual, irrevocable licence to use its content to develop, improve and run the services and for Stripe's internal business purposes.",
              "quote": "User grants to Stripe, on behalf of itself and its Affiliates, a perpetual, worldwide, non-exclusive, irrevocable, royalty-free license to use the Content to develop, improve, and provide Services and Stripe Technology and for Stripe’s internal business purposes."
            },
            {
              "date": "2026-10-08",
              "text": "Data returned by the services may be used only for the user's own internal business purposes and its intended purpose as described in the service terms or documentation.",
              "quote": "User’s use of Stripe Output Data is limited to User’s own internal business purposes and for its intended purpose as may be described in the applicable Service Terms or Documentation."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://stripe.com/privacy",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-04-28",
          "words": 12244,
          "points": 8,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated: April 28, 2026",
              "says": "Last updated 2026-04-28"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "This Privacy Policy (“Policy”) describes the Personal Data that we collect, how we use and share it, and how you can reach us with privacy-related inquiries."
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We retain your Personal Data for as long as we continue to provide the Services to you or our Business Users, or for a period in which we reasonably foresee continuing to provide the Services."
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Depending on the activity, Stripe assumes the role of a “data controller” and/or “data processor” (or “service provider”)."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "Exercising the right to limit the use or sharing of Sensitive Personal Information: We do not sell or share (for behavioral advertising) Sensitive Personal Information as defined by US privacy laws and have not done so in the past 12 months.",
              "says": "Says it does not sell personal data"
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "The Policy also outlines your rights and choices as a data subject, including the right to object to certain uses of your Personal Data."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "The right to appeal any decision by Stripe relating to your rights by contacting Stripe’s Data Protection Officer (“DPO”) at dpo@stripe.com, and/or relevant regulatory agencies.",
              "says": "dpo@stripe.com"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "EU Standard Contractual Clauses approved by the European Commission and the UK International Data Transfer Addendum issued by the Information Commissioner’s Office.",
              "says": "Relies on standard contractual clauses"
            }
          ],
          "toKnow": [
            {
              "key": "training",
              "label": "Says it may use customer content to train or improve models, and no opt-out was found",
              "found": true,
              "quote": "Training artificial intelligence models to power our Services and protect against fraud and other harm.",
              "costsPoints": true
            },
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "Because these third parties may use the data Stripe provides for their own purposes, Stripe's provision of data to these parties may be considered a data “sale” or “sharing” (for behavioral advertising) as those terms are defined under the CCPA and other applicable US privacy laws."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/metronome.json",
    "live": {
      "slug": "metronome",
      "probe": {
        "target": "https://api.metronome.com",
        "method": "get",
        "lastAt": "2026-10-10T03:53:34.586779144Z",
        "lastOk": true,
        "lastStatus": 404,
        "lastMs": 440,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 427,
        "p95ms24h": 501,
        "samples24h": 125,
        "samples30d": 125,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 85,
            "ok": 85
          },
          {
            "date": "2026-10-10",
            "probes": 40,
            "ok": 40
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.metronome.com",
        "indicator": "none",
        "summary": "All Systems Operational",
        "checkedAt": "2026-10-10T03:58:28.067251868Z"
      },
      "versions": [
        {
          "registry": "github",
          "name": "Metronome-Industries/metronome-node",
          "version": "v3.10.0",
          "released": "2026-07-23",
          "seenAt": "2026-10-09T17:05:18.814448022Z"
        },
        {
          "registry": "npm",
          "name": "@metronome/sdk",
          "version": "3.10.0",
          "seenAt": "2026-10-09T17:05:16.810932336Z"
        },
        {
          "registry": "pypi",
          "name": "metronome-sdk",
          "version": "4.11.1",
          "released": "2026-08-28",
          "seenAt": "2026-10-09T17:05:17.824671392Z"
        }
      ],
      "githubStars": 7,
      "npmWeekly": 363390,
      "pypiWeekly": 157134,
      "pages": [
        {
          "url": "https://docs.metronome.com/changelog",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-10-09T18:37:46.155976649Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "db085f3c5807"
        },
        {
          "url": "https://metronome.com/pricing",
          "kind": "pricing",
          "status": 200,
          "checkedAt": "2026-10-09T18:42:03.074548835Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "0590b21f8bad"
        },
        {
          "url": "https://stripe.com/privacy",
          "kind": "privacy",
          "status": 200,
          "checkedAt": "2026-10-09T18:46:09.307033961Z",
          "changedAt": "2026-10-08T18:24:56.248781585Z",
          "fingerprint": "73ea5b705ed5"
        },
        {
          "url": "https://stripe.com/legal/ssa",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-10-09T18:46:05.029930659Z",
          "changedAt": "2026-10-08T18:24:51.983854093Z",
          "fingerprint": "43483f64e8ca"
        }
      ],
      "updatedAt": "2026-10-10T03:58:28.067251868Z"
    }
  }
}
