{"id":289683,"date":"2026-03-23T16:46:54","date_gmt":"2026-03-23T16:46:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webmcp-bridge\/"},"modified":"2026-04-20T07:59:28","modified_gmt":"2026-04-20T07:59:28","slug":"webmcp-bridge","status":"publish","type":"plugin","link":"https:\/\/ca.wordpress.org\/plugins\/webmcp-bridge\/","author":16166350,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.6.0","stable_tag":"1.6.0","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"WebMCP Bridge","header_author":"Mescio","header_description":"Exposes WordPress functionality as WebMCP tools so AI agents can interact with your site natively in the browser \u2014 no backend MCP server required.","assets_banners_color":"1d115e","last_updated":"2026-04-20 07:59:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/webmcp-bridge\/","header_author_uri":"https:\/\/mescio.it\/","rating":0,"author_block_rating":0,"active_installs":30,"downloads":379,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"vinsmach","date":"2026-03-23 16:46:19"},"1.3.0":{"tag":"1.3.0","author":"vinsmach","date":"2026-03-24 13:35:39"},"1.3.1":{"tag":"1.3.1","author":"vinsmach","date":"2026-03-24 15:05:23"},"1.3.2":{"tag":"1.3.2","author":"vinsmach","date":"2026-03-24 15:26:11"},"1.4.0":{"tag":"1.4.0","author":"vinsmach","date":"2026-04-19 07:17:50"},"1.4.1":{"tag":"1.4.1","author":"vinsmach","date":"2026-04-19 07:28:56"},"1.4.2":{"tag":"1.4.2","author":"vinsmach","date":"2026-04-19 07:35:28"},"1.5.0":{"tag":"1.5.0","author":"vinsmach","date":"2026-04-19 07:48:43"},"1.6.0":{"tag":"1.6.0","author":"vinsmach","date":"2026-04-20 07:59:28"}},"upgrade_notice":{"1.3.2":"<p>Security and stability patch. Sanitizes Markdown output to prevent prompt injection, removes sensitive data from responses, adds rate limiting. Recommended update for all users.<\/p>","1.1.0":"<p>Adds Mescio for Agents integration and fixes tool filtering in the manifest. Recommended update for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3489410,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3489410,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3489415,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0","1.3.0","1.3.1","1.3.2","1.4.0","1.4.1","1.4.2","1.5.0","1.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3489410,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Settings page \u2014 enable\/disable tool groups and copy the manifest URL","2":"Registered tools list \u2014 all available tools with their group and description","3":"Developer API \u2014 example of adding a custom tool from your theme"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,232494,242115,258453,286],"plugin_category":[45],"plugin_contributors":[257333],"plugin_business_model":[],"class_list":["post-289683","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-agent","plugin_tags-mcp","plugin_tags-webmcp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-vinsmach","plugin_committers-vinsmach"],"banners":{"banner":"https:\/\/ps.w.org\/webmcp-bridge\/assets\/banner-772x250.png?rev=3489415","banner_2x":"https:\/\/ps.w.org\/webmcp-bridge\/assets\/banner-1544x500.png?rev=3489410","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webmcp-bridge\/assets\/icon-256x256.png?rev=3489410","icon_2x":"https:\/\/ps.w.org\/webmcp-bridge\/assets\/icon-256x256.png?rev=3489410","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webmcp-bridge\/assets\/screenshot-1.png?rev=3489410","caption":"Settings page \u2014 enable\/disable tool groups and copy the manifest URL"}],"raw_content":"<!--section=description-->\n<p><strong>WebMCP Bridge<\/strong> exposes your WordPress (and WooCommerce) functionality as <a href=\"https:\/\/github.com\/webmcp\/webmcp-spec\">WebMCP<\/a> tools that AI agents can discover and invoke directly in the browser.<\/p>\n\n<p>Once installed, your site automatically becomes \"agent-friendly\":<\/p>\n\n<ul>\n<li>AI agents can <strong>search posts, pages, and custom post types<\/strong><\/li>\n<li>AI agents can <strong>browse products, manage the cart, apply coupons<\/strong> (WooCommerce)<\/li>\n<li>AI agents can <strong>read navigation menus and site metadata<\/strong><\/li>\n<li>Developers can <strong>register custom tools<\/strong> in minutes via a simple PHP API<\/li>\n<\/ul>\n\n<p><strong>What is WebMCP?<\/strong><\/p>\n\n<p>WebMCP is a new browser-native protocol (currently in Chrome Early Preview) that lets web apps expose their functionality as structured \"tools\" that AI agents can invoke \u2014 without needing to screenshot or parse HTML. Think of your website as an MCP server running entirely client-side.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Enable the features you want from <strong>Settings \u2192 WebMCP Bridge<\/strong><\/li>\n<li>Your tool manifest is immediately available at <code>\/wp-json\/webmcp-bridge\/v1\/manifest<\/code><\/li>\n<li>AI agents (or any JavaScript code) can call your tools via REST API or the native browser WebMCP API<\/li>\n<\/ol>\n\n<p><strong>Included tools<\/strong><\/p>\n\n<p><em>Core:<\/em><\/p>\n\n<ul>\n<li><code>search_posts<\/code> \u2014 Search posts, pages, or custom post types<\/li>\n<li><code>get_post<\/code> \u2014 Retrieve a single post by ID or slug<\/li>\n<li><code>get_menu<\/code> \u2014 Return navigation menu items<\/li>\n<li><code>get_categories<\/code> \u2014 List taxonomy terms<\/li>\n<li><code>get_site_info<\/code> \u2014 Site name, description, URL, language<\/li>\n<li><code>submit_contact_form<\/code> \u2014 Contact Form 7 integration<\/li>\n<\/ul>\n\n<p><em>WooCommerce (requires WooCommerce plugin):<\/em><\/p>\n\n<ul>\n<li><code>woo_search_products<\/code> \u2014 Search by keyword, category, price range<\/li>\n<li><code>woo_get_product<\/code> \u2014 Full product details including attributes<\/li>\n<li><code>woo_add_to_cart<\/code> \u2014 Add a product to the cart<\/li>\n<li><code>woo_get_cart<\/code> \u2014 Current cart contents and totals<\/li>\n<li><code>woo_remove_from_cart<\/code> \u2014 Remove an item by cart key<\/li>\n<li><code>woo_apply_coupon<\/code> \u2014 Apply a coupon code<\/li>\n<li><code>woo_get_checkout_fields<\/code> \u2014 Return checkout field schema<\/li>\n<li><code>woo_get_product_categories<\/code> \u2014 List all product categories<\/li>\n<\/ul>\n\n<p><strong>Even more powerful with Mescio for Agents<\/strong><\/p>\n\n<p>WebMCP Bridge integrates automatically with the <strong>Mescio for Agents<\/strong> plugin. When both plugins are active, two additional tools are unlocked:<\/p>\n\n<ul>\n<li><code>get_markdown_content<\/code> \u2014 Returns any post or page as clean Markdown, the format AI models consume most efficiently. Instead of raw HTML, agents receive structured, token-optimized content ready for reasoning and summarization.<\/li>\n<li><code>get_llms_txt<\/code> \u2014 Exposes the site-wide <code>llms.txt<\/code> context document (index or full variant), giving agents an instant, structured overview of what the site is about, who it is for, and what content is available \u2014 before they even start searching.<\/li>\n<\/ul>\n\n<p>Together, the two plugins turn your WordPress site into a fully AI-native content source: WebMCP Bridge handles the tool layer (what agents can <em>do<\/em>), while Mescio for Agents handles the content layer (what agents can <em>read<\/em> and <em>understand<\/em>).<\/p>\n\n<p><strong>Privacy<\/strong><\/p>\n\n<p>This plugin does not collect, store, or transmit any user data to external servers. All tool execution happens locally within your WordPress installation. No telemetry, no phone-home, no external API calls.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>webmcp-bridge<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin via <strong>Plugins \u2192 Installed Plugins<\/strong><\/li>\n<li>Go to <strong>Settings \u2192 WebMCP Bridge<\/strong> and enable the features you want<\/li>\n<\/ol>\n\n<h4>Minimum Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<li>WooCommerce 7.0+ (optional, only required for WooCommerce tools)<\/li>\n<li>Contact Form 7 (optional, only required for form tools)<\/li>\n<li>Mescio for Agents (optional, unlocks <code>get_markdown_content<\/code> and <code>get_llms_txt<\/code>)<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20chrome%20for%20this%20to%20work%3F\"><h3>Do I need Chrome for this to work?<\/h3><\/dt>\n<dd><p>No. The REST API endpoints work in every browser and environment. The native WebMCP browser registration is only available in Chrome Early Preview (experimental), but the fallback JavaScript API (<code>window.webmcpBridgeTools<\/code>) and REST endpoints work everywhere.<\/p><\/dd>\n<dt id=\"is%20this%20secure%3F\"><h3>Is this secure?<\/h3><\/dt>\n<dd><p>Yes. Read-only tools (search, get post, etc.) are publicly accessible by default, matching WordPress's own REST API behaviour. Write-action tools (add to cart, apply coupon, submit form) require a valid WordPress nonce. You can customise which tools require authentication via the <code>webmcp_bridge_protected_tools<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce tools are automatically registered when WooCommerce is active and the WooCommerce option is enabled in settings.<\/p><\/dd>\n<dt id=\"what%20does%20mescio%20for%20agents%20add%3F\"><h3>What does Mescio for Agents add?<\/h3><\/dt>\n<dd><p>When Mescio for Agents is active alongside WebMCP Bridge, two extra tools become available in the manifest: <code>get_markdown_content<\/code> (AI-optimized content format) and <code>get_llms_txt<\/code> (site-wide context document). These are detected automatically \u2014 no configuration needed.<\/p><\/dd>\n<dt id=\"can%20i%20add%20my%20own%20tools%3F\"><h3>Can I add my own tools?<\/h3><\/dt>\n<dd><p>Absolutely. Use the PHP API:<\/p>\n\n<pre><code>add_action( 'plugins_loaded', function() {\n    if ( ! class_exists( 'WebMCP_Bridge_Tool_Registry' ) ) return;\n    $registry = WebMCP_Bridge_Tool_Registry::instance();\n    $registry-&gt;register( 'my_tool', [\n        'description' =&gt; 'Does something useful.',\n        'group'       =&gt; 'custom',\n        'inputSchema' =&gt; [ 'type' =&gt; 'object', 'properties' =&gt; [] ],\n        'callback'    =&gt; function( $params ) { return [ 'ok' =&gt; true ]; },\n    ] );\n} );\n<\/code><\/pre><\/dd>\n<dt id=\"where%20is%20the%20manifest%20url%3F\"><h3>Where is the manifest URL?<\/h3><\/dt>\n<dd><p>https:\/\/your-site.com\/wp-json\/webmcp-bridge\/v1\/manifest<\/p>\n\n<p>You can also find it on the <strong>Settings \u2192 WebMCP Bridge<\/strong> page with a one-click copy button.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20collect%20any%20data%3F\"><h3>Does this plugin collect any data?<\/h3><\/dt>\n<dd><p>No. WebMCP Bridge does not collect, store, or send any data to external servers. See the Privacy section above.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>JS: migrated browser registration to navigator.modelContext.provideContext() per current WebMCP spec; legacy ai.tools.register() kept as fallback<\/li>\n<li>JS: corrected tool field from parameters to inputSchema (WebMCP\/Anthropic spec)<\/li>\n<li>Discovery: added service-desc and service-doc Link relations alongside api-catalog and webmcp-manifest<\/li>\n<li>Discovery: OAuth authorization-server and oauth-protected-resource now served on all sites (not WooCommerce-only) \u2014 explains WordPress nonce auth to agents<\/li>\n<li>Discovery:  HTML tags updated to include service-desc and service-doc<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added WooCommerce commerce agent discovery (active only when WooCommerce is installed):\n\n<ul>\n<li>OAuth Authorization Server metadata at \/.well-known\/oauth-authorization-server (RFC 8414)<\/li>\n<li>OAuth Protected Resource metadata at \/.well-known\/oauth-protected-resource (RFC 9728)<\/li>\n<li>Universal Commerce Protocol profile at \/.well-known\/ucp (ucp.dev)<\/li>\n<li>Agentic Commerce Protocol discovery at \/.well-known\/acp.json (agenticcommerce.dev)<\/li>\n<\/ul><\/li>\n<li>Added \/wp-json\/webmcp-bridge\/v1\/nonce endpoint \u2014 agents can fetch a fresh WP REST nonce for authenticated tool calls<\/li>\n<li>Discovery endpoint now includes commerce URLs when WooCommerce is active<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>Added Content-Signal directives to robots.txt (contentsignals.org): ai-train=yes, search=yes, ai-input=yes \u2014 filterable via webmcp_bridge_content_signals hook<\/li>\n<li>Added Vary: Accept header so nginx\/CDN caches correctly serve Markdown for Agents requests separately from HTML responses<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Fixed RFC 8288 Link discovery for cached sites: added  tags in HTML  via wp_head<\/li>\n<li>Link tags are part of the cached HTML so agents find them even when nginx serves cached pages without running PHP<\/li>\n<li>HTTP Link headers still added via wp_headers as secondary channel on cache misses<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fixed RFC 8288 Link headers: switched from send_headers action to wp_headers filter for reliable delivery through nginx\/cache layers<\/li>\n<li>Link headers now added to all pages (not just homepage) so agents can discover the API from any entry point<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fixed Agent Skills index: added sha256 digest field to each skill entry (required by v0.2.0 spec)<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added RFC 8288 Link response headers on homepage: advertises manifest, API catalog and MCP Server Card to agents<\/li>\n<li>Added \/.well-known\/mcp\/server-card.json (SEP-1649): MCP Server Card for agent discovery<\/li>\n<li>Added \/.well-known\/api-catalog (RFC 9727): machine-readable API catalog including WebMCP and Mescio endpoints<\/li>\n<li>Added \/.well-known\/agent-skills\/index.json: Agent Skills discovery index listing all site capabilities<\/li>\n<li>Added \/wp-json\/webmcp-bridge\/v1\/discovery: convenience endpoint listing all discovery URLs<\/li>\n<li>All well-known endpoints include Mescio for Agents data automatically when plugin is active<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Fixed PHP syntax error in sanitize_markdown() regex (inline event handler pattern)<\/li>\n<li>All PHP files pass WordPress.org pre-commit syntax check<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Security: sanitize Markdown output in get_markdown_content and get_llms_txt \u2014 prevents stored XSS and prompt injection via post content<\/li>\n<li>Removed admin_email from get_site_info response \u2014 not needed by agents, sensitive data<\/li>\n<li>Removed author display_name from get_post response \u2014 exposes internal WordPress usernames<\/li>\n<li>Added global rate limiting on \/execute endpoint (default: 120 calls\/60s, configurable in settings)<\/li>\n<li>Rate limit is global (not per-IP) \u2014 effective against proxy rotation attacks; returns HTTP 429<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Removed admin_email from get_site_info \u2014 sensitive data not needed by agents<\/li>\n<li>Removed author field from get_post \u2014 avoids exposing internal WordPress usernames<\/li>\n<li>Added global rate limiting on \/execute: configurable max calls per time window in settings<\/li>\n<li>Rate limit counter uses WP transients; returns HTTP 429 when exceeded<\/li>\n<li>Rate limit and window now editable from Settings \u2192 WebMCP Bridge<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added Live API Examples section in admin: test every tool directly from the settings page<\/li>\n<li>curl and JavaScript snippets auto-generated for each tool with real site URL<\/li>\n<li>Added Mescio for Agents examples (llms.txt, get_markdown_content) when plugin is active<\/li>\n<li>Admin JS extracted to separate file for better caching and CSP compatibility<\/li>\n<li>Added full Italian translation (it_IT) \u2014 .po, .mo and .pot files included<\/li>\n<li>Admin UI: tab navigation for examples, live JSON output viewer<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added integration with Mescio for Agents plugin: when active, unlocks <code>get_markdown_content<\/code> and <code>get_llms_txt<\/code> tools<\/li>\n<li>Manifest now filters tools based on enabled settings \u2014 disabled groups no longer appear<\/li>\n<li>Added <code>site_url<\/code> and <code>mescio_for_agents<\/code> fields to manifest response<\/li>\n<li>Tool groups refactored: core split into <code>content<\/code>, <code>navigation<\/code>, <code>forms<\/code> for finer control<\/li>\n<li>Improved error handling: registry now catches all <code>Throwable<\/code> (not just <code>Exception<\/code>)<\/li>\n<li>Fixed <code>wp_remote_get<\/code> in llms-full.txt fetch: proper timeout, user-agent, SSL filter<\/li>\n<li>Fixed: tools disabled in settings were still executable via REST \u2014 now correctly blocked<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added automatic compatibility with Autoptimize, WP Rocket, LiteSpeed Cache, W3 Total Cache, SG Optimizer<\/li>\n<li>Fixed duplicate textdomain and deactivation hooks<\/li>\n<li>Added ABSPATH protection to all PHP files<\/li>\n<li>Fixed output escaping in exception messages<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Core tools: search_posts, get_post, get_menu, get_categories, get_site_info, submit_contact_form<\/li>\n<li>WooCommerce tools: product search, cart management, coupon, checkout fields<\/li>\n<li>REST API manifest and execution endpoints<\/li>\n<li>JavaScript frontend bridge with WebMCP browser API support and fallback<\/li>\n<li>Admin settings page<\/li>\n<\/ul>","raw_excerpt":"Make your WordPress site natively AI-agent friendly via the WebMCP protocol \u2014 no backend server required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/289683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=289683"}],"author":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vinsmach"}],"wp:attachment":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=289683"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=289683"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=289683"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=289683"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=289683"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=289683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}