Custom dataPro
JetEngine MCP for custom content types and their records
JetEngine gives each Custom Content Type a database table of its own, and that makes a JetEngine MCP connection different from a meta-field plugin: changing a CCT is a schema migration, and its items are rows rather than posts. GoBuildWP Pro separates the two, with one set of abilities for the type and another for its records, alongside meta boxes, options pages and JetEngine post types.
Add a warranty_months number field to our Products CCT and set it to 24 on SKU A-100.
wppilot/jetengine-check-setupReadConfirms cct_module_active and that the current user can manage JetEngine.
wppilot/jetengine-get-cctReadReturns the full definition with records_count; its db_field_data is the list to extend.
wppilot/jetengine-edit-cctConfirm firstSends every existing field plus warranty_months. JetEngine adds the column; a field left out would be dropped, which needs confirm.
wppilot/jetengine-get-cct-recordReadFinds the row by key_field_value A-100 instead of guessing its _ID.
wppilot/jetengine-edit-cct-recordWriteWrites only warranty_months; every other column in the row is untouched.
- Edition
- Pro
- Abilities
- 26
- Requires
- WordPress 6.9+, PHP 8.0+, JetEngine 3.8.6.2+
Data model
Tables, one option row, and PHP registrations
Crocoblock's documentation describes a CCT as a post-type-like structure whose items each occupy one row in a dedicated table, named from the wp_jet_cct_ prefix plus the slug. Fields are columns, so adding a field adds a column and removing one drops it with its data. Records have an auto-increment _ID and, optionally, one field flagged as the key field, such as a SKU.
Meta boxes are different: all of them live in one option row, jet_engine_meta_boxes, which is why their writes are the only JetEngine changes the GoBuildWP change log can restore. Post types, options pages and CCTs are rows in JetEngine's own jet_* tables, and JetEngine re-registers its post types with register_post_type on every load.
Any of these can also be registered from PHP through JetEngine's filters. Those records list with source php and editable: false, and edits refuse with a not_editable error; the change has to be made in the file.
Worked example
Adding a column to a product CCT
Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.
The table has a new column and SKU A-100 carries 24 in it. Neither step can be rolled back from the change log, because both land in JetEngine's tables. If the CCT had no key field, the record lookup would need the _ID instead.
Before destructive schema migration, verify a schema export and usable backup. Reread the changed column and record and inspect the native editor. A CCT record is not a WordPress post.
jetengine-check-setupConfirms cct_module_active and that the current user can manage JetEngine.
jetengine-get-cctReturns the full definition with records_count; its db_field_data is the list to extend.
jetengine-edit-cctSends every existing field plus warranty_months. JetEngine adds the column; a field left out would be dropped, which needs confirm.
jetengine-get-cct-recordFinds the row by key_field_value A-100 instead of guessing its _ID.
jetengine-edit-cct-recordWrites only warranty_months; every other column in the row is untouched.
Abilities
JetEngine abilities by effect
Inspect11
jetengine-check-setupCheck JetEngine Setupjetengine-get-cctGet JetEngine CCTjetengine-get-cct-recordGet JetEngine CCT Recordjetengine-get-meta-boxGet JetEngine Meta Boxjetengine-get-options-pageGet JetEngine Options Pagejetengine-get-post-typeGet JetEngine Post Typejetengine-list-cct-recordsList JetEngine CCT Recordsjetengine-list-cctsList JetEngine CCT Typesjetengine-list-meta-boxesList JetEngine Meta Boxesjetengine-list-options-pagesList JetEngine Options Pagesjetengine-list-post-typesList JetEngine Post Types
Create and change9
jetengine-create-cctCreate JetEngine CCTjetengine-create-cct-recordCreate JetEngine CCT Recordjetengine-create-meta-boxCreate JetEngine Meta Boxjetengine-create-options-pageCreate JetEngine Options Pagejetengine-create-post-typeCreate JetEngine Post Typejetengine-edit-cct-recordEdit JetEngine CCT Recordjetengine-edit-meta-boxEdit JetEngine Meta Boxjetengine-edit-options-pageEdit JetEngine Options Pagejetengine-edit-post-typeEdit JetEngine Post Type
Destructive6
Reference: /docs/reference/jetengine
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
Schema changes JetEngine abilities refuse
- Removing a CCT field drops its column and every value in it. edit-cct refuses with wppilot_confirmation_required and names the columns until confirm: true is passed.
- Renaming a CCT field, changing its SQL type and toggling is_key_field are all rejected; add a new field and migrate instead.
- delete-cct refuses while the table holds rows (cct_has_content) unless force is true, which drops the table for good.
- Only meta box writes are restorable from the change log. Post types, options pages, CCT definitions and CCT records are recorded without an undo.
- Query Builder queries, listings, relations and glossaries have no abilities in this module.
Other plugins
JetEngine's own MCP server
- JetEngine includes an MCP server of its own at jet-engine/v1/mcp. When we looked on 29 September 2026 it offered add-style tools, including listings, queries, relations and glossaries, which GoBuildWP does not cover, while GoBuildWP's module also lists, reads, edits and deletes, and works on CCT records. Its coverage can change with any JetEngine release, so check its current documentation before deciding which server handles a task. Both can be connected to the same client.
- JetEngine is one of the providers fields-bulk-update-values can write through when the same meta value goes on many posts.
JetEngine data work
Working through CCT records in volume
Most day-to-day JetEngine MCP work is not schema at all. It is finding and correcting rows: directory entries with a wrong phone number, products whose warranty changed, events with a missing venue. jetengine-list-cct-records pages through a CCT fifty rows at a time by default and up to two hundred, sorts on any column, and takes a where object for simple equality filters that are ANDed together. That is enough to answer 'which rows have status draft and city Leeds' without SQL.
Changes then go row by row through jetengine-edit-cct-record, which writes only the fields you send and returns the merged record. Selecting by key_field_value, such as a SKU, is safer than by _ID when the agent is working from a spreadsheet the client sent, because the spreadsheet never knew the auto-increment numbers.
- A new row whose key value already exists is refused with cct_record_key_collision, so imports cannot silently duplicate a SKU.
- A field name the CCT does not define returns cct_invalid_field rather than being dropped.
- None of these record writes can be rolled back from the change log, so for a large correction export the affected rows first with list-cct-records and keep that output.
A schema export before every CCT migration
jetengine-get-cct returns a definition in the same shape jetengine-create-cct accepts, minus the read-only extras. Saving that output before an edit gives you a schema export you can recreate the type from, which is the minimum the workflow checks ask for alongside a database backup. On a site running a supported backup plugin, backup-status shows whether a recent good backup exists before anyone touches db_field_data.
Plan field changes around what edit-cct refuses. Renames, SQL type changes and moving the key flag are rejected before any write, so a change of format means adding a new field, copying values across with record edits, and only then removing the old field with an explicit confirm. Each step can be checked on its own, and the destructive one comes last.
JetEngine post types and meta boxes: what replaces what
JetEngine post types come back in JetEngine's grouped shape: general_settings, labels, advanced_settings and meta_fields. jetengine-edit-post-type merges each group you send key by key, but meta_fields replaces the whole array, and the slug cannot be changed here at all because existing posts would need remapping. Types that WordPress or another plugin registers are not in JetEngine's store and return post_type_not_found.
Meta boxes follow a similar rule with a sharper edge. Sending args.allowed_post_type or args.visibility_conditions replaces that list, so attaching an existing meta box to one more post type means sending every post type it should keep. The upside is that meta boxes live in one option row, so a meta box edit is the JetEngine change the GoBuildWP change log can restore if the result is wrong.
Questions
JetEngine questions
Is a JetEngine CCT item a WordPress post?
No. It is a row in the CCT's own table, so post abilities do not see it. Use the jetengine-*-cct-record abilities, which select by _ID or by the key field.
Can an AI agent change the type of a CCT column?
No. edit-cct rejects SQL type changes with cct_field_type_change_not_supported, because JetEngine cannot convert the existing values safely.
Do I need GoBuildWP if JetEngine already has an MCP server?
Choose by the exact task and installed release. GoBuildWP documents its CPT, CCT, schema and record operations in the linked reference. Check JetEngine's current native documentation separately before assuming a coverage gap or connecting both servers; this page does not establish current native-server coverage or adoption.
Why can't the agent edit a meta box I can see in JetEngine?
It was registered from PHP. It lists as editable: false and has to be changed in the code that registers it.
JetEngine documents a vendor MCP server. GoBuildWP's content modelling abilities use their own inputs; confirm the object type, metadata structure and query dependencies on the installed site. JetEngine MCP client guide
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.
JetEngine is a separate product; no partnership or endorsement is implied.