Netlify
netlify.com · Compute / VPS / Cloud Hosting modeIntegrated
Last probed 2026-08-09 23:52 UTC · Provisional
Netlify — Static site hosting and serverless functions.
Verdict: Partially — an AI agent can use Netlify, but activate is blocked — A CAPTCHA blocks automated signup and manage is blocked — SSO-only — no admin API path.
- DiscoverEasy
- ActivateBlocked
- OperateEasygated by Activate
- ManageBlockedgated by Activate
Capability parity
Each stage answers one question about what an agent can do unattended. Stages are ordered by the credential-gateway dependency: Activate issues the keys that unlock Operate and Manage.
Discover
Can an agent find and read it, no account?
- Be found by a retrieval agentEasy
Retrieval access present.
Evidence
- Path tried
- robots.txt / sitemap / discovery headers
- Where it stalled
- completed
- Evidence tier
- Tier 1 (unauth probe)
- Verification
- Evidence-only — graded from passive signal, not live-verified.
- Backing checks
retrieval_bot_access, sitemap_xml, link_header_discovery
- Read what it does and how to use itEasy
Machine-readable docs present.
Evidence
- Path tried
- llms.txt / AGENTS.md / schema.org / docs
- Where it stalled
- completed
- Evidence tier
- Tier 1 (unauth probe)
- Verification
- Evidence-only — graded from passive signal, not live-verified.
- Backing checks
llms_txt, markdown_content, schema_org_jsonld, content_signals
- Read pricing & limits without loginNot assessed
Activate
Can an agent sign up and walk away with the keys it needs?
- Create an account self-serveBlocked
A CAPTCHA blocks automated signup.
CAPTCHA / bot-challenge blocks this.
Evidence
- Path tried
- signup flow
- Where it stalled
- verification step
- Evidence tier
- Tier 0 (passive scan)
- Verification
- Evidence-only — graded from passive signal, not live-verified.
- CAPTCHA / bot-challengeBefore any account existsHomepage load triggered a recaptcha challenge page (matched signal: iframe[src*="recaptcha"]).
- Obtain an API / MCP access credentialBlocked
SSO-only — no API-key path.
SSO-only signup, no API-key issuance blocks this.
Evidence
- SSO-only signup, no API-key issuanceSignupSignup offers only OAuth/SSO buttons (Sign up with Google, Sign up with GitHub, Sign up with GitLab, Sign up with Bitbucket, Sign up with email) — no email/password or API-key path.
- Obtain a management / admin keyNot assessed
- Accept the terms without a bot-banEasy
No bot-prohibition signal found.
Evidence
- Path tried
- ToS / policy scan
- Where it stalled
- completed
- Evidence tier
- Tier 0 (passive scan)
- Verification
- Evidence-only — graded from passive signal, not live-verified.
Operate
Can an agent do the service's actual jobs — call, transact, pay?
Gated by Activate — the credential this stage needs isn't issued unattended, so these rows may be unreachable even where they read Easy.
- Call the primary service over MCP / APIEasy
Machine interface present — evidence-only, not live-verified.
Gated by Activate — the credential this needs isn't issued unattended.
Evidence
- Path tried
- API / MCP / browser
- Where it stalled
- completed
- Evidence tier
- Tier 1 (unauth probe)
- Verification
- Evidence-only — graded from passive signal, not live-verified.
- Backing checks
openapi_spec, api_catalog
- Complete a transaction / checkoutNot applicable
Integrated tool — the API call is the transaction, no separate checkout.
Gated by Activate — the credential this needs isn't issued unattended.
- Pay via an agent rail (x402 / ACP / AP2)Not assessed
Gated by Activate — the credential this needs isn't issued unattended.
Manage
Can an agent administer the account and provision resources?
Gated by Activate — the credential this stage needs isn't issued unattended, so these rows may be unreachable even where they read Easy.
- Provision / scale / tear down a serviceBlocked
SSO-only — no admin API path.
SSO-only signup, no API-key issuance blocks this.
Gated by Activate — the credential this needs isn't issued unattended.
- Change account details / set budget / rotate keysBlocked
SSO-only — no admin API.
SSO-only signup, no API-key issuance blocks this.
Gated by Activate — the credential this needs isn't issued unattended.
- View usage & billingNot assessed
Gated by Activate — the credential this needs isn't issued unattended.
- Cancel / export / delete (offboard)Not assessed
Gated by Activate — the credential this needs isn't issued unattended.
Findings
How scoring works →Interrupt tier: Moderate-Interrupt — derived from 3 findings; interrupt score 50 / 100 — the badge-driving metric. (range 19–69 · 10 unassessed)
Every tool starts at 100. Each interrupt found subtracts a penalty of base weight × timing × hardness × evidence — the multiplier values below come from the same rubric tables the score is computed with. New snapshots also provisionally subtract 50% of the full worst-case tax for each unassessed property and 25% for evidence-graded successes not live-verified by Tier 2.
Property coverage
A check only counts as clean when a probe tier capable of detecting that interrupt actually ran and found nothing. Not tested ≠ clean.
| Property | Stage | State | Evidence | Required |
|---|---|---|---|---|
| CAPTCHA / bot-challenge | activate | failed | Active finding — itemized in the penalty matrix below. Tier 0 assesses this property. | no |
| SSO-only signup, no API-key issuance | activate | failed | Active finding — itemized in the penalty matrix below. Tier 1 assesses this property. | no |
| Email OTP verification | activate | unassessed | Tier 1 (unauth probe) ran but did not gather enough evidence to claim clean. Tier 1 assesses this property. | no |
| SMS / phone OTP verification | activate | unassessed | Tier 1 (unauth probe) ran but did not gather enough evidence to claim clean. Tier 1 assesses this property. | no |
| Mandatory phone verification call | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Mailed physical code (postal) | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| “Contact sales” wall (no self-serve path) | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Manual approval queue | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Rate-limit-triggered manual review | manage | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| One-time account / payment-method provisioning | manage | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Identity / KYC verification | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Crypto wallet / key-custody setup | operate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| ToS clause banning automated/bot access | discover | success | None found — checked at Tier 0 (passive scan) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 0 assesses this property. | no |
| Mandatory redirect to vendor’s own site | operate | success | None found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property. | no |
| No Machine Interface | operate | success | None found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property. | yes |
| Interrupt found | Base weight | × Timing | × Hardness | × Evidence | = Penalty |
|---|---|---|---|---|---|
| Starting score | 100 | ||||
| CAPTCHA / bot-challengeSignupSignup page embeds a recaptcha CAPTCHA/bot-challenge (matched: iframe[src*="recaptcha"]). | 6 | ×1one-time setup | ×2.5hard | ×0.8Tier 1 (unauth probe) | −12 |
| SSO-only signup, no API-key issuanceSignupSignup offers only OAuth/SSO buttons (Sign up with Google, Sign up with GitHub, Sign up with GitLab, Sign up with Bitbucket, Sign up with email) — no email/password or API-key path. | 5 | ×1one-time setup | ×2.5hard | ×0.8Tier 1 (unauth probe) | −10 |
| CAPTCHA / bot-challengeBefore any account existsHomepage load triggered a recaptcha challenge page (matched signal: iframe[src*="recaptcha"]). | 6 | ×1one-time setup | ×2.5hard | ×0.6Tier 0 (passive scan) | −9 |
| Total penalty | −31 | ||||
| Full unknown tax 108.2 — capped at 25 (point score uses 50% of the capped value) | −108.2 | ||||
| Evidence-graded tax (successes not live-verified by a Tier 2 probe) 129.2 — capped at 25 (point score uses 25% of the capped value) | −129.2 | ||||
| Raw score = 100 − 31 = 69 Point score = 69 − 50% × 25 − 25% × 25 = 50.3 → 50 | 50 | ||||
What would make this Easy
One concrete change per blocker found. These are the diffs between this listing's current parity and an unattended agent path.
- Activate — CAPTCHA / bot-challengeDrop the CAPTCHA, or gate it behind a documented bot-detection signal a well-behaved agent can pass.
- Activate / Manage — SSO-only signup, no API-key issuanceExpose an API / MCP credential alongside SSO.
How we scored this
- Confidence: Provisional (0.55) — Based on Tier 0/1 evidence only (passive checks, no live transaction attempt) — treat the number as a triage signal, not a verified outcome.
- Machine-Readability sub-score: 65 / 100 (a separate integration-ease signal — it never enters the Interrupt Score or badge).
- Rubric, tiers, confidence model, and badge thresholds →
Machine-readability checks 65 / 100
Four check groups, equal weight: machine interfaces, browsing efficiency, element discoverability, and discovery/agent access. Each check carries an evidence grade (proven / plausible / emerging) — an honesty label that never weights the score. What these mean →
- llms.txtemergingFound — netlify.com/llms.txt (2.8 KB, 27 links)
- llms-full.txtemergingNot provided
- AGENTS.mdemergingNot provided
- A2A agent cardemergingNot provided
- MCP server (well-known or official registry)plausibleNot provided
- OpenAPI/Swagger specplausibleFound — netlify.com/openapi.json
- Rate-limit headersplausibleNot provided
- Structured JSON error responsesplausibleNot checked — no error response was sampled during this probe
- OAuth authorization-server metadata (RFC 8414)provenNot provided
- API catalog (RFC 9727) (emerging)emergingFound — netlify.com/.well-known/api-catalog
- Agent-payment discovery (x402 / UCP) (emerging)emergingNot provided
- Lean HTML transfer sizeplausible400 KB raw HTML (threshold 488 KB)
- Manageable DOM sizeplausibleNot provided
- High content-to-markup densityplausible2.1% text/HTML (8555 chars in 400 KB, threshold 2%)
- Content readable without JS executionprovenraw HTML holds 197% of rendered text (8555 vs 4344 chars; threshold 40%)
- Clean-content alternate (RSS/Atom/feed/markdown)plausibletext/markdown, application/rss+xml, application/rss+xml, application/rss+xml
- Serves markdown on Accept: text/markdownplausiblereturned text/markdown; charset=utf-8
- Interactive elements are semanticplausible204/204 semantic (100%); 0 div/span click targets
- Form fields have accessible namesplausible12/15 named (80%)
- Inputs carry autocomplete hintsplausibleNot provided
- WebMCP tools (modelContext API)emergingNot provided
- AI retrieval/search fetchers allowed (robots.txt)provenexplicitly allowed: OAI-SearchBot, ChatGPT-User, PerplexityBot
- Sitemap (indexability)plausibleFound — www.netlify.com/sitemap-index.xml
- schema.org JSON-LD in raw HTMLplausible1 valid JSON-LD block(s) in raw (pre-JS) HTML
- Content-Signal directives (robots.txt)emergingsearch=yes, ai-input=yes, ai-train=yes
- Web Bot Auth key directory (emerging)emergingNot provided
- Discovery Link headers on homepage (emerging)emergingrel=api-catalog
- robots.txt AI-crawler accessplausibleno AI-crawler blocks; explicitly allowed: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, Google-Extended, PerplexityBot
- Unauthenticated API error is structured JSONplausibleFound — netlify.com/openapi.json (HTTP 200)
- Unauthenticated API returns auth guidance (401/403 or documented)plausibleFound — netlify.com/openapi.json (HTTP 200)
- API exposes rate-limit headersplausibleNot provided
- API key obtainable without human interactionplausibleNot provided
Evidence & history
Last probed 2026-08-09 23:52 UTC. The raw JSON is the archival record.
| Date | Score | Badge | Rubric version |
|---|---|---|---|
| 2026-08-09 23:52 UTC | 50 | Moderate-Interrupt (current) | [email protected] |
| 2026-08-09 23:52 UTC | 50 | Moderate-Interrupt | [email protected] |
| 2026-08-09 17:13 UTC | 50 | Moderate-Interrupt | [email protected] |
| 2026-08-09 05:41 UTC | 57 | Moderate-Interrupt | [email protected] |
| 2026-08-09 05:41 UTC | 79 | Moderate-Interrupt | [email protected] |
Alternatives in Compute / VPS / Cloud Hosting
Other Compute / VPS / Cloud Hosting tools in the same mode (integrated), ranked by Overall LLM-Friendliness (the mean of Interrupt Score and Machine-Readability) — comparable to this listing because they share its usage mode.
- 69OverallRunPod
runpod.io · Compute / VPS / Cloud HostingMR65 - 64OverallRender
render.com · Compute / VPS / Cloud HostingMR63 - 64OverallAWS
aws.amazon.com · Compute / VPS / Cloud HostingMR47 - 63Overallvercel.com
vercel.com · Compute / VPS / Cloud HostingMR56 - 63OverallCloudflare
cloudflare.com · Compute / VPS / Cloud HostingMR57