{"id":374406,"date":"2026-10-14T10:37:21","date_gmt":"2026-10-14T10:37:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/windcodex-forge-read-only-ai-diagnostics\/"},"modified":"2026-10-14T10:36:55","modified_gmt":"2026-10-14T10:36:55","slug":"windcodex-forge","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/windcodex-forge\/","author":23476832,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"WindCodex Forge \u2013 Read-Only AI Diagnostics","header_author":"WindCodex","header_description":"Gives Claude, ChatGPT, and other MCP-compatible AI coding assistants safe, read-only access to inspect a WordPress site: installed plugins, theme, hooks, files, database structure and data, Gutenberg content blocks, and cross-conversation memory. No write or code-execution capability of any kind, so it's safe to run on a live site.","assets_banners_color":"b5bcc7","last_updated":"2026-10-14 10:36:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/windcodex.com\/","header_author_uri":"https:\/\/windcodex.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"windcodex","date":"2026-10-14 10:36:55","revision":3746042}},"upgrade_notice":{"1.0.0":"<p>Initial release \u2013 no upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3746042,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3746042,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3746042,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3746042,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3746074,"resolution":"1","location":"assets","locale":"","width":1119,"height":1623},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3746042,"resolution":"2","location":"assets","locale":"","width":1117,"height":746},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3746042,"resolution":"3","location":"assets","locale":"","width":1118,"height":1479},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3746042,"resolution":"4","location":"assets","locale":"","width":1119,"height":554}},"screenshots":{"1":"Settings &gt; WindCodex Forge \u2013 Connection tab, with the Connector URL and list of connected AI platforms.","2":"Settings &gt; WindCodex Forge \u2013 Tools tab, showing every tool group with its risk badge and on\/off toggle.","3":"Settings &gt; WindCodex Forge \u2013 General tab, including \"Who can connect\" and the Data &amp; Privacy uninstall cleanup option.","4":"Settings &gt; WindCodex Forge \u2013 Activity tab, showing the log of AI actions with what ran, when, and whether it succeeded."}},"plugin_section":[],"plugin_tags":[232494,216196,229563,2679,260626],"plugin_category":[59],"plugin_contributors":[260242],"plugin_business_model":[],"class_list":["post-374406","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-agent","plugin_tags-chatgpt","plugin_tags-claude","plugin_tags-debugging","plugin_tags-mcp-server","plugin_category-utilities-and-tools","plugin_contributors-windcodex","plugin_committers-windcodex"],"banners":{"banner":"https:\/\/ps.w.org\/windcodex-forge\/assets\/banner-772x250.png?rev=3746042","banner_2x":"https:\/\/ps.w.org\/windcodex-forge\/assets\/banner-1544x500.png?rev=3746042","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/windcodex-forge\/assets\/icon-128x128.png?rev=3746042","icon_2x":"https:\/\/ps.w.org\/windcodex-forge\/assets\/icon-256x256.png?rev=3746042","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/windcodex-forge\/assets\/screenshot-1.png?rev=3746074","caption":"Settings &gt; WindCodex Forge \u2013 Connection tab, with the Connector URL and list of connected AI platforms."},{"src":"https:\/\/ps.w.org\/windcodex-forge\/assets\/screenshot-2.png?rev=3746042","caption":"Settings &gt; WindCodex Forge \u2013 Tools tab, showing every tool group with its risk badge and on\/off toggle."},{"src":"https:\/\/ps.w.org\/windcodex-forge\/assets\/screenshot-3.png?rev=3746042","caption":"Settings &gt; WindCodex Forge \u2013 General tab, including \"Who can connect\" and the Data &amp; Privacy uninstall cleanup option."},{"src":"https:\/\/ps.w.org\/windcodex-forge\/assets\/screenshot-4.png?rev=3746042","caption":"Settings &gt; WindCodex Forge \u2013 Activity tab, showing the log of AI actions with what ran, when, and whether it succeeded."}],"raw_content":"<!--section=description-->\n<p><strong>WindCodex Forge<\/strong> gives Claude, ChatGPT, and other MCP-compatible AI assistants a small number of general-purpose, read-only tools for understanding a WordPress site: installed plugins, active theme, registered hooks, files within wp-content, database structure and data (read-only), Gutenberg content blocks, and cross-conversation memory.<\/p>\n\n<p>This plugin is entirely free and read-only \u2013 it inspects a site's plugins, theme, hooks, files, and database, but cannot change any of them. The only data it ever writes is its own: memory notes and an activity log.<\/p>\n\n<h4>Why Developers Choose WindCodex Forge<\/h4>\n\n<ul>\n<li><strong>Safe to run on a live site<\/strong> \u2013 no tool can change your content, settings, users, plugins, theme, files, or database tables.<\/li>\n<li><strong>No code-execution capability at all<\/strong> \u2013 that's not a setting to be careful with; it simply isn't present in the codebase.<\/li>\n<li><strong>Administrators stay in control<\/strong> \u2013 only Administrators can connect an AI app by default, every tool call is logged, and login credentials are never returned.<\/li>\n<li><strong>Real diagnostics, not guesswork<\/strong> \u2013 let an AI read hook registrations, database schema, and file contents directly instead of asking you to paste them in.<\/li>\n<li><strong>Cross-conversation memory<\/strong> \u2013 save a fact or preference once so a future, separate conversation can pick it back up.<\/li>\n<li><strong>No license key, no paywall<\/strong> \u2013 every tool in this plugin is free.<\/li>\n<\/ul>\n\n<h4>Key Features<\/h4>\n\n<p>18 tools across 4 groups, entirely free, no license key required:<\/p>\n\n<ul>\n<li><strong>Site introspection<\/strong> \u2013 installed plugins, active theme, registered hooks, screenshots, static page inspection, recent connector activity, and design-authority detection (works out whether an active page builder or the theme's own design tokens should govern new visual work).<\/li>\n<li><strong>File read<\/strong> \u2013 browse and read file contents within wp-content (themes, plugins, uploads).<\/li>\n<li><strong>Database read<\/strong> \u2013 read rows from any table using structured filters (columns, conditions, sorting, paging) that always run as prepared statements \u2013 no raw SQL is accepted \u2013 plus table listing and schema introspection. Password hashes, reset keys, session tokens, application passwords, and secret-looking option\/meta values are never returned.<\/li>\n<li><strong>Content blocks (read-only)<\/strong> \u2013 read a Gutenberg block's full structure (attributes, inner HTML) by position, and list registered reusable blocks.<\/li>\n<li><strong>Memory<\/strong> \u2013 <code>wp_remember<\/code>\/<code>wp_list_memories<\/code>\/<code>wp_forget<\/code> let a conversation save a fact or preference site-wide so a <em>future<\/em>, separate conversation can pick it back up. Plaintext, not a secrets vault; capped at 200 entries per site.<\/li>\n<\/ul>\n\n<p>Plus, in the plugin's settings:<\/p>\n\n<ul>\n<li><strong>Access control<\/strong> \u2013 choose who may approve an AI connection (Administrators only by default, or Editors and above). Each connection is limited to that person's own permissions and stops working as soon as they lose the role.<\/li>\n<li><strong>Activity log<\/strong> \u2013 every tool call, successful or not, is recorded with its arguments, the user whose connection made it, and when.<\/li>\n<li><strong>Per-tool switches<\/strong> \u2013 turn any individual tool off.<\/li>\n<\/ul>\n\n<p>A flat 120 requests\/minute rate limit applies.<\/p>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Ask an AI to explain why a page looks the way it does by reading the active theme, registered hooks, and page builder in use.<\/li>\n<li>Debug a data issue by reading rows from your live database without ever risking a write.<\/li>\n<li>Have an AI review a plugin's or theme's source files directly from wp-content before suggesting a fix.<\/li>\n<li>Take a screenshot of a page and inspect its structure as part of a support or QA workflow.<\/li>\n<li>Let a future conversation pick up context \u2013 naming conventions, prior decisions, site quirks \u2013 saved by an earlier one via memory.<\/li>\n<li>Audit which connectors and AI platforms have accessed the site recently.<\/li>\n<\/ul>\n\n<h4>For Developers<\/h4>\n\n<p>Every tool here is read-only, so this plugin is built for understanding a client site or codebase quickly, not editing it live:<\/p>\n\n<ul>\n<li>Onboard onto an unfamiliar client site fast \u2013 ask an AI to list active plugins and theme, then read the hooks a specific feature actually depends on, instead of grepping through an unfamiliar codebase by hand.<\/li>\n<li>Track down a plugin conflict by reading exactly what's hooked into a given action or filter, across every active plugin, before touching any code.<\/li>\n<li>Review a plugin's or theme's source file straight from wp-content as part of a code review or before writing a patch, without needing FTP\/SSH access to the server.<\/li>\n<li>Read rows from the live database with simple filters to confirm a bug's root cause (bad meta value, orphaned row, wrong option) before writing the fix.<\/li>\n<li>Take a screenshot of a broken page and get a structural read on it \u2013 markup, blocks, active builder \u2013 to speed up a bug report or a QA handoff.<\/li>\n<li>Save project-specific conventions to memory once (naming patterns, past architectural decisions, known quirks of the client's stack) so the next debugging session with the same site doesn't start from zero.<\/li>\n<\/ul>\n\n<h4>Why This Is Safe on a Live Site<\/h4>\n\n<p>This plugin has no code-execution capability and no tool that can change your site \u2013 that's not a setting to be careful with, it simply isn't present in the codebase. The memory tools write only to the plugin's own notes table.<\/p>\n\n<p>On top of that:<\/p>\n\n<ul>\n<li><strong>Only approved people can connect.<\/strong> Administrators only by default. Each connection is limited to the permissions of the person who approved it \u2013 there is no shared or fallback account \u2013 and stops working immediately if they lose that role. The connection never logs in as that person; it can only read.<\/li>\n<li><strong>No access to your internal network.<\/strong> The page-inspection tool only fetches public web addresses and the site's own pages, never private or local network addresses.<\/li>\n<li><strong>Sensitive tools need an Administrator.<\/strong> File and database tools always require an Administrator account, whatever the connection setting.<\/li>\n<li><strong>Credentials stay private.<\/strong> The database tool refuses requests that select, filter, or sort on password hashes, reset keys, session tokens, or application passwords, and redacts secret-looking values.<\/li>\n<li><strong>Everything is logged and revocable.<\/strong> Every call appears on the Activity tab, and any connected app can be revoked from the Connection tab.<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>Settings &gt; WindCodex Forge<\/strong> and copy the Connector URL from the Connection tab.<\/li>\n<li>Add it to Claude, ChatGPT, or any other MCP-compatible AI platform as a custom connector.<\/li>\n<li>Authenticate once via OAuth while logged in as an Administrator \u2013 most platforms register themselves automatically from the discovery URLs on the Connection tab.<\/li>\n<li>The AI can now read plugins, files, the database, and content blocks \u2013 but never change them.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.2 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>An MCP-compatible AI platform (Claude, ChatGPT, or similar) to connect to<\/li>\n<li>No account or API key required. The optional screenshot tool asks a public WordPress.com screenshot service to render a page, so that page's URL is sent to it (you can switch that tool off in Settings &gt; WindCodex Forge &gt; Tools)<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin has no code-execution capability and no tool that can change your site. Every tool call is recorded in an activity log stored in your own database. Memory storage is plaintext, not encrypted \u2013 not meant for secrets or credentials. All tool calls run locally against your own site through WordPress's normal APIs, and the plugin talks only to the AI platform you connect over the OAuth connector you set up yourself. The one exception is the optional screenshot tool, which sends the requested page's URL to a public WordPress.com screenshot service; switch it off on the Tools tab if that isn't acceptable. By default, deleting the plugin leaves all data in place; opt into full cleanup via <strong>Settings &gt; WindCodex Forge &gt; General &gt; Data &amp; Privacy<\/strong>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the following external services:<\/p>\n\n<p><strong>The AI platform you connect (e.g. Claude, ChatGPT, or any other MCP-compatible client)<\/strong><\/p>\n\n<p>The entire purpose of this plugin is to let an AI platform you choose to connect \u2013 over the OAuth connector you set up yourself in <strong>Settings &gt; WindCodex Forge &gt; Connection<\/strong> \u2013 read a fixed list of diagnostic information from your site. When that platform calls an enabled tool, this plugin sends back only what that specific tool returns (for example: plugin\/theme\/hook listings, file contents from wp-content, database query results, or Gutenberg block structure), and only in direct response to that tool call. Nothing is sent proactively, on a schedule, or to any platform you haven't explicitly connected and authorized via OAuth. Because you choose which platform to connect, its terms and privacy policy are the platform's own \u2013 for example, Anthropic's (https:\/\/www.anthropic.com\/legal\/consumer-terms and https:\/\/www.anthropic.com\/legal\/privacy) or OpenAI's (https:\/\/openai.com\/policies\/terms-of-use and https:\/\/openai.com\/policies\/privacy-policy).<\/p>\n\n<p><strong>WordPress.com mshots screenshot service (s.wordpress.com)<\/strong><\/p>\n\n<p>The \"Take Screenshot\" tool (<code>wp_take_screenshot<\/code>), when called by your connected AI, asks WordPress.com's free, public mshots service to render a screenshot of a URL \u2013 the URL is sent to <code>https:\/\/s.wordpress.com\/mshots\/v1\/<\/code> as part of the request, and the target page must be publicly reachable for a screenshot to render. This only happens when that specific tool is invoked, and it can be turned off entirely in <strong>Settings &gt; WindCodex Forge &gt; Tools<\/strong>. This service is operated by Automattic; see its terms (https:\/\/wordpress.com\/tos\/) and privacy policy (https:\/\/automattic.com\/privacy\/).<\/p>\n\n<!--section=installation-->\n<h4>From your WordPress dashboard<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>WindCodex Forge<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file.<\/li>\n<li>Upload the <code>windcodex-forge<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<\/ol>\n\n<h4>After activation<\/h4>\n\n<ol>\n<li>Go to <strong>Settings &gt; WindCodex Forge<\/strong>.<\/li>\n<li>Copy the Connector URL from the Connection tab and add it to your AI platform as a custom connector.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20safe%20to%20run%20this%20on%20my%20live%2C%20production%20site%3F\"><h3>Is it safe to run this on my live, production site?<\/h3><\/dt>\n<dd><p>Yes. This plugin has no code-execution capability and no tool that can change your site's content, settings, users, plugins, theme, files, or database tables.<\/p><\/dd>\n<dt id=\"can%20the%20ai%20modify%20my%20database%20or%20files%20with%20this%20plugin%3F\"><h3>Can the AI modify my database or files with this plugin?<\/h3><\/dt>\n<dd><p>No. This plugin only exposes read-only tools \u2013 database reads, file reads, and read-only content-block inspection. There is no write or code-execution capability anywhere in the codebase. The one exception is the memory tools, which save and delete notes in the plugin's own table.<\/p><\/dd>\n<dt id=\"how%20does%20authentication%20work%3F\"><h3>How does authentication work?<\/h3><\/dt>\n<dd><p>OAuth only. Most platforms register themselves automatically via the discovery URLs shown on the Connection tab. If auto-registration fails, paste the Client ID\/Secret from that same tab into the platform's Advanced\/OAuth settings instead. The Connection tab lists every app that's ever connected, who it's currently acting as, and lets you revoke any one of them individually.<\/p><\/dd>\n<dt id=\"who%20can%20connect%20an%20ai%20app%3F\"><h3>Who can connect an AI app?<\/h3><\/dt>\n<dd><p>Only Administrators, by default. Anyone else who reaches the consent screen is told their account isn't allowed to connect. To let Editors connect too, change <strong>Settings &gt; WindCodex Forge &gt; General &gt; Who can connect<\/strong>. Even then, the file and database tools still require an Administrator.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20phone%20home%20or%20require%20an%20account%3F\"><h3>Does this plugin phone home or require an account?<\/h3><\/dt>\n<dd><p>No. There's no license key and no account, and nothing is sent to WindCodex. It talks to the AI platform you connect, over the OAuth connector you set up yourself. The one exception is the screenshot tool (<code>wp_take_screenshot<\/code>), which asks a public WordPress.com screenshot service to render a page, so that page's URL is sent to that service and the page must be publicly reachable. You can switch that tool off on the Tools tab.<\/p><\/dd>\n<dt id=\"what%20can%20the%20database%20read%20tool%20actually%20see%3F\"><h3>What can the database read tool actually see?<\/h3><\/dt>\n<dd><p>Rows from any table in your WordPress database, plus schema introspection (table listing and column structure). The AI never sends SQL: it names a table, the columns it wants, and simple conditions (e.g. <code>option_name LIKE 'woocommerce_%'<\/code>), and the plugin builds the query itself \u2013 table and column names are checked against your actual schema, and every value is passed through <code>$wpdb-&gt;prepare()<\/code>. It can only ever produce a single <code>SELECT<\/code> on one table, so it cannot change data, read files, or write to disk.<\/p>\n\n<p>Login credentials are never returned: requests that name password hashes, password-reset keys, session tokens, or application passwords are refused, and any value that looks like a password hash \u2013 or an option\/meta value whose name looks like a password, secret, API key, or token \u2013 is replaced with <code>[redacted]<\/code>.<\/p><\/dd>\n<dt id=\"whose%20permissions%20does%20the%20ai%20use%3F\"><h3>Whose permissions does the AI use?<\/h3><\/dt>\n<dd><p>Those of the WordPress user who logged in and approved the connection on the consent screen \u2013 there is no shared or fallback account. If that user later loses the role allowed to connect, or is deleted, the connection stops working immediately. Every tool call is recorded on the Activity tab with its arguments and whether it succeeded, and you can revoke any connected app from the Connection tab at any time.<\/p><\/dd>\n<dt id=\"what%20is%20the%20memory%20feature%20for%3F\"><h3>What is the memory feature for?<\/h3><\/dt>\n<dd><p>wp_remember, <code>wp_list_memories<\/code>, and <code>wp_forget<\/code> let one AI conversation save a fact or preference about the site so a completely separate, future conversation can pick it up automatically \u2013 useful for naming conventions, past decisions, or site-specific quirks. It's plaintext and capped at 200 entries per site, not intended for secrets.<\/p><\/dd>\n<dt id=\"which%20ai%20platforms%20can%20connect%20to%20windcodex%20forge%3F\"><h3>Which AI platforms can connect to WindCodex Forge?<\/h3><\/dt>\n<dd><p>Any platform that supports the Model Context Protocol (MCP) as a client, including Claude and ChatGPT. Connection uses standard OAuth, so most platforms auto-register themselves from the discovery URLs on the Connection tab.<\/p><\/dd>\n<dt id=\"can%20i%20see%20which%20files%20the%20ai%20has%20access%20to%3F\"><h3>Can I see which files the AI has access to?<\/h3><\/dt>\n<dd><p>The File read tool is scoped to wp-content (themes, plugins, uploads) only \u2013 it cannot read files outside of that directory, such as wp-config.php or core WordPress files.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>Initial release of WindCodex Forge as its own standalone, entirely free, read-only plugin.<\/p>\n\n<ul>\n<li>Site introspection, file read, database read, read-only content-block access, and memory.<\/li>\n<li>\"Who can connect\" setting \u2013 Administrators only by default; connections stop working if their user loses the role.<\/li>\n<li>Every tool call recorded in the activity log.<\/li>\n<li>Login credentials never returned by the database tool.<\/li>\n<\/ul>","raw_excerpt":"Give Claude, ChatGPT, and MCP AI platforms safe, read-only access to inspect WordPress files, database, and hooks. Safe to run live.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374406","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=374406"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/windcodex"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374406"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374406"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374406"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374406"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374406"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}