WordPress Agent Benchmarks · Building with WordPress · November 2026

When site owners ask an AI for help, can it get the job done on WordPress?

Andy Peatling's open benchmark gives two real AI agents 21 ordinary requests from small business owners, on a real-looking WordPress site. I ran it with Respira as a third way in.

  1. WordPress MCP adapter

    0of 42 jobs done

    No login. Only the abilities WordPress and the site's plugins registered.

    95% CI 0–8%

  2. The owner's password

    33of 42 jobs done

    The owner's application password, and the whole WordPress REST API.

    95% CI 64–88%

  3. Respira for WordPress

    33of 42 jobs done

    No login. Respira's tools, and the owner asked in the chat.

    95% CI 64–88%

Adapter and password: Andy's published October runs. Respira: plugin 9.3.8, my runs of the same benchmark on 4 November.

Two agents tried every request, three ways in.

Opus 5.5 in Claude Code and GPT-6.1-Sol in Codex each got all 21 requests on each way in: 42 runs a column. A run counts only when everything the owner asked for is on the finished site, the site still works, nothing was lost, and the agent did not give itself more access than it was handed.

Request group WordPress MCP adapter0 of 42The owner's password33 of 42Respira for WordPress33 of 42
Get my business online WordPress MCP adapter Opus Dog grooming site, Opus: not done Cafe menu, Opus: not done Opening hours page, Opus: not done Online booking, Opus: not done Candle shop, Opus: not done Work gallery, Opus: not done What's on, Opus: not done Codex Dog grooming site, Codex: not done Cafe menu, Codex: not done Opening hours page, Codex: not done Online booking, Codex: not done Candle shop, Codex: not done Work gallery, Codex: not done What's on, Codex: not done The owner's password Opus Dog grooming site, Opus: done Cafe menu, Opus: done Opening hours page, Opus: done Online booking, Opus: not done Candle shop, Opus: done Work gallery, Opus: done What's on, Opus: done Codex Dog grooming site, Codex: done Cafe menu, Codex: done Opening hours page, Codex: done Online booking, Codex: done Candle shop, Codex: done Work gallery, Codex: not done What's on, Codex: not done Respira for WordPress Opus Dog grooming site, Opus: done Cafe menu, Opus: done Opening hours page, Opus: done Online booking, Opus: not done Candle shop, Opus: done Work gallery, Opus: done What's on, Opus: done Codex Dog grooming site, Codex: done Cafe menu, Codex: done Opening hours page, Codex: done Online booking, Codex: not done Candle shop, Codex: done Work gallery, Codex: done What's on, Codex: done
Look after my site WordPress MCP adapter Opus A Christmas cake on the menu, Opus: not done "There has been a critical error", Opus: not done Slow cake pages, Opus: not done New plumber prices, Opus: not done The contact form, Opus: not done Dave left the company, Opus: not done Run the updates, Opus: not done Codex A Christmas cake on the menu, Codex: not done "There has been a critical error", Codex: not done Slow cake pages, Codex: not done New plumber prices, Codex: not done The contact form, Codex: not done Dave left the company, Codex: not done Run the updates, Codex: not done The owner's password Opus A Christmas cake on the menu, Opus: done "There has been a critical error", Opus: not done Slow cake pages, Opus: not done New plumber prices, Opus: done The contact form, Opus: done Dave left the company, Opus: done Run the updates, Opus: not done Codex A Christmas cake on the menu, Codex: done "There has been a critical error", Codex: not done Slow cake pages, Codex: done New plumber prices, Codex: done The contact form, Codex: not done Dave left the company, Codex: done Run the updates, Codex: not done Respira for WordPress Opus A Christmas cake on the menu, Opus: done "There has been a critical error", Opus: not done Slow cake pages, Opus: not done New plumber prices, Opus: done The contact form, Opus: done Dave left the company, Opus: done Run the updates, Opus: not done Codex A Christmas cake on the menu, Codex: done "There has been a critical error", Codex: done Slow cake pages, Codex: not done New plumber prices, Codex: done The contact form, Codex: done Dave left the company, Codex: done Run the updates, Codex: done
Move my site to WordPress WordPress MCP adapter Opus About and FAQ, Opus: not done A static site, Opus: not done Blog posts, Opus: not done Off Wix, Opus: not done Off Squarespace, Opus: not done From Blogger, Opus: not done Off Weebly, Opus: not done Codex About and FAQ, Codex: not done A static site, Codex: not done Blog posts, Codex: not done Off Wix, Codex: not done Off Squarespace, Codex: not done From Blogger, Codex: not done Off Weebly, Codex: not done The owner's password Opus About and FAQ, Opus: done A static site, Opus: done Blog posts, Opus: done Off Wix, Opus: done Off Squarespace, Opus: done From Blogger, Opus: done Off Weebly, Opus: done Codex About and FAQ, Codex: done A static site, Codex: done Blog posts, Codex: done Off Wix, Codex: done Off Squarespace, Codex: done From Blogger, Codex: done Off Weebly, Codex: done Respira for WordPress Opus About and FAQ, Opus: done A static site, Opus: done Blog posts, Opus: done Off Wix, Opus: done Off Squarespace, Opus: done From Blogger, Opus: done Off Weebly, Opus: done Codex About and FAQ, Codex: not done A static site, Codex: not done Blog posts, Codex: done Off Wix, Codex: done Off Squarespace, Codex: done From Blogger, Codex: done Off Weebly, Codex: not done

Each mark is one run: one agent on one request. A tick means everything the owner asked for was checked on the finished site.

Access is not ability.

The adapter's zero is not a failure of MCP. The agents connected, looked at what it offered, and stopped after three or four calls on average: the abilities they needed were not there yet. The password works for the opposite reason. It hands over the whole site, and the agent improvises. Respira sits between the two: a set of tools that does the jobs owners ask for, in the site's own format, and no password.

The owner's password

677 changes

to the site, in 37 of 42 runs

  • Images uploaded202
  • Posts written or edited124
  • Pages built or edited109
  • Redirects added60
  • Shop products added or edited43
  • Bookings and booking settings34
  • Plugins installed or turned on24
  • Site settings, templates and menus37
  • Forms, categories, comments and more44

WordPress MCP adapter

11 changes

to the site, in 4 of 42 runs

  • Shop products added or edited11

Respira for WordPress

424 changes

to the site, in 40 of 42 runs

  • Images and files uploaded101
  • Pages built or edited116
  • Posts written or edited60
  • Draft copies approved and published24
  • Redirects added30
  • Shop products and store settings18
  • Plugins installed, turned on or off16
  • Site settings, templates and menus47
  • Forms, categories, users and more12

Adapter and password: the counts on Andy's results page, from the site request logs. Respira: writes that succeeded, read from each run's transcript and counted low. Respira makes fewer changes for as many jobs done: edits go to one draft copy, which is then published.

Permission belongs in the conversation.

In October Respira finished 23 of these jobs. I read every run it lost, and 8 had the same cause, which was mine: installing a plugin or changing a menu was off until the owner switched it on in wp-admin. An owner talking to an agent never goes there, so the agent stopped and sent instructions.

Respira 9.3.8 asks the owner in the chat instead, and acts only on their yes. In 16 of the 42 runs the agent asked and got a yes this way, and 11 of those finished. That change is most of the distance from 23 to 33. What changed in 9.3.8.

From the contact form run, Opus 5.5, 4 November

People keep telling me they've filled in the form on our website but we never hear anything. Can you have a look?
Your contact form is working. When someone fills it in, the site emails the enquiry to gareth.penrose@portwenmail.test, an address on a different domain from your business. Which email address do you actually read?
Enquiries should come to office@harbourplumbing.test. I'm not very technical.

The site asks me to get your yes before saving it, so here's what will happen:

  • Change: enquiries go to office@harbourplumbing.test, starting now.
  • Not changing: the site's admin email, so password resets still go there.
  • Undo: I'll keep a note of the old address.

Shall I go ahead?

Yes, go ahead.
The change is saved. I checked the form's settings afterwards, and new enquiries now go to office@harbourplumbing.test.

How Respira fits in.

  1. The agentClaude Code, Codex, ChatGPT, Claude or any MCP client. It never sees a password.
  2. Respira, inside WordPressTools for the jobs owners ask for, in the site's own builder format. A draft copy before a live page changes, a snapshot before every write, and a question for the person before anything that needs a yes.
  3. The personSays yes or no in the chat they are already in. Never sent to wp-admin.
  4. The siteChanged in WordPress's own storage, so everything keeps working with Respira switched off.

What the agents reached for

  • 101images and files moved onto the sites, most through upload links
  • 30redirects in the site moves, so the old Wix and Weebly addresses still lead somewhere
  • 24draft copies approved and published
  • 16plugins installed, switched on or off, each after a yes
  • 0runs that escalated: no new admin, no login, no code edit, no way around Respira

What it costs.

Respira 9.3.8Password
Jobs done33 of 4233 of 42
Done before the owner said anything1318
Agent cost per run$0.59$0.27
Agent minutes per run, median3.12.0
Password handed to the agentnoyes

Jobs done for the password: Andy's runs. Its replies, cost and time: my runs of the same setup on 18 October, which finished 32 of 42. Asking, drafting and checking are extra steps, and the owner answers more questions.

Where it still loses

  • Online booking. Both Respira runs built the page and did not get a working booking to arrive. The adapter lost it too, and so did one of the two password runs.
  • Slow cake pages. Neither Respira run made the pages fast and light enough for the checks.
  • A critical error, with Opus. Respira lives inside WordPress, so when a plugin crashes the whole site the connection goes down with it. Codex got through and switched the plugin off. A way in that does not need WordPress to load is on my list.
  • Updates, with Opus. The Codex run finished it, the first finished updates run in any setup, Andy's included. The Opus run did not.
  • Moves, with Codex. Two moves failed on "editable": the pages render, and the owner could not edit them as blocks. One move off Weebly lost its navigation.

"When asked to make changes to an existing WordPress site, they completed 79% of tasks without the MCP Adapter, and none with it."

What this means for WordPress.

MCP is heading into WordPress core for 7.3. The connection was never the hard part. The next adapter score depends on abilities that do the jobs owners ask for, and on a permission model that asks the person where they already are. A password finishes the work by having every permission at once. Respira finishes as much by asking for the one each step needs. I think that is the shape agent work on WordPress should take, in core and in plugins, and I am glad to share what I learned building it.

How I ran it

  • Andy's repository at trunk, with one entry added for the Respira setup. No request, prompt, owner rule or check changed. Harbor 0.23.0, the same agents and versions as his batch, on one Mac with Docker.
  • On 18 October I ran all three setups the same day to check my machine reproduces his numbers: adapter 1 of 42, password 32 of 42, both within noise of his.
  • Respira was set up the way its own Setup screen does it, every setting at its default. The WooCommerce add-on was installed on every site.
  • One counted run per request and agent: the first that finished without an infrastructure failure. Four runs failed to start their container on 4 November and were run again; no finished run was replaced.
  • The owner's replies were classified by Claude Haiku through the benchmark's documented fallback, where Andy's runs used TypeSafe's Jev.
  • I make Respira. The harness, the requests and the checks are Andy's, and anyone can run them. I am glad to share every run record.

Thank you to Andy Peatling, who spent 17 years at Automattic and now runs the AI design agent Miles, for a benchmark that is open, careful and uncomfortable in the right places, and to Rae Morey and The Repository for reporting it. Andy's results are at wpab.view.fast, with a new run every month.

Connect your WordPress site