{"id":7,"date":"2026-08-19T02:46:05","date_gmt":"2026-08-19T02:46:05","guid":{"rendered":"https:\/\/hycpxbxyuf.wordifysites.com\/?page_id=7"},"modified":"2026-08-19T04:10:26","modified_gmt":"2026-08-19T04:10:26","slug":"wordify-mcp","status":"publish","type":"page","link":"https:\/\/hycpxbxyuf.wordifysites.com\/","title":{"rendered":"Wordify MCP"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-4008981b wp-block-group-is-layout-constrained\" style=\"padding-top:5rem;padding-right:1.5rem;padding-bottom:5rem;padding-left:1.5rem\">\n<p class=\"has-primary-color has-text-color wp-block-paragraph\" style=\"font-size:0.85rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase\">Model Context Protocol<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"font-size:clamp(1.976rem, 1.976rem + ((1vw - 0.2rem) * 2.594), 3.5rem);line-height:1.1\">Run your WordPress hosting by asking for it<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.638), 1.25rem);line-height:1.6\">The Wordify MCP server connects Claude, ChatGPT, and other AI assistants directly to your hosting account. Ask a question in plain language, and your assistant calls the real Wordify API \u2014 listing sites, clearing caches, provisioning servers, reading debug logs \u2014 and reports back. No API keys. No dashboards to click through.<\/p>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);margin-top:2.5rem;margin-bottom:0.5rem\">Your MCP server URL<\/p>\n\n\n\n<pre class=\"wp-block-code has-primary-alt-color has-primary-alt-accent-background-color has-text-color has-background\" style=\"border-radius:8px\"><code>https:\/\/console.wordify.com\/mcp<\/code><\/pre>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);\">That single URL is the entire configuration. <strong>48 tools<\/strong>, one OAuth sign-in, about a minute to set up.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-5b2c08d2 wp-block-group-is-layout-constrained\" style=\"padding-top:3.5rem;padding-right:1.5rem;padding-bottom:3rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">What is MCP, and why should you care?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Model Context Protocol<\/strong> is an open standard for giving AI assistants structured access to real systems. Instead of an assistant guessing at HTTP endpoints or asking you to paste screenshots, it gets a typed catalogue of actions it can take \u2014 each with documented parameters, validation, and error handling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wordify&#8217;s MCP server exposes the same <code>\/api\/v1\/*<\/code> surface the console itself uses. That matters more than it sounds: your assistant isn&#8217;t working against a simplified or second-class API. It sees the same sites, the same config sections, the same task queue, and the same permission model you do.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-97fdca69 wp-block-columns-is-layout-flex\" style=\"margin-top:2.5rem\">\n<div class=\"wp-block-column has-background is-layout-flow wp-block-column-is-layout-flow\" style=\"border-radius:10px;background-color:#fdeaea;padding-top:1.5rem;padding-right:1.5rem;padding-bottom:1.5rem;padding-left:1.5rem\">\n<p class=\"wp-block-paragraph\" style=\"font-weight:700\">Without MCP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);\">Open the console. Find the site. Click into settings. Repeat for the other eleven sites. Realise you forgot which ones you already did.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column has-background is-layout-flow wp-block-column-is-layout-flow\" style=\"border-radius:10px;background-color:#e6f8ec;padding-top:1.5rem;padding-right:1.5rem;padding-bottom:1.5rem;padding-left:1.5rem\">\n<p class=\"wp-block-paragraph\" style=\"font-weight:700\">With MCP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);\">&#8220;Which of my sites are on an end-of-life PHP version, and what would upgrading them break?&#8221; \u2014 one question, one answer, every site covered.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-5e4aa0a9 wp-block-group-is-layout-constrained\" style=\"padding-top:3rem;padding-right:1.5rem;padding-bottom:3rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">Connect in about a minute<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Connecting is a one-click OAuth flow: paste the server URL into your assistant, sign in to Wordify to authorise, done. <strong>There are no API keys to mint, no tokens to paste, and no config files to edit.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the console, everything below is built into <strong>Integrations \u2192 AI Connectors<\/strong> \u2014 your server URL with a copy button, per-client instructions, and a live list of authorised assistants.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2.5rem\">Claude<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <strong>Settings \u2192 Connectors<\/strong> and choose <strong>Add custom connector<\/strong>.<\/li>\n\n\n\n<li>Paste <code>https:\/\/console.wordify.com\/mcp<\/code> into <strong>Remote MCP server URL<\/strong>, then click <strong>Add<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Connect<\/strong> and sign in to Wordify to authorise. Claude registers itself and obtains its own OAuth token behind the scenes.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.043), 0.9rem);\">Custom connectors require Claude Pro or Max. On Team or Enterprise plans, an organisation owner adds the connector before members can use it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2.5rem\">ChatGPT<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <strong>Settings \u2192 Connectors \u2192 Advanced<\/strong> and turn on <strong>Developer mode<\/strong>.<\/li>\n\n\n\n<li>Go to <strong>Settings \u2192 Connectors \u2192 Create<\/strong>.<\/li>\n\n\n\n<li>Paste the server URL into <strong>Connector URL<\/strong>, save, and authorise by signing in to Wordify.<\/li>\n<\/ol>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-5e4aa0a9 wp-block-group-is-layout-constrained\" style=\"padding-top:3rem;padding-right:1.5rem;padding-bottom:3rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">Your first five minutes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start a new conversation and just ask. You don&#8217;t need to name tools or learn a syntax \u2014 the tool descriptions tell your assistant how each one is used.<\/p>\n\n\n\n<figure class=\"wp-block-table\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);\"><table><thead><tr><th>Ask this<\/th><th>Tools it will reach for<\/th><\/tr><\/thead><tbody><tr><td>&#8220;List my Wordify sites and tell me which are on an older WP version.&#8221;<\/td><td><code>list_sites<\/code><\/td><\/tr><tr><td>&#8220;Clear the cache on all my sites.&#8221;<\/td><td><code>dispatch_task<\/code> \u2192 <code>get_task<\/code><\/td><\/tr><tr><td>&#8220;Is anything wrong across my fleet right now?&#8221;<\/td><td><code>audit_sites<\/code><\/td><\/tr><tr><td>&#8220;Preview what upgrading every site to the latest WordPress would do.&#8221;<\/td><td><code>dispatch_task<\/code> with <code>dry_run=true<\/code><\/td><\/tr><tr><td>&#8220;My site is throwing a 500 \u2014 what&#8217;s in the error log?&#8221;<\/td><td><code>update_site_config<\/code> \u2192 <code>get_debug_log<\/code><\/td><\/tr><tr><td>&#8220;Spin up a staging copy of example.com so I can test the plugin update.&#8221;<\/td><td><code>create_staging<\/code> \u2192 <code>get_task<\/code><\/td><\/tr><tr><td>&#8220;What did my team spend last month?&#8221;<\/td><td><code>get_usage<\/code> \/ <code>list_invoices<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.043), 0.9rem);\">MCP sessions automatically get a 5\u00d7 rate-limit bucket \u2014 300 requests\/min versus the public API&#8217;s 60\/min \u2014 to accommodate the chattier call pattern of an assistant working through a conversation. No opt-in needed.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-5e4aa0a9 wp-block-group-is-layout-constrained\" style=\"padding-top:3rem;padding-right:1.5rem;padding-bottom:3rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">What&#8217;s in the box: 48 tools<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The surface covers the full lifecycle of a WordPress site \u2014 from provisioning one to billing for it. You never call these by name; they&#8217;re what your assistant picks from.<\/p>\n\n\n\n<figure class=\"wp-block-table\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.077), 0.92rem);\"><table><thead><tr><th>Group<\/th><th>Tools<\/th><\/tr><\/thead><tbody><tr><td><strong>Orientation<\/strong><\/td><td><code>get_me<\/code>, <code>list_teams<\/code>, <code>select_team<\/code><\/td><\/tr><tr><td><strong>Sites<\/strong><\/td><td><code>list_sites<\/code>, <code>get_site<\/code>, <code>list_plans<\/code>, <code>provision_site<\/code>, <code>audit_sites<\/code>, <code>clear_site_cache<\/code>, <code>enable_site_cdn<\/code>, <code>disable_site_cdn<\/code><\/td><\/tr><tr><td><strong>Configuration<\/strong><\/td><td><code>update_site_config<\/code> \u2014 one tool, a <code>section<\/code> discriminator for PHP, cache, CDN, Redis, WordPress settings, basic auth, and debug flags<\/td><\/tr><tr><td><strong>Cron<\/strong><\/td><td><code>get_site_cron<\/code>, <code>update_site_cron<\/code><\/td><\/tr><tr><td><strong>Debugging<\/strong><\/td><td><code>get_debug_log<\/code><\/td><\/tr><tr><td><strong>Admin access<\/strong><\/td><td><code>get_admin_login_link<\/code>, <code>list_wp_users<\/code><\/td><\/tr><tr><td><strong>WP-CLI<\/strong><\/td><td><code>run_wp_cli<\/code><\/td><\/tr><tr><td><strong>Plugins &amp; themes<\/strong><\/td><td><code>list_plugins<\/code>, <code>install_plugin<\/code>, <code>toggle_plugin<\/code>, <code>list_themes<\/code><\/td><\/tr><tr><td><strong>Content<\/strong><\/td><td><code>list_posts<\/code>, <code>get_post<\/code>, <code>create_post<\/code>, <code>update_post<\/code><\/td><\/tr><tr><td><strong>Backups<\/strong><\/td><td><code>list_backups<\/code>, <code>create_backup<\/code>, <code>restore_backup<\/code><\/td><\/tr><tr><td><strong>Staging<\/strong><\/td><td><code>create_staging<\/code>, <code>push_staging<\/code>, <code>pull_staging<\/code><\/td><\/tr><tr><td><strong>Cloning<\/strong><\/td><td><code>clone_site<\/code><\/td><\/tr><tr><td><strong>Domains<\/strong><\/td><td><code>list_domains<\/code>, <code>add_domain<\/code>, <code>recheck_domain_dns<\/code><\/td><\/tr><tr><td><strong>Bulk tasks<\/strong><\/td><td><code>dispatch_task<\/code>, <code>get_task<\/code>, <code>list_tasks<\/code><\/td><\/tr><tr><td><strong>Billing (read-only)<\/strong><\/td><td><code>list_invoices<\/code>, <code>get_usage<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.043), 0.9rem);\">Seven older per-section tools (<code>update_php<\/code>, <code>update_cache<\/code>, <code>update_cdn<\/code>, <code>update_redis<\/code>, <code>update_wordpress_settings<\/code>, <code>update_basic_auth<\/code>, <code>update_debug_mode<\/code>) remain registered as deprecated aliases of <code>update_site_config<\/code> so existing agents keep working. Some tools \u2014 the content and WP-CLI ones \u2014 are feature-gated and only appear for teams entitled to them.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-5e4aa0a9 wp-block-group-is-layout-constrained\" style=\"padding-top:3rem;padding-right:1.5rem;padding-bottom:3rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">Five concepts that make it click<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2rem\">1. Your team decides what you can do<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OAuth proves <em>who<\/em> you are. What you&#8217;re allowed to <em>do<\/em> is decided by your team role \u2014 the same check the web console applies. So if a management action fails, it means your role lacks that capability, not that a token is missing a scope. If you belong to several teams, your assistant calls <code>select_team<\/code> once to set the active one; single-team users skip it entirely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2rem\">2. Slow things return a receipt, not a result<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Provisioning a site, creating a backup, enabling a CDN \u2014 these take minutes, so they return a <strong>task handle<\/strong> immediately rather than blocking. Your assistant polls it with <code>get_task<\/code> and reports progress as it goes. A brand-new site moves through six steps: DNS record, server account, WordPress install, plugins, configuration, SSL certificate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2rem\">3. Ask once, apply everywhere<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>dispatch_task<\/code> fans a single action across up to <strong>100 sites<\/strong> in one call. &#8220;Clear the cache on all my sites&#8221; should produce one call, not one per site. For anything destructive or wide-blast, <code>dry_run=true<\/code> shows you what <em>would<\/em> happen first. And <code>audit_sites<\/code> answers &#8220;what&#8217;s wrong across my fleet?&#8221; in a single request rather than a per-site loop.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2rem\">4. Destructive actions are fenced off by default<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>run_wp_cli<\/code> escape hatch runs raw WP-CLI for the long tail no purpose-built tool covers. It ships two guardrails. Some commands are <strong>blocked outright<\/strong> and cannot be run at all \u2014 <code>db<\/code>, <code>config<\/code> (it would expose database passwords and secret keys), <code>eval<\/code>, <code>shell<\/code>, <code>server<\/code>, <code>package<\/code>, and <code>cli<\/code>. Others \u2014 deletes, non-dry-run search-replace, cache flushes \u2014 are <strong>refused while safe mode is on<\/strong>, which is the default. Turning safe mode off is a deliberate act, and every run is recorded in the site&#8217;s activity log either way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:2rem\">5. Nothing gets published behind your back<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The content tools are draft-first by design: <code>create_post<\/code> saves a draft unless you explicitly ask for <code>status=\"publish\"<\/code>. Publishing is never implicit. Edits create a WordPress revision, so they&#8217;re always reversible, and <code>update_post<\/code>&#8216;s trash action moves content to the trash rather than permanently deleting it.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-tertiary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-ba83a77f wp-block-group-is-layout-constrained\" style=\"padding-top:3rem;padding-right:1.5rem;padding-bottom:3.5rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\">When something goes wrong<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Failures come back as a structured error with a stable <code>code<\/code>, a human-readable message, and a request ID you can quote to support.<\/p>\n\n\n\n<figure class=\"wp-block-table\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.077), 0.92rem);\"><table><thead><tr><th>Code<\/th><th>What it means<\/th><th>What to do<\/th><\/tr><\/thead><tbody><tr><td><code>unauthenticated<\/code><\/td><td>The connector isn&#8217;t authorised \u2014 token expired or disconnected<\/td><td>Re-authorise from your assistant<\/td><\/tr><tr><td><code>insufficient_ability<\/code><\/td><td>Your team role can&#8217;t manage sites<\/td><td>Ask a team owner to upgrade your role<\/td><\/tr><tr><td><code>insufficient_capability<\/code><\/td><td>Your role lacks permission for this specific action<\/td><td>Ask a team owner to escalate your role<\/td><\/tr><tr><td><code>team_not_accessible<\/code><\/td><td>No team could be resolved<\/td><td>Select a team first, or contact support<\/td><\/tr><tr><td><code>validation_failed<\/code><\/td><td>Bad input<\/td><td>The error names the offending field<\/td><\/tr><tr><td><code>not_found<\/code><\/td><td>It doesn&#8217;t exist \u2014 <em>or<\/em> it isn&#8217;t in your current team<\/td><td>Check the ID and which team is active<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.043), 0.9rem);\">One genuinely useful debugging habit: an empty debug log is ambiguous unless you know whether logging was on. <code>get_debug_log<\/code> returns the WP_DEBUG flag state alongside the log tail, so &#8220;nothing here&#8221; and &#8220;logging was off&#8221; are never confused.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-base-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-4008981b wp-block-group-is-layout-constrained\" style=\"padding-top:5rem;padding-right:1.5rem;padding-bottom:5rem;padding-left:1.5rem\">\n<h2 class=\"wp-block-heading\" style=\"font-size:clamp(1.502rem, 1.502rem + ((1vw - 0.2rem) * 1.699), 2.5rem);\">You stay in control<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.298), 1.05rem);\">Every assistant you authorise appears under <strong>Connected AI clients<\/strong> in Integrations \u2192 AI Connectors, showing when it connected and when its access expires. Click <strong>Disconnect<\/strong> on anything you no longer use \u2014 or don&#8217;t recognise \u2014 and it loses access immediately. You can reconnect any time by authorising again.<\/p>\n\n\n\n<p class=\"has-secondary-color has-text-color wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.128), 0.95rem);margin-top:2rem\">A few things deliberately stay in the web console rather than the MCP surface: payment changes, invoice PDF downloads, deleting a domain, changing a site&#8217;s primary domain, suspending a site, and deleting a site. Those are one-way doors, and they should be clicked on purpose.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>How to connect an AI assistant to your Wordify hosting with the Model Context Protocol \u2014 setup, the 48 tools, and the concepts that make it click.<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":4,"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/hycpxbxyuf.wordifysites.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}