WP Manifestindependent plugin directory
manifest / integrations / wp-content-bridge

WP Content Bridge releasesself-updates

WP connector bridge for MCP in wordpress

by ISU Development · github.com/isudevelopment/wp-content-bridge · website

0stars
24release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/isudevelopment/wp-content-bridge/releases/download/v0.10.0/wp-content-bridge.zip

Ships its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.

Readme

WP Content Bridge

WP Content Bridge is a standalone WordPress plugin that exposes controlled content, editorial, media, block-pattern, and SEO operations through the WordPress Abilities API.

It gives an authenticated integration a typed interface for:

  • searching and reading WordPress content;
  • reading configured and resolved SEO data;
  • discovering editorial vocabulary and recent content;
  • finding media by ID, URL, filename, or text;
  • reading registered block patterns;
  • creating drafts and updating Gutenberg content;
  • reading a post's block structure and editing or removing one block, or merging attributes into it, by tree path without rewriting the whole document;
  • updating an allowlisted set of Yoast SEO fields;
  • configuring a structured Service entity, local service areas, brands, and an offer catalog when IsuDev Schema Extended is active;
  • moving content to reversible WordPress trash;
  • diagnosing whether the WordPress, Abilities API, MCP, and SEO layers are available.

The plugin does not bundle an AI model, authentication provider, or MCP server. The official WordPress MCP Adapter can project selected abilities to MCP clients, but Abilities remain the plugin's transport-neutral public API.

Requirements

  • WordPress 7.0 or newer
  • PHP 8.2 or newer
  • Composer dependencies included in the release package or installed locally
  • Optional: Yoast SEO 28.x for normalized SEO reads and writes
  • Optional: Yoast SEO Premium 28.x for keyphrase synonyms and related keyphrases
  • Optional: Yoast Local SEO 15.x for public organization and location data resolved from the Schema graph
  • Optional: IsuDev Schema Extended 0.2.x for structured Service entity writes (PHP 8.4+ is required by that optional plugin)

Automatic updates

Packaged installs use Plugin Update Checker to discover WP Content Bridge releases from GitHub. Update checks initialize only in WordPress admin or cron, and downloads use the packaged wp-content-bridge.zip GitHub release asset — never GitHub's dependency-free source archive.

Self-updates are disabled automatically when the plugin directory contains .git, protecting source checkouts from being overwritten. A site whose plugin files are managed by Composer or deployment automation should also disable the WordPress updater in wp-config.php:

define( 'WPCB_DISABLE_SELF_UPDATES', true );

Site infrastructure may alternatively return false from wp_content_bridge_self_updates_enabled. The release ZIP contains the production updater dependency; a source checkout still requires Composer.

Implemented abilities

All IDs use the wp-content-bridge/ namespace. Every ability has a strict output JSON Schema, abilities accepting input also have a strict input schema, and every registration declares a permission callback, REST visibility, MCP projection metadata, and readonly, destructive, and idempotent safety annotations.

Ability Registration WPCB capability What it provides
search-content Always wpcb_read_content Authorization-aware content search with content type, status, author, taxonomy, date, ordering, and pagination filters.
get-content Always wpcb_read_content One content object with selected representations, relationships, featured-image ID and URL, and a concurrency token.
get-block-tree Always wpcb_read_content One content object's Gutenberg structure as a flat, path-addressed node list, without full block markup.
get-url-seo Always wpcb_read_content Normalized configured and resolved SEO for one readable post ID or same-origin URL.
get-editorial-context Always wpcb_read_content Bounded post types, taxonomies, terms, authors, recent content, and public Local SEO entities.
get-diagnostics Always wpcb_read_content Safe compatibility and availability information without secrets or server paths.
get-media Media reads enabled wpcb_read_media Paginated media listing and exact ID, URL, filename, or text lookup.
get-media-by-id Media reads enabled wpcb_read_media One exact, authorized attachment in a stable object envelope.
list-block-patterns Pattern reads enabled wpcb_read_patterns Registered local block-pattern metadata and optional complete Gutenberg markup.
create-draft Content writes enabled wpcb_edit_content Creates a draft with Gutenberg markup, excerpt, taxonomies, and optional idempotency.
update-content Content writes enabled wpcb_edit_content Updates selected content fields with optimistic concurrency and a WordPress revision.
preview-update-content Content writes enabled wpcb_edit_content Returns current and prospective title/content/excerpt/taxonomies for an update without writing.
update-block Content writes enabled wpcb_edit_content Replaces exactly one block subtree, addressed by path, leaving every other block byte-identical; empty markup deletes it.
preview-update-block Content writes enabled wpcb_edit_content Returns the whole post_content that update-block would store, without writing.
update-block-attributes Content writes enabled wpcb_edit_content Shallow-merges a JSON object into one block's attrs, addressed by path, without hand-written delimiter JSON.
update-seo Content writes enabled wpcb_manage_seo Updates supported Yoast fields and returns the effective SEO document after the write.
preview-update-seo Content writes enabled wpcb_manage_seo Returns the current resolved SEO document and sanitized prospective field values without writing.
get-service-schema Content writes enabled and Schema Extended active wpcb_manage_seo Reads the independently saved Service, areaServed, brand, and OfferCatalog configuration.
preview-update-service-schema Content writes enabled and Schema Extended active wpcb_manage_seo Returns current and provider-sanitized prospective Service configuration without writing.
update-service-schema Content writes enabled and Schema Extended active wpcb_manage_seo Updates a fixed Service, areaServed, brand, and OfferCatalog field set and returns the effective configuration.
get-custom-schema Content writes enabled and Schema Extended 0.3+ active wpcb_manage_seo Reads bounded Custom Schema JSON and structural validation diagnostics.
preview-update-custom-schema Content writes enabled and Schema Extended 0.3+ active wpcb_manage_seo Validates prospective Custom Schema without writing; reports save and render eligibility.
update-custom-schema Content writes enabled and Schema Extended 0.3+ active wpcb_manage_seo Writes validated Custom Schema through the provider's public integration contract.
trash-content Content writes and trash enabled wpcb_delete_content Moves an authorized object to reversible WordPress trash without exposing permanent deletion.
restore-trashed-content Content writes and trash enabled wpcb_delete_content Restores a trashed object to its safe pre-trash status; never publish or future.
get-llms-txt Always wpcb_manage_llms Reads the llms.txt configuration, snapshot summary, ownership state, and a concurrency token. Never returns a filesystem path.
preview-update-llms-txt llms.txt enabled wpcb_manage_llms Returns the document a configuration would produce, and its diff against the stored one, without writing.
update-llms-txt llms.txt enabled wpcb_manage_llms Replaces the configuration and regenerates the published snapshot under optimistic concurrency.
regenerate-llms-txt llms.txt enabled wpcb_manage_llms Rebuilds the snapshot from current content; idempotent for unchanged source and configuration.
get-status-transitions Always wpcb_read_content Reports one object's current status, the permitted target statuses under the configured allowlist, which gates the caller satisfies for each, and whether scheduled publication can actually run on this site.
transition-content-status Content writes enabled wpcb_edit_content (+ wpcb_publish_content for publish/future) Moves one object between statuses along an administrator-configured pair, with optimistic concurrency; publish_at schedules and is validated before any write.

A WPCB capability never grants access by itself. Operations also enforce the configured policy and the matching native WordPress type or object capability.

Ability reference

wp-content-bridge/search-content

Finds content the current WordPress user is allowed to read.

Inputs include:

  • free-text query;
  • selected post types, statuses, and author IDs;
  • up to 10 public or REST-visible taxonomy filters;
  • published and modified date ranges;
  • relevance, date, modified, title, or id ordering;
  • pages of up to 100 results.

Authorization is applied before pagination. The ability scans at most 1,000 candidates and reports whether the returned total is exact. Results never include objects already known to be unreadable.

wp-content-bridge/get-content

Returns one authorized WordPress content object by positive post_id.

The caller can select:

  • raw, rendered, and plain_text content representations;
  • author, taxonomy, featured-media, and revision relationships.

The response includes identity, status, URL, publication and modification dates, selected content, byte counts, provenance, warnings, and a version_token. Content summaries expose both nullable featured_image_id and featured_image_url, avoiding attachment-ID guessing.

Selected representations have a combined 2 MiB limit. Oversized content fails explicitly instead of returning truncated Gutenberg markup.

wp-content-bridge/get-block-tree

Returns one readable post's Gutenberg structure as a flat, path-addressed list of nodes instead of its full markup. Same sensitivity as get-content: always registered, and requires wpcb_read_content, native read_post, and the post type's Read policy.

Each node carries its path (zero-based indices into successive innerBlocks arrays), block_name, an inner_blocks child count, a bounded text preview, and text_source (inner_html, attrs, or null) recording where that preview came from. parse_blocks() emits block_name: null freeform nodes for whitespace between blocks; these occupy real indices that a later write mutates, so they are always included, never skipped.

Optional path returns a subtree instead of the whole document, and max_depth bounds how deep it is walked. Raw attrs are opt-in via include_attrs — omitted by default, since emitting them for a whole document can produce a response larger than the content it replaces — and are individually withheld (attrs_omitted: true) above a 512-byte encoded bound per node. The response is capped at 500 nodes, with truncated: true when the cap stops traversal early, and returns a version_token to pass to update-block, preview-update-block, or update-block-attributes.

wp-content-bridge/get-url-seo

Returns normalized SEO for exactly one readable post_id or same-origin URL.

The response separates:

  • configured editor values;
  • resolved public title, description, canonical, robots, Open Graph, Twitter, and Local business data;
  • available SEO and readability analysis;
  • a bounded Schema graph;
  • provider identity, module versions, completeness, provenance, and warnings.

Yoast's public resolved output is preferred over database internals. Raw Yoast options, indexables, licenses, and unrestricted _yoast_* metadata are never returned.

wp-content-bridge/get-editorial-context

Returns bounded site context an integration can use before planning or editing content. It does not generate a content plan and does not call an AI model.

The caller can request any of six sections:

  • post types;
  • taxonomies;
  • terms;
  • observed authors;
  • recent readable content;
  • public Local SEO businesses and locations.

Post-type and taxonomy selections are limited to 20. Recent content is limited to 50 items, and terms are limited to 100 per taxonomy. Authors are derived from readable recent content and contain only ID and display name; this is not a general WordPress user-enumeration endpoint.

wp-content-bridge/get-diagnostics

Reports safe operational information needed to configure or troubleshoot an integration, including:

  • plugin and WordPress versions;
  • Abilities API and MCP Adapter availability;
  • active SEO provider and safe module availability;
  • configured readable post types;
  • the maximum content-representation payload size.

It does not return credentials, usernames, database details, filesystem paths, private options, or license data.

wp-content-bridge/get-media

Lists or searches attachments the current user may read. Media reads are independently disabled by default.

The caller may use at most one selector:

  • exact attachment ID;
  • exact same-site original URL;
  • exact filename;
  • bounded text query.

With no selector, the newest authorized attachments are returned. Pages contain up to 100 items and candidate scanning is capped at 1,000. Native read_post authorization is applied before pagination.

Every media item contains exactly:

  • id;
  • title;
  • filename;
  • url;
  • alt_text;
  • caption;
  • description;
  • mime_type.

wp-content-bridge/get-media-by-id

Returns one exact attachment by positive ID using the same normalized media shape as get-media. Missing and unauthorized attachments intentionally use the same unavailable response so the ability cannot be used as an enumeration oracle.

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v0.10.0 Sep 3, 2026 wp-content-bridge.zip 2
v0.9.0 Sep 3, 2026 wp-content-bridge.zip 0
v0.8.4 Sep 3, 2026 wp-content-bridge.zip 0
v0.8.3 Aug 14, 2026 wp-content-bridge.zip 1
v0.8.2 Aug 12, 2026 wp-content-bridge.zip 1
v0.8.1 Aug 11, 2026 wp-content-bridge.zip 2
v0.8.0 Aug 11, 2026 wp-content-bridge.zip 1
v0.7.1 Aug 9, 2026 wp-content-bridge.zip 2
v0.7.0 Aug 9, 2026 wp-content-bridge.zip 3
v0.6.0 Aug 9, 2026 wp-content-bridge.zip 1
v0.5.0 Aug 7, 2026 wp-content-bridge.zip 1
v0.4.5 Aug 7, 2026 wp-content-bridge.zip 2
v0.4.0 Aug 7, 2026 wp-content-bridge.zip 1
v0.3.1 Aug 7, 2026 wp-content-bridge.zip 0
v0.3.0 Aug 3, 2026 wp-content-bridge.zip 1
v0.2.3 Aug 3, 2026 wp-content-bridge.zip 0
v0.2.2 Aug 3, 2026 wp-content-bridge.zip 1
v0.2.1 Jul 24, 2026 wp-content-bridge.zip 1
v0.2.0 Jul 21, 2026 wp-content-bridge.zip 1
v0.1.5 Jul 21, 2026 wp-content-bridge.zip 0
v0.1.3 Jul 21, 2026 wp-content-bridge.zip 0
v0.1.2 Jul 21, 2026 wp-content-bridge.zip 1
v0.1.1 Jul 21, 2026 wp-content-bridge.zip 2
v0.1.0-dev Jul 21, 2026