=== AI-Ready WP === Contributors: studiomeyerio Donate link: https://studiomeyer.io Tags: ai, seo, chatgpt, llms-txt, schema Requires at least: 6.9 Tested up to: 7.1 Requires PHP: 8.0 Stable tag: 4.5.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Make your WordPress site discoverable by AI agents: agents.json, agent-card.json, llms.txt, JSON-LD schemas, and a full SEO module. == Description == **Auf Deutsch:** AI-Ready WP macht Ihre WordPress-Website für KI-Agenten und KI-Suchmaschinen auffindbar. Das Plugin erzeugt automatisch die Dateien und Metadaten, nach denen ChatGPT, Claude, Perplexity und andere KI-Systeme suchen: agents.json, agent-card.json, llms.txt, JSON-LD-Schemas, ein vollständiges SEO-Modul, IndexNow und ein KI-Bot-Management für über 20 Crawler. So spricht Ihre Seite die Sprache der KI — ohne Cloud-Zwang, alles läuft auf Ihrem eigenen Server. Die Bedienoberfläche gibt es auf Englisch, Deutsch und Spanisch. **AI-Ready WP** makes your WordPress site discoverable by AI agents and search engines. It generates the files and metadata that AI systems look for when trying to understand what your site offers. As AI agents become the new way people find businesses online, your site needs to speak their language. AI-Ready WP handles this automatically. = What It Does = **AI Discovery** * **agents.json** — AI Agent Discovery standard (/.well-known/agents.json). Tells AI systems what your site offers and how to interact with it. * **agent-card.json** — A2A Protocol (Agent-to-Agent) for agent interoperability (/.well-known/agent-card.json). * **mcp.json** — Optional MCP server discovery manifest (/.well-known/mcp.json). Off by default; point AI clients to the MCP servers you list in the settings. * **llms.txt** — LLM-readable content index (/llms.txt + /llms-full.txt). Like a sitemap for AI. * **JSON-LD schemas** — Organization/LocalBusiness, WebSite with SearchAction, BreadcrumbList, FAQPage. * **REST API** — Endpoints for AI agents (/wp-json/airewp/v1/). * **AI Bot Management**: names all 27 known AI crawlers in robots.txt and allows each of them by default, with Content Signals (contentsignals.org) that say what they may do with your content. Blocking training or retrieval crawlers is one checkbox. * **AI Crawler Analytics** — Track which AI bots visit your site and how often. * **IndexNow** — Instant indexing notifications to Bing and Yandex on content changes. * **WP Abilities API** — Machine-readable abilities for the WordPress MCP Adapter (WP 6.9+). * **AI-Readiness Score**: dashboard widget with up to 12 readiness checks. * **16 industry presets** — Restaurant, real estate, e-commerce, SaaS, agency, medical, legal, and more. * **Auto-regeneration** — Files update automatically on content changes and daily via WP-Cron. **SEO** * Meta title and description per page/post (editor meta box). * OpenGraph tags (og:title, og:description, og:image, og:type). * Twitter Card tags (summary_large_image). * Canonical URL override per page. * Robots meta (noindex/nofollow) per page. * XML Sitemap generation (/sitemap.xml). * Focus keyword analysis with 6-point checklist (title, URL, meta, density, length, intro). = Who Is This For? = * **Business owners** who want their site found by ChatGPT, Claude, Perplexity, and other AI assistants. * **Agencies** building client sites that need to be future-proof for AI discovery. * **Developers** who want a lightweight, well-coded AI discovery solution. = How It Works = 1. Install and activate the plugin. 2. Go to Settings > AI-Ready. 3. Fill in your business information. 4. Enable the features you need. 5. Everything generates and updates automatically. Your site immediately becomes discoverable by AI agents through standardized protocols. = Connect your AI (MCP) = Let Claude, ChatGPT or any other MCP client work with this site through the hosted AI-Ready WP server at [wp.studiomeyer.io](https://wp.studiomeyer.io). Sign in there, create an application password in your WordPress profile, add the connector `https://wp.studiomeyer.io/mcp` to your AI client and ask it to connect the site. From then on your AI reads the readiness score, the pages and robots.txt and explains what to do. With AI-Ready WP Pro it may also write: settings, titles and descriptions per page, rebuilds, IndexNow pings. The five steps are on the settings page. On the plugin side this is an administrator-only REST API under `/wp-json/airewp/v1/admin/`. It answers only to a signed-in administrator, application passwords included, and it is there whether or not the public REST routes are switched on. The plugin itself never contacts wp.studiomeyer.io; the connection runs the other way, from the server you signed in to, to this site. = More free plugins by StudioMeyer = * [SmartBot](https://wordpress.org/plugins/smartbot-ai-chatbot/) — an AI chatbot that answers your visitors' questions 24/7. * [Agent Discovery for WooCommerce](https://wordpress.org/plugins/studiomeyer-agent-discovery-for-woocommerce/) — expose UCP, A2A, and agents.json endpoints so AI shopping agents can find your products. * [StudioMeyer Barrierefrei-Check](https://wordpress.org/plugins/studiomeyer-barrierefrei-check/) — find WCAG/BFSG accessibility problems and generate the required accessibility statement. * [Transparency Toolkit for the EU AI Act](https://wordpress.org/plugins/studiomeyer-ai-transparency-toolkit/) — add EU AI Act Article 50 transparency: chatbot disclosure, AI-content labels, and a DE/EN/ES notice generator. == Installation == = Quick start (about 2 minutes) = 1. In WordPress, go to **Plugins → Add New**, search for "AI-Ready WP", then click **Install Now** and **Activate**. 2. Open **Settings → AI-Ready** and fill in your business name, description, and contact details. 3. Choose your industry preset and save. That is it — agents.json, llms.txt, JSON-LD, and the SEO files generate automatically and keep themselves up to date. Check the **AI-Readiness Score** widget on your Dashboard to see what is live and what to improve. = Manual installation = 1. Download the plugin ZIP. 2. Go to **Plugins → Add New → Upload Plugin**, upload the ZIP, then click **Install Now** and **Activate**. = SEO settings (optional) = Edit any page or post and open the **SEO Settings** box below the editor to set a custom meta title, description, focus keyword, and canonical URL. OpenGraph and Twitter Cards are handled for you. == Frequently Asked Questions == = What is agents.json? = agents.json is an emerging standard for AI agent discovery. It tells AI systems what your website offers and how to interact with it — like a machine-readable menu of your site's capabilities. = What is llms.txt? = llms.txt is a structured text file that gives LLMs (Large Language Models) a concise overview of your website content — like a sitemap for AI. = What is the A2A Protocol? = A2A (Agent-to-Agent) is a protocol by Google (now under the Linux Foundation) for AI agent interoperability. The agent-card.json file lets agents discover and communicate with your site. = Does this replace Yoast SEO? = For most sites, yes. AI-Ready WP provides meta titles/descriptions, OpenGraph, Twitter Cards, canonical URLs, robots meta, XML Sitemaps, and focus keyword analysis. If you need advanced features like redirect managers or internal linking suggestions, keep a dedicated SEO plugin. AI-Ready WP notices it and stands down. = Does this work with existing SEO plugins? = Yes. When Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Squirrly, SmartCrawl or Slim SEO is active, AI-Ready WP leaves titles, descriptions, social tags, the sitemap and the Organization, WebSite and breadcrumb schemas to that plugin, so your pages do not end up with two of each. The FAQ schema stays, none of those plugins builds it from your headings. The settings page says which plugin it found, and a checkbox brings the output back if you want it. The AI Discovery features (agents.json, llms.txt, JSON-LD, robots.txt, IndexNow) are not affected. Other SEO plugins can be added with the `airewp_competing_seo_plugin` filter. = Does this work with WooCommerce? = Yes. If WooCommerce is active, the plugin automatically adds product catalog tools to agents.json, making your products discoverable by AI agents. = Why should I care about AI discovery? = AI assistants like ChatGPT, Claude, and Perplexity are increasingly used to find businesses and services. If your site isn't AI-discoverable, you're invisible to this growing channel. AI-Ready WP makes your site speak the language AI agents understand. = Can I let Claude or ChatGPT configure the plugin? = Yes. Connect your AI through the hosted MCP server at wp.studiomeyer.io; the settings page lists the five steps. Reading is free: score and checks, settings, pages with their SEO fields, robots.txt, crawler statistics and a diagnosis with fixes. Writing needs AI-Ready WP Pro on this site: settings, titles and descriptions per page, rebuilds and IndexNow pings, plus the SEO tools. Every change your AI makes goes through the same validation as the settings page, and it needs an administrator's application password, which you can revoke in your profile at any time. = Does this make external connections? = The only external connection is IndexNow (optional), which notifies search engines about content changes. All other features work entirely locally. See the Third-Party Services section below. = Which AI crawlers does the plugin allow? = All of them, by default. robots.txt names 27 AI crawlers (GPTBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, Applebot, Meta-ExternalAgent, Amazonbot, DuckAssistBot, the Mistral crawlers and more) and allows each one explicitly, with a Content-Signal line that says what they may do with your content. A crawler reads only the group that names it, so every group repeats your site's own Disallow rules; naming a bot never opens a directory you keep closed. A bot that another plugin or a hand-written rule already addresses is left alone. = Can I block AI crawlers instead? = Yes. The AI Bot Policy section has two checkboxes: one turns away the training crawlers (your content then stays out of future models), the other the retrieval crawlers (your site then no longer appears in AI answers; not recommended). The Content-Signal line follows your choice. = The status table says a document is built on the fly. Is that a problem? = No. The plugin writes `agents.json`, `agent-card.json`, `agent.json` and `mcp.json` into the `.well-known` directory of your site, and `llms.txt` and `llms-full.txt` into the site root, and when that works your web server hands them out without starting PHP. When it cannot write there, the same documents are built from your settings and content instead, the two text files from a cache that is refreshed whenever your content changes. Visitors and AI crawlers get exactly the same answer either way. The only difference is a little PHP per request, so it is worth fixing, but nothing is broken while you do. = Which file permissions does the plugin need? = The `.well-known` directory in the root of your site has to belong to the user your PHP runs as, usually `www-data`, `nginx`, `apache` or your hosting account name, with mode 755. The plugin writes files into it with mode 644. If the directory does not exist yet, the site root has to be writable so the plugin can create it. On servers with a Let's Encrypt certificate this directory very often belongs to `root`, because certbot created it before WordPress ever got there. That is the single most common reason for a write failure. The settings page names the directory, the owner and the PHP user, and gives you the exact `chown` command to hand your host. = My discovery URLs answer 404. What now? = That is a different problem from a failed write, and the settings page tells the two apart. A 404 means something in front of WordPress is answering the request. On nginx it is almost always a `location` block for `/.well-known/` left behind by the SSL setup, which serves that path straight from disk and never reaches PHP. Ask your host to restrict that block to `/.well-known/acme-challenge/`. The rest of `/.well-known/` then reaches WordPress again and the documents answer. == Screenshots == 1. Settings page with the AI-Readiness Score and business information fields. 2. SEO Settings meta box in the block editor — title, description, focus keyword, canonical URL, noindex/nofollow. 3. Dashboard widget with AI-Readiness Score checklist — 12 checks at a glance. 4. Feature toggles and AI bot policy — switch on the discovery features you need and choose which AI bots may crawl your content. == Third-Party Services == This plugin connects to the following external service: = IndexNow API = When IndexNow is enabled, the plugin notifies search engines about content changes for faster indexing: * **Service URLs:** * `https://api.indexnow.org/indexnow` * `https://www.bing.com/indexnow` * **Data sent:** Your site URL, the URLs of changed pages, and your IndexNow key * **When:** On content publish or update * **Purpose:** Faster search engine indexing by Bing, Yandex, and other participating search engines * **IndexNow:** [https://www.indexnow.org](https://www.indexnow.org) * **IndexNow Terms of Use:** [https://www.indexnow.org/terms](https://www.indexnow.org/terms) * **IndexNow Privacy:** [https://www.indexnow.org/privacy](https://www.indexnow.org/privacy) * **Bing IndexNow:** [https://www.bing.com/indexnow](https://www.bing.com/indexnow) * **Microsoft Privacy Statement:** [https://privacy.microsoft.com/en-us/privacystatement](https://privacy.microsoft.com/en-us/privacystatement) IndexNow is enabled by default but can be disabled in Settings > AI-Ready. The plugin itself makes no other external connection. = AI-Ready WP MCP server (optional) = The plugin makes no connection to wp.studiomeyer.io. If you connect your AI through that server (see "Connect your AI (MCP)"), the server calls this site's REST API over HTTPS with the application password you created there, and stores those credentials encrypted. Nothing leaves this site until you sign in there and connect it; removing the application password in your profile ends the access. * **Service URL:** `https://wp.studiomeyer.io` * **Data exchanged:** the plugin settings, the readiness score, the discovery documents, your pages' titles, descriptions and text, robots.txt and the crawler statistics; with Pro also the Pro module settings * **Terms:** [https://studiomeyer.io/en/terms](https://studiomeyer.io/en/terms) * **Privacy:** [https://studiomeyer.io/en/privacy](https://studiomeyer.io/en/privacy) == Changelog == = 4.5.0 = * New: Connect your AI. An administrator-only REST API under `/wp-json/airewp/v1/admin/` lets the hosted MCP server at wp.studiomeyer.io, or any other tool that signs in with an application password, read the readiness score and its checks, the settings, the discovery URLs and their measured state, the pages with their SEO fields, robots.txt and the crawler statistics; and change settings and per-page titles and descriptions, rebuild the files and ping IndexNow. Changed settings go through the same validation as the settings page. The routes exist whether or not the public REST routes are switched on; nothing here answers an anonymous request. * New: A "Connect your AI (MCP)" section on the settings page with the five steps to connect Claude, ChatGPT or another MCP client. * New: A diagnosis route that measures the discovery URLs and names the problems the plugin can see, each with its fix: an unwritable directory, a URL the web server keeps from WordPress, empty settings the score needs, blocked AI crawlers, a second SEO plugin printing the same tags, plain permalinks. = 4.4.4 = * Fixed: The Organization, WebSite and breadcrumb schemas now stand down next to Yoast SEO, Rank Math, The SEO Framework and the other SEO plugins, like the meta tags did since 4.4.3. Every one of those plugins publishes the same three, and a page that describes the same company twice is not twice the structured data. The FAQ schema stays; none of those plugins builds it from your headings. * Fixed: `llms.txt` and `llms-full.txt` answer without a file. Until now they were the two documents with no fallback: on a host that keeps the site root read-only, which is the rule on managed WordPress hosting, the URLs answered 404 while the plugin had the content the whole time. The documents are now built once, cached, and refreshed whenever your content changes, so the file is a shortcut and no longer a condition. * Changed: The readiness score and the status table ask whether `llms.txt` answers, the same question they ask of the JSON documents. The `llms.txt` pointer in robots.txt follows the feature toggle instead of the file. = 4.4.3 = * Changed: AI crawlers are allowed by default. Up to 4.4.2 a fresh install blocked thirteen training crawlers, GPTBot, ClaudeBot and Google-Extended among them, and most site owners never saw the checkbox. On a plugin whose job is to make a site visible to AI that was the wrong default. Existing sites are switched over once and get a notice that says so; the checkbox to block them again is where it always was. * New: robots.txt names every known AI crawler in its own group with an explicit Allow, the way a crawler actually reads the file (RFC 9309: a crawler follows the one group that names it). Every group repeats the rules of the `*` group, so naming a bot never opens a directory you keep closed. A crawler that another plugin already addresses is left alone. * New: Content Signals. Every group carries a `Content-Signal` line (contentsignals.org) that says what a crawler may do with your content: search, AI answers, training. It follows the two policy checkboxes and is also added to the `*` group when nothing has put one there. * New: Nine crawlers added, each checked against its maker's documentation: Applebot, anthropic-ai, Google-CloudVertexBot, DuckAssistBot, Meta-ExternalFetcher, Meta-WebIndexer, MistralAI-Index, MistralAI-Training and MistralAI-User. Two removed for the same reason: cohere-ai (Cohere states it runs no crawler) and FacebookBot (no longer in Meta's crawler list). Crawler analytics still recognise both. * Fixed: The SEO module stands down when Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Squirrly, SmartCrawl or Slim SEO is active. Until now it printed its own meta description, canonical, social tags and Sitemap line next to theirs, which on one user's site meant three meta descriptions in one head and the same Sitemap URL twice in robots.txt. The settings page names the plugin it found; a checkbox brings the output back. * Fixed: A static front page shared on social media was captioned with its post title, usually "Home", under `og:type` "article". The front page now carries the site name, the tagline, the home URL and `og:type` "website". A title or description typed into the SEO box still wins. * Fixed: `mcp.json` is no longer published with an empty server list. With the feature on and no server listed the URL answers 404, the status table says so, and the readiness score no longer hands out a point for an empty manifest. The MCP check only counts once the feature is on, so a site without MCP servers can reach the full score. * Fixed: robots.txt advertised `Sitemap: /sitemap.xml` even with the SEO module switched off, when nothing answered that URL. The line now appears only when this plugin serves the sitemap and nobody has advertised the URL already. * Fixed: The `# agents.json:` pointer in robots.txt depended on a written file. Since 4.4.0 the URL answers without one, so the pointer now follows the feature toggle. = 4.4.2 = * Fixed: Pages built with a page builder no longer publish their raw shortcodes. `wp_strip_all_tags()` removes HTML tags and nothing else, so on a site using WPBakery, Divi or anything else that stores its layout as shortcodes, `[vc_row us_bg_overlay_color="..."]` ended up in the meta description, in `og:description`, in `llms-full.txt`, in the FAQ schema and in the keyword analysis. The description is the expensive one: that string is what Google and every social preview show. Reported by a user running WPBakery, thank you. * Fixed: The same applies to the excerpt. WordPress builds an automatic excerpt with `strip_shortcodes()`, which does nothing at all when the page builder is not loaded, and for a post the excerpt is the only text that reaches `llms-full.txt`. * Changed: Headings no longer weld themselves onto the next paragraph in the generated text. Tags now become a space instead of being dropped, so "HeadingText" reads as "Heading Text". * Note on footnotes: markers like `[1]` are kept. A shortcode name has to start with a letter, which is what tells the two apart. = 4.4.1 = * Fixed: German and Spanish translations for the messages added in 4.4.0. The new warnings and the status table were still English on a translated site, which is the wrong moment to switch languages: they turn up exactly when something needs explaining. = 4.4.0 = * Fixed: `agents.json`, `agent-card.json`, `agent.json` and `mcp.json` are now served even when the plugin cannot write them to disk. They are built from your settings on the fly instead, so the URLs answer with the same JSON as before. Previously such a site answered 404 while the plugin held the content the whole time. The usual cause is a `.well-known` directory owned by root, which is what certbot leaves behind on a great many servers, and it left people with a site root the plugin could write and one subdirectory in it that it could not. * Fixed: The readiness score and the status table now ask whether the URL answers, instead of whether a file sits on disk. That was the wrong question in both directions: it failed sites that serve the documents perfectly well without a file, and it passed sites whose web server never hands `/.well-known/` to WordPress, where the file existed and the URL still answered 404. * New: When a write fails, the plugin says so. The settings page names the directory, tells you who owns it and which user PHP runs as, and gives you the `chown` command to pass on to your host. The plugin knew all of this before and told nobody. * New: A separate warning for URLs that do not answer, with the nginx `location` block that usually causes it. A failed write and an unreachable URL look identical from the outside and have nothing to do with each other. * New: A link on the settings page to measure the URLs again after you have changed something. * Fixed: A switched-off feature now answers its URL with a JSON 404. It used to hand the request back to WordPress, which redirected the `.json` URL and replied with an HTML page. * Fixed: `mcp.json` is removed on uninstall. It was the one generated file the cleanup missed, which also kept the empty `.well-known` directory from being tidied up. = 4.3.4 = * Compatibility: Tested up to WordPress 7.1. * Changed: The four AI abilities now also declare the unified `public` exposure flag introduced in WordPress 7.1. The channel-specific flags (`show_in_rest`, `mcp.public`) stay in place and keep working on WordPress 6.9 and 7.0. Newer MCP Adapter releases read the unified flag, so the abilities remain discoverable as tools there. = 4.3.3 = * Security: Password-protected posts and pages no longer leak their content. The automatically generated meta description ran over the raw post content, so the protected text was readable in the page source — in `description`, `og:description` and `twitter:description` — without ever entering the password. The same content also reached `llms-full.txt`, the FAQ schema in JSON-LD, the plugin sitemap, the AI search ability and the IndexNow ping. Everything a password protects now stays behind that password. Please update. * Changed: On a password-protected post the plugin outputs only the canonical URL and, if you set them, the robots directives. No description, no OpenGraph or Twitter card, no featured image, no FAQ schema — not even a description you typed yourself, because it may have been written while the post was still public. Once the password is entered, everything works as before. * Changed: Password-protected entries are left out of `llms.txt`, `llms-full.txt` and the plugin sitemap. A URL that only ever answers with a password form has nothing to offer a search engine or an AI crawler. * Security: The discovery files are rebuilt immediately after the update. Updating a plugin runs neither the activation hook nor a post save, so without this the `llms-full.txt` written by the old version would have stayed on your server — fix installed, leak still served — until you saved a post or the daily rebuild happened to run. * Security: Turning the llms.txt feature off now deletes `llms.txt` and `llms-full.txt`, the way the agent card and mcp.json were already handled. Previously the old files stayed on the server and kept being served. * New: When you put a password on a post that used to be public, IndexNow is pinged once. That old text is already in Bing's index; the ping is what brings the crawler back to find the password form and drop the snippet. Posts that were protected from the start are never announced. * Fix: On sites where WordPress cannot reach the filesystem directly, the plugin could crash with a fatal error instead of carrying on without the generated files. This affected the settings page, the dashboard checks, robots.txt, the files served at /llms.txt and /.well-known/, uninstall, and the first WP-CLI command after an update. All of those now simply report the files as missing. * Fix: The plugin only considers the rebuild done once the llms.txt files were actually written. Previously a failed write could go unnoticed. * Fix: Saving a post now really does rebuild the discovery files. The old code asked whether a rebuild was already scheduled using the same name as the daily job, so the answer was always yes and the rebuild never happened — llms.txt and llms-full.txt only changed once a day. This is what made the leak outlive the moment you put a password on a post. * Fix: Taking a post offline (moving it to draft) removes it from llms.txt and llms-full.txt. Previously only published posts triggered a rebuild, so the text of an unpublished post stayed in those files. * Fix: Putting a password on a post rebuilds the files before the save finishes, instead of a moment later. * Note: If you run a full-page cache, make sure it treats the WordPress password cookie (`wp-postpass_*`) as a reason not to serve a cached page. Otherwise the cache can hand a visitor who knows the password a page that was built for someone who does not — this applies to WordPress itself just as much as to this plugin, and every common cache plugin already handles it. = 4.3.2 = * New: Full German (de_DE) translation of the plugin interface — the admin UI now speaks English, German and Spanish. = 4.3.1 = * New: Full Spanish (es_ES) translation of the plugin interface — the admin UI is now available in English and Spanish. = 4.3.0 = * New: A guided setup wizard opens after activation and walks you through your business details and industry, then generates all your discovery files and schema. Two steps to AI-ready. * New: A friendly, one-time review request appears a week after setup. Dismiss it once and it never comes back. = 4.2.0 = * Compatibility: Tested up to WordPress 7.0 (released May 2026). * New: Each AI-Ready ability now declares `meta.show_in_rest` and a `readonly` annotation. WordPress 7.0 ships the Abilities API and AI Client in core, and these annotations let the MCP Adapter and AI Client know the abilities only read site data and never mutate it. * Changed: Minimum required WordPress version is now 6.9 (previously 6.0). The Abilities API that powers the MCP Adapter integration ships with WordPress 6.9, and 6.9/7.0 are the versions this plugin is tested against. Sites on older WordPress simply keep version 4.1.1. * Housekeeping: Uninstall cleanup now uses WordPress core APIs (`delete_post_meta_by_key()`) instead of direct SQL for post meta removal. * New: Optional mcp.json endpoint (/.well-known/mcp.json) — publish an MCP server discovery manifest for the MCP servers you list in the settings. Off by default. * New: Suggested privacy policy text under Settings → Privacy (the plugin stores no personal data — this documents exactly that). * Fix: llms.txt no longer contains an empty description blockquote when no business description is set; company name and description now fall back to the site title and tagline. * Fix: llms.txt only advertises discovery endpoints that are actually enabled (no more links to disabled endpoints). * Fix: The "REST API" settings toggle now actually disables the /wp-json/airewp/v1/ endpoints when unchecked. * Removed: The builtBy tool credit from the agent-card.json extensions block — your agent card is your document, not our ad. * No breaking changes. The classic SEO meta box, REST API behavior, and the agents.json format are unchanged. = 4.1.1 = * Fix: Register WP Abilities on the `wp_abilities_api_init` action instead of `init`. Resolves a `_doing_it_wrong` notice on WordPress 6.9 ("Abilities must be registered on the wp_abilities_api_init action") and ensures the four `airewp/*` abilities are picked up by the WordPress MCP Adapter. * Fix: Each ability now declares the required `category` property and uses the new `execute_callback` key (renamed from `callback` in WP 6.9). Without these the abilities were registered but discarded with a `_doing_it_wrong` notice. * New: Plugin registers its own ability category `airewp` (label "AI-Ready WP") on `wp_abilities_api_categories_init` so all four abilities are grouped under one heading in the MCP Adapter and Abilities admin views. * Tested with WordPress 6.9.4. No changes to features or settings — pure compatibility update. = 4.1.0 = * Focus: AI Discovery + SEO as a complete free package. * All features are free — no license key required. * Full SEO module: meta title/description, OpenGraph, Twitter Cards, canonical URL, robots meta, XML Sitemap, focus keyword analysis. * Full AI Discovery: agents.json, agent-card.json, llms.txt, JSON-LD, REST API, AI Bot Management, Crawler Analytics, IndexNow, WP Abilities. * AI-Readiness Score dashboard widget with 11 checks. * 16 industry presets. * Improved output escaping and security hardening. = 3.0.0 = * AI Bot Management — granular robots.txt control for 20+ AI bots. * AI Crawler Analytics — track AI bot visits. * WP Abilities API — registers abilities for WordPress MCP Adapter (WP 6.9+). * A2A v0.3 agent.json — canonical A2A path with backward-compatible agent-card.json. = 2.0.0 = * REST API endpoints, BreadcrumbList/FAQPage schemas. * IndexNow integration for instant search engine indexing. = 1.0.0 = * Initial release with agents.json, agent-card.json, llms.txt, JSON-LD, Dashboard widget, 16 presets. == Upgrade Notice == = 4.5.0 = Adds the administrator REST API through which your own AI (Claude, ChatGPT, another MCP client) reads and, with Pro, configures the plugin via wp.studiomeyer.io. Nothing changes for sites that do not connect one. = 4.4.4 = llms.txt and llms-full.txt now answer even when the plugin cannot write into the site root, and the organisation schema stands down next to other SEO plugins the way the meta tags already do. = 4.4.3 = AI crawlers are now allowed by default; sites that still carried the old block are switched over once and told so. The SEO module stands down next to Yoast, Rank Math and other SEO plugins, the front page gets proper social tags, and an empty mcp.json is no longer published. = 4.4.2 = If your site uses a page builder (WPBakery, Divi and similar), your meta description and llms-full.txt were showing raw shortcodes instead of your text. This release fixes that. Recommended for everyone. = 4.4.1 = German and Spanish translations for the new admin messages from 4.4.0. = 4.4.0 = Discovery documents now answer even when the plugin cannot write into .well-known, and the readiness score asks whether your URLs work instead of whether a file exists. If something is wrong, the settings page now says what and how to fix it. = 4.3.4 = WordPress 7.1 compatibility: the AI abilities declare the new unified public flag so they stay discoverable by the MCP Adapter. = 4.3.3 = Security fix: password-protected posts leaked their content into the page's meta description and other AI discovery surfaces. Please update. = 4.3.2 = Adds a full German (de_DE) interface translation. = 4.3.1 = Adds a full Spanish (es_ES) interface translation. = 4.3.0 = Adds a guided setup wizard that walks you through business details and industry, then generates everything. No action needed on existing sites. = 4.2.0 = Tested up to WordPress 7.0. Abilities now declare read-only annotations and REST visibility for the new core AI Client and MCP Adapter. Requires WordPress 6.9+. = 4.1.1 = WordPress 6.9 compatibility: Abilities now register on `wp_abilities_api_init` with the required `category` and `execute_callback` properties. = 4.1.0 = All features are now free. Full SEO module and AI Discovery in one lightweight package. = 3.0.0 = AI Bot Management, Crawler Analytics, WP Abilities API, A2A v0.3. = 1.0.0 = First release.