GoBuildWP

FormsPro

WS Form MCP: read first, edit lightly, publish with care

WS Form keeps an editor copy of every form and serves visitors the version captured at the last publish, and this WS Form MCP integration respects that gap. An AI client can list forms and spot unpublished edits, read fields, settings and submit actions, read completed submissions with contact details withheld, and change a title, button text or field label. Those edits are recorded but have no automatic undo.

AI clientyour-site.comVerify site policy

Which of our WS Forms have changes nobody published? Fix the typo 'Adress' on the Delivery form while you are there.

  1. wppilot/wsform-list-formsRead

    Returns every form with has_unpublished_changes and its field and submission counts.

  2. wppilot/wsform-get-formRead

    Reads the Delivery form's fields with numeric ids and shows the misspelt label.

  3. wppilot/wsform-update-formWrite

    Corrects the label through WS Form's field object and reads it back; publish_note says whether it went live or is waiting behind other edits.

  4. wppilot/wsform-list-entriesRead

    Checks that recent submissions still show the address answers under the same field, with contact data masked.

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
4
Requires
WordPress 6.9+, PHP 8.0+

Abilities

WS Form 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.

Read example: wppilot/wsform-get-form

Discover this ability and its live schema first. The input below illustrates a bounded read from the source declaration; replace the example ID or name with an object returned by your site. It is not a recorded execution result.

ParameterType and meaning
form_id requiredinteger, at least 1
{
  "form_id": 42
}
Input and output schema from the plugin source

1 input field. Required: form_id. Optional parameters can affect response size and object selection.

{
  "input": {
    "type": "object",
    "properties": {
      "form_id": {
        "type": "integer",
        "minimum": 1
      }
    },
    "required": [
      "form_id"
    ],
    "additionalProperties": false
  },
  "output": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "title": {
        "type": "string"
      },
      "status": {
        "type": "string"
      },
      "has_unpublished_changes": {
        "type": "boolean"
      },
      "shortcode": {
        "type": "string"
      },
      "fields": {
        "type": "array",
        "items": {
          "type": "object"
        }
      },
      "submit_text": {
        "type": "string"
      },
      "settings": {
        "type": "object"
      },
      "actions": {
        "type": "array",
        "items": {
          "type": "object"
        }
      },
      "entry_count": {
        "type": "integer"
      }
    }
  }
}

Source: wppilot-pro/includes/kits/forms-wsform/src/abilities/get-form.php

A successful read should identify the requested object and expose the structure described by the output schema. Compare it with the native editor before proposing a change. Troubleshoot missing or refused operations.

Limits

Why WS Form edits have no automatic undo

  • WS Form's only whole-form restore is a JSON import, which deletes and recreates every group, section and field under new ids and sets the form to draft. Past submissions store answers by field id, so that restore would detach them; the change log therefore marks update-form irreversible, and its result carries the previous values for a manual revert.
  • GoBuildWP publishes only when the form was live with no other pending edits. Otherwise publish_note says the owner must publish, because a publish would also release their unfinished changes. If WS Form's own auto-publish option is on, WS Form publishes by itself.
  • Email and phone answers, passwords, card data, uploads, signatures and any recorded visitor IP come back as [REDACTED], and email addresses or phone-number-like runs of digits typed into other answers are masked. Names, street addresses and other personal details written as free text are not detected, so treat entries as personal data either way.
  • Only completed submissions are listed, never drafts, spam or trash. Fields cannot be added, removed, moved or retyped, and actions, emails and styling are left alone.

Data model

Tables for structure, a snapshot for visitors

WS Form stores a form across its own tables: wp_wsf_form, wp_wsf_group, wp_wsf_section and wp_wsf_field, each with a meta table. Nothing is a WordPress post. Visitors are served a JSON copy taken when the form was last published, so an edit in the editor, by a person or by GoBuildWP, changes nothing on the page until the next publish.

Submissions are WS Form submit records whose answers are keyed field_ plus the field id. Whether a form saves submissions at all, and whether it records the visitor IP, are per-form settings that wsform-get-form reports; with IP tracking off there is no address to withhold.

GoBuildWP relies on WS Form's own capability checks on every call: read_form and read_submission for reads, edit_form and publish_form for an edit.

Worked example

Find forms whose live version is out of date

Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.

The user sees which forms serve visitors an older version, and the typo is fixed in the editor copy. Whether it is live depends on those pending edits; if not, the owner publishes from WS Form after reviewing them. Reverting means calling update-form again with the previous label from the result.

Read published state after the typo change and inspect the actual rendered form. When other edits are pending, follow publish_note and leave publication to the owner; WS Form’s own auto-publish option is a separate exception.

  1. wsform-list-forms

    Returns every form with has_unpublished_changes and its field and submission counts.

  2. wsform-get-form

    Reads the Delivery form's fields with numeric ids and shows the misspelt label.

  3. wsform-update-form

    Corrects the label through WS Form's field object and reads it back; publish_note says whether it went live or is waiting behind other edits.

  4. wsform-list-entries

    Checks that recent submissions still show the address answers under the same field, with contact data masked.

Form audits, consistent wording and the publish decision

A WS Form audit: what each form saves, records and sends

The WS Form MCP read abilities are most useful as an audit across every form at once. wsform-get-form reports, per form, whether submissions are saved at all, whether the visitor IP is recorded, and whether a submission limit or schedule applies, plus every submit action with its type and whether it is enabled. Email actions are summarised by recipient, cc and bcc counts and subject line, never the addresses. Run across all forms, that gives an owner a short table: which forms keep data, which keep IP addresses, which have an email action switched off, and which close on a schedule nobody remembers setting.

Changing any of that is outside the module: save settings, IP tracking, limits and actions are edited in WS Form's own form settings. The agent's part is to find the forms that need a look, and to explain each setting in plain words before you open the editor.

Making wording consistent across WS Form forms

wsform-update-form is deliberately small: a form's title, its submit button text, and for fields that take an answer their label, placeholder or required flag. That is enough for a sitewide copy pass, such as making every submit button say "Send message" instead of a mix of Submit, Send and Go, or giving every phone field the same placeholder. The agent lists forms, reads each one to get the numeric field ids, and edits them one form per call. Every field id is checked before anything is saved, so a wrong id fails the call without a partial write.

Switching a field to required is the one edit in this set that changes behaviour as well as text: visitors who skipped that field can no longer submit. Make that change on a form with has_unpublished_changes false, check the live form afterwards, and keep the previous values the result returns for a manual revert.

Before changing a form that appears on several pages, find where it is embedded. wsform-list-forms returns each form's shortcode, and a search-content call for that shortcode lists the public pages and posts that carry it, so you know which pages to check once the edit is live. Forms placed through a page builder widget rather than the shortcode will not show up in that search.

Who may edit, and why the agent does not always publish

Every call checks WS Form's own capabilities on top of GoBuildWP's requirement of a user who can manage options: read_form for the form reads, read_submission for entries, and both edit_form and publish_form for an edit. On Read Only, the three reads run; Production Safe permits wsform-update-form as an ordinary write, subject to enabled abilities and any additional approval rules. Whether the edit goes live depends on the form's state, as the publish_note explains, and that decision is left to the owner whenever other people's edits are waiting. The WS Form reference lists every field.

  • "Read only: for every WS Form form, tell me whether it saves submissions and records IP addresses."
  • "Change every submit button to 'Send message', but skip forms with unpublished changes and list them for me."
  • "Show me the last ten submissions to the Delivery form with personal details withheld."

Questions

WS Form questions

Why didn't my WS Form label change show on the site?

WS Form serves the published copy. If the form had other unpublished edits, GoBuildWP saved the change without publishing, so the owner can review everything before it goes live.

Does the WS Form integration work with WS Form LITE?

Yes, it works with LITE and PRO and was checked against LITE with real front-end submissions.

Can the agent list who receives a WS Form's emails?

No. Email actions report how many to, cc and bcc recipients they have and the subject line, never the addresses.

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.

WS Form is a separate product; no partnership or endorsement is implied.

Try it on WS Form in Read Only first