How ChatGPT dots handles this
A dot is the ChatGPT agent you keep, with its own cloud computer and memory, so it suits the person who runs a dozen WordPress sites and wants something watching them between conversations. The dot uses the same xspeedhub app you created in ChatGPT developer mode, because OpenAI shares plugin permissions across dots and ChatGPT. You ask it once, in plain words, to benchmark every site each morning. It calls run_benchmark with site set to "all", the Hub works through the workspace one site after another with a one-second pause, and the dot posts the cached and uncached times for each site in the conversation.
That scheduled run is the right shape for fleet work in a dot, because run_benchmark is a read and changes nothing. The other six fan-out tools write: purge_cache, toggle_cache, update_settings, start_preloader, stop_preloader and optimize_site. When the morning report shows a problem, you answer in the same conversation and the dot proposes the fix, for example a purge on every site after a shared header change. The Hub returns one row per site with ok and either data or an error, so a run that clears nine sites and misses one is a partial success, and the dot should name the one it missed.
Approval has two layers here, and neither belongs to the Hub. In a ChatGPT chat, write actions from a developer-mode app need your confirmation by default, and ChatGPT treats a tool without a read-only annotation as a write, which covers every Hub tool. In the dot, Custom rules decide what it does on its own: Take action without asking, Take action if pre-approved, Ask before taking action or Hand off to you. Keep a rule on Ask before taking action for xSpeed Hub changes. For a purge, toggle, settings or preloader call that touches every site, the Hub also tells the agent to state the site count first, but that is an instruction to the model, not a lock, and it does not name optimize_site.
Set up ChatGPT dots once
Already connected? Skip to the prompts. Alternatives and troubleshooting are on the ChatGPT dots 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.
2Create the xspeedhub app in ChatGPT
In ChatGPT on the web, turn on Developer mode under Settings, Security and login. Open Plugins, select the plus button and create a developer-mode app named xspeedhub with this URL and OAuth. Click Scan Tools, approve access on the xSpeed Hub page that opens, then click Create. If ChatGPT already has the app, skip this step. On a Business workspace only an admin or owner can turn on developer mode and publish the app.
https://app.xspeedcache.com/xspeed/mcp
3Check that your dot can see it
OpenAI says plugin permissions are shared across dots and ChatGPT. Open your dot's profile, then Customize and Plugins, and check that xspeedhub is there. That screen uses the shared ChatGPT settings, and OpenAI notes the apps available to a dot may differ, so confirm it before you hand over a task.
Dot profile > Customize > Plugins > xspeedhub
4Add a custom rule for site changes
Under Customize, Custom rules, describe the action and pick a behavior: Take action without asking, Take action if pre-approved, Ask before taking action, or Hand off to you. Add a rule that covers purging a cache, changing settings or running a speed test through xSpeed Hub, and choose Ask before taking action.
Customize > Custom rules > xSpeed Hub changes: Ask before taking action
Full ChatGPT dots 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 a ChatGPT chat, write actions from a developer-mode app need your confirmation by default, and ChatGPT treats a tool without a read-only annotation as a write. xSpeed Hub's tools carry no such annotation. A dot comes with OpenAI's defaults for which actions need approval, and Custom rules let you set, for an action you describe, Take action without asking, Take action if pre-approved, Ask before taking action or Hand off to you. xSpeed Hub has no confirmation step of its own, so a rule that lets your dot act without asking runs a purge or a settings change as soon as your connection allows writes. Keep xSpeed Hub changes on Ask before taking action. For read-only access, sign in as a Viewer member of the workspace; the connection token's Read-only everywhere switch does not apply, because the app signs in with OAuth.
What do I ask?
Three prompts written for ChatGPT dots. More for this job are below.
Every weekday at 8:00, use xSpeed Hub to benchmark every site and post the cached and uncached times. Report only.
With xSpeed Hub, purge the page cache on every site in my workspace and tell me which ones failed.
Ask xSpeed Hub for every workspace this connection reaches and how many sites each one has.
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 ChatGPT dots
A scheduled run has nobody watching it. If a custom rule lets the dot take xSpeed Hub actions without asking, a scheduled prompt that drifts from report to fix can purge or toggle every site unattended, so keep scheduled prompts to run_benchmark and other reads, and write "report only" into the wording. The app signs in with OAuth, so the Hub's Read-only everywhere switch, which belongs to the connection token, does not apply. For a dot that should never write, sign in as a Viewer member of the workspace. Check availability before you build a routine around it: OpenAI lists dots for Pro users outside the European Economic Area, Switzerland and the UK, for Business Premium, and as a beta on Enterprise, Edu and Healthcare, and developer mode has its own plan rules. Remember too that "all" means one workspace. If you manage client workspaces, name the one the dot should act in. To stop every scheduled run at once, choose Pause from the menu in the dot's profile.
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 ChatGPT dots
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
- ChatGPT dots + xSpeed
- Every AI agent that works with xSpeed
From the blog