ACF
These abilities register when ACF is detected on the site and a Pro licence is active. If either is missing the module stays absent rather than failing at call time.
At a glance
ACF registers 23 abilities: 10 that only read, 6 that write, and 7 marked destructive. That split is the practical answer to how much of this module can run unattended. Reads cost nothing and are safe to repeat, so discovery is the part to be generous with; the writes are where review belongs, and the destructive calls stop for an explicit confirmation every single time regardless of which profile is active.
What this module is for
Create and manage ACF field groups, options pages, post types, taxonomies, and field values with schema discovery before writes.
Before you rely on it: Back up and stage field-definition changes because schema edits can affect templates and existing content.
Typical workflows
- Inspect a field-group schema before writing values
- Model a post type and taxonomy before content entry
- Update options-page values without touching unrelated settings
The Advanced Custom Fields integration page covers the same module from the workflow side, with the capability map and the questions worth asking before a first write.
Availability on your site
The ACF module needs three things at once: WPPilot Free as the MCP foundation, an active Pro licence, and the companion plugin detected on the site. Miss any one and the module does not register, which is deliberate: an ability that appears in the tool list but fails at call time is worse than an ability that was never offered. What the connected agent can actually call is then narrowed twice more: by the safety profile active on the site, and by the WordPress capabilities of the user behind the credential. A read that succeeds for an administrator can be absent entirely for an editor.
Every write these abilities perform is recorded in the change ledger, and destructive calls can be routed through the approval queue so a person signs off before anything is applied. A successful tool result means the operation returned, not that the front end, the cache, and every dependent template are correct: that still needs a look.
Reads
Available in every safety profile, including Read Only. Inspection costs nothing and is not rate limited.
| Ability | What it does |
|---|---|
wppilot/acf-check-setupCheck ACF Setup | Reports the ACF environment: whether ACF is active, edition (free or pro), version, whether the runtime supports managing post types, taxonomies, and options pages via abilities (Pro 6.5+), and how many ACF-managed post types, taxonomies, and options pages already exist. Use before any ACF operation to verify the runtime is ready. |
wppilot/acf-get-fieldgroup-schemaGet ACF Field Group Schema | Returns the full schema of a specific ACF field group in ACF native format: key, title, fields (with sub_fields for repeaters and layouts for flexible_content), location rules, position, conditional logic, plus a _meta block describing where it is defined and whether it can be edited. |
wppilot/acf-get-options-pageGet ACF Options Page | Returns the full payload of a single ACF-managed options page, including page_title, menu_title, parent_slug, capability, icon_url, position, redirect, post_id, autoload, advanced_configuration, and all other ACF UI options-page fields. Accepts either the ACF key (ui_options_page_<menu_slug>) or the bare menu_slug. |
wppilot/acf-get-post-typeGet ACF Post Type | Returns the full payload of a single ACF-managed post type, including all register_post_type() arguments and ACF-specific keys. Accepts either the ACF key (post_type_<slug>) or the bare slug. |
wppilot/acf-get-taxonomyGet ACF Taxonomy | Returns the full payload of a single ACF-managed taxonomy, including all register_taxonomy() arguments and ACF-specific keys. Accepts either the ACF key (taxonomy_<slug>) or the bare slug. |
wppilot/acf-list-fieldgroupsList ACF Field Groups | Returns a lightweight overview of all ACF field groups: key, id, title, active flag, source (db/json/php), editable flag, fields count, and a one-line location summary. Use to discover what is available before fetching a full schema. |
wppilot/acf-list-options-pagesList ACF Options Pages | Returns a lightweight overview of all ACF-managed options pages: key, slug (menu_slug), title (page_title), active flag, source (db/json/php), parent_slug, capability, menu_title. Use to discover what is available before fetching a full payload via acf-get-options-page. |
wppilot/acf-list-post-typesList ACF Post Types | Returns a lightweight overview of all ACF-managed post types: key, slug, title, active flag, source (db/json/php), public flag, hierarchical flag. Use to discover what is available before fetching a full payload via acf-get-post-type. |
wppilot/acf-list-taxonomiesList ACF Taxonomies | Returns a lightweight overview of all ACF-managed taxonomies: key, slug, title, active flag, source (db/json/php), and the object_type[] (post types this taxonomy is attached to). Use to discover what is available before fetching a full payload via acf-get-taxonomy. |
wppilot/acf-read-valuesRead ACF Values | Reads ACF values from a target (post, user, term, comment, options page). If fields[] is omitted, returns all fields whose location rules apply to the target. format_values defaults to true (formatted: images as arrays with sizes, post objects expanded). Set to false for raw stored data (typically IDs). only_with_values: true skips fields whose stored value is empty. Note: get_field returns ACF default values for never-written fields, so a fresh post may appear pre-populated. |
Writes
Gated by the active profile and your WordPress capabilities. Rate limited to 120 per minute per credential.
| Ability | What it does |
|---|---|
wppilot/acf-create-options-pageCreate ACF Options Page | Creates a new ACF-managed options page from a payload in ACF native format. Top-level shape mirrors acf_add_options_page() arguments. Required minima: menu_slug (alias slug) and page_title (alias title or menu_title). Idempotent by key. Field values stored on the page are then accessed via acf-read-values / acf-write-values with target.type=options and target.id=<post_id> — note: <post_id> defaults to "options" (the shared default ACF options store) unless you pass an explicit post_id on the options-page payload. The menu_slug and post_id are different concepts — passing menu_slug as target.id will read/write to the wrong location. |
wppilot/acf-create-post-typeCreate ACF Post Type | Creates a new ACF-managed post type from a payload in ACF native format. Top-level shape mirrors register_post_type() arguments plus ACF-specific keys (advanced_configuration, active). Required minima: post_type (alias slug) and title (or labels.singular_name). Idempotent by key. |
wppilot/acf-create-taxonomyCreate ACF Taxonomy | Creates a new ACF-managed taxonomy from a payload in ACF native format. Top-level shape mirrors register_taxonomy() arguments plus ACF-specific keys (advanced_configuration, active). Required minima: taxonomy (alias slug) and title (or labels.singular_name). Idempotent by key. |
wppilot/acf-edit-options-pageEdit ACF Options Page | Edits an existing ACF-managed options page in place using ACF native format. Requires key (or menu_slug, resolved by name). Renaming menu_slug only changes the admin URL; field values stored under the page's post_id continue to resolve as long as post_id is preserved. |
wppilot/acf-edit-post-typeEdit ACF Post Type | Edits an existing ACF-managed post type in place using ACF native format. Requires key (or slug, resolved by name). Slug change while content exists attaches a slug_change_orphans_content warning to the response — the edit proceeds, content migration is the agent's responsibility. |
wppilot/acf-edit-taxonomyEdit ACF Taxonomy | Edits an existing ACF-managed taxonomy in place using ACF native format. Requires key (or slug, resolved by name). Slug change while terms exist attaches a slug_change_orphans_content warning to the response — the edit proceeds. |
Destructive
Marked destructive in the source, so each call needs an explicit confirmation flag, every time.
| Ability | What it does |
|---|---|
wppilot/acf-create-fieldgroupCreate ACF Field Group | Creates a new ACF field group from a payload in ACF native format (the same shape produced by ACF Tools → Export). Missing key values are auto-generated. Returns the resulting key, post id, and whether ACF synced the group to local JSON. Refuses if the supplied key already matches an existing field group. |
wppilot/acf-delete-fieldgroupDelete ACF Field Group | Deletes a field group permanently. Values previously stored under that group remain in postmeta but become unreachable via the ACF API. |
wppilot/acf-delete-options-pageDelete ACF Options Page | Permanently deletes an ACF-managed options page. The deletion does not touch wp_options; field values previously stored under the page's post_id remain in the database but are no longer reachable through the ACF UI. |
wppilot/acf-delete-post-typeDelete ACF Post Type | Permanently deletes an ACF-managed post type. Refuses to delete when posts of this type exist unless force=true is passed. The deletion does not touch wp_posts; orphaned posts remain in the database with a post_type that is no longer registered. |
wppilot/acf-delete-taxonomyDelete ACF Taxonomy | Permanently deletes an ACF-managed taxonomy. Refuses to delete when terms exist unless force=true. The deletion does not touch wp_term_taxonomy; orphaned terms remain in the database with a taxonomy that is no longer registered. |
wppilot/acf-edit-fieldgroupEdit ACF Field Group | Edits an existing ACF field group in place using ACF native format. Top-level keys (title, location, position, active, etc.) follow PATCH semantics — fields the agent omits are preserved from the existing record. The fields[] array, in contrast, follows REPLACE semantics: any field not in the payload is removed. Renaming a field key orphans values stored under the old key, so preserve keys to keep data. Refuses field groups whose source is "php" (registered in code). |
wppilot/acf-write-valuesWrite ACF Values | Writes a batch of ACF values to a target. Atomic field types accept the value directly: { "subtitle": "Hello" }. Complex field types (repeater, flexible_content, gallery, clone, group) require an explicit consent wrapper: { "features": { "value": [...], "mode": "replace" } }, because writing a complex value replaces the entire previous content. Pre-flight validation via acf_validate_value() enforces required and format constraints; any failure rejects the entire batch — no partial writes. Writes use update_field(), so acf/update_value hooks fire; acf/save_post does not fire because there is no admin save-post submission. Field keys (recommended) and names are both accepted. |