Cloudflare D1
Serverless SQLite databases on Cloudflare's network.
Overall score
46.2/100
cloudflare-d1-rest-v4
Measured Oct 5, 2026
Status
Ranked
Complete benchmark. `overall` is a weighted average of the applicable criteria, comparable to other surfaces in the same category and the same rubric version.
Coverage
78% of the rubric
Surfaces
evaluated.
We score a surface, not a product. One product often exposes several, and they are not worth the same.
cloudflare-d1-rest-v4restprimary
78% coverage
46.2/100
Criterion
by criterion.
Measured on cloudflare-d1-rest-v4, rubric v0.2.0. A criterion with no score is not counted as zero: it is excluded and the weights are renormalised.
Offload Valuejudged · weight 15 · Oct 5, 2026
30/100
The documented endpoint is a generic SQL query interface to a serverless database (D1) within Cloudflare's API surface. It stores and retrieves data the agent supplies; the agent must author the SQL and carry all reasoning. SQL execution is modest computation offload (joins/aggregations over stored rows persist state the agent cannot hold), but there is no proprietary data, no compliance logic, no real-world side effect, and no inference-replacing capability. Essentially CRUD with persistence.
- https://developers.cloudflare.com/api/resources/d1/subresources/database/methods/query/
D1 Database | Cloudflare API Skip to content Cloudflare API Search
- https://developers.cloudflare.com/api/resources/d1/subresources/database/methods/query/
Query D1 Database | Cloudflare API Skip to content Cloudflare API Search
- https://developers.cloudflare.com/api/resources/d1/subresources/database/methods/query/
Vectorize Indexes Get Vectorize Index Create Vectorize Index Delete Vectorize Index Insert Vectors Query Vectors
Interaction Costmeasured · weight 15 · Oct 5, 2026
18/100
Median over 2 successful run(s): 39433 tokens, 3.5 calls. Ratio to the best in "backend-database" (4 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Error Recoverabilityprobed · weight 15 · Oct 5, 2026
40/100
unknown_endpoint → HTTP 404, clarity 30/100 (field named: no, allowed values: no, RFC 9457: no) · wrong_type → HTTP 400, clarity 75/100 (field named: yes, allowed values: yes, RFC 9457: no) · hallucinated_enum → HTTP 400, clarity 55/100 (field named: yes, allowed values: no, RFC 9457: no) · unknown_field → HTTP 200, clarity 0/100 (field named: no, allowed values: no, RFC 9457: no)
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 401: {"result":null,"success":false,"errors":[{"code":10000,"message":"Authentication error"}],"messages":[]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/nonexistent_resource_xyz
HTTP 404: {"success":false,"errors":["Route not found"]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 400: {"success":false,"errors":[{"code":7400,"message":"Invalid property: sql => Expected string, received number | Invalid property: batch => Required"}]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 400: {"messages":[],"result":[],"success":false,"errors":[{"code":7500,"message":"no such table: nonexistent_table_xyz: SQLITE_ERROR"}]}
Doc Legibilitymeasured · weight 12 · Oct 5, 2026
41/100
text/markup ratio 5.4% (weight 30) · renders without JavaScript: yes (weight 25) · machine-readable spec: none found (weight 25) · llms.txt: https://developers.cloudflare.com/llms.txt (weight 10) · 1 runnable example(s) (weight 10). Weighted average over 100 points of available sub-criteria.
Auth Frictionmeasured · weight 10 · Oct 5, 2026
95/100
Authorization: Bearer <key>, verified by a successful call. One header, no ceremony.
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 401: {"result":null,"success":false,"errors":[{"code":10000,"message":"Authentication error"}],"messages":[]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/nonexistent_resource_xyz
HTTP 404: {"success":false,"errors":["Route not found"]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 400: {"success":false,"errors":[{"code":7400,"message":"Invalid property: sql => Expected string, received number | Invalid property: batch => Required"}]}
- https://api.cloudflare.com/client/v4/accounts/f503764d58bf3b0cfa26f07580e407f1/d1/database/b081cddb-ea72-486b-acd8-ece33a932bbd/query
HTTP 400: {"messages":[],"result":[],"success":false,"errors":[{"code":7500,"message":"no such table: nonexistent_table_xyz: SQLITE_ERROR"}]}
Safety & Reversibilityprobed · weight 10
—/100
If I retry after a timeout, do I charge the customer twice?
Payload Efficiencyprobed · weight 8
—/100
Can I ask for only the fields I need, or do I have to swallow 200 attributes to extract one?
Task Atomicitymeasured · weight 6 · Oct 5, 2026
57/100
Median over 2 successful run(s): 39433 tokens, 3.5 calls. Ratio to the best in "backend-database" (4 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Prior Knowledge Coveragemeasured · weight 5 · Oct 5, 2026
100/100
Median over 2 successful run(s): 39433 tokens, 3.5 calls. Ratio to the best in "backend-database" (4 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Async Compatibilityprobed · weight 2
—/100
If the operation is asynchronous, can I get the result without hosting a web server?
Tool-Native (MCP)binary · weight 2
—/100
Does the vendor publish an official, maintained MCP server?
Runs, verified
never on the agent’s word.
Every row is a real attempt at the category’s canonical task. Success is verified by reading the created resource back.
| Task | Tokens | Calls | Errors | Docs | Result |
|---|---|---|---|---|---|
| store-and-query-record | 8,570 | 3 | 0 | without | verified |
| store-and-query-record | 69,839 | 4 | 1 | with | verified |
| store-and-query-record | 9,027 | 3 | 0 | with | verified |
The same entry,
without the markup.
You publish this API and dispute a score? The methodology is public and every score above points to the evidence that produced it.