Aeotool is an MCP server with 36 tools an agent can call, among them ads_ad_status, ads_add_keywords, ads_add_location. It answers at https://aeotool.io/api/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Pilot AEO/GEO from Claude: bulk audits, server-side fixes via WordPress plugin, AI citations.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
ads_ad_status | É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é. Inputs: customer_id, ad_group_id, ad_id, status, confirm |
ads_add_keywords | É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é. Inputs: customer_id, ad_group_id, keywords, match_type, confirm |
ads_add_location | 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. Inputs: customer_id, campaign_id, geo_target_resource_name, negative, confirm |
ads_add_negative_keywords | É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 Inputs: campaign_id, keywords, match_type, customer_id, confirm |
ads_asset_performance | 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, do Inputs: customer_id, days, limit |
ads_attach_audience | 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 ef Inputs: customer_id, campaign_id, user_list_resource_name, mode, confirm |
ads_audiences | Listes de remarketing disponibles et leur taille, avec celles qui atteignent le seuil de diffusion sur le reseau de recherche (~1 000 utilisateurs). Gratuit. Inputs: customer_id |
ads_audit | 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. Inputs: customer_id |
ads_campaign_criteria | 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. Inputs: customer_id, campaign_id |
ads_campaign_status | É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é. Inputs: customer_id, campaign_id, status, confirm |
ads_change_history | 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, lec Inputs: customer_id, days, limit |
ads_device_performance | Cout, conversions et cout par conversion par appareil (mobile, ordinateur, tablette). Prealable a tout ajustement d'enchere par appareil. Gratuit. Inputs: customer_id, days |
ads_geo_performance | 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. Inputs: customer_id, days, limit |
ads_geo_target_search | Trouve l'identifiant Google d'une zone a partir de son nom (ville, departement, region) : seule forme acceptee par ads_add_location. Gratuit. Inputs: customer_id, query, country_code |
ads_keywords | 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. Inputs: customer_id, days, limit |
ads_landing_pages | 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 diagnosti Inputs: customer_id, days, limit |
ads_list_accounts | 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 |
ads_list_ads | Annonces (RSA…) avec métriques N jours et ids (ad_group_id + ad_id) nécessaires à ads_ad_status. Gratuit. Inputs: customer_id, days, limit |
ads_pause_keyword | É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é. Inputs: ad_group_id, criterion_id, customer_id, confirm |
ads_performance | 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. Inputs: customer_id, days |
ads_quality_breakdown | 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 Inputs: customer_id, days, limit |
ads_remove_criterion | 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. Inputs: customer_id, campaign_id, criterion_id, confirm |
ads_search_terms | 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. Inputs: customer_id, days, limit |
ads_set_bid_modifier | 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 Inputs: customer_id, campaign_id, criterion_id, bid_modifier, confirm |
ads_update_budget | É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 requi Inputs: campaign_id, new_daily_budget_eur, customer_id, confirm |
aeo_apply | 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), t Inputs: domain, improvement_ids, faqs, title, description |
aeo_audit | 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 au Inputs: url |
aeo_audit_status | Statut d’un audit lancé par aeo_audit : pending/processing → completed (avec le score) ou failed. Gratuit : poll toutes les 20-30 s. Inputs: audit_id |
aeo_batch_audit | 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. Inputs: urls |
aeo_citations | 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 p Inputs: domain |
aeo_generate | 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/huma Inputs: type, url, title, description, contact, faqs |
aeo_improvements | 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 doma Inputs: audit_id, domain |
aeo_list_sites | Liste les sites WordPress connectés au compte (plugin Everlange Connect) : domaine, statut, modules actifs, version du bundle. |
aeo_monitor | 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ût Inputs: action, domain, brand_name, frequency, schedule_id |
aeo_proof | 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. Inputs: domain |
aeo_report | 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. Inputs: audit_id |
Every block below points at https://aeotool.io/api/mcp. Pick your client and copy.
claude mcp add --transport http aeotool https://aeotool.io/api/mcp
{
"mcpServers": {
"aeotool": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://aeotool.io/api/mcp"]
}
}
}{
"mcpServers": {
"aeotool": {
"url": "https://aeotool.io/api/mcp"
}
}
}{
"servers": {
"aeotool": {
"type": "http",
"url": "https://aeotool.io/api/mcp"
}
}
}{
"context_servers": {
"aeotool": {
"url": "https://aeotool.io/api/mcp"
}
}
}{
"mcpServers": {
"aeotool": {
"serverUrl": "https://aeotool.io/api/mcp"
}
}
}{
"mcpServers": {
"aeotool": {
"url": "https://aeotool.io/api/mcp"
}
}
}name: Aeotool
version: 0.0.1
schema: v1
mcpServers:
- name: Aeotool
type: streamable-http
url: https://aeotool.io/api/mcp{
"mcpServers": {
"aeotool": {
"httpUrl": "https://aeotool.io/api/mcp"
}
}
}{
"mcpServers": {
"aeotool": {
"type": "http",
"url": "https://aeotool.io/api/mcp"
}
}
}{
"mcpServers": {
"aeotool": {
"url": "https://aeotool.io/api/mcp"
}
}
}goose://extension?url=https%3A%2F%2Faeotool.io%2Fapi%2Fmcp&type=streamable_http&id=aeotool&name=Aeotool
It answered our last check on 19 October 2026 in 190 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by aeotool.io and served from aeotool.io, the vendor's own domain: https://aeotool.io/api/mcp.
36, as returned by the server's own tools/list on 12 September 2026: ads_ad_status, ads_add_keywords, ads_add_location, ads_add_negative_keywords, ads_asset_performance, ads_attach_audience, ads_audiences, ads_audit, and 28 more.
It answered our last check on 19 October 2026 in 190 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://aeotool.io/api/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.aeotool. Endpoint host: aeotool.io. ARD identifier: urn:air:io.aeotool:mcp:mcp.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.