Directory / plugin

Seeb Abilities – 100 New Abilities, Infinite Possibilities for AI Agents

v1.1.0 · by Sanjeev Aryal

Adds new abilities to the WordPress Abilities API, so AI agents and MCP clients can manage posts, blocks, templates, media and more.

About this plugin

Seeb Abilities adds 100 new abilities to WordPress, so AI agents can write and edit posts, build pages block by block, manage patterns, templates, menus and users, moderate comments, audit your content and more, instead of only reading information about your site.

WordPress 6.9 introduced the Abilities API: a standard way for plugins to describe what they can do, with typed inputs and outputs and permission checks, so that AI assistants, Model Context Protocol (MCP) clients and automation tools can discover and use them. Core registers only a few read-only abilities, such as site and environment information. Seeb Abilities fills the gap with the everyday content-management tasks.

Seeb Abilities is best used with the free MCP Adapter plugin, which turns these abilities into MCP tools that Claude, ChatGPT, Cursor, VS Code and other MCP clients can use directly.

Every ability:

  • Uses WordPress’s own functions (wp_insert_post(), wp_update_post(), wp_set_object_terms() and so on), so hooks, caches, revisions and other plugins behave exactly as they do in the admin.
  • Checks the current user’s capabilities for that specific object. An agent connected as an Author can edit their own posts, but not someone else’s and not the site settings.
  • Declares input and output schemas, and annotations (read-only, destructive, idempotent) that clients use to decide when to ask before acting.
  • Is available through the WordPress REST API (/wp-json/wp-abilities/v1/) and, when the MCP Adapter plugin is active, as MCP tools.

100 new abilities

All abilities use the seeb-abilities/ namespace and are grouped into categories.

Content (posts, pages and public custom post types)

  • posts-query: find posts by type, status, author, search term, taxonomy term or date
  • post-get: get a post with its content, terms and featured image
  • post-create: create a post, page or custom post type item
  • post-update: update title, content, excerpt, status, slug, author, date or featured image
  • post-delete: move a post to the trash, or delete it permanently with force
  • post-revisions: list the revisions of a post, pattern, navigation menu or customized template
  • revision-restore: restore any of these to an earlier revision
  • post-restore: restore a post from the trash
  • post-duplicate: copy a post, with its terms, featured image and the custom fields you’re allowed to edit, as a new draft
  • post-meta-get: read a post’s custom fields registered with register_post_meta()
  • post-meta-update: update a post’s registered custom fields
  • content-search: search across all public post types at once
  • posts-bulk-update: change the status, author, comments, stickiness or terms of up to 100 posts at once
  • content-replace: find and replace text across the site (for example an old phone number or domain), as a dry run first
  • revision-diff: see what changed between two revisions
  • page-tree-get: get all pages as a nested tree of parents and children
  • post-lock-check: check whether someone else is editing a post right now
  • trash-empty: permanently delete trashed items, optionally only those trashed a while ago

Taxonomies

  • terms-query: find categories, tags or custom taxonomy terms
  • term-create: create a term
  • term-update: rename a term or change its slug, description or parent
  • post-set-terms: set or append a post’s terms
  • term-delete: delete a term
  • terms-merge: merge duplicate terms into one, moving their posts

Blocks and patterns (block editor)

  • block-types-list: list the registered blocks, with their category, title and description
  • block-type-get: get one block’s attributes, supports, styles and variations, so an agent can write valid block markup
  • post-blocks-get: get a post’s content as a tree of blocks, each with its path (for example 2.0 for the first block inside the third)
  • block-insert: insert one or more blocks at a path, or before or after a block
  • block-update: change a block’s attributes or inner content without touching the rest of the post
  • block-move: move a block to another position
  • block-duplicate: copy a block, with its inner blocks, right after it
  • embed-check: check whether a YouTube, Vimeo, Spotify or other URL can be embedded, and get the embed block markup
  • block-remove: remove a block and its inner blocks
  • blocks-replace: replace every block of one type, or with a given attribute value, across a post (for example turn all core/quote blocks into core/pullquote)
  • blocks-validate: check block markup before saving and report unknown blocks, invalid attributes and broken nesting
  • block-usage-find: find the posts, pages, templates and patterns that use a block type
  • patterns-list: list registered and synced patterns, with their categories
  • pattern-insert: insert a pattern into a post, either as a synced reference or as a copy of its blocks
  • pattern-create: save blocks as a new synced or unsynced pattern
  • pattern-update: update a synced pattern, which changes it everywhere it is used
  • pattern-delete: move a pattern to the trash, or delete it permanently

All block edits are saved as revisions, so any change can be undone with revision-restore. The first change to a theme template creates a customized copy, which template-reset removes again.

Site editor (block themes)

  • templates-list: list templates and template parts, and whether they are customized
  • template-get: get a template or template part as blocks
  • template-update: edit a template or template part with the same block abilities as posts
  • template-reset: remove customizations and go back to the theme’s version
  • global-styles-get: read the site’s global styles: colors, typography and spacing presets, so new blocks match the theme
  • global-styles-update: change the palette, fonts, link colors or block styles, with a revision to undo it
  • custom-css-get: read the Additional CSS (block and classic themes)
  • custom-css-update: replace or add to the Additional CSS, with a revision to undo it

Navigation

  • menus-list: list menus and their locations
  • menu-items-query: list the items of a menu
  • menu-item-add: add a page, post, term or custom link to a menu
  • menu-item-update: change a menu item’s label, URL, parent, position or link target
  • menu-item-delete: remove a menu item
  • menu-create: create a menu
  • menu-delete: delete a menu
  • menu-location-assign: show a menu in a theme location, such as the header or footer

Media

  • media-query: find media library items
  • media-sideload: import an image or file from a URL into the media library
  • media-update: update alt text, caption, title or description
  • media-get: get a media item with its file size and image sizes
  • media-delete: delete a media item
  • media-thumbnails-regenerate: generate the image sizes again, e.g. after switching themes

Comments

  • comments-query: find comments by post, status or author
  • comment-moderate: approve, unapprove, mark as spam or trash a comment
  • comment-reply: reply to a comment as the current user
  • comment-create: add a new comment to a post as the current user
  • comment-update: edit a comment’s text or author details
  • comments-bulk-moderate: approve, spam or trash up to 100 comments at once
  • comments-empty: empty the spam folder or the comment trash
  • comment-blocklist-update: add or remove words, emails and IP addresses on the disallowed and moderation lists

Users

  • users-query: list users with their roles (read-only, requires the list_users capability, never returns passwords)
  • current-user-get: get the connected user’s role and capabilities, so an agent knows what it is allowed to do
  • user-get: get a user’s profile
  • user-create: create a user, who gets an email to set their own password (passwords are never returned)
  • user-update: change a user’s name, email, bio or role (only roles you are allowed to assign, and never your own)
  • user-password-reset-send: email a user a password reset link
  • user-delete: delete a user and give their content to another user (refuses to delete content unless asked to)
  • user-sessions-destroy: log a user out of all browsers and devices
  • roles-list: list roles with their number of users and capabilities
  • privacy-requests-list: list personal data export and erasure requests
  • privacy-request-create: add a personal data export or erasure request

Site

  • settings-get: read general and reading settings
  • settings-update: change site title, tagline, timezone, date format and other allowlisted settings
  • plugins-list: list installed plugins and whether they are active
  • post-types-list: list registered post types and taxonomies
  • site-health-get: get the Site Health status and the tests that need attention
  • cron-events-list: list scheduled (cron) events and when they run next
  • themes-list: list installed themes and which one is active
  • updates-get: list available WordPress, plugin, theme and translation updates (nothing is installed)
  • permalinks-flush: regenerate the permalinks to fix “page not found” errors
  • cache-flush: clear the object cache and the page cache of WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache or SiteGround Speed Optimizer
  • debug-log-get: read the last lines of the PHP error log
  • site-identity-update: set the site logo and site icon

Audit

  • content-analyze: word count, reading time, heading outline and problems, links and images without alt text of a post
  • internal-links-check: find links to drafts, trashed posts, missing uploads and pages that return “not found”
  • images-missing-alt-find: find media library images without alt text
  • content-counts-get: overview of posts, comments, media and users by status, type and role
  • stale-content-find: find published content that hasn’t been updated for a long time
  • unused-terms-find: find categories and tags that aren’t assigned to any post

Safe by default

  • Deleting moves to the trash. Permanent deletion needs force: true and is marked as destructive.
  • Settings can only be read and changed from a fixed allowlist. Arbitrary options are never touched.
  • Protected post meta (keys starting with _) cannot be written.
  • Password-protected content is only returned to users who can edit it.
  • No ability runs PHP or SQL, edits files, or installs, updates or activates plugins.
  • Users are created with a random password that is never returned; they set their own via email. Roles can only be given if the connected user may assign them, and nobody can change their own role.
  • Find and replace runs as a dry run unless told otherwise, saves a revision of each changed post, and skips posts whose block structure would break.
  • Query results are paginated with a maximum page size.
  • Site owners can turn off any ability, or a whole category, under Settings Seeb Abilities.

For developers

  • Filter seeb_abilities_ability_args to change an ability’s arguments before it is registered.
  • Filter seeb_abilities_enabled to enable or disable abilities in code.
  • Filter seeb_abilities_allowed_settings to change which settings settings-get and settings-update can access.

Plugin tags