Hermes reads its MCP servers from ~/.hermes/config.yaml. Add Respira there and
the agent can read and edit a live WordPress site across 17 page
builders. One click from the dashboard, or one block of YAML.
Hermes Agent is MIT licensed and runs on your machine. Respira runs on your hosting.
320+ tools, snapshots on every write path.
What Hermes Agent is
Hermes Agent is an open-source CLI and desktop agent from Nous Research, MIT licensed,
with its source at NousResearch/hermes-agent and documentation at
hermes-agent.nousresearch.com.
It speaks the Model Context Protocol, which is the part that matters here: any MCP server
you list in its config becomes a set of tools it can call. Respira is one of those servers,
and the site it acts on is your own WordPress install.
Support landed in August 2026, after two customers connected Hermes to their sites before
it was official. The story is in
the support announcement.
The one-click path
Open the setup page and pick Hermes Agent.
The page reads the sites on your account and builds the install link and the config
block for them. If you have not connected a WordPress site yet, start there instead.
The button is a hermes://mcp/install link carrying the server name and a
base64url config. The desktop app opens a confirmation dialog first and shows what it
is about to write, so nothing lands in your config until you accept it.
Or sign in through the browser instead.
The same page offers a per-site connection with no key stored on disk. Hermes runs the
whole OAuth 2.1 handshake itself: discovery, dynamic client registration as
Hermes Agent, PKCE and refresh. You sign in to Respira in the window it opens
and choose Approve.
Check it worked.
Ask Hermes: list the pages on my site and tell me which page builder it runs.
Titles coming back is the test. A tool list that looks right but returns nothing is
usually an access level set to read-only when you wanted content.
Two routes, and the honest difference
Respira's hosted endpoint lives on each WordPress site, at
https://your-site.com/wp-json/respira/v1/mcp. That is why the two routes
differ in how they scale, and it is worth picking on purpose rather than by accident.
Browser sign-in, one site per entry
Hermes signs in to that one site and keeps the connection refreshed. Nothing sensitive
is written into your config file. Because the endpoint belongs to the site, five sites
means five entries and five sign-ins.
Best when you work on one or two sites, or you would rather keep no key on disk.
Local bridge, every site at once
One server entry, one RESPIRA_CONFIG_B64 value holding the whole account.
Hermes connects on restart with no sign-in, and you move between sites by naming the
one you mean in chat.
Best when you run a fleet. The value is a credential, so treat the file like a password.
There is a ceiling on the one-click route: Hermes refuses an install payload over 32KB, and
protocol links get unreliable well before that. Past a certain number of sites the dashboard
stops offering the link and hands you the config file instead, which carries the same sites
without the size limit.
The config, if you would rather write it yourself
Both blocks go under mcp_servers in ~/.hermes/config.yaml. Merge
them in. Do not replace the file: your models, tools and prompt settings live in it too.
Every site, through the local bridge
This is what the dashboard downloads as respira-hermes.config.yaml. Replace the
placeholder with the base64 value from your dashboard, then
restart Hermes.
~/.hermes/config.yaml
# Respira for WordPress, for Hermes Agent.
# Merge this into ~/.hermes/config.yaml and keep any mcp_servers you already have.
mcp_servers:
respira-wordpress:
command: "npx"
args:
- "-y"
- "@respira/wordpress-mcp-server"
env:
RESPIRA_CONFIG_B64: "<paste from your dashboard>"
RESPIRA_CONNECTION_SOURCE: "dashboard_export"
One site, over OAuth
Point url at your own site and set auth: oauth. Hermes does the
rest of the handshake. The entry name is yours to choose, and it is the name you pass to
hermes mcp login. The dashboard's downloaded block names each remote entry
after its site id, so check the name in the file if you did not write it by hand.
A fresh terminal matters. Hermes watches the config file and reloads it, but that reload has
a 30 second timeout, so a login fired from a shell that was already open when you saved the
file can race it. Opening a new terminal and running the command there is the reliable path.
Already set up in Claude Code
Hermes can lift the whole thing across instead. This reads the mcpServers block
out of ~/.claude.json and brings Respira over as it is, keys included.
terminal
hermes import-agent claude-code
What the agent can actually do
list my pages and tell me which page builder this site runs
open the pricing page and show me every heading with its styling
duplicate the about page, rewrite the hero, and hold it for my approval
find every page that still says 2025 and change it to 2026
build a landing page in Bricks using the homepage as the design reference
run the accessibility scan on the homepage and list the WCAG failures
show me the last five snapshots on this page and restore the one from Tuesday
320+ tools across posts, pages, menus, media, taxonomies, users, plugins, ACF, the
WooCommerce catalog and every supported builder. Page and element writes take a snapshot
first, and structural page work is built on a duplicate, so the live page is untouched until
you approve it in the Approvals and Undo screen in wp-admin.
Limits worth knowing before you start
The hosted endpoint is per site.
An OAuth connection covers one site. There is no single sign-in that reaches your whole
account over the hosted route.
The tool list is filtered per site.
Builder tools for a builder the site does not run are hidden, so a block-theme site
shows fewer tools than the catalog total. That is on purpose, not a broken install.
A remote connection needs a reachable site.
HTTPS, and /wp-json/ not blocked by a host or firewall. A local site on
your own machine cannot be reached over the hosted route, though the local bridge can
still talk to it.
When it does not connect
Clicking Add to Hermes did nothing.
The hermes:// handler comes from the desktop app. Without it installed, the browser has nothing to hand the link to.
Some browsers block a custom protocol the first time. Approve the permission prompt, then click again.
If the dialog was dismissed by accident, click the button again. The dashboard mints a fresh link every time.
Still nothing: use the YAML block above. It carries the same sites.
hermes mcp login hangs or times out.
Run it from a terminal opened after you saved the config. The config auto-reload has a 30 second timeout, and a stale shell can beat it to the punch.
The command opens a browser window. On a headless or remote box there is nothing to open, so run the login on the machine with the browser.
Check the entry name matches the key in mcp_servers. hermes mcp login respira only works if the entry is called respira.
Confirm the URL is right by opening it in a private window. It should answer, not 404.
It connected once, and now it asks me to sign in again.
Tokens live in ~/.hermes/mcp-tokens/. Hermes refreshes them on its own, so repeated prompts usually mean the token file was deleted, moved, or is owned by another user.
Rotating a site token in the Respira dashboard invalidates every client holding it. Sign in again after a rotation.
To force a clean start, delete that server's token file and run the login again.
The tools are there but every write fails.
Check the access level you approved. Read-only blocks writes by design, and the error is deliberate rather than a bug.
Change it from the Sites page in your dashboard, then reconnect.
If reads also fail, the site is probably unreachable from outside. Confirm /wp-json/ is not blocked.
Questions people ask
Can Hermes Agent edit my WordPress site?
Yes. Once Respira is registered as an MCP server in ~/.hermes/config.yaml, Hermes can read and write posts, pages, media, menus, taxonomies, users, plugins and page-builder layouts on a live WordPress site. It works through the Respira plugin on your own hosting, not through a scraper or a headless browser.
Is it safe to let Hermes change a live WordPress site?
Page and element writes take a snapshot first, and structural page work is built on a duplicate rather than the live page. The Approvals and Undo screen in wp-admin is where a duplicate gets published or thrown away, and where any snapshot gets restored. You also pick an access level when you connect: read-only, content, builder or full. Read-only is a real read-only, so an agent that cannot write cannot surprise you.
Does it work with Elementor, Divi and Bricks?
Yes, plus 14 more. Respira reads and writes each builder in its own native storage format, so an Elementor page stays editable in Elementor and a Bricks page stays editable in Bricks. Nothing is flattened into HTML on the way through.
What does connecting Hermes to WordPress cost?
Hermes Agent is free and open source, MIT licensed, from Nous Research. Respira is the paid part, and the plans are on the pricing page. There is no separate Hermes fee and no per-client pricing: the same account works in Hermes, Claude, Cursor and Codex at once.
Do i need one connection per WordPress site?
It depends which route you take. The hosted endpoint lives on each site at /wp-json/respira/v1/mcp, so a browser sign-in is one entry and one OAuth per site. The stdio route carries the whole account in a single RESPIRA_CONFIG_B64 value, so one server entry covers every connected site and you move between them by naming the site in chat.
Where does Hermes store the Respira sign-in?
Tokens from an OAuth connection are written to ~/.hermes/mcp-tokens/ on your own machine. Hermes refreshes them on its own. Deleting the token file for a server forces a fresh sign-in the next time you run hermes mcp login.
How do i disconnect Hermes from my WordPress site?
Remove the entry from mcp_servers in ~/.hermes/config.yaml and delete its token file from ~/.hermes/mcp-tokens/. To cut access from the WordPress side instead, revoke or rotate the site token in your Respira dashboard, which kills every client holding it, not only Hermes.
Why Hermes plus Respira works
An open agent against a production-safe backend.
Hermes is MIT licensed and runs on your machine. Respira runs on your hosting. Neither side asks you to move the site anywhere.
Native builder writes.
Elementor stays Elementor, Bricks stays Bricks, Divi stays Divi, across 17 builders. Nothing is flattened to HTML in transit.
Snapshots and duplicates on every write path.
Agents move fast. Undo has to be faster.
Pick your route per machine.
Browser sign-in on a shared laptop, local bridge on the box where you run the fleet. Same account, same tools.
cookies. the legal kind. one click and i'll get out of your way.
what you'd actually be saying yes to
tune your cookie preferences
essentials stay on regardless. the rest is opt-in. nothing fires until you tap save.
essentials
the cookies that make logging in work and remember which partner sent you. switching these off would just break the site, so the law does not let me make you opt out.
first-touch source on a /respira_acq cookie, plus a flag if an ai chatbot referred you. helps me figure out what is working without turning you into a tracking pixel statue.
messaging
customer.io for in-app notes, chatwoot when you click the support bubble. off by default. on means i can actually answer you in the app.