Published 2026-09-22 · Tested 2026-09-22

Netlify

C+

Netlify received 8 PASS votes and passed 4 of five agent surface checks. The clearest finding came from the find the exact limits task.

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Read as markdown (opens in a new tab)

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Netlify’s public documentation independently and attempted five first-hour developer jobs: deploy the first site, find the exact limits, recover from a 429, verify a webhook, use the JavaScript SDK.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.

Freshness

How rechecks work
Tested
Quotes verified
Surface rechecked
Not yet rechecked
Netlify Astro Starlight · published
C+

77.5% · 62/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt FAIL
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Deploy the first site PASSPASSPASS PASS
Find the exact limits PARTIALPARTIALPARTIAL PARTIAL
Recover from a 429 FAILPARTIALPARTIAL PARTIAL
Verify a webhook PASSPASSPASS PASS
Use the JavaScript SDK PASSPARTIALPASS PASS

docs platform: Astro Starlight (unscored) · verified 2026-09-22

What to fix first

These 3 fixes could add up to 17 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works

  1. 1
    +10 points llms-full.txt check failed

    Found: HTTP 404 returning the Starlight 404 HTML page.

    Fix: Publish llms-full.txt at the docs root with the full text of every docs page in one plain-text file.

    Evidence: docs.netlify.com/llms-full.txt (opens in a new tab)

  2. 2
    +4 points Recover from a 429 PARTIAL

    Found: The rate limiting section shows three X-RateLimit headers but never names the 429 status, never explains the X-RateLimit-Reset epoch value, and never says when to retry.

    Fix: State that a blocked request returns 429, say that X-RateLimit-Reset is a Unix epoch in seconds, and give the wait step in the rate limiting section.

    Evidence: docs.netlify.com/api-and-cli-guides/api-guides/get-started-with-api/#rate-limiting (opens in a new tab)

  3. 3
    +3 points Find the exact limits PARTIAL

    Found: The API guide states 500 requests per minute and 3 deploys per minute without saying whether the limit is per token, user, team, or project.

    Fix: Name the scope of the 500-per-minute and 3-per-minute limits in the rate limiting section, and link the credit-based and legacy plan quota pages.

    Evidence: docs.netlify.com/api-and-cli-guides/api-guides/get-started-with-api (opens in a new tab)

What the docs get right

  • Deploy the first site: 3 PASS votes. The quickstart gives one six-step UI path from signup through repository authorization, publish settings, and Publish.
  • Verify a webhook: 3 PASS votes. One page covers webhook setup, deploy events, the signed header, claims, raw-body hashing, and verification examples.
  • 4 of 5 agent surface checks. Present: llms.txt, markdown mirrors, an MCP server, docs AI. Missing: llms-full.txt.

Deploy the first site

PASS

PASS consensus from 3 PASS.

The quickstart gives one six-step UI path from signup through repository authorization, publish settings, and Publish. One numbered path from signup through Add new project, Import an existing project, provider authorization, publish settings, and Publish, reachable in one hop from the Start section. The UI-based import path gives a clear six-step procedure from sign-up through Git provider authorization to deploy; the CLI docs offer an equivalent path via netlify init.

Find the exact limits

PARTIAL

PARTIAL consensus from 3 PARTIAL.

Numeric API ceilings are clear, but scope is undefined and plan quotas differ between credit-based and legacy accounts. The API values are exact and stated once with no contradicting page, but the page never says what the 500 per minute and 3 per minute limits are scoped to (token, user, team, or project), and the plan quota tables live on two separate pricing pages that the API page does not link and that llms.txt does not index. The general and deploy-specific limits are clearly stated and self-consistent, but plan quotas (Free/Pro/Enterprise) for API rate limits are never documented anywhere on docs.netlify.com.

Recover from a 429

PARTIAL

PARTIAL consensus from 2 PARTIAL, 1 FAIL.

The API guide lists three headers but never names HTTP 429, defines the reset value, or states when to retry. The three X-RateLimit headers are shown, but the API rate limiting section never names a status code, never documents Retry-After, and never states that the X-RateLimit-Reset sample value 1372700873 is a Unix epoch in seconds, so the reset window has to be inferred; the linked OpenAPI specification (version 2.57.1) contains no 429 response anywhere. The rate-limit response headers and reset window (UNIX timestamp) are documented, but the API rate-limit section never names HTTP 429 as the status code returned when a rate limit is exceeded.

Verify a webhook

PASS

PASS consensus from 3 PASS.

One page covers webhook setup, deploy events, the signed header, claims, raw-body hashing, and verification examples. The page gives the full deploy event list, the UI path under Project configuration > Notifications > Deploy notifications, the header name, the iss and sha256 claims, the HS256 algorithm, and two runnable verification examples, though the Express example calls bodyParser without importing it. The deploy notifications page fully documents the X-Webhook-Signature JWS, describes the signed fields (iss, sha256), and supplies verification examples in both Ruby and Node.js.

Use the JavaScript SDK

PASS

PASS consensus from 2 PASS, 1 PARTIAL.

The linked @netlify/api example passes an access token to NetlifyAPI and calls listSites(), matching GET /api/v1/sites. The docs offer only a bare GitHub link labelled JS Client with no package name, version, install command, or in-docs example; the minimal authenticated example (new NetlifyAPI('1234myAccessToken') then client.listSites()) exists only in the repository README for @netlify/api, and it does match the documented api.netlify.com/api/v1 base path and bearer-token form. The docs reference the official @netlify/api JS client; its README provides a minimal authenticated example (new NetlifyAPI('accessToken'); client.listSites()) that matches the same access-token pattern and endpoint structure shown in the REST API docs.

The receipt

You can make up to 500 requests per minute for most requests. Certain operations have their own stricter limits. For example, you can deploy through the Netlify API up to 3 times per minute and up to 100 times per day.

Numeric API ceilings are clear, but scope is undefined and plan quotas differ between credit-based and legacy accounts.

Agent surface notes

Initialize returned HTTP 401 with WWW-Authenticate Bearer realm MCP Server and resource_metadata resolving to a 200 OAuth document.

Clicking the docs Ask Netlify control opened a Kapa chat panel with an "Ask a question..." input.

Show the score

AI Agent Readiness Score 77.5%, grade C+

Paste this into a readme:

[![AI Agent Readiness Score 77.5%](https://docsforagents.com/badge/netlify.svg)](https://docsforagents.com/reports/netlify-docs-ai-agent-readiness/)

Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-22.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site