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.
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.
{
"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.
/mcp-config login xspeedhub /mcp
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.
What do I ask?
Three prompts written for Kimi Code. More for this job are below.
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.
With xSpeed Hub, benchmark all sites and list any where the cached response is not at least twice as fast.
Ask xSpeed Hub which sites failed the last fleet purge, then retry only those handles.
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.
Reference
| Fan-out tools | purge_cache, toggle_cache, update_settings, start_preloader, stop_preloader, optimize_site, run_benchmark |
|---|---|
| Selector | site: "all", or an array of handles |
| What all covers | Every site this connection can see in one workspace, minus revoked ones |
| Pacing | One after another, with a 1 second pause between live calls |
| Result | summary (targets, succeeded, failed) and a row per site: ok, then data or error |
| Partial failure | Reported per site; the call counts as an error only when every site failed |
| Workspace argument | Optional. Omit it for the default workspace; name one by its handle or id from list_workspaces |
| Reach | Fixed when you approve the connection; list_workspaces shows reachable: false for the rest |
| Not fan-out | get_health, get_cache_status and every other tool take one site per call |
| Slow tools | optimize_site takes up to 2 minutes per site; a target_score run is capped at 12 rounds per call |
| Read-only | The 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 pass | Re-verifies sites, snapshots cache status and hit ratio, reads stored reports, alerts by Slack webhook or email |
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.
More prompts for this job
They work in any client connected to xSpeed Hub.
Use xSpeed Hub to list every site I can reach, and every workspace, and say which workspace you act in by default.
With xSpeed Hub, purge the cache on every site in my workspace and tell me which ones failed.
Use xSpeed Hub to run a benchmark on all my sites and rank them by cached response time.
Use xSpeed Hub to start the preloader on blog, shop and docs only.
With xSpeed Hub, turn page caching on for every site where it is off. Check each site first.
Use xSpeed Hub to stop the preloader everywhere. The servers are busy.
Ask xSpeed Hub to preview a safe optimize_site pass on every site with dry_run and summarize what it would change.
Use xSpeed Hub to purge every site in the client-acme workspace, not my default one.
Frequently asked questions
Keep going
Manage every site at once with other agents
More with Kimi Code
Documentation
- Managing your fleet with xSpeed Hub
- Teams, roles and workspaces in xSpeed Hub
- Scoped AI connections in xSpeed Hub
- Connecting to xSpeed Hub
- How to write prompts for xSpeed Hub
- Kimi Code + xSpeed
- Every AI agent that works with xSpeed
From the blog