Custom dataPro
Pods MCP for pods, field groups, fields and items
Pods decides where each pod's data lives, in meta, in a table of its own, or in a single option, and a Pods MCP call has to work with whichever one a pod uses. GoBuildWP Pro goes through the Pods API, so items are saved the way Pods saves them, relationships included. The abilities are also built to page through large pods one group or one field at a time.
Add an ISBN text field to the book pod and set it on book 57.
wppilot/pods-check-setupReadConfirms the API is loadable and returns counts of pods by type.
wppilot/pods-list-groupsReadShows the groups on book; if there were none, pods-create-group would have to run first.
wppilot/pods-get-field-type-schemaReadLists the option keys for the text type before the field is defined.
wppilot/pods-create-fieldWriteAdds isbn to the details group of the book pod.
wppilot/pods-edit-itemWriteWrites only isbn on item 57; other fields keep their values.
wppilot/pods-get-itemReadReturns the item with its fields resolved, relationships as ids.
- Edition
- Pro
- Abilities
- 25
- Requires
- WordPress 6.9+, PHP 8.0+, Pods 3.2.1.1+
Data model
Pod types and their storage
In Pods 3 every pod, group and field is a Whatsit object, and every field must belong to a group. A pod is one of: a custom post type, a taxonomy, an Advanced Content Type, a settings page, or an existing object extended with Pods fields (post, page, media, users, comments or a registered taxonomy).
Where values go depends on that type. Post-type and taxonomy pods keep their fields in meta by default, or in a table when Pods' Table Storage component is used. An Advanced Content Type is not a post at all: Pods gives it its own table, wp_pods_<name>, which is a different query and storage model to evaluate on the actual dataset. A settings pod is one options blob with no rows.
For an agent, this means an item is addressed by the pod plus an id, and a settings pod still takes an id (0 by convention) that Pods ignores. Pods caches definitions within a request; the abilities flush that cache after each schema write, so a read straight after sees the change.
Abilities
Pods abilities by effect
Inspect9
Create and change12
pods-create-actCreate Pods Advanced Content Typepods-create-cptCreate Pods CPTpods-create-fieldCreate Pods Fieldpods-create-groupCreate Pods Field Grouppods-create-itemCreate Pods Itempods-create-settingsCreate Pods Settings Pagepods-create-taxonomyCreate Pods Taxonomypods-edit-fieldEdit Pods Fieldpods-edit-groupEdit Pods Field Grouppods-edit-itemEdit Pods Itempods-edit-podEdit Podpods-extend-builtinExtend Built-in WP Object with Pods
Reference: /docs/reference/pods
Documented source abilities; live registration can be narrower. Edition and effect labels describe the source catalogue. The installed schema, dependency versions, licence, WordPress capability, safety profile and per-ability policy determine availability; labels alone do not prove confirmation or recovery.
Limits
Irreversible by design
- Every pods-* write, from a new pod to a single item edit, is logged without an undo. Shared bulk writes to supported post meta can retain per-post before-images; table storage is excluded. Plan schema changes as migrations and keep a backup.
- pods-delete-field wipes that field's stored values wherever they live. pods-delete-pod keeps posts, terms and table rows unless delete_items is true.
- Deleting an item from a post-type pod trashes the post; from a taxonomy pod it deletes the term permanently. delete_wp_object: false keeps the WordPress object.
- pods-list-items takes structured filters only; an old-style raw SQL where string is refused, and there is no OR between filters.
- Field names that clash with WordPress query vars (author, category, post, tag and others) are rejected, and Pods has no repeater field type.
Worked example
Adding a field and filling it
Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.
Book 57 has an ISBN wherever Pods templates or blocks output it. None of these writes can be undone from the GoBuildWP change log: Pods changes land in its definitions, caches and, for table storage, its own tables.
Back up and export the schema before adding the ISBN field. Inspect ISBN in the native editor after readback. pods-* writes have no ledger undo; shared bulk writes to supported post meta can retain before-images. Table storage remains a separate recovery boundary.
pods-check-setupConfirms the API is loadable and returns counts of pods by type.
pods-list-groupsShows the groups on book; if there were none, pods-create-group would have to run first.
pods-get-field-type-schemaLists the option keys for the text type before the field is defined.
pods-create-fieldAdds isbn to the details group of the book pod.
pods-edit-itemWrites only isbn on item 57; other fields keep their values.
pods-get-itemReturns the item with its fields resolved, relationships as ids.
Relationship fields, structured queries and schema migrations
Defining a Pods relationship field that points at the right object
Most Pods MCP sessions that go wrong do so on relationship fields. A pick field needs three options before it is useful: pick_object and pick_val, which name what it points at (another pod, a post type, a taxonomy, users), and pick_format_type, which decides between a single value and multiple values. pods-get-field-type-schema lists those keys for the pick type, along with file_format_type for media fields and number_decimals for numbers, so the agent should call it before pods-create-field rather than guessing option names. The schema is a hint surface: Pods still accepts other option keys it recognises for a type.
When filling a relationship through pods-create-item or pods-edit-item, the value is an item id for a single pick and an array of ids for a multi pick. pods-get-item returns relationships the same way, as ids, so reading a book and writing its author back is a round trip with no lookup by title. Field names must not collide with WordPress query vars, which is why a field for a book's author has to be called something like book_author rather than author.
Querying Pods items without raw SQL
pods-list-items is the read owners lean on for reports, and its filters are deliberately narrower than Pods' own where clause. Each filter names a field (or a field.subfield path) and one of these operators: =, !=, the four numeric comparisons, LIKE and NOT LIKE (Pods adds the wildcards), IN and NOT IN with an array, and EXISTS or NOT EXISTS. Every value goes through prepared statements, REGEXP and RLIKE are not offered, and filters combine with AND only.
orderby accepts column references with an optional ASC or DESC, such as t.post_title ASC, and is validated because Pods writes a dotted orderby into SQL as given. A call returns at most a hundred items; pass fields to project only the columns you need when a pod carries a large WYSIWYG field. A question that needs OR, such as books by one author or in one series, becomes two calls the agent merges.
Renaming a pod or field is a migration, not an edit
pods-edit-pod accepts new_name, and Pods then renames the underlying post type, taxonomy or Advanced Content Type table. pods-edit-field takes new_name too. Both look like a label change in the request and are nothing of the sort: theme templates, Pods templates, shortcodes, saved queries and any code calling pods() or pods_field() with the old name keep using it. Whether existing stored values follow a renamed field on your storage type is something to confirm on a staging copy by reading an item with pods-get-item before and after, since none of the pods-* writes can be undone from the change log.
A safe order for a rename on a live site: export the Pods schema from Pods' own tools and take a database backup, rename on staging, search the theme and plugins for the old name, update those references, then repeat on production in a quiet hour.
Who can change a Pods schema through GoBuildWP
Every Pods ability is Pro and runs only for a user who can manage options. Read Only limits the agent to the inspection abilities, which is enough to document a site's content model: list every pod with its type and storage, then pull groups and fields for each. Production Safe allows schema and item writes; the four deletes are destructive and wait for confirm. pods-delete-group keeps the group's fields by default and only removes them with delete_fields true, so read the confirmation request for that flag before approving. The Pods reference lists every parameter.
- "Read only: document every pod on this site with its storage, groups and fields as a table."
- "Add a multi-select relationship from book to the author pod, check the pick options first, then link book 57 to authors 12 and 14."
- "List published events whose venue field is empty, newest first, showing only title and date."
Questions
Pods questions
Should an agent use an Advanced Content Type or a custom post type in Pods?
A post type when the content needs URLs, the editor, revisions or post abilities. Consider an ACT for data that does not need WordPress post behavior. It has its own table; evaluate its query and storage behavior on the actual dataset.
How do I add Pods fields to normal posts or pages?
pods-extend-builtin wraps the existing type in a pod, after which groups, fields and items work as on any other pod. No new post type is created.
Why does pods-create-field fail on a brand-new pod?
Pods 3 requires every field to belong to a group. Create one with pods-create-group first, then add the field to it.
Can Pods changes made by AI be rolled back?
Not from the change log for Pods' own abilities. The shared fields-bulk-update-values tool is the exception: it records each post separately, and posts whose pod uses meta storage can be restored; table storage cannot.
Where these facts come from
GoBuildWP behaviour is taken from the plugin source and the ability reference; third-party details from the vendor documentation below, checked by the GoBuildWP team.
Pods is a separate product; no partnership or endorsement is implied.