GoBuildWP

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.

AI clientyour-site.comVerify site policy

Add a warranty_months number field to our Products CCT and set it to 24 on SKU A-100.

  1. wppilot/jetengine-check-setupRead

    Confirms cct_module_active and that the current user can manage JetEngine.

  2. wppilot/jetengine-get-cctRead

    Returns the full definition with records_count; its db_field_data is the list to extend.

  3. wppilot/jetengine-edit-cctConfirm first

    Sends every existing field plus warranty_months. JetEngine adds the column; a field left out would be dropped, which needs confirm.

  4. wppilot/jetengine-get-cct-recordRead

    Finds the row by key_field_value A-100 instead of guessing its _ID.

  5. wppilot/jetengine-edit-cct-recordWrite

    Writes only warranty_months; every other column in the row is untouched.

Proposed sequence from source declarations; not a recorded task or proof of client compatibility. Inspect saved state and browser or provider results separately.
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.

  1. jetengine-check-setup

    Confirms cct_module_active and that the current user can manage JetEngine.

  2. jetengine-get-cct

    Returns the full definition with records_count; its db_field_data is the list to extend.

  3. jetengine-edit-cct

    Sends every existing field plus warranty_months. JetEngine adds the column; a field left out would be dropped, which needs confirm.

  4. jetengine-get-cct-record

    Finds the row by key_field_value A-100 instead of guessing its _ID.

  5. jetengine-edit-cct-record

    Writes only warranty_months; every other column in the row is untouched.

Abilities

JetEngine abilities by effect

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.

Try it on JetEngine in Read Only first