I ran npx is-agentic promptway.com
and the report came back 74 out of 100.
Essential was 59 of 80. Recommended 12.6 of 20. A 2.4-point bonus. The label was "Ready with a few material gaps."
Earlier this week I did the same work on my personal site and wrote it up there (I fixed my site for agents by hand. Then Vercel shipped a scoreboard). Promptway is the publication I want agents to cite, so I pointed the grader at this host next.
We already shipped the eight-layer stack I described in Optimizing Your Site for AI Agents and LLMs: robots allowlist, sitemap, llms.txt, llms-full.txt, JSON-LD, feeds, article markdown siblings. The scoreboard still found holes. Most of them were ordinary web hygiene. A couple were "developer resources" checks that assume you are a SaaS. I fixed the first group and refused to fake the second.
is-agentic.com wraps Ora's agent-readiness research. Essential checks share 80 points, recommended share 20, and a small bonus can add up to 5. Checks that do not apply get excluded. The methodology page is worth reading before you argue with a number. Reports cache for six hours, so a re-scan right after a deploy can lie to you.
The CLI is the useful interface:
npx is-agentic promptway.com
npx is-agentic promptway.com --json
It returns a stored report if one exists, or starts a scan and waits. --json
is the shape an agent wants.
The failures that mattered on this site, in the order the report ranked them:
Accept: text/markdown
returned text/html
. Vary
had the Next.js RSC list and no Accept
. Failed.contactPoint
and address
were not.There was also an MCP check. The site mentions MCP because we write about other people's servers. We do not run one. I did not publish a fake manifest to chase the points.
The 404 now returns a real 404 with a recovery list: llms.txt, Promptway developer resources, sitemap, archive, about, contact. Send Accept: text/markdown
and the same miss is a short markdown body instead of HTML. Verify with:
curl -s -o /dev/null -w "%{http_code}" https://promptway.com/some-path-that-does-not-exist
curl -sI -H "Accept: text/markdown" https://promptway.com/some-path-that-does-not-exist
The first must print 404. The second must print content-type: text/markdown
and a vary
that includes Accept
.
Markdown negotiation follows acceptmarkdown.com. proxy.ts
(Next.js 16's name for middleware) parses Accept
, skips RSC requests, and rewrites markdown-preferring GETs to a catch-all that already knew how to render articles, bots, about, and the new pages. Vary: Accept
is set on that response. HTML still comes back for a browser Accept
. A client that rejects both HTML and markdown gets 406.
I did not invent a public product API. Promptway is a magazine. The developer surface is the content stack plus Prompt Inspector, which is a same-origin tool. That now lives at /for-agents under the title "Promptway developer resources," with OpenAPI at /openapi.json
and an RFC 9727 catalog at /.well-known/api-catalog
. llms.txt links all three.
llms.txt also gained a "When to use Promptway" section. The jobs we are right for are AEO guidance from this live Next.js site, a prompt structure with a copy-paste example, a founder interview with a number, a tool writeup that names the skip list, and a sourced news filter. We are the wrong fetch if you need a model API, an MCP server, OAuth, webhooks, or unlabeled AI copy.
/contact and /privacy are real pages, each well over 500 characters. The inbox is agnel@promptway.com
. The address in JSON-LD is San Juan, PR. Organization schema now has url
, sameAs
, logo
, email
, address
, and contactPoint
.
The homepage grew a "How to read this site" band with an H2 and two H3s that are not inside links, plus enough server-rendered prose that a no-JS crawler sees a nested outline and more than a dek.
I did not stand up an MCP server. The recommended check is fair for a product with tools. For a publication it would be a toy endpoint whose only job is the score. If we ever ship one, it will have a job besides the grader.
I did not strip the magazine layout to win content-efficiency on markup ratio. The cards, the footer, the fonts, and the JSON-LD are the site. I added copy instead of deleting chrome. Locally that moved the homepage text ratio from 4.83 percent to about 5. If the production crawler still calls it partial, I will live with it.
I did not 406 ordinary browsers. Chrome sends text/html,application/xhtml+xml,...
and still gets HTML.
Copy this, put your domain in, and run it in whatever coding agent you use. It is the is-agentic fix-it prompt, rewritten for a site that might be a publication rather than a SaaS.
Use npx is-agentic to audit this site and fix any issues that arise. Inspect the existing codebase before changing files. Follow each published protocol exactly. Preserve visual design and product behavior. Add or update tests for every behavior you change. Verify every public endpoint after implementation.
Site: YOUR_DOMAIN_HERE
1. Run the audit
- `npx is-agentic YOUR_DOMAIN_HERE`
- `npx is-agentic YOUR_DOMAIN_HERE --json` if you want structured errors
- Read https://is-agentic.com/methodology so you know essential (80) vs recommended (20) vs bonus
- Fix essential failures first. Recommended next. Do not invent product surface to chase recommended or bonus points
2. Agent-friendly 404s
- Nonexistent paths must return HTTP 404 or 410, never 200 with an app shell
- The 404 body should tell an agent where to go next: sitemap, llms.txt, docs index, contact
- If the client sends Accept: text/markdown, the 404 body should be markdown
- Verify: `curl -s -o /dev/null -w "%{http_code}" https://YOUR_DOMAIN_HERE/some-path-that-does-not-exist`
3. Content without JavaScript
- Server-render the homepage
- One H1, nested H2/H3 that are not trapped inside links, 500+ characters of text in raw HTML
4. Markdown content negotiation (acceptmarkdown.com)
- The same URL that serves HTML must serve text/markdown when Accept prefers it
- Content-Type: text/markdown; charset=utf-8
- Vary must include Accept (Vary: Accept, Accept-Encoding is fine)
- Do not break Next.js RSC (skip negotiation when the RSC or Next-Router-State-Tree headers are present)
- Optional: .md siblings and Link: rel="alternate"; type="text/markdown"
- Verify: `curl -sI -H "Accept: text/markdown" https://YOUR_DOMAIN_HERE/`
5. Agent instructions / when to use
- Add a "When to use this" section to /llms.txt
- Name the jobs you are right for, the jobs you are not, and how an agent should call you
- Generic marketing copy does not count
6. Developer resources, only if they are real
- If you have an API, OpenAPI, MCP, auth docs, or webhooks, publish them at predictable URLs, list them in llms.txt, and put the product name in the page title and H1
- If you are a publication or a brochure site, document the machine-readable content stack (llms.txt, markdown, feeds) under a page titled "<Product> developer resources"
- Do not stub an MCP server, OAuth provider, or webhook hub you do not run
7. Trust pages
- Real /about, /contact, and /privacy, each with at least 500 characters
- A real inbox and a real location beat a contact form that posts to nowhere
8. JSON-LD
- Organization (or Person, or SoftwareApplication) with name, description, url, plus the type-appropriate fields: sameAs, logo, address, contactPoint
- Escape "<" in JSON-LD you dump into a script tag
9. Content efficiency
- Readable text at least 5 percent of homepage HTML
- Prefer adding real copy under real headings over deleting the design system
10. Verify, then stop
- curl the 404, the markdown Accept, /llms.txt, /sitemap.xml, /contact, /privacy, and any OpenAPI or catalog file you added
- Add tests for Accept parsing, 404 markdown, and trust-page length
- Finish with a change summary, verification results, and a list of remaining items that need a product decision (MCP, OAuth, write APIs)
- Do not claim a new is-agentic score until a scan against the deployed host completes. Reports cache for about six hours
curl
before you edit. Soft 404s, missing Vary
, and "we already have llms.txt" are easy to misread from source alone.The grader is applicability-aware. A portfolio and a public API are not scored as the same object. That is the part of is-agentic I trust. The failure mode is treating every recommended row as a feature request.
I still want the production number to move. This piece is the receipts from the session, not a screenshot of a 100. Run the CLI on your host, hand the prompt to your agent, and keep the refusals in.