Wordpress Request
wordpress_requestEdit WordPress site pages, posts, menus, categories, comments, and settings by running a single REST API call, with no password or extra setup required.
Instructions
EDIT A CLOUD FOR WORDPRESS SITE'S CONTENT: pages, posts, menus, categories, comments, site title and anything else in the WordPress REST API. This is the tool to use when the user asks to change what is on their WordPress site. It runs one REST call inside the site, so no password or extra setup is needed. path is the REST route without /wp-json, e.g.:
list pages: GET /wp/v2/pages with query {"_fields": "id,title,link,status"}
read a page to edit it: GET /wp/v2/pages/12 with query {"context": "edit"} (content.raw is the block markup to change)
update it: POST /wp/v2/pages/12 with body {"content": "..."} (send the whole new content, keeping the block comments)
new post: POST /wp/v2/posts with body {"title": "...", "content": "...", "status": "draft"} (draft first, publish when the user says so)
menus: /wp/v2/navigation, /wp/v2/menu-items; search: GET /wp/v2/search?search=...
widgets (classic themes, e.g. a footer): GET /wp/v2/sidebars first for the real widget-area ids, then POST /wp/v2/widgets with that
sidebarid. Without a validsidebar, WordPress still answers 201 but parks the widget in Inactive widgets, so check the sidebar afterwards. Block themes have no widget areas: edit the footer template part (/wp/v2/template-parts) instead. It acts as theporkbun-agentWordPress editor by default (pages, posts, media, comments). Site settings (title, tagline, homepage), plugins, themes and users needas_administrator: truewithacknowledge_full_access: true; ask the user first. Use _fields and per_page to keep answers small. Show the user what will change before overwriting a page, and offer create_wordpress_backup before big edits. Images: upload with wordpress_upload_media, then use its id or url. WordPress's own errors come back as WP_REST_ERROR with httpStatus and its message.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"domain": "<domain>",
"path": "<path>"
},
"name": "wordpress_request"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST/PUT/PATCH. | |
| path | Yes | REST route, e.g. `/wp/v2/pages` or `/wp/v2/posts/42`. No query string: use `query`. | |
| embed | No | Include linked resources (_embed), e.g. the featured image. | |
| query | No | Query parameters, e.g. {"per_page": 10, "context": "edit", "_fields": "id,title"}. | |
| domain | Yes | The domain of the Cloud for WordPress site, e.g. `example.com`. | |
| method | No | HTTP method (default GET). POST updates an existing item when the path has its id. | |
| dry_run | No | For writes: check the request without sending it to WordPress. | |
| as_administrator | No | Act as the site administrator (settings, plugins, themes, users). Needs acknowledge_full_access. | |
| acknowledge_full_access | No | Confirms the user agreed to administrator-level changes. |