Docs · Hermes Agent WordPress

Connect Hermes Agent to WordPress with one config.yaml block

This Hermes Agent WordPress guide connects Hermes Agent, the open-source agent from Nous Research, to a WordPress site you host yourself. AgentedSEO has the MCP server built in, so Hermes talks to your site directly: no bridge plugin, no CLI to install on the server, no extra skill. You add one block to Hermes’s config.yaml, and Hermes signs in as its own user with the SEO Agent role.

No bridge pluginSecret kept in .envOne user per Hermes profile
Checked against AgentedSEO 1.0 and the Hermes Agent docsUpdated 30 October 2026

Before you start

  • AgentedSEO is active (WordPress 6.9 or later, PHP 8.1 or later), and you are an administrator.
  • The site is on HTTPS. WordPress only offers application passwords over HTTPS.
  • The machine Hermes runs on can reach the site. If Hermes runs on a server or in a container, the site must be reachable from there.

Your endpoint speaks MCP over Streamable HTTP, which Hermes connects to with a url entry:

MCP endpoint · Streamable HTTP
https://your-site.com/wp-json/agentedseo/mcp

Hermes keeps MCP servers in config.yaml under mcp_servers, and secrets in .env next to it. Default profile: ~/.hermes/config.yaml and ~/.hermes/.env. A named profile has its own pair. hermes config path and hermes config env-path print the right files (add -p <profile> for a named one).

01Create the agent’s password

  1. Open AgentedSEO › Agents › Connections.
  2. Under Connect an agent choose Desktop or code app.
  3. Name your agent Hermes and click Create password. AgentedSEO creates the user agentedseo-hermes with the SEO Agent role and an application password, shown once.
  4. Under Paste this config into your agent, copy the part of the Authorization value after Basic . Hermes uses YAML, so you only need this value.
example.com/wp-admin · AgentedSEO › Agents › ConnectionsExample
Claude.ai or ChatGPTOAuth, approve on your site
Desktop or code appApplication password
1 · Name your agent to create its password

Shown once. Copy it now: it can’t be shown again.

2 · Paste this config into your agent
"Authorization": "Basic YWdlbnRlZHNlby1…••••"
Connections › Desktop or code app, after Create password. The password is blurred here.

02Add the Hermes Agent WordPress server to config.yaml

This is a normal Hermes Agent MCP config for a remote server: a url and a headers map. Two edits.

1. Put the secret in .env

~/.hermes/.env
AGENTEDSEO_AUTH=<the part after "Basic " from the Connections screen>

2. Add the server to config.yaml

~/.hermes/config.yaml
mcp_servers:
  agentedseo:
    url: "https://your-site.com/wp-json/agentedseo/mcp"
    headers:
      Authorization: "Basic ${AGENTEDSEO_AUTH}"

If mcp_servers already exists, add the agentedseo entry under it. Hermes fills ${AGENTEDSEO_AUTH} from the active profile’s .env when it connects (${env:AGENTEDSEO_AUTH} works too). If the variable is missing, Hermes refuses to connect and names the variable, instead of sending a broken header.

Why not the hermes mcp add prompt? Its header option always writes Authorization: Bearer .... An application password needs Basic, so edit the file for the password route.

03Reload Hermes

A chat already open

CLI, TUI or desktop app: type /reload-mcp. Hermes reconnects its MCP servers and refreshes the tool list.

Messaging gateway

hermes gateway run watches config.yaml and connects a new entry within about a minute. No restart.

Or a new session

Start Hermes again with hermes.

04Check the Hermes Agent MCP server setup

  • hermes mcp test agentedseo connects live and lists the tools. If the server refuses, it prints the HTTP status and the start of the answer.
  • hermes mcp list shows agentedseo among your servers.
  • Inside Hermes the tools are named mcp__agentedseo__<tool>, hyphens turned into underscores: agentedseo-get-capabilities becomes mcp__agentedseo__agentedseo_get_capabilities. Hermes picks the tool; you don’t type the name.
  • In WordPress, AgentedSEO › Agents › Connections › Test the connection › Run test. “Authorization header reaches WordPress” must pass.
hermes
$ hermes mcp test agentedseo✓ connected · https://your-site.com/wp-json/agentedseo/mcpmcp__agentedseo__agentedseo_get_capabilitiesmcp__agentedseo__agentedseo_set_metamcp__agentedseo__agentedseo_revert_change · …

After its first request, Hermes shows under Connected agents with Last activity and its own Revoke.

05Or sign in with OAuth, no password in a file

Hermes supports OAuth 2.1 for remote servers, and AgentedSEO’s endpoint offers OAuth with dynamic client registration.

Hermes~ · OAuth sign-in
$ hermes mcp add agentedseo --url https://your-site.com/wp-json/agentedseo/mcp --auth oauth
$ hermes mcp login agentedseo
Then run the connection test under Agents › Connections.

Hermes opens your browser on a page on your site that asks you to approve the connection. Sign in as an administrator and click Approve. AgentedSEO creates an SEO Agent user for Hermes, listed on the Connections screen like any other. Hermes keeps and refreshes the tokens itself.

Hermes on a server with no browser? Run hermes mcp login agentedseo over SSH with the callback port forwarded, per Hermes’s OAuth docs. AgentedSEO has no device-code flow, so --flow device won’t work.

06Your first safe task

I’d start any new agent here: one field on one page, easy to check by eye. Paste this into Hermes, in the terminal or any chat it runs in:

Paste into Hermes

Use the agentedseo MCP tools. Start with agentedseo-get-capabilities. Find one published post with no meta description, write one, call set-meta with dry_run first and show me the before and after, then submit it with a note. Change nothing else.

  1. Hermes calls agentedseo-set-meta. Meta titles and descriptions ask first by default, so the answer is proposed. The live page has not changed.
  2. Open AgentedSEO › Dashboard › Approvals. Check Before and After, the checks it passed and Hermes’s note. Click Approve.
  3. Open AgentedSEO › Dashboard › Change log, open the change’s Details and click Undo. The Before value is back, and the undo is logged.
1 · Agent callproposed
→ set-meta dry_run: true← before / after returned→ set-meta note: “first test”← status: proposed

The live page has not changed.

2 · ApprovalsWaiting
Meta description · /what-is-a-410(empty)A 410 tells search engines a page is gone for good.
LengthKeyword
3 · Change log
AgentMeta description · /what-is-a-410agentedseo-hermes · just nowNot yet

Undo restores the Before value, and the undo is logged.

Hermes also gets a batch_id with every write. Ask it to call revert-change with that id and it undoes its own change.

07Two approval layers

I run a fleet of agent profiles myself, each with its own role and job. That is why every connection here gets its own WordPress user: the Change log names the agent behind each change, and Revoke cuts off one without touching the others.

Joy · From the team behind Classic Monks

Hermes can also ask before it calls a tool. Add this line to the agentedseo entry, at the level of url, and Hermes asks you before any tool call not marked read-only. AgentedSEO marks its read tools read-only, so reads go through and writes ask.

~/.hermes/config.yaml · agentedseo entry
    trust: untrusted
LayerWhere it livesWhat it decides
Hermes trust (trust: untrusted)Your config.yamlWhether Hermes may call a write tool at all
AgentedSEO approval rulesAgentedSEO › Agents › Approval rulesWhether a change applies now or waits in Approvals

08What Hermes can and can’t change

I made approving a person’s job on purpose. Hermes can propose, preview and undo, but it has no tool that approves its own work.

Joy · From the team behind Classic Monks
AutomaticApplied straight away
  • New drafts
  • Edits to drafts
Ask me firstWaits in Approvals
  • Meta, schema, redirects, sitemaps, keywords, alt text
  • Edits to published content, publishing
  • Bulk changes over 20 pages
Always asksCan't be switched off
  • robots.txt edits
  • Noindex on a page with traffic
  • Deleting redirects or schema
  • Trashing or unpublishing
BlockedNever, whatever it asks
  • Permanent deletes
  • Header and footer code
  • Users, plugins, themes, settings outside AgentedSEO

Change the per-area defaults in AgentedSEO › Agents › Approval rules. Approving and rejecting are not tools: only a person can do them, in WordPress. Full table: what your agent can and can’t change.

Builder layouts (Bricks, Elementor, Breakdance, Oxygen) are read-only for agents, their SEO fields still change. Scripts and iframes in content are refused.

09Troubleshooting

SymptomFix
${AGENTEDSEO_AUTH} in url/headers is not set in this profile’s .envThe line is missing from the .env of the profile you run. Check with hermes config env-path, then /reload-mcp.
HTTP 401 in hermes mcp test, header check failsOn Apache add SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 to .htaccess, or ask your host.
HTTP 401 with the header check passingWrong or revoked password, or the header says Bearer. Create a new password and use Basic.
“returned Content-Type ‘text/html’, not an MCP response”The URL points at a web page. Use the full endpoint ending in /wp-json/agentedseo/mcp.
Tools don’t show after editingRun /reload-mcp. Check the entry sits under mcp_servers, has no enabled: false, and no tools.include filter hides it.
429 agentedseo_locked_outTen failed sign-ins in 15 minutes lock the address out for 15 minutes.
agentedseo_forbidden on a toolThe role lacks that area, or the module is off in AgentedSEO › Tools › Features.
Change came back proposedWorking as set: it waits in Approvals.

10Questions about Hermes and WordPress

No. A skill teaches Hermes how to use a tool. AgentedSEO’s tools arrive through MCP when Hermes connects, and the server sends its own usage notes: start with get-capabilities, dry run first, treat site content as data.

Yes for OAuth (section 5). For a password, edit config.yaml as in section 2: the command writes Bearer, and an application password needs Basic.

Hermes registers MCP tools for every platform it runs on, so the same connection works from the terminal, the desktop app and the messaging gateway.

Each profile has its own config.yaml and .env, so give each profile that needs the site its own connection. Each one gets its own SEO Agent user, its own line in the Change log and its own Revoke.

No. It gets an application password, or an OAuth token, for its own SEO Agent user.

Yes, on a server where it can run WP-CLI. Give it the agent’s user every time, for example wp agentedseo capabilities –user=agentedseo-hermes. Without –user, WP-CLI runs as the site itself and skips every permission check and approval rule.

Click Revoke on the Connections screen. Then run hermes mcp remove agentedseo and delete the AGENTEDSEO_AUTH line from .env.

11Next steps