Fly.io is Good to agents.
Discry independently scored how well an AI agent can discover and understand the Fly.io API from what’s public — not whether it’s usable. Below: every signal we checked, what’s costing the score, and what to change.
SCORED UNDER RUBRIC 1.2 · A full re-launch under Discry Score 2.5 — a new behavioral instrument, not comparable to these scores — is in progress.
Discovery
45% of score · 55/100Comprehension
55% of score · 96/100What we found
- An agent can fully understand and operate the Machines REST API from the docs alone: every resource (Apps, Machines, Volumes, Tokens, Certificates) leads with a task-oriented description and shows copy-pasteable curl examples with realistic IDs (e.g. vol_6r7ye90k98ynwk1r) and real JSON request/response bodies.
- Fly.io is unusually markdown-native for agents — every doc page exposes a raw `.html.md` source on GitHub plus 'Copy page as markdown' and 'Open in ChatGPT' affordances, and ships a well-structured 36KB llms.txt with sectioned, described links. Comprehension scored 96/100 (A).
- Discovery is the weak dimension (55/100, D): there is NO robots.txt (404), no llms-full.txt, no .well-known/mcp.json, and no AGENTS.md in the primary superfly repos — so several standard agent-discovery signals an agent would probe for return nothing.
- Capability boundaries are exceptionally clear for an infra API: exact rate limits per action, explicit constraints ('you can't make a volume smaller'), and beta features flagged inline — an agent learns the limits from docs rather than by failing.
- A publicly accessible OpenAPI 3.0 spec (docs.machines.dev, with Swagger UI) means an agent can generate a typed client in any language, partially offsetting the docs' curl-only code samples.
What to change
Prioritized by impact on discoverability. You (or your docs platform) deploy these — Discry never touches your API.
- 01Add a robots.txt at the root that explicitly allows AI crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot) — its absence (404) is the single biggest discovery loss and an easy fix.
- 02Publish an AGENTS.md in the primary superfly repos (flyctl, docs) describing how coding agents should build, deploy, and operate apps on Fly.io — a rising standard worth 3 points and a natural fit given Fly's existing agent investments.
- 03Generate an llms-full.txt that concatenates the core Machines API and Fly Launch docs into one markdown file, so an agent can ingest the full surface in a single fetch.
- 04Expand the Response Codes section into actionable recovery guidance — pair each status (400/401/408/429/5xx) with what to do next (e.g. 'on 429, back off and retry the per-action limit of 1 req/s'), and name the rate-limit response headers.
- 05Include the documentation pages in sitemap.xml — the current sitemap index covers only marketing/landing URLs, so /docs pages aren't surfaced to crawlers.
Execution coverage · INFORMATIONAL, UNSCORED
Whether an agent can actually complete a call and recover from errors is the deeper Audit layer — documented here, but not part of the Discry Score.
Strong execution documentation: macaroon-based scoped Bearer tokens, a conventional HTTP status-code table, and precise per-action rate limits (1 req/s, burst 3; Get Machine 5/10; app deletions 100/min). Gaps: no idempotency-key support is documented, and list endpoints use query-filter selection rather than cursor/offset pagination.