{
  "fixes": {
    "slug": "routerplus",
    "name": "RouterPlus",
    "listing": "https://www.anchorterminal.com/tools/routerplus",
    "markdown": "# Fix list: RouterPlus\n\nFrom Anchor Terminal's listing at https://www.anchorterminal.com/tools/routerplus, the October 2026 research run, assessed 13 October 2026. Grade D, 51.2 out of 100.\n\nThis is everything the published grade says the listing lacks, the biggest possible gain to the total first. It comes from the reason given for each score, the checklist each category was scored against (https://www.anchorterminal.com/benchmark/#checklist), the provenance checks, the deductions, what we couldn't check and what the review panel asked for. A fix counts at the next check, once it's public.\n\nFor a coding agent working on RouterPlus: work through the items below in the product, its docs and its public pages. Each category gives the reason for its score, with the points each checklist item earned, and the checklist itself, so the gap is the items that earned less than their points. Change the product, not the wording, and keep a note of what you changed and where it's published.\n\n## 1. Reliability, 45 out of 100, up to 11 more on the total\n\nWhy it scored 45: Hosted reading. No status page found. Model pages show each provider's uptime over the last 24 hours and no incident history, and status.routerplus.com failed at our proxy (0). No readable incident history (5). The limits page gives 20 requests a minute until the organisation's first purchase, then 300 per console key, with 1,000,000 tokens a minute and 8 requests in flight by default (15). Rate-limit 429s carry `retry-after` from 1 to 59 seconds and `metadata.retry_at`, the docs separate them from non-retryable `insufficient_quota` 429s, and they state that a retry is a new billed request because there is no idempotency key (15). The homepage says \"Production-grade SLAs\", but no SLA terms were found, and the only terms on the site say a stated response time is not a service level (0). The chat and messages surfaces carry no beta label. The Responses API is a preview for non-OpenAI models and Optimize is paused, neither of which is the main surface (10).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-reliability):\n\nHosted APIs, MCP servers, models and platforms.\n\n- 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own).\n- 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so.\n- 15, rate limits documented with numbers.\n- 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved.\n- 10, an SLA published for any paid tier.\n- 10, the surface agents use is generally available, not beta or preview.\n\nLocal packages, SDKs, frameworks and stdio MCP servers.\n\n- 20, installs from an official package with supported runtimes stated.\n- 25, a public CI and test suite, passing on the default branch.\n- 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered).\n- 15, semver discipline and breaking changes called out in a changelog.\n- 15, version 1.0 or later, or declared stable.\n\nProtocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors.\n\n## 2. Payments \u0026 pricing, 40 out of 100, up to 7.5 more on the total\n\nWhy it scored 40: No machine payment protocol found in llms-full.txt. Calls draw on a prepaid balance (0). Per-token prices for every model are public JSON at /api/models.json with no login (20). Signup adds no free credit, but inference through the caller's own provider keys carries no RouterPlus charge and needs no credit, the reading Cloudflare AI Gateway's dossier took for the same arrangement. We did not sign up to confirm that no card is asked for (20). A person signs up in the browser through Clerk with email verification, and the programmatic signup route was removed (0).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-payments):\n\nThe published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/).\n\n- 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which.\n- 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for \"contact sales\" or prices behind a login.\n- 20, a free tier or trial that doesn't need a card.\n- 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API).\n\nPayment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied.\n\nOpen-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol.\n\n## 3. Schema \u0026 documentation, 59 out of 100, up to 6.7 more on the total\n\nWhy it scored 59: Router, scored on the API lines. No OpenAPI or other machine-readable contract for the gateway was found. It follows the OpenAI and Anthropic wire formats, which this checklist doesn't credit to a reseller, the same reading as Antseed (0 of 25). llms.txt, llms-full.txt and a Markdown copy of every page (10). Each route page says what it is for, what isn't available, and which route to use for which model, and the agent integration guide lists what not to build on (18 of 20). Request fields follow the upstream formats, and the wire compatibility page tables which fields pass, translate, drop or fail with a typed 400 (12 of 15). Curl, Python and TypeScript examples on every page, and an error reference with a class, status and remedy for each error (15). Routes are versioned under /v1 and the wire compatibility page says changing it needs a recorded decision, but no changelog or dated release notes were found (4 of 15).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-schema):\n\nAPIs and MCP servers.\n\n- 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool).\n- 10, llms.txt or Markdown docs served for agents.\n- 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference.\n- 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs.\n- 0 to 15, examples and documented error responses.\n- 15, versioning and a public changelog.\n\nModels are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference.\n\n## 4. Security \u0026 auth, 62 out of 100, up to 6.7 more on the total\n\nWhy it scored 62: Router, read on the model lines. `tm_vk_` keys are stored as SHA-256 hashes, shown once and revocable, and each is bound to a workspace and principal, with per-key RPM and monthly spend caps. Inference keys have no management rights. There are no permission scopes on a key and no SSO or SCIM (24 of 30). The gateway stores no prompt or completion content except for accounts in a hackathon or similar programme (up to 30 days) and Optimize searches, and RouterPlus says it trains on nothing. Every Claude and GPT chat route is marked `prompt_logging: retained` with no ZDR, so retention and training rest on Anthropic's and OpenAI's API terms (12 of 20). Content isn't stored by default, but the `zdr` and `data_collection: deny` filters remove every marketplace route today, so they work only on the caller's own provider keys (10 of 15). `GET /v1/generation` lists every attempt behind a request with provider, tokens and cost, and the console has usage and logs, metadata only (14 of 15). No security.txt, disclosure policy, bug bounty or certification found. The footer's Security link is an email to founders@evo-hq.com (2 of 20).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-security):\n\n- 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option.\n- 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions.\n- 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10.\n- 0 to 15, audit logs or per-call visibility for the operator.\n- 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public.\n\nModels are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing.\n\n## 5. Transparency \u0026 trust, 38 out of 100, up to 5.4 more on the total\n\nMade of editorial 26, provenance 50.\n\nWhy it scored 38: Closed service with no terms of service found. The only terms on the site govern the capacity request form, under EVO HQ Inc (0 of 30). The data policy page is detailed and agrees with the homepage FAQ, lists what is stored and why, and names the hackathon logging exception and each provider's retention flag. There is no privacy policy, no DPA and no retention period for account data such as email addresses (14 of 30). Model retirement by `deprecation_date` is documented with no notice period, and no dated deprecation notices were found (4 of 20). The docs name Clerk, Resend and an AWS bucket, and say RouterPlus's own GPUs run in the United States. The form's terms name Supabase, Cloudflare and Resend. No complete subprocessor list or gateway hosting location was found (8 of 20).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-transparency):\n\n- 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms.\n- 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors).\n- 0 to 20, a deprecation policy or notices with dates.\n- 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted).\n\nThe other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two.\n\nProvenance checks not met in full (half of this category, computed from checked facts):\n\n- Terms of service: not found (0 of 10)\n- Privacy policy: not found (0 of 10)\n- Status page: not found (0 of 10)\n- Changelog: not found (0 of 10)\n- security.txt: not found (0 of 10)\n\n## 6. Maintenance \u0026 community, 44 out of 100, up to 4.9 more on the total\n\nWhy it scored 44: Router, read on the model lines. No changelog or release notes found. The catalogue on 13 October 2026 lists claude-haiku-5-5, released 7 October, and openai/gpt-6-luna-decisions, released 6 October, so the model list changed within the last 30 days (30). Models carry a `deprecation_date` that delists them automatically, with no notice period stated (3 of 12). `POST /v1/signup` and the magic-link route were removed and Optimize is paused, none with a date we could find (3 of 8). No public changelog. Support is reached through the console and an email address, and wasn't tested (3 of 15). No public issue tracker for the gateway (0 of 10). No official SDK. The docs rely on the OpenAI and Anthropic SDKs and give client setups (5 of 15). No package or public repository to check (0 of 10).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-maintenance):\n\n- 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older.\n- 20, at least three releases or dated changelog entries in the last 90 days.\n- 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15.\n- 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models).\n- 10, package health, current dependencies and CI.\n\nModels are read for deprecation notice periods and model churn rather than release counts.\n\n## 7. Agent ergonomics, 71 out of 100, up to 4.7 more on the total\n\nWhy it scored 71: Router, read on the model lines (tool use, structured output, caching, context, batch, SDKs, errors). Tools pass through on both surfaces, and Anthropic server tools such as web search work for Claude models on `/v1/messages`. Behaviour depends on the model (15 of 20). `response_format` works only for GPT ids, and the docs tell callers to get JSON from Claude through a single tool, so structured output rests on the provider (8 of 15). Cached-input and cache-write prices per model, a session id that keeps provider caches warm, and `cache_control` on the Anthropic surface (13 of 15). The catalogue's largest contexts are 1,050,000 tokens on GPT-6.1 Sol and 1,000,000 on Claude Sonnet 5.5, a judgement call since a router has no default model (15). No batch route (0 of 10). No SDK of its own. The OpenAI and Anthropic SDKs work with a changed base URL, and the docs give setups for ten coding tools (5 of 10). A stable `error_type` in every body and header, an origin header, the limit that refused a request, and `x-tm-dropped-params` naming every dropped field (15).\n\nThe checklist (https://www.anchorterminal.com/benchmark/#checklist-ergonomics):\n\n- 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries).\n- 20, pagination, filtering and output-size controls.\n- 20, actionable, documented error responses, codes and messages an agent can recover from.\n- 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations.\n- 15, sensible defaults, few required parameters, and official SDKs in at least two languages.\n\nModels are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs.\n\n## Deductions\n\nEach comes off the total. A fixed and documented problem counts for less at the next check.\n\n- Misleading claim, seen 13 October 2026. The banner on https://routerplus.com/ reads \"Try RouterPlus with free credits\" and links to the playground, while the quickstart (https://app.routerplus.com/docs/quickstart.md) says \"Signup does not add free credit\" and the playground bills the organisation's credits (https://app.routerplus.com/docs/playground.md). Only an invitation link adds credit. -2.\n\n## What we couldn't check\n\nWhat we couldn't read counted as absent. Publishing it on a page a plain HTTP fetch can read (not only in a browser) lets the next check count it.\n\n- unchecked: whether the Clerk signup shows terms or a privacy policy in its form, since the page renders its form by script and no link appeared in its HTML\n- unchecked: whether status.routerplus.com exists. The request failed at our proxy with a 502\n- unchecked: whether a card is asked for at signup or for BYOK use. No account was created\n- unchecked: https://routerplus.com/blog/introducing-evo-router.html (4 August 2026). Our reader's permission request for it lapsed, so the EVO Router post wasn't read\n- The homepage leads with eval-based routing and \"Every model worth running. Closed and open-weight\", while the chat catalogue on 13 October 2026 held only Claude and GPT models and Optimize was paused. The routing in the benchmark post of 13 August 2026 is reached through a request-access form\n- No terms of service for the gateway. The legal entity, EVO HQ Inc, comes from the capacity form's terms, which may not be the contracting party for the API\n\n## Weaknesses\n\n- No terms of service, privacy policy, status page, changelog or security.txt found for the gateway\n- The chat catalogue on 13 October 2026 was nine Claude and ten GPT models, all marked as retained by the provider with no ZDR\n- Signup adds no free credit, purchases start at $10, and keys stay at 20 requests a minute until the first purchase\n- No idempotency keys, no batch route and no embeddings, and the `zdr` and `regions` filters remove every marketplace route\n- Optimize, the eval-based model search the homepage leads with, is paused\n\n## What costs an agent a turn today\n\nThe notes we give agents before they call it. Each one is a workaround an agent shouldn't need.\n\n- Send `max_tokens` on every request. Without it the balance hold assumes up to 32,768 output tokens and can return `insufficient_quota` on a small balance\n- Switch on `error_type`. Retry `rate_limit` after `retry-after`, and stop on `insufficient_quota`, which needs a person to add credit or raise a cap\n- Don't add a retry loop on top of the SDK's. There is no idempotency key, so a retry that reaches a provider is billed again\n- Copy model ids from `GET /v1/models` or /api/models.json. An unknown id is a 404 and the gateway never substitutes one\n- Use `/v1/messages` for Claude when you need `thinking` or server tools, and `/v1/chat/completions` with `response_format` only for GPT ids\n\n## When it's done\n\nSend what changed and where it's published as a dispute (https://www.anchorterminal.com/builders/#disputes, or `POST https://www.anchorterminal.com/api/v1/contact` with `\"kind\": \"dispute\"`). Disputes are answered in public, and the listing is checked again by the same checklist. Paying for an audit or a listing claim changes nothing here.\n",
    "grade": "D",
    "score": 51.2,
    "assessed": "2026-10-13",
    "run": "October 2026 research run",
    "categories": [
      {
        "key": "reliability",
        "name": "Reliability",
        "score": 45,
        "maxGain": 11,
        "reason": "Hosted reading. No status page found. Model pages show each provider's uptime over the last 24 hours and no incident history, and status.routerplus.com failed at our proxy (0). No readable incident history (5). The limits page gives 20 requests a minute until the organisation's first purchase, then 300 per console key, with 1,000,000 tokens a minute and 8 requests in flight by default (15). Rate-limit 429s carry `retry-after` from 1 to 59 seconds and `metadata.retry_at`, the docs separate them from non-retryable `insufficient_quota` 429s, and they state that a retry is a new billed request because there is no idempotency key (15). The homepage says \"Production-grade SLAs\", but no SLA terms were found, and the only terms on the site say a stated response time is not a service level (0). The chat and messages surfaces carry no beta label. The Responses API is a preview for non-OpenAI models and Optimize is paused, neither of which is the main surface (10).",
        "checklist": [
          "Hosted APIs, MCP servers, models and platforms.",
          "- 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own).\n- 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so.\n- 15, rate limits documented with numbers.\n- 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved.\n- 10, an SLA published for any paid tier.\n- 10, the surface agents use is generally available, not beta or preview.",
          "Local packages, SDKs, frameworks and stdio MCP servers.",
          "- 20, installs from an official package with supported runtimes stated.\n- 25, a public CI and test suite, passing on the default branch.\n- 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered).\n- 15, semver discipline and breaking changes called out in a changelog.\n- 15, version 1.0 or later, or declared stable.",
          "Protocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-reliability"
      },
      {
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "score": 40,
        "maxGain": 7.5,
        "reason": "No machine payment protocol found in llms-full.txt. Calls draw on a prepaid balance (0). Per-token prices for every model are public JSON at /api/models.json with no login (20). Signup adds no free credit, but inference through the caller's own provider keys carries no RouterPlus charge and needs no credit, the reading Cloudflare AI Gateway's dossier took for the same arrangement. We did not sign up to confirm that no card is asked for (20). A person signs up in the browser through Clerk with email verification, and the programmatic signup route was removed (0).",
        "checklist": [
          "The published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/).",
          "- 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which.\n- 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for \"contact sales\" or prices behind a login.\n- 20, a free tier or trial that doesn't need a card.\n- 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API).",
          "Payment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied.",
          "Open-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-payments"
      },
      {
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "score": 59,
        "maxGain": 6.7,
        "reason": "Router, scored on the API lines. No OpenAPI or other machine-readable contract for the gateway was found. It follows the OpenAI and Anthropic wire formats, which this checklist doesn't credit to a reseller, the same reading as Antseed (0 of 25). llms.txt, llms-full.txt and a Markdown copy of every page (10). Each route page says what it is for, what isn't available, and which route to use for which model, and the agent integration guide lists what not to build on (18 of 20). Request fields follow the upstream formats, and the wire compatibility page tables which fields pass, translate, drop or fail with a typed 400 (12 of 15). Curl, Python and TypeScript examples on every page, and an error reference with a class, status and remedy for each error (15). Routes are versioned under /v1 and the wire compatibility page says changing it needs a recorded decision, but no changelog or dated release notes were found (4 of 15).",
        "checklist": [
          "APIs and MCP servers.",
          "- 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool).\n- 10, llms.txt or Markdown docs served for agents.\n- 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference.\n- 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs.\n- 0 to 15, examples and documented error responses.\n- 15, versioning and a public changelog.",
          "Models are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-schema"
      },
      {
        "key": "security",
        "name": "Security \u0026 auth",
        "score": 62,
        "maxGain": 6.7,
        "reason": "Router, read on the model lines. `tm_vk_` keys are stored as SHA-256 hashes, shown once and revocable, and each is bound to a workspace and principal, with per-key RPM and monthly spend caps. Inference keys have no management rights. There are no permission scopes on a key and no SSO or SCIM (24 of 30). The gateway stores no prompt or completion content except for accounts in a hackathon or similar programme (up to 30 days) and Optimize searches, and RouterPlus says it trains on nothing. Every Claude and GPT chat route is marked `prompt_logging: retained` with no ZDR, so retention and training rest on Anthropic's and OpenAI's API terms (12 of 20). Content isn't stored by default, but the `zdr` and `data_collection: deny` filters remove every marketplace route today, so they work only on the caller's own provider keys (10 of 15). `GET /v1/generation` lists every attempt behind a request with provider, tokens and cost, and the console has usage and logs, metadata only (14 of 15). No security.txt, disclosure policy, bug bounty or certification found. The footer's Security link is an email to founders@evo-hq.com (2 of 20).",
        "checklist": [
          "- 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option.\n- 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions.\n- 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10.\n- 0 to 15, audit logs or per-call visibility for the operator.\n- 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public.",
          "Models are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-security"
      },
      {
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "score": 38,
        "maxGain": 5.4,
        "reason": "Closed service with no terms of service found. The only terms on the site govern the capacity request form, under EVO HQ Inc (0 of 30). The data policy page is detailed and agrees with the homepage FAQ, lists what is stored and why, and names the hackathon logging exception and each provider's retention flag. There is no privacy policy, no DPA and no retention period for account data such as email addresses (14 of 30). Model retirement by `deprecation_date` is documented with no notice period, and no dated deprecation notices were found (4 of 20). The docs name Clerk, Resend and an AWS bucket, and say RouterPlus's own GPUs run in the United States. The form's terms name Supabase, Cloudflare and Resend. No complete subprocessor list or gateway hosting location was found (8 of 20).",
        "blend": "editorial 26, provenance 50",
        "checklist": [
          "- 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms.\n- 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors).\n- 0 to 20, a deprecation policy or notices with dates.\n- 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted).",
          "The other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-transparency"
      },
      {
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "score": 44,
        "maxGain": 4.9,
        "reason": "Router, read on the model lines. No changelog or release notes found. The catalogue on 13 October 2026 lists claude-haiku-5-5, released 7 October, and openai/gpt-6-luna-decisions, released 6 October, so the model list changed within the last 30 days (30). Models carry a `deprecation_date` that delists them automatically, with no notice period stated (3 of 12). `POST /v1/signup` and the magic-link route were removed and Optimize is paused, none with a date we could find (3 of 8). No public changelog. Support is reached through the console and an email address, and wasn't tested (3 of 15). No public issue tracker for the gateway (0 of 10). No official SDK. The docs rely on the OpenAI and Anthropic SDKs and give client setups (5 of 15). No package or public repository to check (0 of 10).",
        "checklist": [
          "- 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older.\n- 20, at least three releases or dated changelog entries in the last 90 days.\n- 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15.\n- 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models).\n- 10, package health, current dependencies and CI.",
          "Models are read for deprecation notice periods and model churn rather than release counts."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-maintenance"
      },
      {
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "score": 71,
        "maxGain": 4.7,
        "reason": "Router, read on the model lines (tool use, structured output, caching, context, batch, SDKs, errors). Tools pass through on both surfaces, and Anthropic server tools such as web search work for Claude models on `/v1/messages`. Behaviour depends on the model (15 of 20). `response_format` works only for GPT ids, and the docs tell callers to get JSON from Claude through a single tool, so structured output rests on the provider (8 of 15). Cached-input and cache-write prices per model, a session id that keeps provider caches warm, and `cache_control` on the Anthropic surface (13 of 15). The catalogue's largest contexts are 1,050,000 tokens on GPT-6.1 Sol and 1,000,000 on Claude Sonnet 5.5, a judgement call since a router has no default model (15). No batch route (0 of 10). No SDK of its own. The OpenAI and Anthropic SDKs work with a changed base URL, and the docs give setups for ten coding tools (5 of 10). A stable `error_type` in every body and header, an origin header, the limit that refused a request, and `x-tm-dropped-params` naming every dropped field (15).",
        "checklist": [
          "- 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries).\n- 20, pagination, filtering and output-size controls.\n- 20, actionable, documented error responses, codes and messages an agent can recover from.\n- 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations.\n- 15, sensible defaults, few required parameters, and official SDKs in at least two languages.",
          "Models are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs."
        ],
        "checklistUrl": "https://www.anchorterminal.com/benchmark/#checklist-ergonomics"
      }
    ],
    "provenance": [
      {
        "label": "Terms of service",
        "value": "not found",
        "points": 0,
        "max": 10
      },
      {
        "label": "Privacy policy",
        "value": "not found",
        "points": 0,
        "max": 10
      },
      {
        "label": "Status page",
        "value": "not found",
        "points": 0,
        "max": 10
      },
      {
        "label": "Changelog",
        "value": "not found",
        "points": 0,
        "max": 10
      },
      {
        "label": "security.txt",
        "value": "not found",
        "points": 0,
        "max": 10
      }
    ],
    "deductions": [
      "Misleading claim, seen 13 October 2026. The banner on https://routerplus.com/ reads \"Try RouterPlus with free credits\" and links to the playground, while the quickstart (https://app.routerplus.com/docs/quickstart.md) says \"Signup does not add free credit\" and the playground bills the organisation's credits (https://app.routerplus.com/docs/playground.md). Only an invitation link adds credit. -2."
    ],
    "unchecked": [
      "unchecked: whether the Clerk signup shows terms or a privacy policy in its form, since the page renders its form by script and no link appeared in its HTML",
      "unchecked: whether status.routerplus.com exists. The request failed at our proxy with a 502",
      "unchecked: whether a card is asked for at signup or for BYOK use. No account was created",
      "unchecked: https://routerplus.com/blog/introducing-evo-router.html (4 August 2026). Our reader's permission request for it lapsed, so the EVO Router post wasn't read",
      "The homepage leads with eval-based routing and \"Every model worth running. Closed and open-weight\", while the chat catalogue on 13 October 2026 held only Claude and GPT models and Optimize was paused. The routing in the benchmark post of 13 August 2026 is reached through a request-access form",
      "No terms of service for the gateway. The legal entity, EVO HQ Inc, comes from the capacity form's terms, which may not be the contracting party for the API"
    ],
    "weaknesses": [
      "No terms of service, privacy policy, status page, changelog or security.txt found for the gateway",
      "The chat catalogue on 13 October 2026 was nine Claude and ten GPT models, all marked as retained by the provider with no ZDR",
      "Signup adds no free credit, purchases start at $10, and keys stay at 20 requests a minute until the first purchase",
      "No idempotency keys, no batch route and no embeddings, and the `zdr` and `regions` filters remove every marketplace route",
      "Optimize, the eval-based model search the homepage leads with, is paused"
    ],
    "agentNotes": [
      "Send `max_tokens` on every request. Without it the balance hold assumes up to 32,768 output tokens and can return `insufficient_quota` on a small balance",
      "Switch on `error_type`. Retry `rate_limit` after `retry-after`, and stop on `insufficient_quota`, which needs a person to add credit or raise a cap",
      "Don't add a retry loop on top of the SDK's. There is no idempotency key, so a retry that reaches a provider is billed again",
      "Copy model ids from `GET /v1/models` or /api/models.json. An unknown id is a 404 and the gateway never substitutes one",
      "Use `/v1/messages` for Claude when you need `thinking` or server tools, and `/v1/chat/completions` with `response_format` only for GPT ids"
    ],
    "recheck": "https://www.anchorterminal.com/builders/#disputes"
  },
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "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"
  }
}
