Let Agents In

Agent readiness · strapi.io

2026-08-12 10:33 UTC · formula v9.2 · 3.5s

You publish files for machines to read, but nothing that tells one how to become a customer.

None of the nine known agent entry paths answered, including /agent-signup.md and /.well-known/agent-access.json. Reading is solved on your site; joining is not.

7/ 14
A · Discovery
5/5
B · Agent entry
0/4
C · Registration
0/1
D · Provisioning
0/2
E · Integration
2/2

of the 14 points that apply to you and we could measure · 3 of 17 were not scored

You 7 · category median 7 · best storyblok.com 12 · 15 deterministic HTTP checks, published formula

Pass it onEmail itLinkedIn

Fix this first

+4points, taking 7/14 to 11/14, past hygraph.com

This is the whole list: everything we could measure and you do not pass. Another 3 points sit behind checks we could not evaluate on your domain, and each of those lines below says what would make it measurable.

  1. 1
    Agent entry pointan afternoon · +2

    Publish /agent-signup.md: the path from nothing to a working key, written as steps for a machine rather than a tour for a person. Ours is at /agent-signup.md if you want a worked example, and it says plainly that we have nothing to sign up for.

  2. 2
    Programmatic key provisioningan afternoon · +2

    Document how a key is created without opening a dashboard: management API, service account or CLI. If no such path exists, that gap is the finding, not the docs.

Then, when you have room

  • OAuth dynamic client registration a project · +1Publish OAuth authorization server metadata with an RFC 7591 registration_endpoint in it. It is the only standard way an agent registers itself without a human.
  • MCP surface a project · +1You already talk about MCP, and nothing answered at the addresses named above. If your server is at another path, declare it at /.well-known/mcp.json: that file is what an agent reads first, and it is what makes the path stop mattering.
  • Signup reachable without a browser a project · +1Let https://cloud.strapi.io/signup render its form in server HTML and stop refusing non-browser requests to it.

Take it with you

6 of the checks an agent depends on, strapi.io does not pass.

Send yourself the list above with the checks that cost the most, and a permanent link. Whoever owns the fix is usually not the person who ran the scan.

One email with the report, and one follow-up asking what you did with it. No newsletter, no sequence. Delete on request at hello@letagentsin.com.

None of this tells you whether an agent picked you

Everything above is a file an agent could read. Whether one actually chose you is a different measurement, and we have not run it on strapi.io. What we have run it on is a rich text editor vendor: six agents, one brief, six isolated copies of a real codebase. All six picked the same competitor, and the vendor being studied was never named, not even on a rejection list, while the runs named and dismissed ten alternatives between them. In an earlier round, run before we isolated the copies, it was named twice and struck off both times in four words: Fully commercial, licence key required. That study is about them, not about you. It is here because it is the difference between a file and a decision.

Against headless cms

You are 4 of 7 in a category where a developer is trying to let non-engineers edit content the product renders.

  1. 1
    storyblok.com
    12/15
  2. 2
    sanity.io
    11/15
  3. 3
    hygraph.com
    10/15
  4. 4
    strapi.ioyou
    7/14
  5. 5
    contentful.com
    3/6
  6. 6
    directus.com
    7/16
  7. 7
    payloadcms.com
    6/14

Where competitors pass and strapi.io does not

  • OAuth dynamic client registrationcontentful.com · sanity.io · storyblok.com · hygraph.com
  • MCP surfacecontentful.com · sanity.io · storyblok.com · hygraph.com
  • Programmatic key provisioningstoryblok.com

Only domains we have actually scanned appear here, so the ranking is a floor: a competitor missing from the list has not been measured, not beaten.

By stage

A
DiscoveryCan an agent find and read you?
5/5
B
Agent entryIs there a door built for a machine?
0/4
C
RegistrationCan an agent get an account?
0/1
D
ProvisioningCan it get credentials without a human?
0/2
E
IntegrationCan it ship working code?
2/2

Every check

Each line is one HTTP observation with a published rule, so you can rerun any of them yourself. Most are the same tomorrow if you are: the two that are not are the bot gate and the pricing page, which answer inconsistently on their own, which is why those run more than once and say so when the tries disagreed. PASS and PART are counted. UNMEASURED means we could not evaluate it, N/A means it does not apply to a product like yours, and neither is in the score or its denominator. See the formula

A · Discovery

  • PASS
    Answers an agent user-agentAnswered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/methodology)
  • PASS
    llms.txt publishedllms.txt and llms-full.txt present at https://docs.strapi.io/llms.txt and https://docs.strapi.io/llms-full.txt, and the 12 links we sampled across both files all answer
  • PASS
    Docs readable without JavaScript7,244 characters of text without JS, on https://docs.strapi.io/cms/features/admin-tokens rather than on https://docs.strapi.io/
  • PASS
    On-demand agents not blockedNo on-demand agent is blocked
  • N/A
    Paths robots.txt points at answerrobots.txt names no concrete path, only patterns or nothing, so there is no claim to check
  • PASS
    No punishing crawl delayNo Crawl-delay applies to the agents we check

B · Agent entry

  • FAIL
    Agent entry pointNone of the 9 known agent entry paths returns a file rather than your page shellA markdown file written for a machine turns a guessing game into a procedure it can follow.
  • FAIL
    OAuth dynamic client registrationNo OAuth metadata on any of the 9 hosts probed, including the usual auth and api subdomainsRFC 7591 is the only standard path by which an agent can register itself without a human.
  • FAIL
    MCP surfaceMCP mentioned 15x in your own files, but nothing answered at mcp.strapi.io, mcp.strapi.io/mcp, mcp.strapi.io/v1/mcp, api.strapi.io/mcp, /mcp or /api/mcpAn MCP server turns your API from something an agent reads about into something it can call.

C · Registration

  • UNMEASURED
    No CAPTCHA in the signup HTMLUnmeasurable: the signup form at https://cloud.strapi.io/signup is not in the server HTML, so its gates are not eitherServer-render the form, or tell us the endpoint it posts to, and the gates become visible to us and to an agent.
  • FAIL
    Signup reachable without a browserhttps://cloud.strapi.io/signup is reachable, but its form needs JavaScriptIf a bare HTTP request gets a 403, the agent never sees the form at all.

D · Provisioning

  • FAIL
    Programmatic key provisioningNone of the 7 provisioning phrases appears in the 6 documents we readDocumented key creation is the difference between a two-minute integration and a support ticket.
  • UNMEASURED
    Free tier or no-card trial stated in textUnmeasurable: https://strapi.io/pricing is larger than we read, so anything we did not find in it is a fact about our cap and not about your tiersNothing for you to do. A smaller pricing page, or one that states its tiers early, makes this measurable.

E · Integration

  • PASS
    Typed SDK on the registry@strapi/strapi@5.52.0 ships types, matched from the registry by who publishes it rather than by a link on your site
  • PASS
    Machine-readable API descriptionDocs serve markdown to machines, at https://docs.strapi.io/cms/features/api-tokens.md

What we discovered on the way

Docs
https://docs.strapi.io/ · linked from the site
Pricing
https://strapi.io/pricing · guessed path
Signup
https://cloud.strapi.io/signup · found on a subdomain
npm package
@strapi/strapi (registry guess)
GitHub
strapi/strapi
Package licence
SEE LICENSE IN LICENSE
Crawl-delay
none
Content-Signal
none
Blocked on-demand agents
none

Your package declares SEE LICENSE IN LICENSE rather than a plain licence identifier. We do not score this, because a commercial licence is a business model, not a defect. We report it because in six agent runs on a comparable decision, every model that hit a licence key requirement dropped that vendor in one line, without opening the product. What the runs showed