Gravity Forms documents that gravityforms_edit_forms supports form reads and updates plus notification, confirmation, feed, and field-type operations. A builder may need to edit forms but should not be able to delete production notifications or confirmations without a separate reviewed workflow.
Use this for AI form builders, support assistants, agencies, production form owners, payment forms, compliance notices, lead routing, and sites where notification deletion could stop revenue or support email.
Quick answer
Use a dedicated builder account with only the required Gravity Forms capabilities and an application password unique to that client. In the site-wide MCP settings, enable the minimum form read and update tools needed for the task while leaving Delete Notification, Delete Confirmation, Delete Feed, Delete Form, and unrelated destructive tools disabled. Because the allowlist is shared, confirm that this policy fits every agent on the site. Back up the synthetic test form, run an allowed field edit, then attempt pre-approved deletion fixtures that must return a denial and leave IDs, recipients, routing, feeds, and confirmations unchanged.
Test scenarios to run
Run the same controlled fixture across these branches. Write down the expected result before testing so a surprising response is easy to identify.
| Scenario | Fixture | Expected result |
| Update Form | Change test label | Allowed and logged |
| Delete Notification | Synthetic notification | Denied and unchanged |
| Delete Confirmation | Synthetic confirmation | Denied and unchanged |
| Send Notifications | Synthetic entry | Denied unless separately approved |
Diagnostic table
Use this table to connect the observed behavior to evidence and a verification step.
| Action | Evidence | Verification |
| Map capabilities to exact tools | Record the builder's user, role, effective capabilities, application password UUID, client, site-wide allowlist, endpoint mode, approved forms, owner, change window, and expiry. | The builder can complete the approved form edit without broader access. |
| Use a dedicated builder user | Map required operations to exact MCP tool names and separate create, update, send, trash, permanent delete, notification, confirmation, feed, form, and entry actions. | Notifications, confirmations, feeds, forms, and entries survive denied deletion tests. |
| Disable destructive tool entries | Build a synthetic form with two notifications, two confirmations, a feed, conditional logic, and a stable export so before and after state can be compared. | The visible tool inventory matches the approved manifest. |
| Run denied deletion fixtures | Run allowed read and update fixtures, then pre-approved denied Delete Notification, Delete Confirmation, Delete Feed, Delete Form, Send Notifications, and entry-deletion calls. | Any role or allowlist change triggers a new observed-access test. |
What to check first
- Record the builder's user, role, effective capabilities, application password UUID, client, site-wide allowlist, endpoint mode, approved forms, owner, change window, and expiry.
- Map required operations to exact MCP tool names and separate create, update, send, trash, permanent delete, notification, confirmation, feed, form, and entry actions.
- Build a synthetic form with two notifications, two confirmations, a feed, conditional logic, and a stable export so before and after state can be compared.
- Run allowed read and update fixtures, then pre-approved denied Delete Notification, Delete Confirmation, Delete Feed, Delete Form, Send Notifications, and entry-deletion calls.
- Log tool, user, client, request ID, target fixture, permission result, UTC time, and reviewer, then retest after role or allowlist changes.
Field notes
- Write the pass condition before changing anything and keep one repeatable synthetic fixture for the full test window.
- Record exact versions and UTC timestamps because deployments, caches, retries, scheduled actions, and background jobs can change the evidence.
- Test the public path and the stored server-side result, not only an admin preview, isolated command, or API response.
- Repeat verification after the relevant cache, queue, cron, webhook, and observation window has completed.
Useful command or data shape
Adapt paths, IDs, and privacy handling to the site before running commands or storing data on production.
tool,target,before_hash,expected,actual,after_hash,result
Update Form,test-form,a91c,allow,allow,b72d,pass
Delete Notification,notice-2,44ef,deny,deny,44ef,pass
Why this usually happens
- A capability name sounds narrower than the operations it authorizes.
- An administrator enables an entire write group instead of exact tool checkboxes.
- A shared site allowlist is changed for another agent and broadens the builder.
- A deletion denial is assumed from settings but never tested through the actual client.
Decision rule
Grant the builder only when required edits succeed, every destructive fixture is denied and unchanged, the shared allowlist is acceptable for all clients, and logs identify the exact agent.
Production verification checklist
- The builder can complete the approved form edit without broader access.
- Notifications, confirmations, feeds, forms, and entries survive denied deletion tests.
- The visible tool inventory matches the approved manifest.
- Any role or allowlist change triggers a new observed-access test.
Safe fix order
Use a sequence that makes each result easy to prove. Stop when new evidence changes the scope or owner of the problem.
- Map capabilities to exact tools
- Use a dedicated builder user
- Disable destructive tool entries
- Run denied deletion fixtures
- Audit changes and expiry
Mistakes to avoid
- Changing production before recording exact versions, UTC timestamps, a stable fixture, the expected result, and a tested rollback point.
- Treating one successful screen as proof while stored records, logs, queues, caches, emails, APIs, and downstream systems remain unchecked.
- Testing only as an administrator instead of using the role, device, locale, cache state, and failure branch that real users reach.
- Leaving temporary exclusions, debug output, helper accounts, broad permissions, or one-off repair code active after verification.
Questions teams ask during testing
Can I run this directly in production?
Begin with read-only evidence and use staging for package, code, database, form, or permission changes. If a production canary is necessary, make it identifiable, reversible, monitored, and unable to expose personal data or charge a customer.
How do I avoid a false positive?
Repeat the same fixture with the same versions, role, URL, locale, cache state, and downstream integrations. Compare browser, stored, and log evidence instead of relying on one screen.
What should the evidence packet contain?
Keep UTC time, exact versions, synthetic record ID, expected result, actual result, relevant log lines, change made, rollback point, owner, and final verification. Redact secrets and personal data.
When is the test complete?
Close the work when the primary path passes, failure branches are understood, stored and downstream records reconcile, temporary changes are removed, and monitoring covers the next update.
What to tell the client or owner
Give the owner a concise packet with the affected workflow, exact versions, UTC test time, fixture ID, expected result, actual result, key logs, change made, rollback point, final result, unresolved risks, owner, and next review date. Remove credentials and personal data before sharing it.
When HandL WP should help
Bring in help when this affects leads, checkout, search visibility, security, paid media reporting, or a client production site. HandL WP can trace the issue through WordPress, hosting, cache, tracking, and Search Console, then verify the workflow after the technical fix.
If this is active on a production site, have HandL WP configure Gravity Forms MCP safely.
Related HandL WP guides
Use these related guides when the same issue touches tracking, security, checkout, or crawler visibility.
Helpful references