{
  "fixes": {
    "slug": "cloudflare-workers-ai",
    "name": "Cloudflare Workers AI",
    "listing": "https://www.anchorterminal.com/tools/cloudflare-workers-ai",
    "markdown": "# Fix list: Cloudflare Workers AI\n\nFrom Anchor Terminal's listing at https://www.anchorterminal.com/tools/cloudflare-workers-ai, the October 2026 research run, assessed 9 October 2026. Grade B, 68.3 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 Cloudflare Workers AI: 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, 66 out of 100, up to 6.8 more on the total\n\nWhy it scored 66: Hosted reading. www.cloudflarestatus.com is a Statuspage with Workers AI, AI Gateway and API as separate components (20). The incidents feed held 50 incidents from 21 September to 8 October 2026, none naming Workers AI or AI Gateway. The API component had an 18-minute minor incident on 7 October and delayed permission changes on 30 September. The history page loads by script, so the rest of the 90 days went unread, and the changelog of 28 July 2026 cites 429 and 3040 capacity errors as the reason for limiting free access (10 of 30). Limits are published per task type, 300 requests a minute for text generation and 20 or 50 a minute per paid model (15). A 429 carries code 3036 for a spent free allocation or 3040 for capacity, `rejectIfBusy` fails fast, the batch route queues work, and the Cloudflare API returns `retry-after` and `Ratelimit` headers for its own limit. No `Retry-After` or backoff figures were found for a 3040 (11 of 15). No SLA for Workers AI was found. The legal index names only an enterprise support and SLA page, which we did not read (0). The limits page says Workers AI is generally available, with lower limits possible on beta models (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, 52 out of 100, up to 6 more on the total\n\nWhy it scored 52: x402 is in beta on `POST /ai/run` since 30 September 2026 for four of 69 models. It still needs a Cloudflare API token, a United States account and a card on file, and the per-model and OpenAI-style routes are not covered. We did not call it (12 of 40). Per-model token, image and audio prices and the neuron rate are published without a login (20). 10,000 neurons a day are free on the Workers Free plan, and the pricing page asks for a paid plan only past that. We did not sign up to confirm that no card is asked for (20). A person creates the account and the first token in a browser, and the x402 route needs both (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. Agent ergonomics, 75 out of 100, up to 4.1 more on the total\n\nWhy it scored 75: Model reading of the checklist (tool use, structured output, caching, context, batch, SDKs, errors). OpenAI-style tool calling with `parallel_tool_calls` on models tagged for it, and embedded function calling in Workers. The changelog of 17 February 2026 fixed six faults, five of them in tool-call round trips (15 of 20). `json_object` and `json_schema` formats. The docs say schema adherence is not guaranteed and JSON Mode does not stream, and the page's list of six supported models names three that were retired in May (9 of 15). Prefix caching on by default for select models, `x-session-affinity`, cached counts in `usage` and published cached prices (12 of 15). 1,048,576 tokens on DeepSeek V4 and GLM-5.3 and 256,000 on Gemma 4, against 24,000 on Llama 3.3 70B fast (12 of 15). An asynchronous batch route on tagged models with a 10 MB payload limit and no stated discount (7 of 10). The OpenAI SDKs work with a changed base URL, with Responses limited to two models and no streaming. Cloudflare's own SDKs cover TypeScript, Python and Go (9 of 10). Errors carry an internal code and message, and a 429 tells a spent allocation from a capacity limit (11 of 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## 4. Security \u0026 auth, 77 out of 100, up to 4 more on the total\n\nWhy it scored 77: Model reading. Cloudflare API tokens are revocable, limited to Workers AI Read or Edit on chosen accounts, and take an expiry and an IP address filter. Permission is per account, not per model, and the API reference also accepts the older global API key (27 of 30). The data usage page and the service-specific terms of 28 September 2026 say Customer Content is not used to train models without consent. The data page adds that it is not used to improve services, while clause 9 of the same terms section allows use as needed to provide and improve the Services (17 of 20). The data page says content may be stored if a storage service is used with Workers AI. It gives no retention period for inference inputs and no explicit zero-retention statement, and AI Gateway logs prompts and responses by default when a call is routed through a gateway (9 of 15). Gateway logs record prompt, response, tokens and cost per request, and the dashboard shows neuron usage. Direct calls have no per-request log that we found, and account audit logs were not read this run (9 of 15). security.txt names a HackerOne programme and a disclosure policy, with no Expires field. Certifications were not checked, because we stopped reading www.cloudflare.com after its website terms (15 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. Schema \u0026 documentation, 80 out of 100, up to 3.3 more on the total\n\nWhy it scored 80: Model reading, scored on the API lines. Cloudflare's public OpenAPI 3.0.3 document, updated 8 October 2026, has 14 paths and 15 operations under `/ai/`. `/ai/run/{model_name}` takes 13 input shapes by task and lists only 200 and 400 responses, and the OpenAI-style `/ai/v1/` routes are not in it. Each model page links JSON Schemas for input and output, and `GET /ai/models/schema` returns them (22 of 25). `llms.txt` for Workers AI and a Markdown copy of every page (10). Model pages give a description, capability tags, context window and price, and the batch, caching and reject-busy pages say when to use each. Nothing says when not to pick a model (14 of 20). Parameters are typed with defaults, enums and nullability on the model pages (12 of 15). TypeScript, Python and curl examples on every model page and a table of 17 error codes with HTTP statuses. The quick start and the OpenAI page still use `@cf/meta/llama-3.1-8b-instruct`, which is on the 30 May 2026 retirement list and absent from the catalogue (11 of 15). A dated product changelog with RSS. Model ids carry no version apart from a few dated ones, and the Workers AI changelog page stops at 16 June 2026 while the product changelog continues (11 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## 6. Maintenance \u0026 community, 72 out of 100, up to 2.5 more on the total\n\nWhy it scored 72: Model reading. The newest product changelog entry is 1 October 2026, and the pricing page changed the same day (30). No minimum notice for model changes was found. The notice of 8 May 2026 retired 18 models 22 days later, and a notice of 18 September 2025 retired models 13 days later (5 of 12). Eighteen models went on 30 May 2026, one aliased to a pricier successor (3 of 8). A product changelog with RSS and nine Workers AI entries between 10 July and 1 October 2026. The Workers AI changelog page is stale since 16 June, and community and support channels were not sampled (10 of 15). Replies on the SDK repositories were not examined (3 of 10). `cloudflare` for TypeScript 7.3.0 and Python 5.9.0 were tagged on 2 October 2026, Go is at v7.12.0, and `workers-ai-provider` 4.0.0 dates from 22 July 2026 (14 of 15). The OpenAPI repository was updated on 8 October 2026 (7 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. Transparency \u0026 trust, 76 out of 100, up to 2.1 more on the total\n\nMade of editorial 56, provenance 95.\n\nWhy it scored 76: Closed service under the Self-Serve Subscription Agreement and service-specific terms with a Workers AI section. The hosted models are open-weight with licence links on their pages, and the SDKs are Apache-2.0 and MIT (18 of 30). The data usage page, the service-specific terms and the privacy policy of 4 November 2025 agree on ownership and no training. The privacy policy gives retention criteria, not periods, the two documents differ on use to improve services, and the DPA the terms link was not read (20 of 30). No deprecation policy was found. The changelog posts dated notices, and section 8 of the agreement lets Cloudflare modify or discontinue a service without notice (8 of 20). A sub-processor page exists and links a list for Cloudflare services, which we did not read. Model pages are tagged Cloudflare-hosted, and where a request runs is not stated beyond Cloudflare's network (10 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: read, states 7 of the 7 things a reader expects, and has 2 clauses that cost points (6 of 10)\n- Privacy policy: read, states 7 of the 8 things a reader expects (9.3 of 10)\n\n## Deductions\n\nEach comes off the total. A fixed and documented problem counts for less at the next check.\n\n- 28 July 2026. Kimi K2.6, Kimi K2.7 Code and GLM-5.2 began returning 403 (code 5035) on the Workers Free plan on the day of the notice, with no advance warning found. Three points (https://developers.cloudflare.com/changelog/post/2026-07-28-models-require-workers-paid/).\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: Workers AI incident history before 21 September 2026, since the status history page loads by script and the feed starts there\n- unchecked: Cloudflare's certifications, the sub-processor list for Cloudflare services, the customer DPA and the enterprise support and SLA page. We stopped requesting www.cloudflare.com pages after reading the website terms, which bar automated bots from using site content for AI systems unless robots.txt explicitly permits the user agent\n- unchecked: whether Free plan signup asks for a card. The pricing page says the free allocation is at no charge, and we did not create an account\n- unchecked: whether the x402 route answers 402 as documented. We sent no request to api.cloudflare.com\n- unchecked: account audit logs and any per-request log for calls that do not pass through an AI Gateway\n- Whether `@cf/meta/llama-3.1-8b-instruct` still answers. It is on the 30 May 2026 retirement list and absent from the catalogue, yet the pricing page, the quick start and the OpenAI page still name it\n- Section 2.2(e) of the Self-Serve Subscription Agreement bars introducing automated agents or scripts into the Services to generate automated requests or mine data. How Cloudflare reads that for agent callers of an inference API is not stated\n- The x402 price per request, network and asset are not on the Machine Payments page. They arrive in the `PAYMENT-REQUIRED` header\n- The lead said 50+ models, as the overview page does. The catalogue counted 69 on 9 October 2026\n- The first release date of Workers AI was not established from the pages read\n\n## Weaknesses\n\n- No SLA for Workers AI was found in the docs or the agreements read\n- Three models moved to paid-only access on 28 July 2026, the day of the notice, and Free plan calls to them return 403\n- Eighteen models were retired on 30 May 2026 with 22 days' notice, and no minimum notice period is published\n- The REST quick start, the OpenAI-compatibility page and the JSON Mode model list still name models on the 30 May 2026 retirement list\n- The x402 route still needs a Cloudflare API token, a United States account and a card on file\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- Check the model page before calling. Seven models need Workers Paid or AI Gateway credits and return 403 with code 5035 on the Free plan\n- Read the internal code on a 429. 3036 means the day's 10,000 free neurons are spent until 00:00 UTC, 3040 means capacity, so retry later\n- Set `options.rejectIfBusy` to fail fast, or add `?queueRequest=true` for the batch route when the answer can wait\n- Send the same `x-session-affinity` value on every turn of a session to reach the prefix cache and the cached-input price\n- Keep paid frontier models under 20 requests a minute per model, or 50 with prepaid AI Gateway credits\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": "B",
    "score": 68.3,
    "assessed": "2026-10-09",
    "run": "October 2026 research run",
    "categories": [
      {
        "key": "reliability",
        "name": "Reliability",
        "score": 66,
        "maxGain": 6.8,
        "reason": "Hosted reading. www.cloudflarestatus.com is a Statuspage with Workers AI, AI Gateway and API as separate components (20). The incidents feed held 50 incidents from 21 September to 8 October 2026, none naming Workers AI or AI Gateway. The API component had an 18-minute minor incident on 7 October and delayed permission changes on 30 September. The history page loads by script, so the rest of the 90 days went unread, and the changelog of 28 July 2026 cites 429 and 3040 capacity errors as the reason for limiting free access (10 of 30). Limits are published per task type, 300 requests a minute for text generation and 20 or 50 a minute per paid model (15). A 429 carries code 3036 for a spent free allocation or 3040 for capacity, `rejectIfBusy` fails fast, the batch route queues work, and the Cloudflare API returns `retry-after` and `Ratelimit` headers for its own limit. No `Retry-After` or backoff figures were found for a 3040 (11 of 15). No SLA for Workers AI was found. The legal index names only an enterprise support and SLA page, which we did not read (0). The limits page says Workers AI is generally available, with lower limits possible on beta models (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": 52,
        "maxGain": 6,
        "reason": "x402 is in beta on `POST /ai/run` since 30 September 2026 for four of 69 models. It still needs a Cloudflare API token, a United States account and a card on file, and the per-model and OpenAI-style routes are not covered. We did not call it (12 of 40). Per-model token, image and audio prices and the neuron rate are published without a login (20). 10,000 neurons a day are free on the Workers Free plan, and the pricing page asks for a paid plan only past that. We did not sign up to confirm that no card is asked for (20). A person creates the account and the first token in a browser, and the x402 route needs both (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": "ergonomics",
        "name": "Agent ergonomics",
        "score": 75,
        "maxGain": 4.1,
        "reason": "Model reading of the checklist (tool use, structured output, caching, context, batch, SDKs, errors). OpenAI-style tool calling with `parallel_tool_calls` on models tagged for it, and embedded function calling in Workers. The changelog of 17 February 2026 fixed six faults, five of them in tool-call round trips (15 of 20). `json_object` and `json_schema` formats. The docs say schema adherence is not guaranteed and JSON Mode does not stream, and the page's list of six supported models names three that were retired in May (9 of 15). Prefix caching on by default for select models, `x-session-affinity`, cached counts in `usage` and published cached prices (12 of 15). 1,048,576 tokens on DeepSeek V4 and GLM-5.3 and 256,000 on Gemma 4, against 24,000 on Llama 3.3 70B fast (12 of 15). An asynchronous batch route on tagged models with a 10 MB payload limit and no stated discount (7 of 10). The OpenAI SDKs work with a changed base URL, with Responses limited to two models and no streaming. Cloudflare's own SDKs cover TypeScript, Python and Go (9 of 10). Errors carry an internal code and message, and a 429 tells a spent allocation from a capacity limit (11 of 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"
      },
      {
        "key": "security",
        "name": "Security \u0026 auth",
        "score": 77,
        "maxGain": 4,
        "reason": "Model reading. Cloudflare API tokens are revocable, limited to Workers AI Read or Edit on chosen accounts, and take an expiry and an IP address filter. Permission is per account, not per model, and the API reference also accepts the older global API key (27 of 30). The data usage page and the service-specific terms of 28 September 2026 say Customer Content is not used to train models without consent. The data page adds that it is not used to improve services, while clause 9 of the same terms section allows use as needed to provide and improve the Services (17 of 20). The data page says content may be stored if a storage service is used with Workers AI. It gives no retention period for inference inputs and no explicit zero-retention statement, and AI Gateway logs prompts and responses by default when a call is routed through a gateway (9 of 15). Gateway logs record prompt, response, tokens and cost per request, and the dashboard shows neuron usage. Direct calls have no per-request log that we found, and account audit logs were not read this run (9 of 15). security.txt names a HackerOne programme and a disclosure policy, with no Expires field. Certifications were not checked, because we stopped reading www.cloudflare.com after its website terms (15 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": "schema",
        "name": "Schema \u0026 documentation",
        "score": 80,
        "maxGain": 3.3,
        "reason": "Model reading, scored on the API lines. Cloudflare's public OpenAPI 3.0.3 document, updated 8 October 2026, has 14 paths and 15 operations under `/ai/`. `/ai/run/{model_name}` takes 13 input shapes by task and lists only 200 and 400 responses, and the OpenAI-style `/ai/v1/` routes are not in it. Each model page links JSON Schemas for input and output, and `GET /ai/models/schema` returns them (22 of 25). `llms.txt` for Workers AI and a Markdown copy of every page (10). Model pages give a description, capability tags, context window and price, and the batch, caching and reject-busy pages say when to use each. Nothing says when not to pick a model (14 of 20). Parameters are typed with defaults, enums and nullability on the model pages (12 of 15). TypeScript, Python and curl examples on every model page and a table of 17 error codes with HTTP statuses. The quick start and the OpenAI page still use `@cf/meta/llama-3.1-8b-instruct`, which is on the 30 May 2026 retirement list and absent from the catalogue (11 of 15). A dated product changelog with RSS. Model ids carry no version apart from a few dated ones, and the Workers AI changelog page stops at 16 June 2026 while the product changelog continues (11 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": "maintenance",
        "name": "Maintenance \u0026 community",
        "score": 72,
        "maxGain": 2.5,
        "reason": "Model reading. The newest product changelog entry is 1 October 2026, and the pricing page changed the same day (30). No minimum notice for model changes was found. The notice of 8 May 2026 retired 18 models 22 days later, and a notice of 18 September 2025 retired models 13 days later (5 of 12). Eighteen models went on 30 May 2026, one aliased to a pricier successor (3 of 8). A product changelog with RSS and nine Workers AI entries between 10 July and 1 October 2026. The Workers AI changelog page is stale since 16 June, and community and support channels were not sampled (10 of 15). Replies on the SDK repositories were not examined (3 of 10). `cloudflare` for TypeScript 7.3.0 and Python 5.9.0 were tagged on 2 October 2026, Go is at v7.12.0, and `workers-ai-provider` 4.0.0 dates from 22 July 2026 (14 of 15). The OpenAPI repository was updated on 8 October 2026 (7 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": "transparency",
        "name": "Transparency \u0026 trust",
        "score": 76,
        "maxGain": 2.1,
        "reason": "Closed service under the Self-Serve Subscription Agreement and service-specific terms with a Workers AI section. The hosted models are open-weight with licence links on their pages, and the SDKs are Apache-2.0 and MIT (18 of 30). The data usage page, the service-specific terms and the privacy policy of 4 November 2025 agree on ownership and no training. The privacy policy gives retention criteria, not periods, the two documents differ on use to improve services, and the DPA the terms link was not read (20 of 30). No deprecation policy was found. The changelog posts dated notices, and section 8 of the agreement lets Cloudflare modify or discontinue a service without notice (8 of 20). A sub-processor page exists and links a list for Cloudflare services, which we did not read. Model pages are tagged Cloudflare-hosted, and where a request runs is not stated beyond Cloudflare's network (10 of 20).",
        "blend": "editorial 56, provenance 95",
        "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"
      }
    ],
    "provenance": [
      {
        "label": "Terms of service",
        "value": "read, states 7 of the 7 things a reader expects, and has 2 clauses that cost points",
        "points": 6,
        "max": 10
      },
      {
        "label": "Privacy policy",
        "value": "read, states 7 of the 8 things a reader expects",
        "points": 9.3,
        "max": 10
      }
    ],
    "deductions": [
      "28 July 2026. Kimi K2.6, Kimi K2.7 Code and GLM-5.2 began returning 403 (code 5035) on the Workers Free plan on the day of the notice, with no advance warning found. Three points (https://developers.cloudflare.com/changelog/post/2026-07-28-models-require-workers-paid/)."
    ],
    "unchecked": [
      "unchecked: Workers AI incident history before 21 September 2026, since the status history page loads by script and the feed starts there",
      "unchecked: Cloudflare's certifications, the sub-processor list for Cloudflare services, the customer DPA and the enterprise support and SLA page. We stopped requesting www.cloudflare.com pages after reading the website terms, which bar automated bots from using site content for AI systems unless robots.txt explicitly permits the user agent",
      "unchecked: whether Free plan signup asks for a card. The pricing page says the free allocation is at no charge, and we did not create an account",
      "unchecked: whether the x402 route answers 402 as documented. We sent no request to api.cloudflare.com",
      "unchecked: account audit logs and any per-request log for calls that do not pass through an AI Gateway",
      "Whether `@cf/meta/llama-3.1-8b-instruct` still answers. It is on the 30 May 2026 retirement list and absent from the catalogue, yet the pricing page, the quick start and the OpenAI page still name it",
      "Section 2.2(e) of the Self-Serve Subscription Agreement bars introducing automated agents or scripts into the Services to generate automated requests or mine data. How Cloudflare reads that for agent callers of an inference API is not stated",
      "The x402 price per request, network and asset are not on the Machine Payments page. They arrive in the `PAYMENT-REQUIRED` header",
      "The lead said 50+ models, as the overview page does. The catalogue counted 69 on 9 October 2026",
      "The first release date of Workers AI was not established from the pages read"
    ],
    "weaknesses": [
      "No SLA for Workers AI was found in the docs or the agreements read",
      "Three models moved to paid-only access on 28 July 2026, the day of the notice, and Free plan calls to them return 403",
      "Eighteen models were retired on 30 May 2026 with 22 days' notice, and no minimum notice period is published",
      "The REST quick start, the OpenAI-compatibility page and the JSON Mode model list still name models on the 30 May 2026 retirement list",
      "The x402 route still needs a Cloudflare API token, a United States account and a card on file"
    ],
    "agentNotes": [
      "Check the model page before calling. Seven models need Workers Paid or AI Gateway credits and return 403 with code 5035 on the Free plan",
      "Read the internal code on a 429. 3036 means the day's 10,000 free neurons are spent until 00:00 UTC, 3040 means capacity, so retry later",
      "Set `options.rejectIfBusy` to fail fast, or add `?queueRequest=true` for the batch route when the answer can wait",
      "Send the same `x-session-affinity` value on every turn of a session to reach the prefix cache and the cached-input price",
      "Keep paid frontier models under 20 requests a minute per model, or 50 with prepaid AI Gateway credits"
    ],
    "recheck": "https://www.anchorterminal.com/builders/#disputes"
  },
  "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"
  }
}
