Agent Pilot
Agent Pilot maakt van je WordPress-site een veilige remote MCP (Model Context Protocol)-server. Installeer hem, verbind Claude — vanaf claude.ai in de browser, Claude Desktop of Claude Code — en je site wordt iets dat Claude daadwerkelijk kan bedienen: posts en producten doorzoeken, pagina’s on-brand opstellen en bewerken, WooCommerce-orders bijwerken, reacties modereren, caches legen en meer.
Het lastige aan een AI toegang geven tot je site is het veilig doen. Agent Pilot is rond dat probleem gebouwd. Elke verbinding doorloopt een volledige OAuth 2.1-handshake, elk access token is gebonden aan een specifieke WordPress-gebruiker, en elke tool controleert de capabilities van die gebruiker opnieuw voordat hij draait. Claude kan nooit meer dan de persoon die de toegang verleende — en alles wat hij doet wordt weggeschreven naar een audit log die je op elk moment kunt inzien en intrekken.

Voordelen
- Standaard-gebaseerd en client-agnostisch. Een conforme MCP-server over de Streamable-HTTP transport met volledige OAuth 2.1 (authorization code + PKCE + refresh, Dynamic Client Registration). Werkt out of the box met claude.ai custom connectors, Claude Desktop en Claude Code.
- Multi-user en multi-instance. Verbind meerdere Claude-instanties — zelfs als verschillende WordPress-gebruikers. Elk token is gebonden aan de gebruiker die het goedkeurde en beperkt tot diens rol. De connector van een shop manager ziet alleen wat een shop manager mag doen.
- 25 ingebouwde tools verdeeld over vier permission scopes — read, content authoring, WooCommerce en sitebeheer — plus een optionele Chatbot Pilot kennisbank-scope en alle tools die andere Pilot-plugins bijdragen (facturatie, transactionele mail, beveiliging, SEO, abonnementen).
- Tool-controle per rol en per gebruiker. Een speciaal Tools-scherm schakelt elke tool — of een hele scope — in of uit voor elke WordPress-rol of individuele gebruiker. Beheerders krijgen standaard alles; elke andere rol begint leeg en krijgt precies toegekend wat hij nodig heeft.
- Chirurgische content-edits.
wp_replace_in_postvoert gerichte find-and- replace-bewerkingen uit, zodat Claude een typefout op een Divi- of Elementor-pagina kan corrigeren zonder duizenden regels builder-markup te herschrijven. - Defense in depth. Een consent-scherm, scope-naar-capability dubbele controles, per-call bevestiging voor destructieve acties, een volledige audit log, rate limiting, een optionele IP-allowlist en key-rotatie met één klik.
- Versleuteld at rest. De OAuth signing key wordt bij activatie gegenereerd en versleuteld opgeslagen met je WordPress salts (of, als je dat liever hebt, bewaard in een bestand buiten de database).
- Geen lock-in, geen telemetrie. Self-hosted. Je data en de credentials van je AI-provider raken nooit onze servers.
Hoe het werkt
Twee open standaarden doen het zware werk:
- OAuth 2.1 beantwoordt “wie mag binnen, en om wat te doen?”. Wanneer een Claude-client je site voor het eerst bereikt heeft hij geen token, dus wordt hij door een login- en consent-flow gestuurd. Een beheerder keurt een set scopes goed, en de client ontvangt een gesigneerd, tijdgebonden access token.
- MCP (Model Context Protocol) beantwoordt “wat kan de agent daadwerkelijk
doen?”. Eenmaal geauthenticeerd roept Claude één endpoint aan dat een lijst met
tools blootlegt —
wp_list_posts,wp_save_post,wc_list_orders, enzovoort. Claude ziet alleen de tools die zijn token mag gebruiken.
De discovery, login, consent en token-uitwisseling gebeuren allemaal automatisch de eerste keer dat je de connector toevoegt. Vanaf dan reconnect Claude stilletjes met zijn refresh token.
Vereisten
| Component | Aanbevolen |
|---|---|
| WordPress | 5.8 of nieuwer (getest tot en met 7.0) |
| PHP | 8.0 of nieuwer |
| WooCommerce | 7.0+ (optioneel — Woo-tools verschijnen alleen wanneer het actief is) |
| Chatbot Pilot | optioneel — kennisbank-tools verschijnen alleen wanneer het actief is |
| HTTPS | Vereist voor claude.ai web; overal aanbevolen |
| WordPress salts | Unieke AUTH_KEY / SECURE_AUTH_KEY in wp-config.php (gebruikt om de signing key te versleutelen) |
| Bereikbaarheid | claude.ai verbindt vanuit de Anthropic-cloud, dus de site moet publiek bereikbaar zijn voor de webclient (lokale clients kunnen een lokale URL gebruiken) |
Installatie
- Open Plugins → Nieuwe plugin → Plugin uploaden in de WordPress-admin en upload het Agent Pilot ZIP-bestand.
- Activeer Agent Pilot. Bij activatie maakt hij zijn databasetabellen aan,
verleent hij de
manage_agent_pilotcapability aan beheerders, en genereert hij de OAuth signing keys automatisch. - Open Agent Pilot → Connectors. Kopieer de MCP endpoint-URL die bovenaan staat — dat is het adres dat je aan Claude geeft.
- Voeg de connector toe in je Claude-client (zie hieronder) en voltooi de eenmalige login + consent.
Claude verbinden
Alles wat een client nodig heeft staat op het Connectors-scherm: de MCP endpoint, de OAuth issuer, en een kant-en-klaar te plakken commando voor Claude Code.

claude.ai (web) en Claude Desktop
Open in Claude Settings → Connectors → Add custom connector en plak je MCP
endpoint (bijvoorbeeld https://your-site.com/wp-json/agent-pilot/v1/mcp). Claude
opent de loginpagina van je site, jij keurt het consent-scherm goed, en de connector
is klaar. De webclient verbindt vanuit de cloud van Anthropic, dus je site moet
bereikbaar zijn over publieke HTTPS.
Claude Code
claude mcp add --transport http agent-pilot https://your-site.com/wp-json/agent-pilot/v1/mcpClaude Code start de OAuth-flow in je browser; nadat je goedkeurt zijn de tools
beschikbaar in je sessie. Voer /mcp uit om ze te zien, of vraag Claude gewoon iets
te doen — “toon de laatste vijf concept-posts”, “laat me de processing-orders van
deze week zien”.
Kiezen als wie de agent handelt
Het consent-scherm draait als de ingelogde WordPress-gebruiker, en het resulterende
token erft de capabilities van die gebruiker. Maak voor een strak afgebakende
verbinding een dedicated WordPress-gebruiker aan met een beperkte rol (plus de
manage_agent_pilot capability zodat ze kunnen autoriseren), en keur de connector
goed terwijl je als die gebruiker bent ingelogd. De agent kan dan precies doen wat
die gebruiker kan doen — en niets meer.
Wat Claude kan doen
Tools zijn gegroepeerd in vier scopes. Tijdens de consent bepaal jij welke scopes een connector krijgt; bij het aanroepen verifieert elke tool ook de WordPress-capability van de gebonden gebruiker. Beide controles moeten slagen.
Read (wp.read)
Read-only inspectie van de site. Veilig om breed te verlenen.
| Tool | Wat het doet |
|---|---|
wp_get_site_info | Sitenaam, URL’s, versies, actief thema, WooCommerce-status, content-aantallen |
wp_get_site_context | Thema, kleurenpalet, typografie, block patterns en een recente post — zodat gegenereerde content bij je stijl past |
wp_list_posts | Zoek en lijst posts, pagina’s en elk custom post type |
wp_get_post | Haal één post/pagina op met de volledige content en metadata |
wp_list_terms | Lijst taxonomie-termen (categorieën, tags, productcategorieën…) |
wc_list_products / wc_get_product | Zoek en lees WooCommerce-producten |
wc_list_orders / wc_get_order | Zoek en lees orders met regelitems |
wc_list_customers | Zoek klanten met ordertelling en totaalbesteding |
Write content (wp.content.write)
Content aanmaken en bewerken. Destructieve acties vereisen een expliciete confirm-flag.
| Tool | Wat het doet |
|---|---|
wp_save_post | Maak een nieuwe post/pagina/CPT aan of werk een bestaande volledig bij |
wp_replace_in_post | Gerichte find & replace binnen een pagina — de veilige manier om een typefout of een regel op een page-builder-pagina te corrigeren (zie hieronder) |
wp_delete_post | Verplaats naar prullenbak of verwijder een post permanent (confirm vereist) |
wp_upload_media | Sideload een afbeelding/bestand vanuit een URL naar de mediabibliotheek |
wc_save_product | Maak een WooCommerce-product aan of werk het bij |
wc_save_order | Werk de status van een order bij of voeg een order-notitie toe |
wp_comments | Lijst en modereer reacties (goedkeuren, afkeuren, spam, prullenbak) |
De site beheren (wp.manage)
Administratieve operaties. Elke destructieve wijziging vereist bevestiging.
| Tool | Wat het doet |
|---|---|
wp_options | Lees of werk een WordPress-optie bij (updates vereisen confirm; plugin-secrets zijn geblokkeerd) |
wp_plugins | Lijst, activeer of deactiveer plugins (confirm) |
wp_themes | Lijst geïnstalleerde thema’s of wissel van actief thema (confirm) |
wp_users | Lijst, lees, maak aan, werk bij of verwijder gebruikers — met waarborgen tegen het verwijderen van jezelf of de laatste beheerder (confirm) |
wp_maintenance | Leeg de object cache, leeg de rewrite rules, wis transients |
Kennisbank (wp.kb)
Alleen beschikbaar wanneer Chatbot Pilot actief is.
| Tool | Wat het doet |
|---|---|
kb_search | Semantische (embeddings) zoekopdracht over je Chatbot Pilot kennisbank |
kb_stats | Indexeringsstatistieken: bestanden gescand/geïndexeerd, chunks, laatste run |
kb_reindex | Trigger een herindexering op de achtergrond (vereist de manage capability) |
Tools van andere plugins
Agent Pilot is uitbreidbaar: elke plugin kan zijn eigen MCP-scopes en tools registreren, die vervolgens automatisch door discovery, het consent-scherm en het Tools-scherm stromen. Elke bijgedragen scope is gekoppeld aan een WordPress-capability, net als de ingebouwde, dus dezelfde dubbele controle van scope-en-capability geldt. Binnen de Pilot-suite omvat dit al:
| Plugin | Voegt de mogelijkheid toe om |
|---|---|
| Invoice Pilot | Facturen te lezen en er één uit te geven vanuit een WooCommerce-order |
| Mail Pilot | Het verzendlog te doorbladeren en een e-mail te verzenden via de site-mailer |
| Security Pilot | De beveiligingsstatus en het aanvalslog te lezen, een IP te blokkeren of deblokkeren |
| AI SEO Pilot | De SEO-velden van een post te lezen en de meta-omschrijving, focus-keyword en schema in te stellen |
| Subscriptions | De abonnementen, status en facturatiedata van gebruikers te bekijken |
Het Tools-scherm — toegang per rol & per gebruiker
Scopes bepalen in grote lijnen wat een connector mag doen; het Agent Pilot → Tools-scherm laat je verfijnder werken, door individuele tools — of een hele scope — in of uit te schakelen voor een WordPress-rol of een specifieke gebruiker.

- Admin-veilige standaardwaarden. Beheerders krijgen standaard elke tool. Elke andere rol begint met geen tools — je kent precies toe wat hij nodig heeft, per scope of per individuele tool.
- Drie statussen per rij. Standaard, Ingeschakeld of Uitgeschakeld. Een regel op toolniveau wint van een regel op scope-niveau; over de rollen van een gebruiker heen wint Uitgeschakeld altijd.
- Overrides per gebruiker. Typ een naam of e-mail om een enkele gebruiker te laden en zijn toegang los van zijn rol af te stemmen.
- Alleen-beperkend, en geaudit. Deze laag ligt boven op de OAuth scope-consent en de WordPress-capabilities — hij kan tools afnemen, maar nooit iets verlenen dat de gebonden gebruiker niet al zou mogen doen. Elke geblokkeerde call wordt weggeschreven naar de audit log.
Page-builder-pagina’s veilig bewerken
Pagina’s gebouwd met Divi, Elementor, WPBakery en vergelijkbare builders slaan hun
layout op als duizenden regels shortcode of JSON binnen post_content. Dat allemaal
herschrijven enkel om een typefout te corrigeren is riskant — één verkeerd geplaatst
teken kan de pagina breken.
wp_replace_in_post lost dit op. In plaats van de hele pagina te overschrijven geef je
Claude de exacte tekst om te zoeken en de vervanging ervan, en alleen die bytes
veranderen — de omliggende builder-markup blijft byte-voor-byte behouden. Het
ondersteunt meerdere edits in één call (bijvoorbeeld een typefout en een FAQ-regel),
weigert te handelen wanneer de zoektekst niet gevonden wordt, en vereist standaard dat
het fragment uniek is zodat er niets per ongeluk wordt gewijzigd.
Tip: vraag Claude de pagina eerst te lezen met
wp_get_postzodat hij de exacte tekst kopieert, en achterafwp_maintenancete draaien als de builder een statische versie van de pagina cachet.
Beveiligingsmodel
Agent Pilot stapelt verschillende onafhankelijke beschermingen:
- OAuth 2.1, geen gedeelde sleutel. Authorization-code grant met PKCE en refresh tokens. Access tokens zijn kortlevende gesigneerde JWT’s; er is geen statisch wachtwoord dat kan lekken.
- Gebonden aan een gebruiker. Elk token draagt de WordPress-gebruiker die het goedkeurde. Tool-calls draaien als die gebruiker, dus rol- en capability-regels gelden precies zoals in wp-admin.
- Scope én capability. Een scope zegt “deze connector mag content schrijven”; de capability-controle zegt “deze gebruiker mag dat ook echt.” Beide moeten slagen, bij elke call.
- Tool-gating per rol / per gebruiker. Bovenop de scopes kan het Tools-scherm individuele tools (of hele scopes) uitschakelen voor een rol of een enkele gebruiker. Het is een alleen-beperkende laag — altijd afgedwongen, en elke geblokkeerde call wordt geaudit.
- Consent die je kunt lezen. Het goedkeuringsscherm benoemt de connector, toont de aanvragende host, en lijst elke aangevraagde permission op — en markeert alles wat je account eigenlijk niet kan verlenen.
- Destructieve acties zijn afgeschermd. Content verwijderen, plugins/thema’s/
gebruikers wijzigen of opties bijwerken vereist een expliciete
confirmin de request, tenzij je een connector bewust als vertrouwd markeert. - Alles wordt geaudit. Autorisaties, registraties, elke tool-call en elke mislukte poging worden vastgelegd met de gebruiker, connector, timestamp en IP.
- Rate limiting & IP-allowlist. Request-limieten per connector, plus een optionele CIDR-allowlist voor afgeschermde deployments.
- Intrekken en roteren. Schakel een connector of een enkel token uit met één klik, of roteer de signing keys om in één keer elk token te invalideren.
Het Connectors-scherm
Agent Pilot → Connectors is de commandopost:
- Connect Claude to this site — de MCP endpoint, OAuth issuer en protected-resource metadata-URL, plus een copy-paste-commando voor Claude Code.
- Registered connectors — elke client die zich heeft geregistreerd (elke Claude-instantie is een eigen entry), met zijn type en een Revoke met één klik.
- Active access tokens — één rij per live verbinding, die de gebruiker, de connector, de verleende scopes en de vervaltijd toont, elk individueel intrekbaar.
- Signing keys — Rotate keys invalideert onmiddellijk elk uitgegeven token; connectors autoriseren simpelweg opnieuw.
- Recent activity — een live audit trail. Een normale nieuwe verbinding verschijnt
als
auth_fail(de initiële discovery-probe) →dcr(registratie) →authorize(goedgekeurd) →tool_call-entries terwijl Claude werkt. Niet-geauthenticeerde probes die alsauth_failverschijnen zijn te verwachten voor elk publiek endpoint.
Instellingenreferentie
Configureer het gedrag onder Agent Pilot → Settings.

| Instelling | Doel |
|---|---|
| Enable MCP server | Hoofdschakelaar. Wanneer uit, geven de OAuth- en MCP-endpoints 503 terug. |
| Accept new connectors | Sta Dynamic Client Registration toe. claude.ai web heeft dit nodig om zichzelf te registreren; schakel het uit om de connector-lijst te bevriezen. |
| Trust connectors (skip confirmations) | Wanneer aan, draaien destructieve tools zonder de per-call confirm-flag. Laat uit voor de veiligheid. |
| Access-token lifetime | Hoe lang een access token geldig is, in seconden (refresh tokens verlengen de sessie). |
| MCP rate limit | Maximaal aantal MCP-requests per minuut, per connector. |
| IP allowlist | Optionele CIDR-lijst. Leeg = alles toestaan. Let op: claude.ai verbindt vanuit Anthropic cloud-IP’s. |
| Extra redirect hosts | Extra OAuth redirect-hosts die bij registratie geaccepteerd worden. claude.ai / claude.com en localhost zijn altijd toegestaan. |
| Audit-log retention | Hoeveel dagen audit-entries bewaard blijven vóór automatische opschoning. |
| Remove all data on uninstall | Wanneer ingeschakeld, dropt het verwijderen van de plugin zijn tabellen, opties en capability. |
Multi-user & multi-instance
Omdat elk token gebonden is aan een WordPress-gebruiker, kun je veel agents tegelijk verbinden met verschillende reikwijdte:
- Verbind Claude Desktop als editor voor dagelijkse content, en Claude Code als beheerder voor sitebeheer.
- Geef een collega zijn eigen connector onder zijn eigen WordPress-account — de audit log schrijft elke actie toe aan de juiste persoon.
- Gelijktijdige verbindingen zijn geïsoleerd; de sessie en permissions van de ene agent lekken nooit door naar die van een andere.
Troubleshooting
De connector autoriseert maar Claude lijst nooit tools. Dit is bijna altijd een URL-mismatch. Zorg dat je de exacte MCP endpoint hebt gebruikt die op het Connectors-scherm staat, en dat je site over HTTPS bereikbaar is vanaf de client.
Elke request toont auth_fail zelfs met een token. Sommige Apache/nginx-setups
strippen de Authorization-header voordat hij PHP bereikt. Voeg een rewrite rule toe
om hem door te geven (dezelfde fix die voor WordPress application passwords gebruikt
wordt).
claude.ai kan de site niet bereiken. De webclient verbindt vanuit de cloud van
Anthropic — een localhost-URL werkt niet. Gebruik een publiek bereikbaar HTTPS-domein.
Een tool geeft “forbidden” terug. De gebonden WordPress-gebruiker mist de capability voor die actie. Autoriseer als een gebruiker met de juiste rol, of verleen de capability.
Een destructieve tool weigert te draaien. Hij heeft "confirm": true in de request
nodig (of schakel Trust connectors in). Vraag Claude het opnieuw te proberen met
bevestiging.
De site gaf een wit scherm na activatie naast een andere plugin. Wis de PHP opcache (of herstart PHP) eenmaal na activatie als de gedeelde loader van een sibling plugin in een inconsistente staat was gecached.
Uninstall
Deactiveren stopt de server en geplande jobs. De plugin verwijderen wist zijn code;
het laat je data intact tenzij je Remove all data on uninstall in Settings hebt
ingeschakeld, in welk geval zijn tabellen, opties en de manage_agent_pilot
capability worden gedropt.