{"id":349683,"date":"2026-09-07T18:37:18","date_gmt":"2026-09-07T18:37:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/studiomeyer-agent-readiness\/"},"modified":"2026-09-07T18:36:50","modified_gmt":"2026-09-07T18:36:50","slug":"studiomeyer-agent-readiness","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/studiomeyer-agent-readiness\/","author":23462427,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.6","requires_php":"8.0","requires_plugins":null,"header_name":"StudioMeyer Agent Readiness","header_author":"StudioMeyer","header_description":"Check how ready your site is for AI agents, and publish the machine-readable files it is missing. Runs on your own server: no account, no API key, no third-party service.","assets_banners_color":"1b1510","last_updated":"2026-09-07 18:36:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/studiomeyer.io\/en\/wordpress-plugins","header_author_uri":"https:\/\/studiomeyer.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"studiomeyerio","date":"2026-09-07 18:36:50","revision":3685401}},"upgrade_notice":{"1.0.1":"<p>Tighter request handling, redirects kept on your own host, and a sitemap link that works without pretty permalinks.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3685401,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3685401,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3685401,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3685401,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3685401,"resolution":"1","location":"assets","locale":"","width":1240,"height":1500},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3685401,"resolution":"2","location":"assets","locale":"","width":1240,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3685401,"resolution":"3","location":"assets","locale":"","width":1240,"height":654},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3685401,"resolution":"4","location":"assets","locale":"","width":1240,"height":396}},"screenshots":{"1":"The report \u2014 every signal with an honest verdict, grouped by category","2":"What to publish \u2014 four switches, all off until you choose","3":"A page served as Markdown with front matter","4":"The Agent Skills document generated for the site"}},"plugin_section":[],"plugin_tags":[15643,1556,12928,6645,4608],"plugin_category":[],"plugin_contributors":[257623],"plugin_business_model":[],"class_list":["post-349683","plugin","type-plugin","status-publish","hentry","plugin_tags-agents","plugin_tags-api","plugin_tags-crawlers","plugin_tags-discovery","plugin_tags-markdown","plugin_contributors-studiomeyerio","plugin_committers-studiomeyerio"],"banners":{"banner":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/banner-772x250.png?rev=3685401","banner_2x":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/banner-1544x500.png?rev=3685401","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/icon-128x128.png?rev=3685401","icon_2x":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/icon-256x256.png?rev=3685401","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/screenshot-1.png?rev=3685401","caption":"The report \u2014 every signal with an honest verdict, grouped by category"},{"src":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/screenshot-2.png?rev=3685401","caption":"What to publish \u2014 four switches, all off until you choose"},{"src":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/screenshot-3.png?rev=3685401","caption":"A page served as Markdown with front matter"},{"src":"https:\/\/ps.w.org\/studiomeyer-agent-readiness\/assets\/screenshot-4.png?rev=3685401","caption":"The Agent Skills document generated for the site"}],"raw_content":"<!--section=description-->\n<p><strong>Auf Deutsch:<\/strong> StudioMeyer Agent Readiness pr\u00fcft, was KI-Agenten von Ihrer Website tats\u00e4chlich bekommen \u2014 und ver\u00f6ffentlicht die maschinenlesbaren Dateien, die noch fehlen. Der Bericht fragt Ihre eigene Seite \u00fcber HTTP ab, so wie ein Agent es t\u00e4te, statt nur die eigenen Einstellungen abzulesen. Damit sehen Sie auch, wenn ein Cache oder eine Server-Einstellung etwas anderes ausliefert, als das Plugin glaubt. Vier Dinge kann das Plugin selbst ver\u00f6ffentlichen: Ihre Inhalte als Markdown (auf <code>Accept: text\/markdown<\/code> oder mit angeh\u00e4ngtem <code>.md<\/code>), ein Agent-Skills-Dokument, einen API-Katalog nach RFC 9727 und HTTP-Link-Header nach RFC 8288. Alles l\u00e4uft lokal auf Ihrem Server \u2014 kein Konto, keine API-Schl\u00fcssel, kein Fremddienst. Standardm\u00e4\u00dfig ist alles ausgeschaltet; Sie entscheiden, was ver\u00f6ffentlicht wird. Nur bereits \u00f6ffentliche Inhalte werden ausgeliefert \u2014 Entw\u00fcrfe und private Seiten nie, und eine passwortgesch\u00fctzte Seite verlangt ihr Passwort genau wie im Browser.<\/p>\n\n<p><strong>AI agents read websites differently than people do. This plugin tells you how yours looks to them, and fixes the part a plugin can fix.<\/strong><\/p>\n\n<p>This is an independent plugin by StudioMeyer. It is not affiliated with, endorsed by or connected to any company that publishes an agent-readiness checker or scoring service.<\/p>\n\n<h4>The report<\/h4>\n\n<p>One button runs the checks. Each one asks your own site over HTTP \u2014 the same loopback technique WordPress Site Health uses \u2014 because what matters is what a client actually receives. A check that only read the plugin's own settings would show green on a site where a cache, a static file or a server rule serves something else entirely.<\/p>\n\n<p>For every signal you get one of three honest answers:<\/p>\n\n<ul>\n<li><strong>In place<\/strong> \u2014 a client asking for it receives it<\/li>\n<li><strong>Missing<\/strong> \u2014 it is not there, and you are told who can provide it<\/li>\n<li><strong>Not measurable<\/strong> \u2014 it cannot be determined from your server, and it is left out of the count rather than quietly scored as a failure<\/li>\n<\/ul>\n\n<p>Signals covered include robots.txt and its rules for AI crawlers, XML sitemap, HTTP Link headers, Markdown availability, llms.txt, JSON-LD structured data, Content Signals, Agent Skills, the API catalog, MCP and OAuth discovery, and the WooCommerce commerce manifest. Where something belongs to your server, your CDN, your DNS or the browser, the plugin says so plainly instead of pretending a plugin could fix it.<\/p>\n\n<h4>What this plugin publishes<\/h4>\n\n<p>Four surfaces, each off until you switch it on:<\/p>\n\n<p><strong>1. Markdown<\/strong><\/p>\n\n<p>Every published page becomes available as Markdown. Request its normal URL with <code>Accept: text\/markdown<\/code>, or append <code>.md<\/code> to the permalink. Agents get your text without navigation, styling or scripts, and without having to guess which part of the page is the content. You choose which post types take part.<\/p>\n\n<p><strong>2. Agent Skills<\/strong><\/p>\n\n<p>A short instruction sheet at <code>\/.well-known\/agent-skills\/index.json<\/code> telling an agent how to work with this specific site: how to search it, which structured endpoints exist, where the Markdown lives, and the ground rules. You can write the one-line summary yourself or use the generated one.<\/p>\n\n<p><strong>3. API catalog<\/strong><\/p>\n\n<pre><code>\/.well-known\/api-catalog in the standard format defined by RFC 9727, listing your REST API, sitemap, feed and skills index in one predictable place \u2014 so a client does not need to know WordPress conventions to find them.\n<\/code><\/pre>\n\n<p><strong>4. Link headers<\/strong><\/p>\n\n<p>An RFC 8288 <code>Link<\/code> header pointing at your sitemap, feed, API catalog and, on a single post or page, its Markdown twin. Existing Link headers from WordPress or other plugins are preserved, never replaced.<\/p>\n\n<h4>What it deliberately does not do<\/h4>\n\n<p>Being useful here means not overlapping with what you already run:<\/p>\n\n<ul>\n<li><strong>No llms.txt.<\/strong> Several SEO plugins now generate one. Two plugins writing the same file helps nobody \u2014 this one reports whether yours is there.<\/li>\n<li><strong>No robots.txt writing.<\/strong> Your SEO or crawler plugin owns that file. This one reads it and tells you what it says.<\/li>\n<li><strong>No MCP server card.<\/strong> Its location is still being settled in the Model Context Protocol specification, and a card with no MCP server behind it would be a green tick over nothing.<\/li>\n<\/ul>\n\n<h4>Private by design<\/h4>\n\n<ul>\n<li>Everything runs locally in PHP on your server<\/li>\n<li>No cloud service, no account, no API keys, no third-party service<\/li>\n<li>The checks talk to your own site, and follow a redirect only while it stays there<\/li>\n<li>No personal data is collected or transmitted<\/li>\n<li>Only published, publicly viewable content is ever served \u2014 drafts, private and scheduled content stay invisible, and password-protected posts behave exactly as they do in HTML: nothing without the password, the content once it has been entered<\/li>\n<li>All plugin data is removed on uninstall<\/li>\n<\/ul>\n\n<h4>Who is this for?<\/h4>\n\n<ul>\n<li>Site owners who want to know how their site looks to AI agents, in plain language<\/li>\n<li>Publishers who would rather hand agents clean Markdown than have them scrape rendered HTML<\/li>\n<li>Agencies preparing client sites \u2014 one local, no-SaaS tool across every site<\/li>\n<\/ul>\n\n<h4>More free plugins by StudioMeyer<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/ai-ready-wp\/\">AI-Ready WP<\/a> \u2014 agents.json, llms.txt, JSON-LD and SEO in one<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/smartbot-ai-chatbot\/\">SmartBot \u2014 AI Chatbot<\/a> \u2014 an AI chat widget with a permanently free plan<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/studiomeyer-agent-discovery-for-woocommerce\/\">Agent Discovery for WooCommerce<\/a> \u2014 make your store discoverable by AI shopping agents<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/studiomeyer-barrierefrei-check\/\">Barrierefrei-Check<\/a> \u2014 accessibility scanner and statement generator<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/studiomeyer-ai-transparency-toolkit\/\">Transparency Toolkit for the EU AI Act<\/a> \u2014 Article 50 disclosure and AI content labels<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin contacts no third party service of its own. There is no API, no\nanalytics, no telemetry, no update server, no font or asset CDN. Nothing about\nyour site, its content or its visitors is sent to StudioMeyer, and the plugin\nhas no other address to send anything to. It needs no account and no API key.<\/p>\n\n<p>The readiness check does make HTTP requests, and it addresses every one of them\nto your own site at its own home URL, the way a visitor's browser would. That is\nwhat makes the result worth having: the plugin reads what your server actually\nreturns rather than what its own settings claim.<\/p>\n\n<p>Redirects are followed only while they stay on your own site, up to three of\nthem. Your own site means the same host, the <code>www.<\/code> variant of it, or a\nsubdomain such as <code>de.example.com<\/code>, because a home page sending visitors to one\nof those is doing something ordinary. A redirect leading anywhere else is\nreported as a finding instead of followed.<\/p>\n\n<p>Being honest about the limit of that: the check asks WordPress not to follow\nredirects and inspects each one itself, but any plugin on your site may change\nthat request, and WordPress then follows inside its own HTTP library, where\nnothing is visible to a plugin. So there is a second check that does not depend\non the first. The address an answer actually arrived from is read back out of\nthe response, and an answer from anywhere else is discarded instead of being\nused as a reading of your site.<\/p>\n\n<p>If the loopback fails outright, which happens behind some reverse proxies and\ninside containers, the plugin retries against 127.0.0.1 carrying your own host\nname in the Host header, so your web server still answers as the right site.\nThat retry is this plugin's own arrangement.<\/p>\n\n<p>One external URL does appear in the plugin source and in the documents it\npublishes: <code>https:\/\/schemas.agentskills.io\/discovery\/0.2.0\/schema.json<\/code>. It is a\nschema identifier, written into the published <code>agent-skills<\/code> index as a <code>$schema<\/code>\nvalue so that a consuming agent knows which format the document follows. The\nplugin never requests it, and nothing is sent to that host. It is a name, in the\nsame way a namespace URI in an XML document is a name rather than an address the\nparser fetches.<\/p>\n\n<!--section=installation-->\n<h4>Quick start<\/h4>\n\n<ol>\n<li>Install and activate. You land on the report.<\/li>\n<li>Press <strong>Check this site<\/strong>. The plugin asks your own site what it serves and lists the result.<\/li>\n<li>Open <strong>What to publish<\/strong> and switch on what you want. Save.<\/li>\n<li>Press <strong>Check again<\/strong> to confirm the new files are really being delivered.<\/li>\n<\/ol>\n\n<p>Nothing is published until you switch it on.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20send%20my%20site%20to%20an%20external%20service%3F\"><h3>Does this send my site to an external service?<\/h3><\/dt>\n<dd><p>No. Every check is a request from your server to your own site, and a redirect is followed only while it stays there. Nothing is sent to StudioMeyer, and the plugin has no other address to send anything to. If you want an independent second opinion, public checkers exist and you can visit one yourself \u2014 the plugin does not contact any of them for you.<\/p><\/dd>\n<dt id=\"is%20this%20affiliated%20with%20a%20particular%20agent-readiness%20score%3F\"><h3>Is this affiliated with a particular agent-readiness score?<\/h3><\/dt>\n<dd><p>No. It is an independent plugin by StudioMeyer. It measures publicly documented signals \u2014 robots.txt rules, sitemaps, RFC 8288 Link headers, RFC 9727 API catalogs, Markdown content negotiation and others \u2014 and does not reproduce any specific vendor's scoring formula.<\/p><\/dd>\n<dt id=\"will%20the%20markdown%20version%20hurt%20my%20seo%3F\"><h3>Will the Markdown version hurt my SEO?<\/h3><\/dt>\n<dd><p>Markdown responses are sent with <code>X-Robots-Tag: noindex<\/code> and a <code>Link: rel=\"canonical\"<\/code> header pointing back at the normal page, so search engines keep indexing the HTML version.<\/p><\/dd>\n<dt id=\"why%20does%20my%20count%20not%20include%20every%20signal%3F\"><h3>Why does my count not include every signal?<\/h3><\/dt>\n<dd><p>Some things cannot be seen from your server: DNS records, bot signature verification at your CDN, and browser JavaScript APIs. Counting those as failures would blame you for something no plugin can change, so they are reported separately and left out of the ratio.<\/p><\/dd>\n<dt id=\"i%20switched%20something%20on%20but%20the%20check%20still%20says%20missing.\"><h3>I switched something on but the check still says missing.<\/h3><\/dt>\n<dd><p>A caching layer or a real static file at the same path can intercept the response before WordPress sees it. Clear your cache and check again. If a <code>.well-known<\/code> file exists on disk, your web server will serve that instead of WordPress.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20seo%20plugin%3F\"><h3>Does it work with my SEO plugin?<\/h3><\/dt>\n<dd><p>Yes. It writes no robots.txt, no sitemap and no llms.txt, so there is nothing for the two to fight over. Its Link header is appended to existing ones rather than replacing them.<\/p><\/dd>\n<dt id=\"which%20content%20is%20exposed%20as%20markdown%3F\"><h3>Which content is exposed as Markdown?<\/h3><\/dt>\n<dd><p>Only published, publicly viewable posts of the types you tick. Drafts, private posts and scheduled posts are never served. A password-protected post behaves exactly as it does in HTML: nothing is served without the password, and the content is served once the password has been entered.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>The guard that keeps the machine-readable surfaces on their own URLs now reads the path WordPress actually routed on, instead of parsing the request itself.<\/li>\n<li>A loopback check follows a redirect only while it stays on your own site, subdomains included. One leading anywhere else is reported as a finding instead of followed, and an answer that turns out to have arrived from another address is discarded rather than reported as a reading of your site.<\/li>\n<li>Name that case in the report instead of describing a redirect loop that is not there.<\/li>\n<li>Ask the sitemap server for the index URL instead of assembling a fixed filename, so a site without pretty permalinks gets a link that works.<\/li>\n<li>Send <code>X-Content-Type-Options: nosniff<\/code> with the skills and API catalog documents.<\/li>\n<li>Give REQUEST_URI and PATH_INFO back exactly as they were after a <code>.md<\/code> request, so anything reading them later sees the real request.<\/li>\n<li>Say plainly in the readme what the readiness check contacts.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Report card measured over HTTP against your own site, with separate handling for signals that cannot be measured from a server.<\/li>\n<li>Markdown for published content via <code>Accept: text\/markdown<\/code> and <code>.md<\/code> permalinks, with <code>Vary: Accept<\/code>, <code>noindex<\/code> and a canonical link header.<\/li>\n<li>Agent Skills discovery document and index.<\/li>\n<li>API catalog in RFC 9727 linkset format.<\/li>\n<li>RFC 8288 Link headers, appended to existing ones.<\/li>\n<\/ul>","raw_excerpt":"Check what AI agents really get from your site, then publish the machine-readable files it is missing. Local only, no account, no cloud.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349683"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/studiomeyerio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349683"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349683"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349683"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349683"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349683"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}