NotFairNotFair
Start now

WordPress MCP · safety architecture

Restore exists. Only while the resource is unchanged.

Updates use expectedVersion. Writes wait for workspace-role permission and a stable requestId. restoreChange reverses a supported mutation when getChange says the resource is unchanged.

Last verified · September 17, 2026 · NotFair product team

The NotFair WordPress write contract

Read version, mutate once, restore if still untouched

NotFair advertises 86 WordPress tools on the installed plugin. HTML is sanitized and does not execute scripts.

  1. 01

    Select a siteId

    listSites returns explicit siteIds. Every website operation requires one.

  2. 02

    Read the current version

    getResource or readFile first. Updates pass expectedVersion.

  3. 03

    Stage the write

    publishHtml, media, posts, pages, and settings wait for a workspace role that can write.

  4. 04

    Sanitize HTML

    publishHtml rejects executable scripts. Documents are standalone, not theme-wrapped.

  5. 05

    Record a change receipt

    getChange reports restore eligibility.

  6. 06

    Restore if unchanged

    restoreChange reverses a supported mutation only if the resource has not changed since. Hooks are not rolled back.

Evidence table

What each control prevents

ControlWhat it protects againstWhat the operator sees
siteId routingEditing the wrong websiteExplicit siteId on every call
expectedVersionLost updates from stale readsA version conflict instead of a silent overwrite
HTML sanitizationScript injection via publishHtmlRejected executable scripts
restoreChange windowClaiming unlimited undoEligible only while the resource is unchanged

Limits and honest boundaries

  • restoreChange does not undo external hook side effects.
  • HTML is sanitized standalone HTML, not a theme-wrapped WordPress page.
  • Pending websites do not count as operable for onboarding.
  • HTML is sanitized and does not execute scripts. restoreChange does not undo external hook side effects. MCP and SEO tokens can be removed independently.

Frequently asked questions

Writes wait for workspace-role permission and a stable requestId. publishHtml is sanitized; scripts are rejected.

When getChange says the resource is unchanged since the original mutation. External hook side effects are not undone.

No. MCP and SEO connections can be removed independently. Tokens are not rotated from the UI.

No. restoreChange is a WordPress plugin recovery tool, not Google Ads impact review.