{"id":335954,"date":"2026-07-26T22:04:18","date_gmt":"2026-07-26T22:04:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flavoursuite-ai\/"},"modified":"2026-07-27T16:57:50","modified_gmt":"2026-07-27T16:57:50","slug":"flavoursuite-ai","status":"publish","type":"plugin","link":"https:\/\/su.wordpress.org\/plugins\/flavoursuite-ai\/","author":23275069,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.0.2","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"FlavourSuite AI","header_author":"FlavourSuite","header_description":"Make your WordPress site agent-ready: safely expose site data and actions to AI agents (Claude, ChatGPT, Cursor) via the Model Context Protocol.","assets_banners_color":"18154c","last_updated":"2026-07-27 16:57:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/flavoursuite\/flavoursuite-ai","header_author_uri":"https:\/\/flavoursuite.github.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":108,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.1":{"tag":"0.2.1","author":"masrawy2025","date":"2026-07-26 22:04:00"},"0.3.0":{"tag":"0.3.0","author":"masrawy2025","date":"2026-07-27 16:57:50"}},"upgrade_notice":{"0.3.0":"<p>Adds scoped connection tokens (safer than Application Passwords \u2014 they only work on the MCP endpoint), OAuth discovery for cloud clients, connection recipes for every major agent, a Connected agents list with one-click revoke, per-user rate limiting, and CSV export of the audit log.<\/p>","0.2.0":"<p>Adds the Approvals flow: agents can now propose CSS and content changes that you review and apply in wp-admin. Propose tools are off by default \u2014 nothing changes unless you enable them.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3624889,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3624889,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3624889,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3624889,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.1","0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3624889,"resolution":"1","location":"assets","locale":"","width":1100,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3623835,"resolution":"2","location":"assets","locale":"","width":1535,"height":730},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3624889,"resolution":"3","location":"assets","locale":"","width":1100,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3624889,"resolution":"4","location":"assets","locale":"","width":1100,"height":800}},"screenshots":{"1":"Settings \u2192 FlavourSuite AI: master switch (off until you turn it on), per-tool toggles with write tools flagged in red, and the per-user rate limit.","2":"Tools \u2192 Agent Changes: a pending agent proposal shown as a before\/after diff with Approve &amp; apply, Reject, and rollback for applied changes.","3":"Connect an agent: pick your client and get the exact config for it \u2014 the endpoint and credential are filled in for you, and the header is built in your browser.","4":"Connection tokens: a named, revocable credential per agent, with optional expiry and a last-used column. Each one works only on the MCP endpoint."}},"plugin_section":[],"plugin_tags":[15643,2353,216196,229563,242115],"plugin_category":[45],"plugin_contributors":[273392],"plugin_business_model":[],"class_list":["post-335954","plugin","type-plugin","status-publish","hentry","plugin_tags-agents","plugin_tags-ai","plugin_tags-chatgpt","plugin_tags-claude","plugin_tags-mcp","plugin_category-ecommerce","plugin_contributors-masrawy2025","plugin_committers-masrawy2025"],"banners":{"banner":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/banner-772x250.png?rev=3624889","banner_2x":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/banner-1544x500.png?rev=3624889","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/icon-128x128.png?rev=3624889","icon_2x":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/icon-256x256.png?rev=3624889","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/screenshot-1.png?rev=3624889","caption":"Settings \u2192 FlavourSuite AI: master switch (off until you turn it on), per-tool toggles with write tools flagged in red, and the per-user rate limit."},{"src":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/screenshot-2.png?rev=3623835","caption":"Tools \u2192 Agent Changes: a pending agent proposal shown as a before\/after diff with Approve &amp; apply, Reject, and rollback for applied changes."},{"src":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/screenshot-3.png?rev=3624889","caption":"Connect an agent: pick your client and get the exact config for it \u2014 the endpoint and credential are filled in for you, and the header is built in your browser."},{"src":"https:\/\/ps.w.org\/flavoursuite-ai\/assets\/screenshot-4.png?rev=3624889","caption":"Connection tokens: a named, revocable credential per agent, with optional expiry and a last-used column. Each one works only on the MCP endpoint."}],"raw_content":"<!--section=description-->\n<p>FlavourSuite AI makes your WordPress site <strong>agent-ready<\/strong>: it exposes a <a href=\"https:\/\/modelcontextprotocol.io\/\">Model Context Protocol<\/a> (MCP) server so AI agents like Claude, Cursor, and ChatGPT can query your site through safe, structured tools instead of scraping pages or guessing at your REST API.<\/p>\n\n<p>It is built on the WordPress core <strong>Abilities API<\/strong> (WordPress 6.9+) and the official <strong>wordpress\/mcp-adapter<\/strong>, so it speaks the same standards WordPress itself is adopting \u2014 no proprietary protocol, no lock-in.<\/p>\n\n<h4>Security first<\/h4>\n\n<ul>\n<li><strong>Off by default.<\/strong> Installing the plugin exposes nothing. The MCP endpoint only exists after an administrator turns it on under <em>Settings \u2192 FlavourSuite AI<\/em>.<\/li>\n<li><strong>Every tool call is permission-checked.<\/strong> Agents authenticate as a real WordPress user \u2014 via a connection token, an Application Password, or OAuth 2.1 with PKCE for cloud clients \u2014 and each tool enforces that user's capabilities (<code>manage_options<\/code>, <code>read<\/code>, <code>manage_woocommerce<\/code>, \u2026). There is no anonymous access, ever. Connected agents are listed in settings and can be revoked in one click.<\/li>\n<li><strong>Scoped credentials.<\/strong> Connection tokens are named, individually revocable, optionally expiring, and accepted <em>only<\/em> on the MCP endpoint \u2014 the rest of the REST API rejects them. Give each agent its own, and a leaked config costs you that agent's access rather than the whole account. Only a SHA-256 hash is stored, so a database dump yields nothing usable.<\/li>\n<li><strong>Rate limited.<\/strong> Tool calls are capped per user per minute so a runaway agent gets a 429 instead of exhausting your server, and the public OAuth endpoints are capped more tightly per IP.<\/li>\n<li><strong>Agents propose, you approve.<\/strong> No tool writes to your live site. Agents can <em>propose<\/em> changes (Additional CSS, post\/page content), which land as pending change requests under <em>Tools \u2192 Agent Changes<\/em> \u2014 you review a before\/after diff and approve, reject, or later roll back each one. Propose tools are additionally <strong>off by default<\/strong>, and read-only tools have per-tool switches too.<\/li>\n<li><strong>Audit trail.<\/strong> The settings screen shows who called which tool, when, and whether it succeeded, and exports to CSV. Arguments and results are never stored.<\/li>\n<li><strong>No data leaves your site.<\/strong> The plugin makes no external requests and needs no API keys. Agents connect to <em>you<\/em>.<\/li>\n<\/ul>\n\n<h4>Tools in this version<\/h4>\n\n<ul>\n<li><strong>Site overview<\/strong> \u2014 WordPress\/PHP versions, active plugins, content counts (administrators only).<\/li>\n<li><strong>List recent posts<\/strong> \u2014 recent published entries of any public post type.<\/li>\n<li><strong>Search content<\/strong> \u2014 full-text search across public content with snippets.<\/li>\n<li><strong>Site policies<\/strong> \u2014 privacy, terms, returns, shipping, FAQ and contact pages with their text, so agents answer pre-sale and trust questions from your real policies.<\/li>\n<li><strong>WooCommerce store overview<\/strong> \u2014 product and order counts by status, currency, WooCommerce version (shop managers only; no customer data). Registered automatically when WooCommerce is active. WooCommerce also supplies its configured terms and refund pages to the site-policies tool.<\/li>\n<li><strong>FluentCRM tools<\/strong> \u2014 when FluentCRM 3.0+ is active, its own read-only CRM context, campaigns, and automations tools appear on this server (contact-level tools are deliberately excluded here; FluentCRM's dedicated MCP server carries the full set).<\/li>\n<li><strong>Get custom CSS<\/strong> \u2014 read the current Additional CSS so proposals start from reality.<\/li>\n<li><strong>Propose custom CSS change<\/strong> <em>(off by default)<\/em> \u2014 stage a full replacement of the Additional CSS as a pending change request with a reviewable diff.<\/li>\n<li><strong>Propose content edit<\/strong> <em>(off by default)<\/em> \u2014 stage a new title and\/or content for a post or page, same review flow.<\/li>\n<li><strong>List change requests<\/strong> \u2014 agents can check whether their proposals were approved, rejected, applied, or rolled back.<\/li>\n<\/ul>\n\n<h4>Agents propose, you approve<\/h4>\n\n<p>The propose tools never touch your live site. Each proposal stores the <em>current<\/em> state alongside the desired state, and applying it re-checks both the reviewer's capabilities and staleness \u2014 if a human edited the CSS or the post after the proposal was made, the apply is refused instead of overwriting that work. Applied changes keep their before-state for one-click rollback, and content edits are additionally covered by core revisions.<\/p>\n\n<h4>Works with any agent<\/h4>\n\n<p>MCP is model-agnostic, so the model behind your agent is irrelevant to this plugin \u2014 Claude, GPT, Gemini, DeepSeek, Qwen, Kimi, GLM, Llama, Mistral, anything routed through OpenRouter, or a model running locally on your own machine. What matters is the client, and the settings screen generates a ready-to-paste recipe for each one:<\/p>\n\n<ul>\n<li><strong>Command line<\/strong> \u2014 Claude Code, Codex CLI, OpenCode.<\/li>\n<li><strong>Editors<\/strong> \u2014 Cursor, VS Code (Copilot), Cline, Roo Code, Windsurf.<\/li>\n<li><strong>Cloud clients<\/strong> \u2014 Claude (web and desktop connectors) and ChatGPT connect over OAuth 2.1: they discover the site automatically and you approve the connection in wp-admin, with no password to copy anywhere.<\/li>\n<li><strong>Apps with a settings screen<\/strong> \u2014 Cherry Studio, ChatWise, 5ire, LibreChat, Dify, n8n and similar: paste the endpoint and one header.<\/li>\n<li><strong>Everything else<\/strong> \u2014 a stdio bridge recipe (<code>mcp-remote<\/code>) covers agents that cannot speak HTTP directly, including LM Studio, Goose and most self-hosted or open-source clients.<\/li>\n<\/ul>\n\n<h4>Works with your stack<\/h4>\n\n<p>Integrations are detected automatically: if WooCommerce is active its tools appear, if not they don't \u2014 no configuration, no errors. More integrations are on the way.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WordPress 6.9+, PHP 7.4+).<\/li>\n<li>Go to <em>Settings \u2192 FlavourSuite AI<\/em> and enable the MCP server.<\/li>\n<li>Create a connection token on the same screen \u2014 give it a name and, if you like, an expiry. It is shown once.<\/li>\n<li>Choose your agent from the list below it. The recipe builder produces the exact configuration block for that client, with the endpoint and the token already filled in. The header is assembled in your browser and never sent back or stored. Cloud clients such as Claude and ChatGPT skip steps 3 and 4 entirely: point them at the endpoint and approve the connection when prompted.<\/li>\n<\/ol>\n\n<p>For example, with Claude Code: <code>claude mcp add --transport http flavoursuite https:\/\/example.com\/wp-json\/flavoursuite-ai\/mcp<\/code><\/p>\n\n<p>Full documentation \u2014 including per-client connection guides (Claude Code, Claude Desktop, Cursor, ChatGPT), the Approvals walkthrough, and troubleshooting: <a href=\"https:\/\/flavoursuite.github.io\/docs\/\">flavoursuite.github.io\/docs<\/a><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20safe%20to%20install%20on%20a%20production%20site%3F\"><h3>Is this safe to install on a production site?<\/h3><\/dt>\n<dd><p>Installing it changes nothing until you opt in: the MCP endpoint is not even registered while the master switch is off. When enabled, every request must authenticate as a WordPress user and every tool re-checks that user's capabilities. Tools that read are read-only; tools that would change anything only create proposals for you to review.<\/p><\/dd>\n<dt id=\"does%20this%20send%20my%20site%27s%20data%20to%20an%20ai%20company%3F\"><h3>Does this send my site's data to an AI company?<\/h3><\/dt>\n<dd><p>No. The plugin contains no API keys and makes no outbound requests. It's a server: AI agents you control connect to your site, authenticated as a user you created, seeing only what that user may see.<\/p><\/dd>\n<dt id=\"how%20do%20agents%20authenticate%3F\"><h3>How do agents authenticate?<\/h3><\/dt>\n<dd><p>Three ways, all as a real WordPress user limited to that user's capabilities.<\/p>\n\n<p><strong>Connection tokens<\/strong> (recommended for desktop and command-line clients) are created on the settings screen, sent as <code>Authorization: Bearer \u2026<\/code>, and accepted only on the MCP endpoint \u2014 the same token is refused by every other REST route, so an agent that has one cannot use it to read your users or edit posts directly. Each token has a name, an optional expiry, and its own Revoke button. Only a hash is stored.<\/p>\n\n<p><strong>Application Passwords<\/strong> still work, for setups already built around them. Be aware that they authenticate against the entire REST API, not just MCP.<\/p>\n\n<p><strong>OAuth 2.1 with PKCE<\/strong> is for cloud clients such as claude.ai and ChatGPT: they discover the site automatically, you approve the connection on a consent screen in wp-admin, and you can revoke that agent at any time under Settings \u2192 FlavourSuite AI.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20connection%20token%20leaks%3F\"><h3>What happens if a connection token leaks?<\/h3><\/dt>\n<dd><p>Whoever holds it can call the MCP tools you have enabled, as the user it was issued for \u2014 and nothing else. It is rejected on every REST route except the MCP endpoint, so it cannot be replayed against <code>wp-json\/wp\/v2\/*<\/code>. Revoke it on the settings screen and it stops working on the next request; other agents are unaffected. Every call it made is in the audit log.<\/p><\/dd>\n<dt id=\"which%20ai%20agents%20and%20models%20does%20this%20work%20with%3F\"><h3>Which AI agents and models does this work with?<\/h3><\/dt>\n<dd><p>Any MCP client, and any model. This plugin is an MCP <em>server<\/em>, so the model your agent runs \u2014 Claude, GPT, Gemini, DeepSeek, Qwen, Kimi, GLM, Llama, Mistral, an OpenRouter route, or something local \u2014 never touches this plugin and makes no difference to it. The settings screen generates the right config for Claude Code, Codex CLI, OpenCode, Cursor, VS Code, Cline, Roo Code, Windsurf, Claude and ChatGPT cloud connectors, and GUI apps like Cherry Studio, ChatWise, 5ire, LibreChat, Dify and n8n. For anything not listed, the <code>mcp-remote<\/code> stdio bridge recipe works with any agent that accepts an <code>mcpServers<\/code> block.<\/p><\/dd>\n<dt id=\"what%20is%20mcp%3F\"><h3>What is MCP?<\/h3><\/dt>\n<dd><p>The Model Context Protocol is an open standard that lets AI assistants use external tools. Claude, Cursor, ChatGPT, and a growing list of clients support it natively.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The core site tools work on any WordPress site. WooCommerce tools appear only when WooCommerce is active.<\/p><\/dd>\n<dt id=\"which%20fluentcrm%20versions%20are%20supported%3F\"><h3>Which FluentCRM versions are supported?<\/h3><\/dt>\n<dd><p>FluentCRM 3.0 or newer \u2014 that's where FluentCRM introduced its own abilities, which this plugin curates. With an older FluentCRM the CRM tools simply don't appear; nothing breaks.<\/p><\/dd>\n<dt id=\"can%20agents%20modify%20my%20site%3F\"><h3>Can agents modify my site?<\/h3><\/dt>\n<dd><p>Only through you. Agents can <em>propose<\/em> changes (Additional CSS, post\/page content), which appear as pending change requests under <em>Tools \u2192 Agent Changes<\/em> with a before\/after diff. Nothing touches the live site until an administrator approves it there, and applied changes can be rolled back. The propose tools are also disabled by default \u2014 you switch them on per tool.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Connection tokens: create named, revocable, optionally expiring bearer tokens for each agent. Unlike an Application Password they are accepted only on the MCP endpoint, so a leaked agent config cannot be used against the rest of the REST API. Only a SHA-256 hash is stored and the token is displayed once, at creation.<\/li>\n<li>OAuth discovery: the authorization-server and protected-resource documents are now served from <code>\/.well-known\/<\/code>, so cloud MCP clients (claude.ai, ChatGPT) can find and connect to the site without an Application Password.<\/li>\n<li>Connected agents: OAuth clients are now listed under Settings \u2192 FlavourSuite AI with a Revoke action that removes the registration and immediately invalidates every token issued to it.<\/li>\n<li>Rate limiting: authenticated tool calls are capped per user per minute (60 by default, configurable, 0 to disable) and the public OAuth endpoints are capped per IP. Over-budget requests get a 429 with Retry-After.<\/li>\n<li>Audit log export: download the recorded tool calls as CSV.<\/li>\n<li>Connection recipes for every major agent: pick your client on the settings screen and get the exact config block for it \u2014 Claude Code, Codex CLI, OpenCode, Cursor, VS Code, Cline, Roo Code, Windsurf, Claude and ChatGPT cloud connectors, GUI apps such as Cherry Studio and LibreChat, plus an <code>mcp-remote<\/code> stdio bridge that covers any other agent. Works regardless of which model the agent runs.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Proposed CSS is now validated with WordPress core's own Customizer CSS validation (the same checks as Appearance \u2192 Additional CSS), both when an agent proposes it and again before it is applied.<\/li>\n<li>List change requests now only returns requests the current user authored or has the capability to decide, instead of all requests.<\/li>\n<li>Updated the jetpack-autoloader library to 5.0.21.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Approvals: agents propose, humans approve. New change-request flow with before\/after diffs, approve\/reject, and rollback under Tools \u2192 Agent Changes.<\/li>\n<li>New tools: get custom CSS, propose custom CSS change, propose content edit, list change requests. Propose tools are off by default.<\/li>\n<li>Staleness protection: a proposal is refused at apply time if the CSS or post changed after it was made; rollback is refused if the target changed after apply.<\/li>\n<li>Lowered the PHP requirement to 7.4.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>MCP server (Streamable HTTP) built on the core Abilities API and the official wordpress\/mcp-adapter.<\/li>\n<li>Tools: site overview, list recent posts, search content, site policies, WooCommerce store overview (auto-detected), FluentCRM 3.0+ tool curation (auto-detected).<\/li>\n<li>Settings screen: master switch (off by default), per-tool toggles, connection snippet.<\/li>\n<li>Audit log of tool calls (user, tool, status, duration \u2014 never arguments or results).<\/li>\n<\/ul>","raw_excerpt":"Connect AI agents (Claude, Cursor, ChatGPT) to your WordPress site over MCP. Agents read directly but can only propose changes \u2014 you approve.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/335954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=335954"}],"author":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/masrawy2025"}],"wp:attachment":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=335954"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=335954"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=335954"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=335954"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=335954"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=335954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}