I audited rpsg.co.id against my own agent-ready framework
I ran my own site through last week's framework. Five legibility surfaces shipped, five action surfaces deliberately skipped. Here is the table and the reasoning.
Last week I published a framework for the agent-ready web. I argued that almost every site is missing the surfaces that would let an AI agent read, navigate, and transact with them, and that the legibility layer is the cheap, low-risk win most operators are leaving on the table.
The honest move is to run my own site through that framework. So I did. This post is the table, surface by surface, with the reasoning for every call.
If you are looking for a content-site checklist to copy, this is closer than the breathless lists you will find elsewhere, because it is grounded in what the framework actually says rather than a desire to mark every box green.
The legibility layer, all shipped
These are the surfaces that help an agent understand a site without parsing HTML. Last week's post called them cheap and almost universally missing. rpsg.co.id ships all of them.
| Surface | Status | What it does here |
|---|---|---|
| /sitemap-index.xml | Shipped | Auto-generated by Astro on every build. Every URL the site emits, with a lastmod for each. |
| /llms.txt | Shipped | Curated Markdown index of the three offerings, every blog post with a description, plus pointers to the sitemap and RSS. Open it at the URL below and read it like a human would. |
| /rss.xml | Shipped | The blog feed. Good for both human subscribers and any crawler that prefers feeds to sitemaps. |
| robots.txt | Shipped | Explicitly allows GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, Applebot, CCBot. Anything else is on the standard wildcard. |
| Schema.org graph | Shipped | Person, Organization, ProfessionalService (LocalBusiness), Article on every post, Review on testimonials, BreadcrumbList on every internal page, FAQPage where the page has FAQs. The Person node carries occupation, address, employer, and sameAs to LinkedIn, X, Instagram, YouTube, Medium, Crunchbase, and the DailySEO ID author profile. |
| OpenAPI | Not applicable | rpsg.co.id has no public API. The contact form posts to a private cloud function with one consumer. There is no contract worth publishing. |
If you want to inspect any of this yourself, the live files are at:
https://rpsg.co.id/llms.txt
https://rpsg.co.id/sitemap-index.xml
https://rpsg.co.id/rss.xml
https://rpsg.co.id/robots.txtThe schema graph emits as JSON-LD in every page's head. Open view-source on any URL and search for the script with type `application/ld+json`. There are three to four blocks per page depending on the route.
The action layer, deliberately skipped
These are the surfaces that let an agent do things on a site. Last week's post argued that for the average content website, most of these do not fit, and shipping them anyway is theater. rpsg.co.id is a content site, a consulting brochure plus a blog with a calendar link for booking. I skipped every action surface. Here is the reasoning per row.
| Surface | Status | Why skipped |
|---|---|---|
| /.well-known/api-catalog | Skipped | RFC 9727 says publish this if you run a public API. I do not. Shipping a catalog that points at one private cloud function with no public contract would be signal without a referent. |
| /.well-known/agent-card.json | Skipped | A2A is for agent-to-agent negotiation. A brochure site that takes meeting requests through a calendar link does not need a programmatic agent on the other end. The card would describe nothing real. |
| /.well-known/mcp/server-card.json | Skipped | MCP server cards describe tools a remote agent can call. I have no tools to expose at the website level. The auto-post writer that runs this blog is a local Claude Code agent, not a public MCP server. |
| WebMCP | Not yet | W3C community draft. Off by default in Chrome. No mainstream agent calls it on real sites. Adopting it now would not be measured anywhere. |
| x402 | Not applicable | No paid resources to gate. The booking call is free. |
This is the part most "agent-ready" listicles will not tell you. Not implementing these surfaces is the right call for the median site. Implementing them without a real consumer is performance, not engineering, and it muddies the framework for the operators who do need to make the call later.
The two honest gaps
Two open items I should mention, because closing them would not be theater.
The first is a machine-readable identity card at a single well-known location that summarises the entity in JSON, not Markdown. The schema graph carries the entity facts and llms.txt carries the curated index, but neither is a one-shot "who is this site, in one document" surface that an agent could fetch first. If an honest convention emerges for this, I would ship it. Today there is no settled name for it, so building one ahead of consensus would just add a new fragment to an already fragmented field.
The second is sitemap freshness. The sitemap regenerates at build time, which for a weekly publish cadence is fine. If the cadence picks up or the site starts churning more URLs per week, last-modified-driven sitemap segments would let AI crawlers skip the URLs that have not changed. Worth knowing it is open.
Neither of these is on fire. I am calling them out because pretending the audit is closed when it is not would be the same theater I argued against last week.
What this audit actually demonstrates
The framework is not a checklist where every row gets a tick. It is a decision tree. The legibility layer should be full for almost every site. The action layer should be empty for most sites, full only when there is a real consumer on the other end. rpsg.co.id matches that pattern row by row. Those calls are the same calls I would walk an SME client through.
If you want a second pair of eyes on which surfaces your own site should and should not implement, that decision is exactly what the consultancy offering covers.
The point of writing this is not that rpsg.co.id is the most agent-ready website in 2026. The point is that I can show, surface by surface, why my choices match the framework I am asking you to consider. If you disagree with any of these calls, the receipts are in the tables above.