{"id":307716,"date":"2026-05-10T16:51:02","date_gmt":"2026-05-10T16:51:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/airano-mcp-bridge\/"},"modified":"2026-05-10T17:20:25","modified_gmt":"2026-05-10T17:20:25","slug":"airano-mcp-bridge","status":"publish","type":"plugin","link":"https:\/\/tg.wordpress.org\/plugins\/airano-mcp-bridge\/","author":23457768,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.10.3","stable_tag":"2.10.3","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Airano MCP Bridge","header_author":"MCP Hub","header_description":"Companion plugin for MCP Hub. Exposes SEO meta (Rank Math \/ Yoast), media upload helpers (bypass upload_max_filesize), and site capabilities via the WordPress REST API for AI agents and MCP servers. Supports posts, pages, and WooCommerce products.","assets_banners_color":"464a3f","last_updated":"2026-05-10 17:20:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/mcp.palebluedot.live","header_author_uri":"https:\/\/github.com\/airano-ir","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.10.3":{"tag":"2.10.3","author":"airano","date":"2026-05-10 17:20:25"}},"upgrade_notice":{"2.10.3":"<p>Internal refactor only \u2014 main class renamed from <code>SEO_API_Bridge<\/code> to <code>Airano_MCP_Bridge<\/code> to satisfy wp.org&#039;s prefix guideline. No behaviour or REST API changes.<\/p>","2.10.2":"<p>WordPress.org review fixes only \u2014 no behaviour changes. Drops a redundant core file include and tightens the <code>\/upload-and-attach<\/code> permission gate so the per-target <code>edit_post<\/code> check runs before the callback (visible to static analysis).<\/p>","2.10.1":"<p>Internal fix: capabilities and site-health now share a single route map. No breaking changes.<\/p>","2.10.0":"<p>\/upload-and-attach now supports <code>Idempotency-Key<\/code> header to safely retry uploads after client timeouts without creating duplicates. No breaking changes.<\/p>","2.9.0":"<p>Adds <code>POST \/airano-mcp\/v1\/upload-and-attach<\/code> \u2014 upload + metadata + attach + featured in one REST round-trip. No breaking changes.<\/p>","2.8.0":"<p>Adds <code>POST \/airano-mcp\/v1\/regenerate-thumbnails<\/code> for rebuilding attachment sub-sizes after uploads or format changes. No breaking changes.<\/p>","2.7.0":"<p>Adds <code>GET|POST|DELETE \/airano-mcp\/v1\/audit-hook<\/code> to forward WordPress action events to MCP Hub. Disabled until configured. No breaking changes.<\/p>","2.6.0":"<p>Adds <code>GET \/airano-mcp\/v1\/site-health<\/code> for a unified site-health snapshot. No breaking changes.<\/p>","2.5.0":"<p>Adds <code>POST \/airano-mcp\/v1\/transient-flush<\/code> for native transient cleanup. No breaking changes.<\/p>","2.4.0":"<p>Adds <code>POST \/airano-mcp\/v1\/cache-purge<\/code> for native cache flushing. No breaking changes.<\/p>","2.3.0":"<p>Adds <code>GET \/airano-mcp\/v1\/export<\/code> for offline backups and migrations. No breaking changes.<\/p>","2.2.0":"<p>Adds <code>POST \/airano-mcp\/v1\/bulk-meta<\/code> so MCP Hub can write many post meta values in one request. No breaking changes.<\/p>","2.1.0":"<p>Adds <code>GET \/airano-mcp\/v1\/capabilities<\/code> so MCP Hub can probe which tools the current application password can actually use. No breaking changes; existing routes unchanged.<\/p>","2.0.0":"<p>Rebranded to &quot;Airano MCP Bridge&quot;. Adds new <code>airano-mcp\/v1<\/code> namespace with upload-helper routes. All existing 1.x REST endpoints keep working unchanged.<\/p>","1.3.0":"<p>GET endpoints now require authentication (edit_posts capability). Update your API clients if needed.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3527917,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3527917,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3527917,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3527917,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.10.3"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,242115,84,23853,186],"plugin_category":[50,55],"plugin_contributors":[257393],"plugin_business_model":[],"class_list":["post-307716","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-mcp","plugin_tags-media","plugin_tags-rest-api","plugin_tags-seo","plugin_category-media","plugin_category-seo-and-marketing","plugin_contributors-airano","plugin_committers-airano"],"banners":{"banner":"https:\/\/ps.w.org\/airano-mcp-bridge\/assets\/banner-772x250.png?rev=3527917","banner_2x":"https:\/\/ps.w.org\/airano-mcp-bridge\/assets\/banner-1544x500.png?rev=3527917","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/airano-mcp-bridge\/assets\/icon-128x128.png?rev=3527917","icon_2x":"https:\/\/ps.w.org\/airano-mcp-bridge\/assets\/icon-256x256.png?rev=3527917","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Airano MCP Bridge<\/strong> is the official companion plugin for <a href=\"https:\/\/mcp.palebluedot.live\">MCP Hub<\/a> (<a href=\"https:\/\/github.com\/airano-ir\/mcphub\">source<\/a>) \u2014 the AI-native management hub for WordPress, WooCommerce, and self-hosted services. It extends the WordPress REST API with dedicated routes that AI agents (Claude, ChatGPT, Cursor, VS Code Copilot) and the MCP Hub server rely on:<\/p>\n\n<ul>\n<li><strong>SEO meta routes<\/strong> \u2014 read and write Rank Math SEO and Yoast SEO metadata for posts, pages, and WooCommerce products.<\/li>\n<li><strong>Media upload helper routes<\/strong> \u2014 accept raw-binary uploads via <code>php:\/\/input<\/code>, which bypasses the <code>upload_max_filesize<\/code> PHP limit (still bounded by <code>post_max_size<\/code>). Unlocks reliable hero-image and large-asset uploads for AI-agent workflows.<\/li>\n<li><strong>Capability probe<\/strong> \u2014 reports the effective PHP + WordPress upload limits so MCP Hub can pick the right upload path automatically.<\/li>\n<\/ul>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Rank Math SEO Support<\/strong> \u2014 Full access to all Rank Math meta fields<\/li>\n<li><strong>Yoast SEO Support<\/strong> \u2014 Full access to all Yoast SEO meta fields<\/li>\n<li><strong>WooCommerce Compatible<\/strong> \u2014 Works with product post types<\/li>\n<li><strong>MCP Hub media pipeline<\/strong> \u2014 bypasses <code>upload_max_filesize<\/code> for AI-agent uploads<\/li>\n<li><strong>Secure<\/strong> \u2014 Requires WordPress Application Password + capability checks on every route<\/li>\n<li><strong>Auto-Detection<\/strong> \u2014 Automatically detects active SEO plugin and advertises capabilities<\/li>\n<li><strong>Zero Configuration<\/strong> \u2014 Works out of the box after activation<\/li>\n<\/ul>\n\n<p><strong>REST API Endpoints:<\/strong><\/p>\n\n<p><em>SEO meta (namespace <code>airano-mcp-bridge\/v1<\/code>)<\/em><\/p>\n\n<ul>\n<li><code>GET\/POST \/wp-json\/airano-mcp-bridge\/v1\/posts\/{id}\/seo<\/code> \u2014 Post SEO data<\/li>\n<li><code>GET\/POST \/wp-json\/airano-mcp-bridge\/v1\/pages\/{id}\/seo<\/code> \u2014 Page SEO data<\/li>\n<li><code>GET\/POST \/wp-json\/airano-mcp-bridge\/v1\/products\/{id}\/seo<\/code> \u2014 Product SEO data (WooCommerce)<\/li>\n<li><code>GET \/wp-json\/airano-mcp-bridge\/v1\/status<\/code> \u2014 Plugin status + active SEO plugins<\/li>\n<\/ul>\n\n<p><em>MCP Bridge helpers (namespace <code>airano-mcp\/v1<\/code>, added in 2.0.0)<\/em><\/p>\n\n<ul>\n<li><code>GET \/wp-json\/airano-mcp\/v1\/upload-limits<\/code> \u2014 Effective PHP + WP upload limits<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/upload-chunk<\/code> \u2014 Raw-body media upload (bypasses <code>upload_max_filesize<\/code>)<\/li>\n<li><code>GET \/wp-json\/airano-mcp\/v1\/capabilities<\/code> \u2014 Effective capabilities + feature flags + available routes (added in 2.1.0)<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/bulk-meta<\/code> \u2014 Batch post\/product meta writes in a single HTTP round-trip (added in 2.2.0)<\/li>\n<li><code>GET \/wp-json\/airano-mcp\/v1\/export<\/code> \u2014 Structured JSON export: posts, pages, products + media + terms + meta, with post_type\/status\/since\/limit\/offset paging (added in 2.3.0)<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/cache-purge<\/code> \u2014 Auto-detects active cache plugins (LiteSpeed, WP Rocket, W3TC, Super Cache, Fastest Cache, SG Optimizer) and invokes their purge API; always flushes object cache (added in 2.4.0)<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/transient-flush<\/code> \u2014 Native transient cleanup with scope=expired\/all\/pattern (glob); optional site-transient handling on multisite (added in 2.5.0)<\/li>\n<li><code>GET \/wp-json\/airano-mcp\/v1\/site-health<\/code> \u2014 Unified site-health snapshot: PHP\/MySQL\/WP versions, extensions, disk free, active plugins + theme, writability checks (added in 2.6.0)<\/li>\n<li><code>GET|POST|DELETE \/wp-json\/airano-mcp\/v1\/audit-hook<\/code> \u2014 Configure + query a webhook that forwards WordPress action events to MCP Hub (HMAC-SHA256 signed, non-blocking) (added in 2.7.0)<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/regenerate-thumbnails<\/code> \u2014 Regenerate attachment sub-sizes via <code>wp_generate_attachment_metadata<\/code> for a list of IDs or in paged batch mode (added in 2.8.0)<\/li>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/upload-and-attach<\/code> \u2014 Raw-body upload + metadata + attach-to-post + set-featured in a single REST call (added in 2.9.0). Query params: <code>attach_to_post<\/code>, <code>set_featured<\/code>, <code>title<\/code>, <code>alt_text<\/code>, <code>caption<\/code>, <code>description<\/code>. Permission: <code>upload_files<\/code> + <code>edit_post<\/code> on the target post.<\/li>\n<\/ul>\n\n<p><strong>Designed for <a href=\"https:\/\/mcp.palebluedot.live\">MCP Hub<\/a><\/strong> \u2014 the AI-native management hub for WordPress and self-hosted services. <a href=\"https:\/\/mcp.palebluedot.live\">Try the live platform<\/a> \u00b7 <a href=\"https:\/\/github.com\/airano-ir\/mcphub\">Source on GitHub<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>airano-mcp-bridge<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>For SEO meta routes: ensure either Rank Math SEO or Yoast SEO is active<\/li>\n<li>The REST API endpoints are now available<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>Rank Math SEO and Yoast SEO. The plugin auto-detects which one is active.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Product SEO endpoints are available when WooCommerce is active.<\/p><\/dd>\n<dt id=\"how%20is%20authentication%20handled%3F\"><h3>How is authentication handled?<\/h3><\/dt>\n<dd><p>All endpoints require WordPress Application Password authentication. SEO routes require <code>edit_posts<\/code>. Upload helper routes require <code>upload_files<\/code> or <code>manage_options<\/code>.<\/p><\/dd>\n<dt id=\"do%20i%20need%20mcp%20hub%20to%20use%20the%20upload%20helper%20routes%3F\"><h3>Do I need MCP Hub to use the upload helper routes?<\/h3><\/dt>\n<dd><p>No. The <code>\/airano-mcp\/v1\/upload-chunk<\/code> route is a standard authenticated REST endpoint and can be used from any client that can send a raw-binary <code>POST<\/code> with <code>Content-Disposition<\/code> and <code>Content-Type<\/code> headers.<\/p><\/dd>\n<dt id=\"is%20there%20a%20size%20cap%20on%20the%20upload%20helper%3F\"><h3>Is there a size cap on the upload helper?<\/h3><\/dt>\n<dd><p>The helper reads the request body via <code>php:\/\/input<\/code>, which is <strong>not<\/strong> subject to PHP's <code>upload_max_filesize<\/code> limit \u2014 but it is still bounded by <code>post_max_size<\/code> and <code>memory_limit<\/code>. For files larger than <code>post_max_size<\/code>, MCP Hub falls back to its own server-side chunked session pipeline.<\/p><\/dd>\n<dt id=\"why%20keep%20the%20folder%20name%20%22airano-mcp-bridge%22%20even%20though%20the%20plugin%20now%20does%20more%20than%20seo%3F\"><h3>Why keep the folder name \"airano-mcp-bridge\" even though the plugin now does more than SEO?<\/h3><\/dt>\n<dd><p>Plugin slugs on wordpress.org are permanent. Existing installs keep working; the display name and feature set are updated in 2.0.0.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20without%20mcp%20hub%3F\"><h3>Can I use this without MCP Hub?<\/h3><\/dt>\n<dd><p>Yes. All REST API endpoints work with any application that can make authenticated HTTP requests.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.10.3<\/h4>\n\n<ul>\n<li>WordPress.org review fix: rename main class from the generic <code>SEO_API_Bridge<\/code> to <code>Airano_MCP_Bridge<\/code> per the wp.org \"unique prefixes\" guideline. The class is only instantiated from this file's bootstrap line and is never referenced by callers (the plugin's public surface is its REST routes, not its PHP class), so this is an internal refactor with no behaviour change.<\/li>\n<\/ul>\n\n<h4>2.10.2<\/h4>\n\n<ul>\n<li>WordPress.org review fixes:\n\n<ul>\n<li>Drop the unused <code>wp-admin\/includes\/media.php<\/code> includes from <code>\/upload-chunk<\/code> and <code>\/upload-and-attach<\/code>. The code only uses helpers from <code>file.php<\/code> (<code>wp_tempnam<\/code>, <code>wp_handle_sideload<\/code>) and <code>image.php<\/code> (<code>wp_generate_attachment_metadata<\/code>) \u2014 <code>media.php<\/code> was a needless direct core include.<\/li>\n<li>Split <code>\/upload-and-attach<\/code> permission_callback into its own method (<code>require_upload_and_attach_capability<\/code>) that explicitly enforces <code>current_user_can('edit_post', $attach_to_post)<\/code> at the route gate when <code>attach_to_post<\/code> is supplied (no longer hidden inside the callback body), and rejects <code>set_featured<\/code> requests that don't include a target post.<\/li>\n<\/ul><\/li>\n<li>No behaviour changes for clients sending well-formed requests.<\/li>\n<\/ul>\n\n<h4>2.10.1<\/h4>\n\n<ul>\n<li>Fix: <code>capabilities<\/code> and <code>site-health<\/code> routes now share a single source of truth for the <code>routes<\/code> bitmap (previously duplicated with conflicting values for <code>audit_hook<\/code> and missing <code>upload_and_attach<\/code>). Both endpoints now read from the shared route-map constant.<\/li>\n<\/ul>\n\n<h4>2.10.0<\/h4>\n\n<ul>\n<li><code>POST \/wp-json\/airano-mcp\/v1\/upload-and-attach<\/code> now honours an <code>Idempotency-Key<\/code> request header. A retry within 24 hours with the same key returns the already-created attachment (<code>_idempotent_replay: true<\/code>) rather than creating a duplicate <code>-2.webp<\/code> orphan. Protects against client-timeout regressions where a successful upload was retried because the response was lost.<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/upload-and-attach<\/code> \u2014 same raw-body semantics as <code>\/upload-chunk<\/code>, but accepts query params (<code>attach_to_post<\/code>, <code>set_featured<\/code>, <code>title<\/code>, <code>alt_text<\/code>, <code>caption<\/code>, <code>description<\/code>) and applies them in one PHP round-trip. Saves 2-3 REST calls per upload. Per-target permission enforced via <code>current_user_can('edit_post', attach_to_post)<\/code>.<\/li>\n<li><code>status<\/code> + <code>capabilities<\/code> routes now advertise <code>upload_and_attach: true<\/code> alongside the existing capability flags.<\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/regenerate-thumbnails<\/code> \u2014 rebuild attachment sub-sizes via <code>wp_generate_attachment_metadata()<\/code> after an upload or format conversion changes source pixels. Supports two modes: <code>{ \"ids\": [...] }<\/code> for targeted regeneration (up to 50 per call) and <code>{ \"all\": true, \"offset\": N, \"limit\": M }<\/code> for paged batches (max 50 per page, with <code>has_more<\/code> + <code>next_offset<\/code> for pagination). Non-image attachments are skipped; per-item permission check via <code>current_user_can('edit_post', $attachment_id)<\/code>. Permission: <code>upload_files<\/code> or <code>manage_options<\/code>.<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Added <code>GET|POST|DELETE \/wp-json\/airano-mcp\/v1\/audit-hook<\/code> \u2014 configure a webhook that forwards WordPress action events (post transitions, deletions, user events, plugin activations, theme switches) to MCP Hub for unified auditing. Each event is signed with HMAC-SHA256 using a shared secret and posted non-blocking via <code>wp_remote_post<\/code> so the admin UI stays snappy. Secret is stored in <code>wp_options<\/code> and never echoed back in GET responses (only the last 4 characters are returned). Permission: <code>manage_options<\/code>.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>Added <code>GET \/wp-json\/airano-mcp\/v1\/site-health<\/code> \u2014 single-envelope health snapshot: WordPress version\/multisite\/locale, PHP version + critical extensions, server software + disk free, MySQL\/MariaDB version + charset, active plugins list (with versions), active + parent theme, writability checks (wp-content, uploads) and SSL status. Replaces 5+ separate REST calls with a single request. Permission: <code>manage_options<\/code>.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/transient-flush<\/code> \u2014 native PHP transient cleanup. Scopes: <code>expired<\/code> (default, calls <code>delete_expired_transients()<\/code>), <code>all<\/code> (delete every <code>_transient_%<\/code> row), or <code>pattern<\/code> (glob match, e.g. <code>rank_math_*<\/code>). Optional <code>include_site_transients<\/code> for multisite. Response includes <code>deleted_count<\/code> + capped <code>deleted_sample<\/code> for observability. Permission: <code>manage_options<\/code>.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/cache-purge<\/code> \u2014 auto-detects active page-cache plugins (LiteSpeed Cache, WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround Optimizer) and triggers their purge API. Always calls <code>wp_cache_flush()<\/code> for object caches. Permission: <code>manage_options<\/code>. Removes the need for Docker-socket + WP-CLI to flush caches on managed hosts.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Added <code>GET \/wp-json\/airano-mcp\/v1\/export<\/code> \u2014 structured JSON export of posts, pages, and WooCommerce products (not WXR). Query params: <code>post_type<\/code>, <code>status<\/code>, <code>since<\/code>, <code>limit<\/code> (max 500), <code>offset<\/code>, <code>include_media<\/code>, <code>include_terms<\/code>, <code>include_meta<\/code>. Response includes posts + referenced media + taxonomy terms + post meta in a single envelope, plus <code>has_more<\/code> \/ <code>next_offset<\/code> for pagination. Permission: <code>edit_posts<\/code>.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/bulk-meta<\/code> \u2014 writes many <code>post_meta<\/code> \/ <code>product_meta<\/code> entries in a single REST request. Capped at 500 items per call; each item is permission-checked via <code>current_user_can('edit_post', $post_id)<\/code>. Null meta values delete the key. Status endpoint now advertises <code>capabilities.bulk_meta = true<\/code> and the capabilities probe reports <code>routes.bulk_meta = true<\/code>.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added <code>GET \/wp-json\/airano-mcp\/v1\/capabilities<\/code> \u2014 reports the effective capabilities of the calling application password, plus feature flags (Rank Math \/ Yoast \/ WooCommerce \/ multisite) and the list of companion routes this version actually ships. Consumed by MCP Hub's capability probe so per-user clients only see tools they're actually authorised to use.<\/li>\n<li>Status endpoint now advertises <code>capabilities.capabilities = true<\/code>.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>Rebrand<\/strong>: \"Airano MCP SEO Meta Bridge\" \u2192 \"Airano MCP Bridge\". The companion plugin is no longer SEO-only.<\/li>\n<li>Added <code>GET \/wp-json\/airano-mcp\/v1\/upload-limits<\/code> \u2014 returns effective PHP + WP upload limits for MCP Hub probes.<\/li>\n<li>Added <code>POST \/wp-json\/airano-mcp\/v1\/upload-chunk<\/code> \u2014 raw-body upload route that bypasses <code>upload_max_filesize<\/code>.<\/li>\n<li>Status endpoint now includes <code>capabilities: { seo_meta, upload_limits, upload_chunk }<\/code>.<\/li>\n<li>Plugin folder \/ slug unchanged: <code>airano-mcp-bridge<\/code> (permanent on wordpress.org).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added REST API endpoints for posts, pages, and products (GET\/POST operations)<\/li>\n<li>Added authentication requirement for all endpoints<\/li>\n<li>Fixed rank_math_title meta key registration<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Enhanced WooCommerce product support<\/li>\n<li>Improved MariaDB compatibility<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added status endpoint for plugin detection<\/li>\n<li>Improved error handling<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Rank Math and Yoast SEO support<\/li>\n<\/ul>","raw_excerpt":"Companion plugin for MCP Hub. REST API routes for SEO meta and raw-binary media uploads that bypass upload_max_filesize.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=307716"}],"author":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/airano"}],"wp:attachment":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307716"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307716"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307716"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307716"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307716"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}