Browse documentation +
Getting startedInstallationConnect a clientSafety profilesWordPress ChatPro licensingAntigravity CLIAntigravity IDETroubleshootingOAuth 2.1 setupApplication PasswordsPage builder workflowsLedger and rollbackApprovals and memoryAbility reference
Pro module28 abilities

WPForms

These abilities register when WPForms 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

WPForms registers 28 abilities: 10 that only read, 13 that write, and 5 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, inspect, duplicate, and edit WPForms forms; manage fields, confirmations, notifications, settings, and entries through schema-aware operations.

Before you rely on it: Send test submissions and verify email delivery before replacing a live form workflow.

Typical workflows

  • Draft a form from available field schemas
  • Audit confirmations and notifications together
  • Review and classify entries without changing the form

The WPForms 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 WPForms 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.

AbilityWhat it does
wppilot/wpforms-check-setupCheck WPForms SetupReports the WPForms environment: whether WPForms is active, its version, whether it is the Pro edition, which Pro-gated surfaces are available (entries CRUD and the premium field types need Pro), the list of field types this install can use, and the WP capabilities that gate form/entry management. Call this first before any other WPForms ability.
wppilot/wpforms-get-entryGet WPForms EntryReturn a single submission (entry) with its decoded field values. Required: entry_id. Optional: max_field_bytes (default 4096) caps the per-field value size so a textarea/richtext/file-upload value never blows the agent's context — capped fields surface a value_truncated flag plus the original byte length. include_meta=true also returns the entry.meta blob (UA, referer, payment data on payment forms). Pro only.
wppilot/wpforms-get-field-type-schemaGet WPForms Field Type SchemaDescribe one WPForms field type — the label-text, its edition (lite or pro), the cross-cutting features it supports (label, description, required, css class, conditional logic), and the type-specific options the agent can set (e.g. choices for select / radio / checkbox, format for name / date-time / phone, extensions for file-upload). Call check-setup first for the authoritative list of types this install can use; this ability returns null when the type is unknown or requires Pro on a Lite install.
wppilot/wpforms-get-field-types-schemaList WPForms Field TypesReturn the catalog of every WPForms field type the integration can build via add-field / edit-field on this install. Output is compact: per entry {type, label, category, pro_only}. Use this FIRST when constructing a form, then call wppilot/wpforms-get-field-type-schema for the per-type settings whitelist + supports[]. The catalog ALWAYS includes Pro entries — even on a Lite install — so the agent can learn what would unlock with Pro; add-field still rejects Pro-only types on a Lite install via the wpforms_pro_required error. Categories reflect the WPForms field-editor groupings: standard (text / textarea / select / checkbox / radio / number / hidden / …), structure (layout / pagebreak / divider / html / repeater), and payment (payment-* / credit-card). Mirrors the catalog-vs-detail pattern used by gravityforms-get-field-types-schema, fluentforms-get-field-types-schema, formidable-get-field-types-schema.
wppilot/wpforms-get-formGet WPForms FormReturn the full definition of one WPForms form: fields (array indexed by field id), settings, notifications (settings.notifications), confirmations (settings.confirmations), payments, and form meta. post_content is a JSON blob; this ability decodes it and returns the canonical top-level sections.
wppilot/wpforms-get-form-canonicalGet WPForms Form (Canonical)Reads a single WPForms form by id and returns it mapped to the plugin-agnostic form-model-schema vocabulary (17 canonical types: text/email/tel/url/number/textarea/date/time/datetime/select/radio/checkbox/file/hidden/submit/consent/group) used by the form-model-migration skill. The 40 WPForms native field types fold onto those 17 — composites (name, address) collapse to canonical group with sub-fields; Pro-only types without a canonical equivalent (signature, rating, credit-card, payment-*, custom-captcha, entry-preview, layout) emit warnings[] with severity. Output keys: fields[] with canonical types, mail_config{} from the first notification, notifications[] from the remaining ones, messages{} (empty — WPForms has no built-in message catalogue), conditional_rules[] from per-field WPForms conditionals (mapped 1:1 when expressible), meta{} (source plugin + version + edition + confirmations / settings echo for round-trip), plus warnings[] for everything that does not fit the canonical shape (multi-page forms, complex conditional logic, payment + signature + rating fields, anti-spam configuration, WPForms {smart_tags} that have no [field-name] equivalent). Honours the same max_field_bytes truncation contract as wpforms-get-form (default 8192 bytes for mail_config.body, notifications[].body, with *_truncated flags); pass max_field_bytes: 0 to disable truncation when full-fidelity canonical is required before an execute-mode migration. Returns WP_Error wpforms_form_not_found when the id does not exist or refers to a trashed / auto-draft / non-WPForms post. Use this ability inside the form-model-migration workflow (Phase 2 — read source schema); for ad-hoc inspection outside the migration pipeline, prefer wpforms-get-form which returns the WPForms-native shape.
wppilot/wpforms-list-confirmationsList WPForms ConfirmationsList every confirmation configured on a form, keyed by string-int id. A confirmation is what the user sees after submitting — a thank-you message, a redirect to a WP page, or a redirect to an external URL. Use this before crafting a confirmation mutation.
wppilot/wpforms-list-entriesList WPForms EntriesList WPForms form submissions (entries) with compact rows. Filterable by form_id, status (publish | spam | trash | partial), and date range. Paginated with limit (default 50, max 500) and offset. WPForms Pro only — entries do not exist on Lite. Use get-entry to read a single entry's full field values.
wppilot/wpforms-list-formsList WPForms FormsList WPForms forms with a compact row per form (id, title, slug, status, dates, entry count when WPForms Pro is active). Paginated with limit (default 50, max 500) and offset; filterable by status. Use get-form to read a single form's full definition (fields, settings, notifications, confirmations).
wppilot/wpforms-list-notificationsList WPForms NotificationsList every notification configured on a form, keyed by string-int id (the same id you pass to edit-notification / delete-notification). Use this before crafting a notification mutation so you know what already exists and what id to target.

Writes

Gated by the active profile and your WordPress capabilities. Rate limited to 120 per minute per credential.

AbilityWhat it does
wppilot/wpforms-add-fieldAdd WPForms FieldAppend a field to a WPForms form. Required: form_id, type, label. Type must be in check-setup.available_field_types (a Pro type on a Lite install is rejected). The new field gets the next sequential id; the form's field_id counter is bumped. Pass options for type-specific knobs (choices for select/checkbox/radio, format for name/date-time/phone, extensions for file-upload, etc.) — see get-field-type-schema for the per-type catalog.
wppilot/wpforms-create-confirmationCreate WPForms ConfirmationAppend a confirmation to a form. Required: form_id, name, type. Type-specific required keys: type=message → message; type=page → page (target WP post id); type=redirect → redirect (target URL). Optional: message_scroll (auto-scroll to the message on submit) for type=message.
wppilot/wpforms-create-formCreate WPForms FormCreate a new WPForms form. Required: title. Optional: description, status (publish | draft, default publish), and an initial settings/notifications/confirmations override. The new form starts empty (no fields) — add fields with add-field in a later step. Returns the new form id plus the same compact row list-forms emits.
wppilot/wpforms-create-notificationCreate WPForms NotificationAppend a notification to a form. Required: form_id, notification_name, email. Optional: subject, sender_name, sender_address, replyto, message, file_upload_attachments. Smart tags ({admin_email}, {site_name}, {field_id="N"}, {all_fields}) are accepted verbatim — WPForms resolves them at submission time. The new notification gets the next sequential id.
wppilot/wpforms-duplicate-formDuplicate WPForms FormDuplicate an existing WPForms form. Required: form_id. Optional: title (defaults to "<original title> (Copy)") and status (defaults to "draft" — duplicates start unpublished). The new form copies fields, settings, notifications, confirmations, payments and meta from the source.
wppilot/wpforms-edit-confirmationEdit WPForms ConfirmationPartial merge update of one confirmation. Required: form_id, confirmation_id. Optional: name, message, message_scroll, page, redirect. The confirmation type CANNOT be changed (delete + create to switch type, since the meaningful keys differ). Updating fields that do not match the current type is rejected.
wppilot/wpforms-edit-entryEdit WPForms EntryUpdate one or more field values on an existing submission (entry). Required: entry_id, fields (a map of field_id → new value). Only field types in check-setup → entry_handler.get_editable_field_types() can be edited — passing a non-editable type returns wpforms_field_not_editable with the offending list. Pro only.
wppilot/wpforms-edit-fieldEdit WPForms FieldPartially update an existing field. Required: form_id, field_id. Optional: label, description, required, size, css, conditional_logic, options (type-specific keys are merged flat into the stored field entry). The field type cannot be changed — delete and re-add to change type.
wppilot/wpforms-edit-formEdit WPForms FormPartially update a WPForms form. Required: form_id. Optional: title, description, status (publish | draft), and merge updates for settings, notifications, confirmations, and meta. Field management is handled by add-field / edit-field / delete-field — fields here is accepted only when explicitly provided and REPLACES the entire fields map (read with get-form first to avoid wiping unrelated fields).
wppilot/wpforms-edit-form-settingsEdit WPForms Form SettingsSharp partial-merge editor for the most-used form-level settings on a single form. Use this instead of edit-form.settings when you only need to tweak common knobs: submit button text, anti-spam toggle, AJAX submission, store-spam-entries, honeypot, dynamic population, form CSS class. Each input field has a typed schema so the agent gets clear validation up front. For anything beyond these keys, fall back to edit-form with a settings merge.
wppilot/wpforms-edit-notificationEdit WPForms NotificationPartial merge update of one notification. Required: form_id, notification_id. Optional: any of notification_name, email, subject, sender_name, sender_address, replyto, message, file_upload_attachments. Keys not in the payload preserve their current value.
wppilot/wpforms-mark-entryMark WPForms EntryToggle a boolean flag on one entry without rewriting its fields. Required: entry_id, flag (read | starred), value (boolean). flag=read maps to the entry.viewed column; flag=starred maps to entry.starred. Use this for quick triage actions (mark as read, star a lead, unstar a duplicate). Pro only.
wppilot/wpforms-reorder-fieldsReorder WPForms FieldsReorder the fields of a form. Required: form_id, order — an array of field ids in the desired sequence. The order list MUST contain every existing field id exactly once (no additions, no removals, no duplicates); otherwise the call is rejected.

Destructive

Marked destructive in the source, so each call needs an explicit confirmation flag, every time.

AbilityWhat it does
wppilot/wpforms-delete-confirmationDelete WPForms ConfirmationRemove a confirmation from a form. Required: form_id, confirmation_id. Refuses to delete the last surviving confirmation — a form must always have at least one confirmation so users get feedback after submitting.
wppilot/wpforms-delete-entryDelete WPForms EntryPermanently delete one submission (entry). Required: entry_id. Unlike forms, entries have no trash state — this is an immediate, irreversible delete. Per-field rows in wp_wpforms_entry_fields and per-entry meta in wp_wpforms_entry_meta are also removed. Pro only.
wppilot/wpforms-delete-fieldDelete WPForms FieldPermanently remove a field from a form. Required: form_id, field_id. The form's field_id counter is NOT decremented — new fields keep getting monotonic ids so a deleted id is never reused.
wppilot/wpforms-delete-formDelete WPForms FormDelete a WPForms form. Default behavior trashes the form (status flips to "trash" — restorable from the WPForms admin). Pass force=true to permanently delete the CPT row (irreversible). Returns the previous status so the caller can confirm what was removed.
wppilot/wpforms-delete-notificationDelete WPForms NotificationRemove a notification from a form. Required: form_id, notification_id. Refuses to delete the last surviving notification — a form must keep at least one notification so submissions still trigger an email. Use edit-notification to repurpose the last one instead.