Skip to content
WP EngineDocumentation

Search for abilities

The search_abilities tool finds abilities across all your WordPress sites (or a specific site) using relevance-ranked matching. It’s faster than listing every site’s catalog when you know what you’re looking for.

  • A personal API key configured in your MCP client
  • At least one site where you have connected your WordPress account
  • The site’s ability catalog synchronized (happens automatically once you connect)

Ask Claude to search without specifying a site:

Search my WordPress sites for abilities related to "create post"

Claude calls search_abilities with:

{
"query": "create post",
"limit": 10
}

Example response:

Found 3 abilities across 2 sites:
1. core/create-post (example.com)
Create a new WordPress post
Category: Content
2. core/create-page (example.com)
Create a new WordPress page
Category: Content
3. custom/create-draft (staging.example.com)
Create a draft post with custom fields
Category: Custom

Narrow the search to one site:

Search example.com for "plugin" abilities

Claude calls search_abilities with:

{
"query": "plugin",
"site_id": "site_2f8Kq1xLmR7bTnW4dZyP0c",
"limit": 10
}

This only searches the specified site’s catalog.

Search matches your query against four fields, weighted by relevance:

Field Weight Example match
name Highest core/create-post matches “create”
label High “Create Post” matches “create”
category Medium “Content” matches “content”
description Low “Creates a new WordPress post” matches “post”

Matching is:

  • Case-insensitive — “Create” = “create” = “CREATE”
  • Whole-word, not substring — “post” matches “post” and “posts”, but a short token like “I” in “who am I” will not match every ability that happens to contain the letter. Tokens of three characters or more also match by prefix.
  • Ranked — exact matches in name rank higher than matches in description
  • Floored — a hit must beat a single description-word match. Every hit carries a score, so you can apply a stricter floor of your own.

found: false is a real answer, not an empty list to retry. reason says which case it is:

reason Meaning
no_semantic_match Sites were searched and nothing cleared the floor. Call list_site_abilities once to refresh or browse; repeating search with different wording will not conjure an ability that is not there.
no_connected_sites There is no connected site in scope to search.
empty_catalogs Sites are connected, but no ability could be read from any of them — either never synced or their catalogs could not be read. See degraded_sites.

total_matches counts only hits above the floor.

Limit the number of results returned:

Find the top 5 "comment" abilities

Claude sets limit: 5. The range is 1–25; the default is 10.

If a site’s ability catalog is stale or unavailable, it appears in degraded_sites:

Found 2 abilities, but 1 site catalog is stale:
Degraded sites:
- dev.example.com (catalog stale, last synced 3 days ago)
Refresh it by listing abilities for that site.

To refresh:

List all abilities for dev.example.com

This forces a catalog sync. Then search again.

Search returns each ability’s input_schema, so you can go straight from search to execution:

Search for "create post" abilities, then create a draft post
on example.com titled "Test" with content "Hello"

Claude:

  1. Calls search_abilities to find core/create-post
  2. Calls run_site_ability with the discovered ability name and your input
Query Finds
"create post" Post creation abilities
"plugin" Plugin management (install, activate, etc.)
"user" User management (create, delete, role)
"media" Media upload, attachment, image tools
"taxonomy" Category, tag, custom taxonomy
"export" Data export, backup, migration
Error: No personally connected sites found.
Complete the WordPress account connection flow for at least one site.

Solution: Complete the WordPress account connection flow (see Getting started).

Error: Site example.com not found or not owned by your account.

Verify the site with list_account_sites.

Error: Query must be between 1 and 200 characters.

Shorten your search query to 200 characters or less.

  • Search uses cached catalogs — it never syncs a site inline. Stale catalogs appear in degraded_sites.
  • Account-wide search (no site_id) scans only sites where you have connected your WordPress account.
  • Fast for targeted lookups — “create post” is instant. Don’t use search to browse every ability (use list_site_abilities instead).

Last updated: