Before you start
- AgentedSEO is active (WordPress 6.9 or later, PHP 8.1 or later).
- You can sign in as an administrator. Only an administrator can approve an agent.
- The site is on public HTTPS. Claude.ai and Claude Desktop reach your site from Anthropic’s cloud, so localhost, VPN-only or password-protected staging sites won’t connect. Claude Code connects from your own machine.
Your endpoint, shown with your domain on AgentedSEO › Agents › Connections:
https://your-site.com/wp-json/agentedseo/mcp01Pick your route
02Connect Claude to WordPress from Claude.ai
- Copy your connector URL. In WordPress open AgentedSEO › Agents › Connections. Under Connect an agent choose Claude.ai or ChatGPT, then copy the URL under Copy your site’s connector URL.
- Add a custom connector in Claude. Pro or Max: Customize › Connectors, + Add, Add custom connector. Team or Enterprise: an Owner adds it under Organization settings › Connectors, then members click Connect. Free allows one custom connector.
- Fill in the dialog. Name
AgentedSEO, paste the URL, Continue. Authentication: Sign in now. OAuth client: Register automatically. Leave Request headers empty. Click Add. - Approve it on your site. A page on your site asks “Connect Claude to AgentedSEO?”. Sign in if asked, click Approve. Your browser returns to Claude.
- Turn it on in a chat: + menu, Connectors, switch AgentedSEO on.
The connection now shows under Connected agents with its own user (agentedseo-...), Last activity and Revoke. Access tokens last one hour, refresh tokens 30 days, and they rotate.
03Connect Claude Desktop to WordPress
Claude Desktop uses the connector from section 2. Remote connectors live on your Claude account, so once AgentedSEO is added it is in Claude Desktop too: + menu, Connectors, switch it on.
You don’t need to edit claude_desktop_config.json. That file is for servers that run on your computer; AgentedSEO runs on your WordPress site.
04Connect Claude Code to WordPress
- Create the agent’s password. In AgentedSEO › Agents › Connections choose Desktop or code app, name it
Claude Code, click Create password. The password is shown once. The config under Paste this config into your agent now has yourAuthorizationvalue. - Add the server with the
Basic …value.--scope usermakes it available in every project; leave it out to keep it in this project only.✻ Claude Code~ · add the AgentedSEO server$
Then run the connection test under Agents › Connections.claude mcp add --transport http agentedseo https://your-site.com/wp-json/agentedseo/mcp \ --header "Authorization: Basic <value from the Connections screen>" \ --scope user - Check it:
claude mcp listshows AgentedSEO as Connected. In a session,/mcplists its tools.
.mcp.json instead? Add "type": "http" to the entry. Claude Code skips an entry with a url and no type.No password in your config: add the server without --header, then run /mcp to authenticate.
Using Claude Code as your main SEO tool? See Claude Code WordPress SEO.
05Check the connection
On AgentedSEO › Agents › Connections, the Test the connection card has a Run test button. It checks what an agent outside your site sees.
06Your first safe task
Give Claude a small job that lands in your approval queue, then approve it and undo it, so you see the whole loop on a real page. I’d start any new agent here: one field on one page, easy to check by eye.
Use AgentedSEO. Start with get-capabilities. Find one published post with no meta description, write one, do a dry run first and show me the before and after, then submit it with a note. Don’t publish or change anything else.
- The agent calls
set-meta. Meta titles and descriptions ask first by default, so the answer isproposed. The live page has not changed. - Open AgentedSEO › Dashboard › Approvals. Check Before and After, the checks it passed and the agent’s note. Click Approve.
- Open AgentedSEO › Dashboard › Change log, open the change’s Details and click Undo. The Before value is back, and the undo is logged.
The live page has not changed.
Undo restores the Before value, and the undo is logged.
Claude can undo its own work too: every write returns a batch_id, and revert-change with that id puts it back.
07What Claude can and can’t change

I made approving a person’s job on purpose. Claude can propose, preview and undo, but it has no tool that approves its own work. I want the last call on anything visitors see to stay with you.
Claude signs in as an SEO Agent user, refused on every REST route outside AgentedSEO and on XML-RPC. Defaults from AgentedSEO › Agents › Approval rules; per-area rules apply to every connected agent.
Per area (you choose)
| Area | Default | What it covers |
|---|---|---|
| Meta titles and descriptions | Ask me first | Shown as before and after before anything is written |
| Schema | Ask me first | JSON-LD is validated first, then shown for approval |
| Redirects | Ask me first | Loops and chains are refused outright |
| Sitemap rebuilds | Ask me first | Nothing visitors see changes |
| Keyword plans | Ask me first | Planning data, never printed on the site |
| Image alt text | Ask me first | Written to the media library and the image block |
| New drafts | Automatic | Drafts stay private until someone publishes them |
| Edits to drafts | Automatic | Saved as revisions you can restore |
| Edits to published content | Ask me first | Visitors see these straight away |
| Publishing and scheduling | Ask me first | Makes a draft public, now or at a set time |
| Bulk changes over 20 pages | Ask me first | Asks even when the area above is automatic |
- robots.txt edits
- Noindex on a page with traffic. Until Search Console is connected every page counts as having traffic. Hiding a whole post type, taxonomy or the author archive counts too.
- Deleting redirects or schema
- Trashing or unpublishing content
- An edit to a post someone has open in the editor becomes a proposal
- Deleting content permanently
- Header and footer code
- Users, plugins, themes and site settings outside AgentedSEO
Also good to know
- New posts are always drafts.
- Bricks, Elementor, Breakdance and Oxygen layouts are read-only for agents; their SEO fields still change.
- Scripts and iframes in content are refused.
- Every request, reads and refusals included, shows in AgentedSEO › Agents › Activity.
- Connecting as yourself with an application password from Users › Profile skips approvals. Use the SEO Agent connection.
08Revoke access
On AgentedSEO › Agents › Connections click Revoke and confirm. Its user and its password or sign-in are deleted and it can no longer reach the site. Its change log stays, and content it created is handed to you. You can also remove the connector in Claude under Customize › Connectors.
09Troubleshooting
| Symptom | Fix |
|---|---|
| “Authorization header reaches WordPress” fails | On Apache add SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 to .htaccess, or ask your host. |
| OAuth discovery checks fail | A security plugin, the host or a cache blocks /.well-known/. The site must answer /.well-known/oauth-authorization-server at the domain root. |
| Claude.ai can’t reach the server | The site must be reachable from the public internet. |
| “Application passwords are turned off on this site” | WordPress needs HTTPS for application passwords. |
429 agentedseo_locked_out | Ten failed sign-ins from one address in 15 minutes lock it out for 15 minutes. |
Change comes back proposed | Working as set: it waits in Approvals. |
agentedseo_blocked_by_rule | The change hit a fixed rule in section 7. |
10Questions about connecting Claude
No. Claude.ai and Claude Desktop sign in with OAuth and get a token for a new SEO Agent user. Claude Code uses an application password made for that user.
No. The endpoint is built in at /wp-json/agentedseo/mcp. The MCP Adapter lists AgentedSEO’s abilities for people’s own accounts, but agent users only reach AgentedSEO’s own endpoint.
Only in where you click. Both use the same custom connector on your Claude account.
Free, Pro, Max, Team and Enterprise, per Claude’s help center on 30 October 2026. Free allows one.
Not by default. New posts are drafts, and publishing asks first unless you switch that area to Automatic.
Yes. Each connection gets its own user and its own Revoke.