What the assistant can do
Every tool the connector offers, what it does, and whether it spends one of the ten free actions.
This page is generated from the server's own tool definitions, so it cannot drift from what your assistant is actually offered.
Names are stable: a tool is wp_<resource>_<verb>, and the names are a public API. You never
type them. They are here because an assistant names the tool it used, and this is where you
look it up.
The last column is the one that costs you something. On the Free tier a site has ten actions,
once. Reads are unlimited on every tier. A call that is refused or fails does not count, and
neither does a dry_run. See plans and actions.
Core
Always on. Start every conversation with site information.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_site_info | Reports what this site is and what this credential can do: version, theme type, post types, taxonomies, capabilities, and every v1 tool unavailable… | Read | No |
wp_search | Finds posts and terms by keyword across types, and resolves a slug or a URL on this site's own origin. | Read | No |
wp_posts_list | Lists posts of one type with status, author, term, date and search filters; thin rows only. | Read | No |
wp_posts_get | Reads one post by id, or by slug plus type: content as markdown, blocks or html, plus content_hash and the block handles wp_posts_write needs. | Read | No |
wp_posts_write | Creates a post when id is absent, otherwise patches it. | Write | Yes |
wp_posts_delete | Trashes posts by id, or removes them permanently with force plus confirm. | Write | Yes |
Terms and comments
Always on.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_terms_list | Lists terms of one taxonomy with their ids, parents and post counts — the ids wp_posts_write needs. | Read | No |
wp_terms_write | Creates a term (name), updates one (id), or deletes one (delete plus confirm). | Write | Yes |
wp_comments_list | Lists comments with author, date, status and a 200-character excerpt; full bodies only with include_body. | Read | No |
wp_comments_moderate | Approves, holds, spams, trashes or replies to comments: up to 200 ids, 50 moderated per call, one request each, with the rest returned as next_args. | Write | Yes |
Media
Always on.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_media_list | Browse the media library with filters for type, parent post, author and date, or fetch exact rows by id with ids. | Read | No |
wp_media_upload | Upload a file from a configured media root, an https URL, or a small base64 payload, and optionally attach it or set it as a post featured image. | Write | Yes |
wp_media_update | Change an attachment title, alt text, caption, description or parent post, and optionally set it as a featured image. | Write | Yes |
wp_media_delete | Permanently delete an attachment and its generated sizes. | Write | Yes |
Design, templates, menus and widgets
Always on. Most of these need an administrator credential, and the block-theme tools need a block theme.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_theme_get | Reads the active theme: name, version, is_block_theme, supports. | Read | No |
wp_global_styles_get | Reads the user theme.json overrides, the theme defaults, the resolved merge of the two, and the revision list, plus a content_hash to pass to… | Read | No |
wp_global_styles_update | Reads the current user theme.json, deep-merges your patch, and writes the complete object back (WordPress replaces, never merges). | Write | Yes |
wp_templates_list | Lists block-theme templates and template parts with their theme//slug id, source (theme or custom) and area. | Read | No |
wp_templates_write | Creates a template or part, replaces its block markup under a drift check, or resets a customised one back to the theme file (a permanent delete of… | Write | Yes |
wp_navigation_get | Lists the wp_navigation menus, or reads one by id: its stored block markup, the content_hash wp_navigation_write wants as expected_hash, block… | Read | No |
wp_navigation_write | Creates a wp_navigation post from a nested markdown bullet list of links, or replaces an existing one with block markup under a drift check. | Write | Yes |
wp_menus_get | Lists classic nav menus with their theme locations and item counts, or reads one by id: every item as {id, title, url, type, object, object_id… | Read | No |
wp_menus_write | Creates or updates a classic nav menu, its items (renumbered in array order) and its theme locations. | Write | Yes |
wp_widgets_get | Lists the classic widget sidebars and, in order, the widgets in each: id, id_base, the instance.raw wp_widgets_write takes back, and a short… | Read | No |
wp_widgets_write | Manages classic-theme widgets in a sidebar. | Write | Yes |
wp_site_identity_write | Writes site identity through /wp/v2/settings: title, tagline, logo and icon attachment ids, and the front-page configuration. | Write | Yes |
wp_patterns_list | Lists the patterns the theme and plugins register, and the synced patterns (wp_block posts) this site stores. | Read | No |
Blocks
Always on. Parses block markup locally, without touching the site.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_blocks_validate | Parses block markup locally: unclosed delimiters, malformed attribute JSON, stray HTML between inner blocks, unknown block names. | Read | No |
Companion-plugin abilities
On, limited to the wpreef namespace: the companion plugin and nothing else.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_abilities_list | Lists the WordPress Abilities this site exposes (core 6.9+, and plugins such as wpreef-bridge): name, the HTTP verb its annotations imply, and whether… | Read | No |
wp_ability_run | Runs one WordPress Ability by name (find it with wp_abilities_list): theme mods, updates and other work core REST cannot do. | Write | Yes, for any run that is not a read |
Plugins, settings and users
Not offered by the hosted connector. Available in the npm package when you switch the admin toolset on deliberately.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_plugins_list | Lists installed plugins with status, version and author; the plugin id in the first column is what wp_plugins_manage and wp_plugins_delete take. | Read | No |
wp_plugins_manage | Install a plugin from wordpress.org by slug, or activate or deactivate an installed one by its plugin id. | Write | Yes |
wp_plugins_delete | Permanently delete an installed plugin and its files. | Write | Yes |
wp_settings_get | Reads every setting exposed at /wp/v2/settings with its value, type and description. | Read | No |
wp_settings_update | Change core site settings such as title, tagline, front page or timezone. | Write | Yes |
wp_users_list | Lists site users with their roles. | Read | No |
wp_users_write | Create a user, change name, email, password or roles, or delete one and reassign their content. | Write | Yes |
wp_site_health | Runs the WordPress site-health checks — background updates, loopback requests, HTTPS, wordpress.org communication, Authorization header, page cache —… | Read | No |
Raw requests
Not offered by the hosted connector. Available in the npm package when you switch the raw toolset on deliberately.
| Tool | What it does | Read or write | Counts as an action |
|---|---|---|---|
wp_request | Send any WordPress REST request when no typed tool covers it. | Write | Yes |
Why this matters
Every tool carries annotations saying whether it only reads, whether it can destroy something and whether repeating it is safe. ChatGPT and Claude use them to decide when to ask you first, and wpreef uses the read-only one to decide what counts as an action. They are declared once, in the server, which is why this table can be generated rather than maintained.
Tools that are not offered here
The npm package also ships admin and raw toolsets. The hosted connector never offers
them, whatever a site row says, and it forces off the policy flag that would let a tool fetch a
URL. Run the package locally if you want them.