xSpeed Cache is officially live! Get 50% OFF during Launch Week — Lifetime starts at just $79Lifetime from $79 — 50% OFF, Launch Week! See Plans →

See Plans →
Features
xSpeed Hub Pricing Docs Blog Scan
Appearance
Get Plugin

Manage every WordPress site at once with Kimi Code

Managing every WordPress site at once with Kimi Code means asking Moonshot AI's terminal agent for one xSpeed Hub call that purges, warms or benchmarks the whole workspace, then reading what happened on each site.

list_siteslist_workspacespurge_cachetoggle_cacheupdate_settingsstart_preloaderstop_preloaderoptimize_siterun_benchmark

Last updated: October 2026

Example session · Kimi Code

You: The theme release is live. Use xSpeed Hub to purge every site and warm them again.

list_sites read-only
→ 10 sites in the workspace

Kimi Code: This will touch all 10 sites: a page purge, then the preloader on each. Approve?

You: Approve.

purge_cache(site: all, type: page) changes site
→ 9 of 10 purged; promo-site timed out

start_preloader(site: all) changes site
→ 9 started; promo-site unreachable

Kimi Code: Nine sites are purged and warming. promo-site did not respond to either call, so its pages may still show the old theme. I can retry just that one.

01

How Kimi Code handles this

You maintain a theme or a plugin that runs on many WordPress sites, and Kimi Code is open in the repository because that is where the change was made. Once it ships, you ask the agent to clear and warm every site that uses it. Kimi Code calls mcp__xspeedhub__purge_cache with site set to "all", then mcp__xspeedhub__start_preloader the same way. The Hub walks the workspace one site at a time with a one-second pause, so ten sites take about ten seconds, and each call returns one row per site.

Those rows are what keep the answer honest. Each has ok and either data or an error, so Kimi Code can print nine purged and one timed out, with the name and the error of the one, which is a partial success and not a failure. Seven tools take "all": purge_cache, toggle_cache, update_settings, start_preloader, stop_preloader, optimize_site and run_benchmark. A request such as "check the health of every site" uses a tool that takes one site, so Kimi Code makes one call per site and reports them together.

Kimi Code starts in Always Ask mode, where an MCP call that matches no permission rule asks for approval, and the prompt shows the tool and its arguments, site: "all" included. Approve for this session allows the same kind of call until the session ends, and permanent rules go in [[permission.rules]] in config.toml. Allow mcp__xspeedhub__get_* and mcp__xspeedhub__list_* so reads stop prompting, add mcp__xspeedhub__run_benchmark if you want fleet benchmarks without a prompt, and leave the six fan-out tools that write on the prompt. For a purge, toggle, settings or preloader call on every site, the Hub also tells the agent to confirm once, which is guidance that does not name optimize_site.

02

Set up Kimi Code once

Already connected? Skip to the prompts. Alternatives and troubleshooting are on the Kimi Code guide.

1Put your sites in xSpeed Hub

Sign in at app.xspeedcache.com with Google or email; the Hub is free and has no site cap. Then connect each WordPress site from its own dashboard: click Connect Hub in the xSpeed Cache top bar, then Connect via xSpeed Hub. Each site needs the free xSpeed Cache plugin.

2Add xSpeed Hub to mcp.json

Put this in ~/.kimi-code/mcp.json to use the Hub in every project, or in .kimi-code/mcp.json inside one repository, where it overrides a user entry of the same name. You can also run /mcp-config and let Kimi Code add it. A server added while a session is open joins only the next session.

~/.kimi-code/mcp.json
{
  "mcpServers": {
    "xspeedhub": {
      "url": "https://app.xspeedcache.com/xspeed/mcp"
    }
  }
}

3Sign in with /mcp-config login

Start a new session with kimi, run this and approve access on the xSpeed Hub page that opens in your browser. There is no token to paste. Then run /mcp to check that xspeedhub is connected.

Text
/mcp-config login xspeedhub
/mcp
1 / 3

Full Kimi Code setup, sign-in options and FAQ

Before you send a prompt that changes something

Reads change nothing on your sites, though contact_support emails xSpeed support. Writes run once your connection allows them, so your client's approval prompt and a read-only connection (the token's Read-only everywhere switch, or a Viewer sign-in) are the gates that matter. In Kimi Code's default Always Ask mode, an MCP call that matches no permission rule asks for approval, and Approve for this session allows the same kind of call until the session ends. Permanent rules go in [[permission.rules]] in config.toml: allow mcp__xspeedhub__get_* and mcp__xspeedhub__list_* to let the reads run, and leave the write tools on the prompt. Ask When Needed mode, from /yolo, approves MCP calls automatically, and Never Ask, from /auto, approves everything. xSpeed Hub has no confirmation step of its own, so in either of those modes a purge or a settings change runs as soon as your connection allows writes. To remove writes altogether, list the read tools in the entry's enabledTools, or use a connection token with Read-only everywhere on.

03

What do I ask?

Three prompts written for Kimi Code. More for this job are below.

Prompt for Kimi Code
Use xSpeed Hub to purge the page cache on every site, then start the preloader on all of them and print one line per site.
Prompt for Kimi Code
With xSpeed Hub, benchmark all sites and list any where the cached response is not at least twice as fast.
Prompt for Kimi Code
Ask xSpeed Hub which sites failed the last fleet purge, then retry only those handles.
04

What happens, step by step

If you run many WordPress sites, repeating one action on each is the slow part. Through xSpeed Hub, seven tools accept every site in a workspace, or a list of handles, in a single call. The Hub runs the sites one after another and returns a result for each, so a site that fails is named instead of hidden. Everything else in the Hub works on one site per call.

01

See what you can reach

list_sites returns each site's handle, URL, status and scopes. When you have more than one workspace, list_workspaces returns each one's handle, id, your role, its site count, which one is the default, and whether this connection can reach it.

02

Choose the scope of the call

The agent passes site: "all" for every site in one workspace, or an array of handles for exactly those sites. For a workspace other than the default it also passes the workspace argument. Omit workspace and the call acts on the default workspace.

03

Confirm once

Before a purge, toggle, settings change or preloader call that touches every site, the Hub tells the agent to say "this will touch all N sites" and wait for you, then make one call. That instruction does not name optimize_site, so for it your client's prompt is the gate. It is guidance to the agent, not a lock. It is one tool call, so one approval in your client covers every site in it.

04

Run it as one call

The Hub runs the sites one after another with a one-second pause between live calls, so a fleet purge is not a burst of traffic at your servers. Revoked sites are skipped from "all". Each site's action lands in the activity log as its own row.

05

Read the result per site

The reply is a summary of targets, succeeded and failed, plus one row per site with ok and either its data or its error. Some sites failing is a partial success. Only a run where every site failed comes back as an error.

06

Follow up on the failures

The agent reports which sites failed and why, then retries just those handles with an array. Tools that read one site, such as get_cache_status and get_health, do not fan out, so a fleet-wide check means one call per site.

05

Reference

Fan-out toolspurge_cache, toggle_cache, update_settings, start_preloader, stop_preloader, optimize_site, run_benchmark
Selectorsite: "all", or an array of handles
What all coversEvery site this connection can see in one workspace, minus revoked ones
PacingOne after another, with a 1 second pause between live calls
Resultsummary (targets, succeeded, failed) and a row per site: ok, then data or error
Partial failureReported per site; the call counts as an error only when every site failed
Workspace argumentOptional. Omit it for the default workspace; name one by its handle or id from list_workspaces
ReachFixed when you approve the connection; list_workspaces shows reachable: false for the rest
Not fan-outget_health, get_cache_status and every other tool take one site per call
Slow toolsoptimize_site takes up to 2 minutes per site; a target_score run is capped at 12 rounds per call
Read-onlyThe connection token with Read-only everywhere on, or a Viewer sign-in, refuses every fan-out write; run_benchmark works. An OAuth sign-in gets the scopes the client asks for
Hub daily passRe-verifies sites, snapshots cache status and hit ratio, reads stored reports, alerts by Slack webhook or email
06

Rules worth keeping

  • Confirm once, then call once. The Hub has no confirmation step of its own, so your client's approval prompt and a read-only connection (the connection token with Read-only everywhere on, or a Viewer sign-in) are the gates that matter. The Hub's "this will touch all N sites" is an instruction to the agent for purge, toggle, settings and preloader calls, and it does not name optimize_site.
  • "all" is one workspace, never every workspace. To act in another workspace, name it. A write to a non-default workspace must name it, and an array of handles is looked up only in the workspace the call names.
  • Read every result per site. Treat some sites failing as a partial result, and never accept a blanket "done" from the agent.
  • Try a behaviour change on one site before you send it to the fleet. toggle_cache and update_settings on every site are one call, and each site checks values against its own settings, so a Pro setting can fail on a Free site.
  • optimize_site on many sites is slow, because each site can take up to two minutes inside one call. Use dry_run first, or name a short list of handles.
  • The Hub has no scheduler for agent prompts. Its own daily pass and alerts run without an agent, and an agent can only act when you send a prompt or your AI client runs one on a timer.

Good to know with Kimi Code

Two shortcuts remove the prompt for fleet writes. /yolo selects Ask When Needed, which approves MCP calls automatically, and /auto selects Never Ask, which approves everything. Approve for this session on purge_cache does the same for the rest of the session, because the approval is for the tool and not its site argument, so a later "purge everything" runs straight away. xSpeed Hub has no confirmation step of its own, so in those modes the only hard limit is your connection's scope. If you sign in with /mcp-config login, sign in as a Viewer member for read-only access; if you send the connection token through bearerTokenEnvVar, turn on Read-only everywhere. You can also list only the read tools in the entry's enabledTools, which hides the writes from the agent entirely. A .kimi-code/mcp.json in a repository overrides your home entry of the same name, so check which xspeedhub entry a project uses before a fleet run, and name the workspace when you manage more than one.

07

More prompts for this job

They work in any client connected to xSpeed Hub.

Prompt
Use xSpeed Hub to list every site I can reach, and every workspace, and say which workspace you act in by default.
Prompt
With xSpeed Hub, purge the cache on every site in my workspace and tell me which ones failed.
Prompt
Use xSpeed Hub to run a benchmark on all my sites and rank them by cached response time.
Prompt
Use xSpeed Hub to start the preloader on blog, shop and docs only.
Prompt
With xSpeed Hub, turn page caching on for every site where it is off. Check each site first.
Prompt
Use xSpeed Hub to stop the preloader everywhere. The servers are busy.
Prompt
Ask xSpeed Hub to preview a safe optimize_site pass on every site with dry_run and summarize what it would change.
Prompt
Use xSpeed Hub to purge every site in the client-acme workspace, not my default one.
08

Frequently asked questions

In the default Always Ask mode, yes, unless a permission rule allows the tool or you chose Approve for this session for it. The prompt shows the arguments, so you can see site set to all. Ask When Needed and Never Ask approve MCP calls automatically.

List only the read tools in the xspeedhub entry's enabledTools, so the write tools are not offered to the agent. On the Hub side, a connection token with Read-only everywhere on, or a Viewer sign-in, refuses every write.

Every site the connection can see in one workspace. It never crosses workspaces, and revoked sites are skipped. If your connection is limited to some sites, "all" quietly means the sites you are allowed, with no error naming the rest. To act in another workspace, the agent names it with the workspace argument.

The other sites still run. The reply has a summary and a row for each site with ok and its data or its error, so a site that was unreachable is named. A run counts as an error only when every site failed. Ask the agent to retry just the failed handles.

No. get_health and get_cache_status take one site per call, so the agent loops. The tools that fan out are purge_cache, toggle_cache, update_settings, start_preloader, stop_preloader, optimize_site and run_benchmark. The Hub dashboard has a fleet overview for health.

Yes, on its own. A daily pass re-verifies each site, retrying a failed probe once, snapshots cache status and hit ratio, and reads the PageSpeed and GTmetrix reports your sites already stored. It can alert you by Slack webhook or email when a site becomes unreachable, caching is switched off, the hit ratio falls below a floor you set, or a score regresses. Each alert fires once per incident, not every day.

The Hub has no confirmation step. Its instructions tell the agent to confirm once with you, saying how many sites a call will touch, but that is guidance and not a lock. Your AI client's approval prompt and a read-only connection (the connection token with Read-only everywhere on, or a Viewer sign-in) are what stop a write. The instruction covers purge, toggle, settings and preloader calls, not optimize_site. The dashboard's own Purge all button does confirm before it runs.

No. It cannot add, remove or rename sites, change members, roles or billing, mint or rotate tokens, or widen the workspaces this connection reaches. Those stay in the Hub dashboard.

09

Keep going

Manage every site at once with other agents

More with Kimi Code

Documentation

From the blog

Manage every site at once, from Kimi Code.

xSpeed Hub is free and has no site cap. Connect your sites once and ask from the agent you already use.