How Hermes Agent handles this
Hermes Agent keeps working between your messages, which makes it a natural place for the dull half of Cloudflare care: checking that the connection still works. Ask it in a chat and it calls list_sites, then cloudflare_verify, which asks Cloudflare whether the credentials and zone stored in xSpeed still resolve. It reports the answer and changes nothing.
When you want an action, it has two. purge_cloudflare clears only the edge copy for a site. set_cloudflare_dev_mode with enabled true bypasses the edge for about three hours, so origin changes show at once, and turns off when asked or when time runs out. Both need Cloudflare connected in xSpeed on that site, and neither accepts site: "all", so a pass over many sites is one call per site.
Hermes has cron-style scheduling, and the Hub does not schedule prompts for agents, so a recurring check lives in Hermes. Each run is a fresh session with nobody to answer a prompt, and a nightly cloudflare_verify across your sites works well because it only reads. Write the job's prompt so that it reports failures and stops, instead of fixing them on its own. A failed check is usually a changed token, which a person should look at. Ask Hermes to name the sites that failed and the message Cloudflare returned, so you can fix the credentials in xSpeed on those sites and run the check again.
Set up Hermes Agent once
Already connected? Skip to the prompts. Alternatives and troubleshooting are on the Hermes Agent 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 config.yaml
Add this entry under mcp_servers. auth: oauth tells Hermes to handle discovery, dynamic client registration, PKCE and token refresh itself. If you edit the file from inside a running session, Hermes reloads its MCP connections with a 30 second timeout, which is too short for a browser sign-in, so finish the entry and then run the login in the next step.
mcp_servers:
xspeedhub:
url: "https://app.xspeedcache.com/xspeed/mcp"
auth: oauth 3Sign in with hermes mcp login
Run this once. Hermes prints an authorization URL, opens your browser where it can, and waits for the callback on a local loopback port. Sign in to xSpeed Hub and approve. There is no token to paste; Hermes caches the credentials it receives under ~/.hermes/mcp-tokens. On a remote host, paste the redirect URL back into the terminal when Hermes asks, or forward the callback port over SSH.
hermes mcp login xspeedhub hermes mcp test xspeedhub
Full Hermes Agent 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. A Hermes server entry has a trust setting. The default, full, adds no approval prompt for that server's tools, and the approvals setting covers dangerous shell commands, not MCP tools. Set trust: untrusted on the xspeedhub entry and Hermes asks before every call to a tool that lacks a readOnlyHint of true. The Hub does not mark its tools that way, so with untrusted every Hub call asks, reads included. To remove writes instead of prompting, set tools.include on the entry to the read tools; the filter takes globs and include wins over exclude. The Hub itself has no confirmation step.
What do I ask?
Three prompts written for Hermes Agent. More for this job are below.
Using xSpeed Hub, run cloudflare_verify on each of my sites now and give me one line per site.
Use xSpeed Hub to purge the Cloudflare edge cache on shop and tell me what Cloudflare said.
With xSpeed Hub, turn Cloudflare development mode on for blog, and turn it off when I say I am done.
What happens, step by step
When Cloudflare sits in front of a WordPress site, it keeps its own copy of your files at the edge. Through xSpeed Hub an agent can check that the site's Cloudflare credentials still work, purge the edge cache, and turn development mode on or off. All three need Cloudflare connected in xSpeed on that site, and each works on one site at a time.
01
Verify the connection
cloudflare_verify calls Cloudflare's API with the credentials stored on the site and checks that the token and zone still resolve. It purges nothing and works on a read-only connection. If Cloudflare is not connected on that site, the call comes back as an error and the agent should tell you rather than retry.
02
Purge the edge
purge_cloudflare empties the Cloudflare edge cache for the site's zone. It does not touch the copies on your server. When Cloudflare is in front of a site, a content change usually needs both, so the agent runs purge_cache first and purge_cloudflare after it, or one purge_cache of type all, which reaches the edge when Cloudflare is connected.
03
Turn development mode on to see origin changes
set_cloudflare_dev_mode with enabled true bypasses the edge for about three hours, so changes on the origin show immediately. It slows the site for real visitors the whole time. Your client's prompt is the gate here, because the Hub's instructions do not name this tool in their confirm list.
04
Turn it off when you finish
set_cloudflare_dev_mode with enabled false switches development mode off. Cloudflare also ends it on its own after about three hours. No Hub tool reads whether it is currently on, so note when you turned it on.
05
Read a failure
A rejected token, an empty zone ID or a refused call comes back as an error that names the action, the HTTP status and Cloudflare's message when it gave one. It is not reported as a success. The credentials themselves are set in the xSpeed Cache panel in wp-admin, not through the Hub.
Reference
| Read tool | cloudflare_verify; purges nothing and works on a read-only connection |
|---|---|
| Write tools | purge_cloudflare and set_cloudflare_dev_mode (enabled true or false) |
| Needs | Cloudflare connected in xSpeed on that site: integration on, an API token (or the legacy key and email) and a Zone ID |
| Edge purge scope | Everything Cloudflare holds for the site's zone; the server copies stay |
| Development mode | Bypasses the edge for about 3 hours, then Cloudflare switches it off |
| Token permissions | Zone Cache Purge, and Zone Settings Edit for development mode |
| What verify proves | The token and zone resolve; a token without Zone Settings Edit still verifies |
| Through purge_cache | Type all also clears the edge when Cloudflare is connected; page, assets, object and rest do not |
| Every site at once | None of the three accept site: "all"; one site per call |
| Failure shape | An error with the action, the HTTP status and Cloudflare's message |
| Read-only connection | The connection token with Read-only everywhere on, or a Viewer member's sign-in; purge_cloudflare and set_cloudflare_dev_mode are refused and cloudflare_verify works. An OAuth sign-in gets the scopes the client asks for, so the switch does not make it read-only |
| Confirmation | None on the Hub; your client's prompt is the gate |
Rules worth keeping
- Run cloudflare_verify first, but do not read a pass as proof that every call will work. A token that lacks Zone Settings Edit verifies and purges fine, then fails the first time development mode is switched.
- Purge the server and the edge together after a content change. Purging only the site leaves visitors on the old page until the edge copy expires.
- Turn development mode off as soon as you are done. It slows the site for real visitors for up to about three hours, and no tool reports its state.
- Never paste a Cloudflare token or Global API Key into the chat. Connect Cloudflare in the xSpeed Cache panel in wp-admin, and use a scoped API token rather than the Global API Key.
- purge_cloudflare and set_cloudflare_dev_mode are write tools. The Hub runs them as soon as your connection allows writes, so your client's approval prompt and a read-only connection (the connection token with Read-only everywhere on, or a Viewer member's sign-in) are the gates that matter.
Good to know with Hermes Agent
At its default trust setting, full, Hermes adds no approval prompt for a server, so a chat or a cron job can call set_cloudflare_dev_mode with nobody asked. Set trust to untrusted on the xspeedhub entry and Hermes asks before every call to a tool that lacks a read-only hint. The Hub sets no such hint, so every Hub call asks, cloudflare_verify included, and a cron run has nobody to answer. To make a scheduled check safe, set tools include on the entry to the read tools you need, which leaves purge_cloudflare and set_cloudflare_dev_mode out entirely, or use the connection token with Read-only everywhere on (a Viewer member's sign-in also works). The Hub has no confirmation step, and development mode slows real visitors for about three hours, so do purges and dev mode in chats you start yourself.
More prompts for this job
They work in any client connected to xSpeed Hub.
Use xSpeed Hub to check that the Cloudflare connection on shop still works.
With xSpeed Hub, purge the Cloudflare edge cache on blog.
I changed the checkout page on shop. Use xSpeed Hub to purge the site cache and the Cloudflare edge.
Use xSpeed Hub to turn Cloudflare development mode on for shop. I am editing the theme.
With xSpeed Hub, turn Cloudflare development mode off on shop.
Ask xSpeed Hub to verify Cloudflare on shop and tell me what is wrong if it fails.
Using xSpeed Hub, which of my sites have a working Cloudflare connection? Check them one at a time.
Frequently asked questions
Keep going
Manage Cloudflare with other agents
More with Hermes Agent
Documentation
- How to connect Cloudflare
- How to serve assets from a CDN
- How to enable Page Cache
- How to write prompts for xSpeed Hub
- Hermes Agent + xSpeed
- Every AI agent that works with xSpeed
From the blog