io.aeotool/mcp
REMOTE · AEOTOOL.IO · SCANNED SEP 20
Pilot AEO/GEO from Claude: bulk audits, server-side fixes via WordPress plugin, AI citations.
Available components
Deprecated
This server is marked deprecated in the MCP registry.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4239 tokens (~117/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.aeotool/mcp server?
io.aeotool/mcp is a hosted endpoint at https://aeotool.io/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · aeotool.io
claude mcp add --transport http io-aeotool-mcp 'https://aeotool.io/api/mcp'
{
"mcpServers": {
"io-aeotool-mcp": {
"url": "https://aeotool.io/api/mcp"
}
}
} {
"servers": {
"io-aeotool-mcp": {
"type": "http",
"url": "https://aeotool.io/api/mcp"
}
}
} [mcp_servers.io-aeotool-mcp] url = "https://aeotool.io/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-aeotool-mcp": {
"type": "remote",
"url": "https://aeotool.io/api/mcp",
"enabled": true
}
}
} openclaw mcp add io-aeotool-mcp --url 'https://aeotool.io/api/mcp' --transport streamable-http
mcp_servers:
io-aeotool-mcp:
url: "https://aeotool.io/api/mcp" {
"McpServers": {
"io-aeotool-mcp": {
"Transport": "http",
"Url": "https://aeotool.io/api/mcp"
}
}
} assistant mcp add io-aeotool-mcp -t streamable-http -u 'https://aeotool.io/api/mcp'
{
"mcpServers": {
"io-aeotool-mcp": {
"type": "http",
"url": "https://aeotool.io/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 24 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Aug 26 0
- Tool “ads_ad_status” rewrote its description, which is the text the model reads security
- Tool “ads_add_keywords” rewrote its description, which is the text the model reads security
- Tool “ads_add_negative_keywords” rewrote its description, which is the text the model reads security
- Tool “ads_attach_audience” rewrote its description, which is the text the model reads security
- Tool “ads_campaign_status” rewrote its description, which is the text the model reads security
- Tool “ads_change_history” rewrote its description, which is the text the model reads security
- Tool “ads_geo_target_search” rewrote its description, which is the text the model reads security
- Tool “ads_list_accounts” rewrote its description, which is the text the model reads security
- Tool “ads_pause_keyword” rewrote its description, which is the text the model reads security
- Tool “ads_performance” rewrote its description, which is the text the model reads security
- Tool “ads_search_terms” rewrote its description, which is the text the model reads security
- Tool “ads_update_budget” rewrote its description, which is the text the model reads security
- Tool “aeo_audit_status” rewrote its description, which is the text the model reads security
- Tool “aeo_citations” rewrote its description, which is the text the model reads security
- Tool “aeo_proof” rewrote its description, which is the text the model reads security
- “ads_campaign_status” reworded the description of “customer_id” cosmetic
- “ads_performance” reworded the description of “customer_id” cosmetic
- “aeo_improvements” reworded the description of “domain” cosmetic
- 14 Aug 26 0
- New tool “ads_remove_criterion”, which the server declares destructive security
- Schema quality: 2735 → 4239 ▼ functional
- New tool “ads_add_location” functional
- New tool “ads_asset_performance” functional
- New tool “ads_attach_audience” functional
- New tool “ads_audiences” functional
- New tool “ads_campaign_criteria” functional
- New tool “ads_change_history” functional
- New tool “ads_device_performance” functional
- New tool “ads_geo_performance” functional
- New tool “ads_geo_target_search” functional
- New tool “ads_landing_pages” functional
- New tool “ads_quality_breakdown” functional
- New tool “ads_set_bid_modifier” functional
- Tool “ads_audit” changed its title: Audit Google Ads (18 critères) → Audit Google Ads (19 critères) cosmetic
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://aeotool.io/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=aeotool.io | CN=YR1,O=Let's Encrypt,C=US | 30 Aug 2026 | 28 Nov 2026 | RSA 2048 | SHA256-RSA | 6bd92a56abf4100e45dddf0a83daa6ba338 |
| SANs: aeotool.io | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of aeotool.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| aeotool.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://aeotool.io/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://aeotool.io/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://www.googletagmanager.com https://js.stripe.com https://va.vercel-scripts.com https://vercel.live; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https:; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' https://*.supabase.co https://*.stripe.com https://www.google-analytics.com https://*.googletagmanager.com https://*.vercel-insights.com https://va.vercel-scripts.com https://api.firecrawl.dev; frame-src https://js.stripe.com https://hooks.stripe.com https://vercel.live; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), interest-cohort=(), browsing-topics=() |
Protected resource metadata
| Document | https://aeotool.io/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://aeotool.io/api/mcp |
| Authorisation server | https://aeotool.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://aeotool.io/api/mcp | Verified | 200 | |
| http (plaintext) | http://aeotool.io/api/mcp | HTTPS enforced | 308 | https://aeotool.io/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ads_ad_status Pause / réactivation d’annonce ~132
ÉCRITURE GARDÉE : met une annonce individuelle en pause ou la réactive (réversible). ids via ads_list_ads. Dry-run Google puis confirm:true. Pilotage requis (write_enabled) ; journalisé.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_group_id | string | yes | Groupe d’annonces (voir ads_list_ads) |
| ad_id | string | yes | Id de l’annonce (voir ads_list_ads) |
| confirm | boolean | – | true = appliquer (après dry-run) |
| customer_id | string | – | Compte Ads (optionnel) |
| status | string | yes | PAUSED ou ENABLED |
No output schema declared.
No examples provided.
ads_add_keywords Ajouter des mots-clés ~141
ÉCRITURE GARDÉE : ajoute des mots-clés POSITIFS (1-20) à un groupe d’annonces. ad_group_id via ads_keywords. Dry-run Google puis confirm:true. Pilotage requis (write_enabled) ; journalisé.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_group_id | string | yes | Groupe d’annonces cible |
| confirm | boolean | – | true = appliquer (après dry-run) |
| customer_id | string | – | Compte Ads (optionnel) |
| keywords | array | yes | 1-20 mots-clés |
| match_type | string | – | EXACT | PHRASE | BROAD (défaut EXACT) |
No output schema declared.
No examples provided.
ads_add_location Ajouter ou exclure une zone ~128
ECRITURE GARDEE. Ajoute une zone au ciblage d'une campagne, ou l'exclut avec negative:true. L'identifiant s'obtient avec ads_geo_target_search. Dry-run valide par Google d'abord ; confirm:true pour appliquer.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | – | Campagne cible |
| confirm | boolean | – | true pour appliquer reellement |
| customer_id | string | – | Compte Ads (optionnel) |
| geo_target_resource_name | string | – | Format geoTargetConstants/<id> |
| negative | boolean | – | true = exclure la zone |
No output schema declared.
No examples provided.
ads_add_negative_keywords Ajouter des mots-clés négatifs ~162
ÉCRITURE GARDÉE : ajoute des mots-clés négatifs (1-50) à une campagne. Sans confirm:true : dry-run validé par Google (rien n’est appliqué). Nécessite le pilotage activé pour ce compte (ads_list_accounts → write_enabled). Chaque application est journalisée.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | Campagne cible (voir ads_performance) |
| confirm | boolean | – | false/absent = dry-run ; true = appliquer |
| customer_id | string | – | Compte Ads (optionnel) |
| keywords | array | yes | 1-50 termes à exclure |
| match_type | string | – | EXACT (défaut) | PHRASE | BROAD |
No output schema declared.
No examples provided.
ads_asset_performance Performance des accroches RSA ~124
Note Google de chaque titre et description d'annonce responsive (LOW / GOOD / BEST / en cours d'evaluation). Remplacer les LOW par des variantes des BEST est l'optimisation creative la moins risquee : elle ne touche ni enchere ni budget, donc ne relance pas l'apprentissage. Gratuit, lecture seule.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 30) |
| limit | number | – | Max lignes (defaut 100, max 300) |
No output schema declared.
No examples provided.
ads_attach_audience Rattacher une audience a une campagne ~168
ECRITURE GARDEE. Rattache une liste de remarketing a une campagne. Mode observation par defaut : la diffusion NE CHANGE PAS, l'audience est seulement mesuree. Le mode targeting restreint la diffusion aux seuls membres de la liste et peut effondrer le volume : il doit etre demande explicitement. Dry-run valide par Google d'abord ; confirm:true pour appliquer.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | – | Campagne cible |
| confirm | boolean | – | true pour appliquer reellement |
| customer_id | string | – | Compte Ads (optionnel) |
| mode | string | – | observation (defaut) ou targeting |
| user_list_resource_name | string | – | Format customers/<cid>/userLists/<id> (voir ads_audiences) |
No output schema declared.
No examples provided.
ads_audiences Listes d audience du compte ~57
Listes de remarketing disponibles et leur taille, avec celles qui atteignent le seuil de diffusion sur le reseau de recherche (~1 000 utilisateurs). Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_audit Audit Google Ads (19 critères) ~69
Audit complet du compte Google Ads : score /100, grade, € gaspillés/mois, manque à gagner, quick wins par catégorie (tracking, gaspillage, enchères, structure, RSA…). Lecture seule, gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_campaign_criteria Criteres de ciblage (zones, appareils, horaires) ~83
Zones, appareils et plages horaires cibles par les campagnes, avec leur ajustement d'enchere actuel et leur criterion_id. Lecture prealable indispensable a ads_set_bid_modifier et ads_remove_criterion. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | – | Limiter a une campagne (optionnel) |
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_campaign_status Pause / réactivation de campagne ~116
ÉCRITURE GARDÉE : met une campagne en pause ou la réactive (réversible). Sans confirm:true : dry-run validé par Google. Pilotage requis (write_enabled) ; journalisé.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | Campagne cible (voir ads_performance) |
| confirm | boolean | – | true = appliquer (après dry-run) |
| customer_id | string | – | Compte Ads (optionnel : défaut : le plus récent) |
| status | string | yes | PAUSED ou ENABLED |
No output schema declared.
No examples provided.
ads_change_history Historique des modifications Ads ~119
Qui a change quoi et quand sur le compte (30 jours max, retention Google). Signale les changements de budget ou d'encheres qui ont pu RELANCER la phase d'apprentissage : les metriques anterieures ne sont alors plus comparables. Gratuit, lecture seule.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 14, max 29) |
| limit | number | – | Max lignes (defaut 100, max 200) |
No output schema declared.
No examples provided.
ads_device_performance Performance par appareil ~71
Cout, conversions et cout par conversion par appareil (mobile, ordinateur, tablette). Prealable a tout ajustement d'enchere par appareil. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 30) |
No output schema declared.
No examples provided.
ads_geo_performance Performance par zone geographique ~108
Performance par zone REELLE de l'internaute (ville / region), libelles resolus, avec les zones qui depensent sans convertir. Determinant pour une activite a zone de chalandise. Gratuit, lecture seule.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 30) |
| limit | number | – | Max lignes (defaut 50, max 200) |
No output schema declared.
No examples provided.
ads_geo_target_search Chercher une zone geographique ~89
Trouve l'identifiant Google d'une zone a partir de son nom (ville, departement, region) : seule forme acceptee par ads_add_location. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | Code pays ISO, defaut FR |
| customer_id | string | – | Compte Ads (optionnel) |
| query | string | – | Nom de la zone, ex. Nimes |
No output schema declared.
No examples provided.
ads_keywords Mots-clés Ads (avec ids) ~92
Mots-clés actifs avec leurs métriques (N jours) et les ids nécessaires aux actions (ad_group_id + criterion_id pour ads_pause_keyword). Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Période en jours (défaut 30) |
| limit | number | – | Max lignes (défaut 100, max 300) |
No output schema declared.
No examples provided.
ads_landing_pages Performance par page de destination ~130
Performance de chaque page de destination (cout, clics, conversions, taux de conversion) et liste des pages qui ont recu au moins 10 clics payants SANS une seule conversion. Ces URLs sont directement auditables avec aeo_audit : le diagnostic de citabilite et celui de conversion se recoupent. Gratuit, lecture seule.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 30) |
| limit | number | – | Max lignes (defaut 50, max 200) |
No output schema declared.
No examples provided.
ads_list_accounts Comptes Google Ads connectés ~74
Liste les comptes Google Ads connectés au compte aeotool (OAuth) : customer_id, nom, statut, is_manager (MCC, non requêtable directement, ses comptes clients apparaissent aussi dans la liste), write_enabled (pilotage en écriture, activable par compte dans le Cockpit Google Ads).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ads_list_ads Annonces du compte ~85
Annonces (RSA…) avec métriques N jours et ids (ad_group_id + ad_id) nécessaires à ads_ad_status. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Période en jours (défaut 30) |
| limit | number | – | 1-200, défaut 100 |
No output schema declared.
No examples provided.
ads_pause_keyword Mettre un mot-clé en pause ~125
ÉCRITURE GARDÉE : met un mot-clé en pause (réversible dans Google Ads). ids via ads_keywords. Sans confirm:true : dry-run validé par Google. Pilotage requis (write_enabled) ; journalisé.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_group_id | string | yes | Groupe d’annonces (voir ads_keywords) |
| confirm | boolean | – | false/absent = dry-run ; true = appliquer |
| criterion_id | string | yes | Id du mot-clé (voir ads_keywords) |
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_performance Performance des campagnes Ads ~90
Performance des campagnes Google Ads sur N jours (défaut 30) : impressions, clics, coût, conversions, CTR, CPC moyen, budget/jour : triées par coût. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel : défaut : le plus récent) |
| days | number | – | Période en jours (1-365, défaut 30) |
No output schema declared.
No examples provided.
ads_quality_breakdown Quality Score decompose ~124
Decompose le Quality Score de chaque mot-cle en ses trois composantes Google (pertinence de l'annonce, experience sur la page de destination, CTR attendu) et designe la cause DOMINANTE. Un QS bas se corrige par la composante fautive, jamais par l'enchere. Gratuit, lecture seule.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Periode en jours (defaut 30) |
| limit | number | – | Max lignes (defaut 100, max 300) |
No output schema declared.
No examples provided.
ads_remove_criterion Retirer un critere de ciblage ~122
ECRITURE GARDEE. Retire un critere de ciblage d'une campagne (zone, audience, ajustement). Un retrait se repare en RECREANT le critere, pas en annulant. Dry-run valide par Google d'abord ; confirm:true pour appliquer.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | – | Campagne cible |
| confirm | boolean | – | true pour appliquer reellement |
| criterion_id | string | – | Critere a retirer (voir ads_campaign_criteria) |
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_search_terms Termes de recherche Ads ~103
Termes de recherche réels ayant déclenché les annonces (N jours, triés par coût) avec le flag wasted=true (coût sans conversion) : candidats directs pour ads_add_negative_keywords. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Compte Ads (optionnel) |
| days | number | – | Période en jours (défaut 30) |
| limit | number | – | Max lignes (défaut 50, max 200) |
No output schema declared.
No examples provided.
ads_set_bid_modifier Ajuster une enchere (zone / appareil / horaire) ~181
ECRITURE GARDEE. Ajuste l'enchere d'un critere existant : 1.0 = aucun ajustement, 1.2 = +20 %, 0.8 = -20 %, 0 = exclusion. Reversible en repassant a 1. Dry-run valide par Google d'abord ; confirm:true pour appliquer. Avertit si une campagne est en phase d'apprentissage (l'action relance le compteur).
| Name | Type | Req | Description |
|---|---|---|---|
| bid_modifier | number | – | 0, ou entre 0.1 et 10 |
| campaign_id | string | – | Campagne (voir ads_campaign_criteria) |
| confirm | boolean | – | true pour appliquer reellement |
| criterion_id | string | – | Critere (voir ads_campaign_criteria) |
| customer_id | string | – | Compte Ads (optionnel) |
No output schema declared.
No examples provided.
ads_update_budget Modifier le budget quotidien d’une campagne ~145
ÉCRITURE GARDÉE : modifie le budget quotidien d’une campagne. Caps : ±20 % max par appel, plafond absolu (env ADS_MAX_DAILY_BUDGET_EUR, défaut 200 €/j), budgets partagés refusés. Sans confirm:true : dry-run validé par Google. Pilotage requis ; journalisé.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | Campagne cible (voir ads_performance) |
| confirm | boolean | – | false/absent = dry-run ; true = appliquer |
| customer_id | string | – | Compte Ads (optionnel) |
| new_daily_budget_eur | number | yes | Nouveau budget quotidien en euros |
No output schema declared.
No examples provided.
aeo_apply Appliquer les correctifs ~172
APPLIQUE la sélection d’améliorations niveau 1 (jsonld/robots/llms/meta) sur un site connecté : génère + archive les correctifs et bump le bundle → le plugin les injecte au prochain sync. Optionnel : faqs[] (ajoute un FAQPage au JSON-LD), title/description (meta). Le site doit être connecté (aeo_list_sites).
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | optionnel : description meta/OG |
| domain | string | yes | domaine du site connecté |
| faqs | array | – | optionnel : Q&A pour le FAQPage (jsonld) |
| improvement_ids | array | yes | ids des améliorations (cf. aeo_improvements.autoApplicableIds) |
| title | string | – | optionnel : titre meta/OG |
No output schema declared.
No examples provided.
aeo_audit Auditer une URL (AEO/GEO) ~105
Lance un audit AEO/GEO d’une URL (asynchrone, ~2 min) et renvoie immédiatement l’audit_id. Suivre avec aeo_audit_status jusqu’à completed, puis aeo_report / aeo_improvements. Coûte 50 GTO, débités à la complétion. NE PAS relancer le même audit pendant qu’un run est en cours.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL ou domaine à auditer |
No output schema declared.
No examples provided.
aeo_audit_status Statut d’un audit ~69
Statut d’un audit lancé par aeo_audit : pending/processing → completed (avec le score) ou failed. Gratuit : poll toutes les 20-30 s.
| Name | Type | Req | Description |
|---|---|---|---|
| audit_id | string | yes | id de l’audit (renvoyé par aeo_audit) |
No output schema declared.
No examples provided.
aeo_batch_audit Auditer plusieurs sites ~88
Lance l’audit de plusieurs sites en une commande (le « killer agence »), en asynchrone : renvoie immédiatement un audit_id par URL. Suivre chaque id avec aeo_audit_status. Coûte 50 GTO par site, débités à la complétion.
| Name | Type | Req | Description |
|---|---|---|---|
| urls | array | yes | Liste d’URLs/domaines à auditer |
No output schema declared.
No examples provided.
aeo_citations Historique de citations IA ~134
Historique de citation d’un domaine dans les moteurs IA : taux de citation par date, détail par moteur, part de voix. Renvoie `series[].basis` = "measured" ou "derived" (dénominateur reconstitué sur les scans anciens, le taux est alors un plancher : voir `caveat`). `share_of_voice` vaut null si aucun concurrent n’est suivi : la part de voix n’est pas mesurable, ce n’est pas 0. Nécessite un Monitoring IA sur ce domaine. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | domaine à inspecter |
No output schema declared.
No examples provided.
aeo_generate Générer un artefact AEO ~329
Génère (sans appliquer) un artefact AEO, déterministe et gratuit. Types : jsonld, robots, llms, meta, faq (params faqs[]), ai-txt, humans-txt, security-txt, sitemap. jsonld/robots/llms/meta/faq sont applicables (cf. aeo_apply) ; ai-txt/humans-txt/security-txt/sitemap sont à publier par l’agence.
| Name | Type | Req | Description |
|---|---|---|---|
| aiCrawlingPolicy | string | – | ai-txt : politique de crawl IA (défaut allow-with-attribution) |
| contact | string | – | security-txt/ai-txt : email de contact (optionnel) |
| description | string | – | meta : description (optionnel) |
| disclosure | string | – | ai-txt : mention de divulgation de contenu IA (optionnel) |
| faqs | array | – | faq : questions/réponses [{q,a}] |
| language | string | – | security-txt : langues préférées / humans-txt : langue (optionnel) |
| paths | array | – | sitemap : chemins à inclure (optionnel) |
| policy | string | – | security-txt : URL de la politique de sécurité (optionnel) |
| team | array | – | humans-txt : équipe [{name,role}] (optionnel) |
| tech | array | – | humans-txt : technologies (optionnel) |
| title | string | – | meta : titre (optionnel) |
| type | string | yes | type d’artefact |
| url | string | yes | URL ou domaine cible |
No output schema declared.
No examples provided.
aeo_improvements Checklist d’améliorations ~118
La CHECKLIST d’améliorations d’un audit : groupées par niveau (1=auto-applicable plugin, 2=générable, 3=rebuild/lead), triées par gain projeté. Fournit les ids à passer à aeo_apply. Passer audit_id OU domain (= dernier audit terminé du domaine). Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| audit_id | string | – | id de l’audit (optionnel si domain fourni) |
| domain | string | – | domaine : utilise le dernier audit terminé (alternative à audit_id) |
No output schema declared.
No examples provided.
aeo_list_sites Lister les sites connectés ~37
Liste les sites WordPress connectés au compte (plugin Everlange Connect) : domaine, statut, modules actifs, version du bundle.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
aeo_monitor Monitoring citations programmé ~149
Programme un scan de citations récurrent côté serveur (10 moteurs IA, part de voix vs watchlist, alertes email). action=create {domain, brand_name?, frequency: daily|weekly|biweekly} · list · delete {schedule_id}. Chaque scan programmé coûte 25 GTO à l’exécution.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | create | list | delete |
| brand_name | string | – | nom de marque (défaut : racine du domaine) |
| domain | string | – | domaine à monitorer (create) |
| frequency | string | – | daily | weekly | biweekly (défaut weekly) |
| schedule_id | string | – | id du schedule (delete) |
No output schema declared.
No examples provided.
aeo_proof Preuve avant/après d’un domaine ~65
La PREUVE : compare les 2 derniers audits complétés d’un domaine : delta de score, critères améliorés, critères régressés. L’argument client en un appel. Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | domaine audité au moins 2 fois |
No output schema declared.
No examples provided.
aeo_report Détail d’un audit ~65
Renvoie le détail complet d’un audit existant (par audit_id) : score global, scores par catégorie et tous les critères (score + recommandation). Gratuit.
| Name | Type | Req | Description |
|---|---|---|---|
| audit_id | string | yes | id de l’audit (renvoyé par aeo_audit) |
No output schema declared.
No examples provided.
What is the io.aeotool/mcp server?
io.aeotool/mcp is listed in the public MCP registry as io.aeotool/mcp. Pilot AEO/GEO from Claude: bulk audits, server-side fixes via WordPress plugin, AI citations. This page covers its hosted endpoint (https://aeotool.io/api/mcp).
Is the io.aeotool/mcp server safe to use?
io.aeotool/mcp scores 94 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.aeotool/mcp server expose?
io.aeotool/mcp exposes 36 tools: aeo_list_sites, aeo_audit, aeo_audit_status, aeo_batch_audit, aeo_report, and 31 more. Their descriptions and schemas cost roughly 4,169 tokens of context every time the server is loaded.
Does the io.aeotool/mcp server require authentication?
Yes. io.aeotool/mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the io.aeotool/mcp server still maintained?
io.aeotool/mcp is marked deprecated in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.