Enable Abilities for MCP
Enable Abilities for MCP gives you full control over which WordPress Abilities are available to AI assistants through the MCP (Model Context Protocol) Adapter. WordPress 6.9 introduced the Abilities API, allowing external tools to discover and execute actions on your site. This plugin extends that functionality by registering a comprehensive set of content management abilities and providing a simple admin interface to toggle each one on or off. Connect from claude.ai with just a URL Since version 2.1 the plugin ships an embedded OAuth 2.1 server built for claude.ai custom connectors. Add your site in claude.ai → Settings → Connectors, log in with your WordPress user, approve the consent screen — connected. No Client ID, no Application Password, no local configuration. Works from the claude.ai web app, mobile apps, and Claude Desktop Each team member authenticates with their own WordPress account and role — a subscriber can never do what only an editor should Every ability execution lands in the activity log under the real user’s name Works on single sites, subdirectory installs, and multisite networks (network-activate so the main site serves the OAuth discovery documents for every subsite) Prefer tokens? Application Passwords (per-user) and a single-admin Bearer token connect Claude Desktop / Claude Code, OpenAI Codex CLI, and Google Antigravity — the Connection tab generates ready-to-paste configuration for each client, and fills in your credentials automatically. Features 102 abilities organized in 21 categories: Core, Read, Write, SEO (Rank Math), SEO (SEOPress), SEO (Yoast), Navigation Menus, Utility, Multilanguage, Custom Post Types, WooCommerce, The Events Calendar, Code Snippets, JetEngine Options Pages, JetEngine Query Builder, Elementor, LearnDash, Tutor LMS, AI Agent Readiness (llms.txt), FSE Block Templates, and Accessibility (WCAG) WooCommerce integration — dedicated abilities to manage products, orders, and customers using the native WooCommerce API (HPOS-compatible, formally declared) The Events Calendar integration — list, get, create, and update events with venue, organizer, and date filters claude.ai OAuth custom connector — connect from claude.ai (web, mobile, or desktop) with zero local setup: an embedded OAuth 2.1 server with Client ID Metadata Document (CIMD) support lets each user log in with their own WordPress account and role Admin dashboard with toggle switches for each ability Per-ability control — expose only what you need Third-party ability control — abilities registered by other MCP-ready plugins (e.g. Fluent Forms) appear in the same dashboard, grouped by plugin, with the same per-ability toggles; disabling one removes it from every MCP server on the site Secure by design — proper capability checks, input sanitization, and per-post permission validation WPCS compliant — fully passes WordPress Coding Standards (phpcs) MCP-ready — all abilities include show_in_rest and mcp.public metadata Available Abilities Read (safe, query-only): Get posts with filters (status, category, tag, search) Get single post details (content, SEO meta, featured image) Get categories, tags, pages, comments, media, and users Write (create & modify): Create, update, and delete posts Create categories and tags Create pages Moderate comments Reply to comments as the authenticated user Upload images from external URLs to the media library (with optional auto-assign as featured image) Duplicate any post, page, or custom post type item — including all post meta (ACF, SEO, featured image) and taxonomy terms; saved as a draft by default Assign a custom taxonomy’s terms to a post or page (e.g. a taxonomy registered by a companion plugin) SEO — Rank Math: Get full Rank Math metadata for any post/page (title, description, keywords, robots, Open Graph, SEO score) Update Rank Math metadata: SEO title, description, focus keyword, canonical URL, robots, Open Graph, primary category, pillar content SEO — SEOPress: Get full SEOPress metadata for any post/page (title, description, focus keyword, robots, canonical, Open Graph, Twitter Card) Update SEOPress metadata: SEO title, description, focus keyword, canonical URL, robots directives, Open Graph, Twitter Card SEO — Yoast SEO: Get full Yoast SEO metadata for any post/page (title, description, focus keyphrase, canonical, robots, Open Graph, Twitter Card) Update Yoast SEO metadata: SEO title, description, focus keyphrase, canonical URL, robots (noindex, nofollow, advanced), Open Graph, Twitter Card Get Yoast sitemap index — fetch and parse the sitemap index, returning all registered sitemap URLs with last modification date Custom Post Types: List all registered custom post types with configuration and taxonomies Get items from any CPT with filtering, search, and taxonomy queries Get full details of a CPT item including all meta fields (WooCommerce, ACF, JetEngine, etc.) Create, update, and delete CPT items with taxonomy and meta field support Get CPT taxonomies with their terms Assign taxonomy terms to CPT items Read term meta by exact key, or all meta for a term Write a term meta field by exact key Update a term’s core fields: name, slug, description, or parent WooCommerce: List products with price, SKU, stock status, categories, and type Get full product detail including gallery, attributes, and variations Update product price, sale price, stock quantity, and status List orders with customer, total, status, and date (HPOS-compatible) Get full order detail: line items, billing/shipping, totals, and notes Update order status with optional note List customers with email, name, total spent, and order count The Events Calendar: List events with start/end date, venue, organizer, and date range filter Get full event detail with resolved venue address and organizer contact Create new events with title, description, dates, venue, and organizer Update existing events Navigation Menus: List menus with item counts and theme locations, and get one menu’s full item hierarchy Create a new menu, and add pages, posts, categories, tags, or custom URLs as items (with parent and position) Update an item’s title, URL, parent, or position Remove an item, assign a menu to a theme location, or delete a menu entirely (opt-in — destructive) Tutor LMS: Read a lesson’s video source configuration (type, value, and runtime) Set a lesson’s video source (external URL, YouTube, Vimeo, HTML5, or a third-party source such as Bunny.net) using Tutor’s own storage function — avoids the string-only limitation of the generic Update Post Meta ability, which Tutor cannot read back List courses, and get a single course’s full detail with its topics/lessons hierarchy Get a user’s enrollment status and completion progress for a course Get a user’s quiz attempt results, optionally filtered to a single quiz Enroll a user in a course, and unenroll them (both opt-in, manage_options only) Multilanguage: Assign a language to an existing post via Polylang or WPML Link two posts as translations of each other in the same translation group Get the full translation map for a post: language, post ID, title, permalink, and status for each translation LearnDash: List courses with enrollment count, and get a single course’s full detail (lessons, topics, quizzes) Get a user’s enrollment status/progress and quiz results for a course Enroll or unenroll a user in a course (opt-in — write, manage_options) JetEngine Options Pages: List all registered Options Pages with their field schema Get all fields and current values for an Options Page by slug Update a single Options Page field, including repeater rows (opt-in — write) JetEngine Query Builder: List all Query Builder queries with id, name, and query type Get the full settings of one query by id Update an existing query’s name, type, or arguments — the missing counterpart to JetEngine’s own native “Add Query” MCP tool, which has no edit/get/list equivalent (opt-in — write) Elementor: Get a compact, read-only tree of an Elementor page/template (element ids, types, text preview) Update an Elementor element’s settings by id — single or batch edits (opt-in — write) Bind a widget setting to a dynamic tag: post title, or a JetEngine/meta field (opt-in — write) Code Snippets: Create a PHP code snippet via the Code Snippets plugin — always saved as inactive, activate manually from wp-admin. Validates PHP syntax and blocks dangerous functions (eval, exec, shell_exec, and more) AI Agent Readiness (llms.txt): Fetch and validate the site’s llms.txt against the llmstxt.org spec, with actionable issues Write llms.txt content — routes automatically to SEOPress Pro’s option when active, or serves it directly (opt-in — write) FSE Block Templates: List all wp_template and wp_template_part entries for the active theme, merging theme-file defaults with database overrides Get the full block markup for one template or template part by slug Write new block markup to a template or template part — creates a database override automatically when the target is still a theme default; rejects content with unbalanced block-comment delimiters (opt-in — write, edit_theme_options) Accessibility (WCAG): Scan the media library for images missing alt text (WCAG 1.1.1 Non-text Content), paginated Utility: Search and replace text in post content Site statistics overview (includes custom post type counts) Update any post meta field by exact key (with protected internal key blocklist) Requirements WordPress 6.9 or later (Abilities API) MCP Adapter plugin installed and configured PHP 8.0 or later
SocraNext
What the plugin provides – Custom Post Type socranext_post for AI-optimized articles (default URL slug artikelen-sn, configurable via the SocraNext platform). – Custom Taxonomy socranext (hierarchical) for categorizing those articles. – Template-based rendering for single/archive article views (plugin templates via template_include). – Admin screens under SocraNext (Overview, Articles, Categories). FAQ management is handled via the SocraNext platform. – Cache flush on (de)activation to correctly register permalinks. Display The plugin renders views via bundled templates for: – Single SocraNext articles and archive list. Article URL prefixes with WPML WPML determines the canonical URL of an existing article. To change an articles prefix for a language, first configure it in WPML for the SocraNext post type, then enter the same prefix for that language in the SocraNext platform. The platform does not automatically configure WPML’s translated post type prefixes. After saving, check the final article and overview URLs, including redirects from old URLs. Saving an unchanged platform value does not start another URL synchronization. Publishing on the existing WordPress blog New articles use the SocraNext post type by default. In the platform’s project settings, choose the existing WordPress blog to publish new articles as ordinary WordPress posts, with the site’s theme and a selected native blog category. Existing articles retain their post type, URL and locally edited native categories. The selected category must have a translation before publishing a translated article. SocraNext continues to manage its own translations. Managed article saves are excluded from WPML’s automatic translation queue; WPML’s initial “Translate Everything” bulk run does not honor this per-post exclusion, so exclude managed articles from that initial batch. Native posts are rendered by the active theme, not the SocraNext article styler. Moving existing articles into the blog Changing the destination does not move existing content automatically. In the platform settings, preview and move one existing article at a time. The same WordPress post ID, publication date, content, comments, image and platform binding are retained. WordPress assigns the final native permalink and resolves slug collisions; no second article is created. The active theme controls the presentation, including which custom fields it displays. Linked Polylang translations move together, each into the translated native category. A group containing an unpublished or unmanaged translation is rejected before any changes. WPML migrations are explicitly blocked pending a supervised migration; new publication into the WordPress blog remains supported. The plugin records each old canonical URL plus known flat and historical-slug routes, and serves permanent redirects to the current native permalink while it is active. Redirects also follow later native slug edits. Existing live content at a reused URL takes precedence. A saved migration can be retried after interruption, and completed receipts remain available to repair platform URL synchronization. Back up the site and preview the affected language versions before applying; test the public URLs and archive after completion. Structured Data – The FAQ display includes FAQPage JSON-LD to help search engines and AI systems better understand the Q&As. – SocraNext articles output their own SEO title, meta description, Open Graph tags and Article JSON-LD (independent of third-party SEO plugins; mirrored into Yoast / AIOSEO / Rank Math when present). REST API (for platform integration) Under the namespace socranext/v1, routes include: – GET /pages and GET /pages/{id} – list site pages (for adding/showing FAQ widgets). – POST /toggle – enable/disable the FAQ widget per page. – POST /store-aio-information and GET /aio-information/{page_id} – store/retrieve per-page FAQ data. – GET /article-publication and POST /article-publication – read or save the per-site destination (socranext or wordpress_blog) and native categoryId (0 means WordPress default); both require the connection token. The receipt includes native categories and the configured posts-page URL when available. – GET /article-migration lists eligible articles and completed receipts; POST /article-migration accepts postId and dryRun (default true). The token-protected preview and apply responses include the selected receipt plus receipts for its entire translation group, with authoritative IDs, bindings and actual permalinks after apply. – POST /blog and POST /store-blog-custom – create articles and store global custom HTML/CSS/JS for article display. – POST /collection-slugs – sync the configurable articles URL slug from the SocraNext platform (rewrite flush + cache purge). – GET /articles-list-custom – retrieve configuration for list views. – POST /llmstxt and GET /llmstxt – publish and read llms.txt / llms-full.txt content from the SocraNext platform; served at /llms.txt and /llms-full.txt on the site. – POST /cache/refresh with {"url":"https://your-site.example/page/"} – request a cache refresh for exactly one canonical URL on the site’s own origin (same scheme, host and port). Credentials, query strings, fragments and wildcards are rejected. Only integrations scoped to one URL are used; recursive integrations such as WP Rocket are reported in cache.unsupported_integrations and never called. This does not save, regenerate or delete content, change settings, or disconnect the plugin. HTTP 501 means no supported integration; HTTP 502 reports failed or incomplete integration coverage. A successful receipt lists affected_urls and purged_urls and confirms dispatch, not verified public-page freshness. – POST /delete-socranext-content-and-disconnect – permanently remove SocraNext-managed content/settings and deactivate the plugin, using the existing connection-token authorization. This is destructive and is never a cache operation. Success includes operation: "delete-socranext-content-and-disconnect". – POST /purge is retired and always returns HTTP 410 without changing content, settings or caches. Integrations must use the explicit operation; there is no compatibility fallback. Note: without an account/connection to app.socranext.ai, the auto-generation routes are typically not used, but the created post types, taxonomy, and pages remain available for display. Privacy & external services – The plugin does not call external APIs on its own; the integration is typically initiated by the SocraNext platform to your website. – Websites: product site https://socranext.ai and platform https://app.socranext.ai. Prefix & naming policy All plugin identifiers use the unique prefix family “SocraNext”: Functions, hooks, options, AJAX actions, REST namespace, script/style handles: socranext_* (lowercase) Constants: SOCRANEXT_* (uppercase) Human-facing labels and PHP namespaces (if used): SocraNext (PascalCase) We avoid reserved prefixes like wp_, _, and __ for custom identifiers. Existing options and routes already comply; no migrations are required.