FormsPro
Ninja Forms MCP through its own model layer
This Ninja Forms MCP integration drives Ninja Forms through its PHP model layer rather than Ninja's own abilities: forms, fields and actions in its nf3 tables, submissions as nf_sub posts. An AI client can draft a form from the live field registry, adjust email notifications, and read, export or trash submissions. Every ability needs an administrator, and password, card, upload and signature answers stay masked unless you confirm.
Create a Ninja form for our workshop: name, email, a dropdown of three session times and a consent checkbox, and email me each registration.
wppilot/ninja-forms-check-setupReadConfirms Ninja Forms is active, above GoBuildWP's minimum, and that its NF3 storage upgrade has finished; stops otherwise.
wppilot/ninja-forms-get-field-types-schemaReadLists the types this install can render, read from Ninja's live registry, so add-on types appear only when installed.
wppilot/ninja-forms-create-formWriteCreates the form and its fields in one call, appends a submit button because none was given, and returns the derived field keys.
wppilot/ninja-forms-create-notificationWriteAdds an email action to the site owner, with the registrant's email merge tag as reply-to in its settings.
wppilot/ninja-forms-get-formReadReads fields and actions back so the result is checked before the shortcode goes on a page.
- Edition
- Pro
- Abilities
- 22
- Requires
- WordPress 6.9+, PHP 8.0+, Ninja Forms 3.13.0+
Worked example
Draft a workshop registration form
Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.
A working registration form with a submit button and an owner email, ready to embed. Neither the form nor the email action can be undone from the log, so delete-form is the way back, and once registrations arrive it removes those too.
After restoring a supported form state, inspect its publication status and publish only when authorized. Check the embed, rendered fields and a synthetic submission, then verify mail separately; a ready embed is not delivery proof.
ninja-forms-check-setupConfirms Ninja Forms is active, above GoBuildWP's minimum, and that its NF3 storage upgrade has finished; stops otherwise.
ninja-forms-get-field-types-schemaLists the types this install can render, read from Ninja's live registry, so add-on types appear only when installed.
ninja-forms-create-formCreates the form and its fields in one call, appends a submit button because none was given, and returns the derived field keys.
ninja-forms-create-notificationAdds an email action to the site owner, with the registrant's email merge tag as reply-to in its settings.
ninja-forms-get-formReads fields and actions back so the result is checked before the shortcode goes on a page.
Abilities
Ninja Forms abilities by effect
Inspect11
ninja-forms-check-setupCheck Ninja Forms Setupninja-forms-export-entriesExport Ninja Forms Submissionsninja-forms-get-field-type-schemaGet Ninja Forms Field Type Schemaninja-forms-get-field-types-schemaList Ninja Forms Field Typesninja-forms-get-formGet a Ninja Forms Formninja-forms-get-form-canonicalGet Ninja Forms Form (Canonical)ninja-forms-get-notificationGet a Ninja Forms Notificationninja-forms-get-submissionGet a Ninja Forms Submissionninja-forms-list-formsList Ninja Formsninja-forms-list-notificationsList Ninja Forms Notificationsninja-forms-list-submissionsList Ninja Forms Submissions
Create and change7
ninja-forms-add-fieldAdd a Ninja Forms Fieldninja-forms-create-formCreate a Ninja Forms Formninja-forms-create-notificationCreate a Ninja Forms Notificationninja-forms-duplicate-formDuplicate a Ninja Forms Formninja-forms-edit-fieldEdit a Ninja Forms Fieldninja-forms-edit-formEdit a Ninja Forms Formninja-forms-edit-notificationEdit a Ninja Forms Notification
Reference: /docs/reference/ninja-forms
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.
Ninja Forms's own AI tools
Ninja Forms' own Abilities, and why GoBuildWP stays separate
Ninja Forms registers abilities of its own with the WordPress Abilities API, served to AI clients through the MCP Adapter plugin. They reach forms, fields, actions, calculations, submissions, import and export, embedding, a public form link and the global settings, and each one requires an administrator connecting with an application password. Ninja's stated goal is that a change made by an assistant matches the same change made in the admin screens.
Its caution on data is sensible: ninjaforms/delete-form, ninjaforms/update-submission and ninjaforms/delete-submission ship disabled, and turning them on takes a filter in a must-use plugin, which Ninja places outside official support. Calculations, form imports and public links are areas GoBuildWP's integration does not touch at all.
GoBuildWP draws the line elsewhere. Its delete-submission is available because it trashes by default, a post status change that rollback-change can reverse; only force deletes and edits to the nf3 tables are logged as irreversible, and deletes still need confirm. Reads mask password, card, upload and signature answers, exports mask the IP as well, and secret-looking action settings return as [REDACTED]. Ninja's documentation describes no equivalent masking of submission values.
Data model
Two storage models in one plugin
Form structure lives in Ninja's own tables: forms, fields and actions (email, redirect, success message, save and others) are rows in the nf3 tables with their settings in matching meta tables. Settings are kept as strings, so required or active read back as "1" or "0"; the edit abilities normalise this so a repeated edit is a genuine no-op.
Submissions take another route. Each one is an nf_sub post with answers in postmeta named _field_ plus the field id, and its state is simply the post status: published when live, trash when trashed. Ninja keeps no read, starred or spam flag.
The split explains undo. Trashing a submission is a post status change the log can reverse; a forced delete, and every change to forms, fields and actions in the nf3 tables, is recorded as irreversible.
Limits
Ninja Forms limits
- include_sensitive and confirm, where supported, are API prerequisites subject to capability and installed policy, not proof of human consent. Obtain approval for the specific data purpose separately. Permitted fields and exports go to the client/provider; key or pattern masking does not cover arbitrary names or free text. Skill instructions do not enforce a human act.
- Every ability requires manage_options, because Ninja Forms exposes no stable capability of its own to delegate to.
- Deleting a form cascades to its fields, actions and every submission, and Ninja has no form trash.
- Submission reads mask password, card, upload and signature answers, and exports mask the IP as well; unmasking needs include_sensitive with confirm.
- delete-submission trashes by default and can be reversed; force is permanent. A field's type cannot be changed in place.
- Needs Ninja Forms 3.13 or later with its NF3 upgrade complete.
Ninja Forms changes over time
Changing a Ninja Forms field type without losing old answers
Requests like 'make the session time a set of radio buttons instead of a dropdown' look like a setting change, but a Ninja Forms field's type cannot be changed in place; ninja-forms-edit-field refuses it because Ninja re-renders unpredictably after a type swap. The change is a new field plus the removal of the old one, and that has a consequence for history. Answers are stored against the field's id, so the new field starts with no answers, and submissions already received keep theirs under the old id.
Export first. ninja-forms-export-entries writes the form's submissions as CSV or JSON with field labels as headers, up to five thousand rows a call with a cursor for more, so the old answers survive in a file whatever happens to the field. Then add the new field with ninja-forms-add-field at the old field's position, read back the key it was given rather than assuming it, update any email action whose message used the old field's merge tag, and only then delete the old field. Neither step can be undone from the change log, because both touch Ninja's own tables.
Clearing out old Ninja Forms submissions
Sites that have run a form for years accumulate submissions nobody needs, and some owners have a retention period to keep to. Ninja Forms tracks only active and trashed, so the agent works by date: export the period being cleared with date_from and date_to as the record, list the matching submissions, and trash them with ninja-forms-delete-submission. Trashing is a post status change, so each one can be restored from Ninja's screen or with rollback-change.
A forced delete is the step that makes the clearance final and cannot be reversed. Leave it until the export has been checked and the owner has agreed the retention rule, and keep the exported file somewhere access is controlled, since it holds the personal data the clearance was meant to reduce.
Questions
Ninja Forms questions
Can I mark a Ninja Forms submission as read or starred?
No. Ninja Forms tracks only active versus trashed, so there is no read, star or spam state to set, and the agent is told not to invent one.
Why does the agent insist on a submit field?
A Ninja form without a submit button cannot be sent. create-form adds one automatically, and delete-field warns against removing the only one.
Are webhook URLs or SMTP passwords exposed when the agent reads a form?
No. Secret-looking settings in actions and notifications come back as [REDACTED], with has_secrets set so you know something was withheld.
How do I get a trashed Ninja Forms submission back?
Use Ninja's Submissions screen for its native untrash route, then inspect the resulting status; WordPress's default untrash status can be draft. When the agent trashed it and a restorable ledger before-image exists, rollback-change restores the captured post status as well as the captured fields. Verify the submission afterwards.
Ninja Forms publishes an Abilities API surface. Inspect which server exposes an operation and use that server's schema, particularly for actions and submission data. Ninja Forms Abilities API documentation
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.
Ninja Forms is a separate product; no partnership or endorsement is implied.