Développeurs

Une clé pour l'API REST et le serveur MCP

Lisez vos données de surveillance, configurez et ajustez sites et moniteurs, et lancez-les depuis des scripts, la CI ou un agent IA. Une clé d'API, en lecture seule ou avec accès complet, et la même limite sur REST et MCP.

Démarrage rapide

Chaque requête s'authentifie avec une clé d'API que vous créez dans l'app. Pointez curl, votre CI ou n'importe quel client HTTP vers https://app.relvato.com/api/v1.

# 1 — Confirm your key works and see the endpoints
curl https://app.relvato.com/api/v1 \
  -H "Authorization: Bearer rlv_your_key"

# 2 — List the sites Relvato monitors for you
curl https://app.relvato.com/api/v1/sites \
  -H "Authorization: Bearer rlv_your_key"

# 3 — Read recent runs (optionally scoped to one site)
curl "https://app.relvato.com/api/v1/runs?limit=10" \
  -H "Authorization: Bearer rlv_your_key"

# 4 — One run in detail, then the fix brief Relvato's AI would answer
curl https://app.relvato.com/api/v1/runs/RUN_ID \
  -H "Authorization: Bearer rlv_your_key"
curl https://app.relvato.com/api/v1/runs/RUN_ID/fix-prompt \
  -H "Authorization: Bearer rlv_your_key"

# 5 — Trigger an on-demand scan of a site (full-access key)
curl -X POST https://app.relvato.com/api/v1/sites/SITE_ID/scan \
  -H "Authorization: Bearer rlv_your_key"

Authentification

Envoyez votre clé à chaque requête via Authorization: Bearer rlv_your_key (un en-tête x-api-key fonctionne aussi). Une clé manquante, révoquée ou inconnue renvoie 401.

Créez et révoquez les clés dans API access dans l’app. Les clés commencent par rlv_ et ne s’affichent qu’une fois, à la création. Chaque clé est read-only (tout ce qui lit : sites, santé, performance, exécutions, moniteurs, mises à jour, activité, briefs de correction, réglages d’alertes) ou full access (en plus : ajouter et configurer sites et moniteurs, les lancer, examiner les résultats et appliquer les correctifs proposés). Les clés créées avant l’arrivée des portées ont un accès complet. Traitez-les comme un mot de passe.

Endpoints REST

Chaque endpoint est limité au compte de la clé et renvoie du JSON. URL de base https://app.relvato.com/api/v1.

MéthodeEndpointDescription
GET/api/v1Confirme la clé et liste les endpoints disponibles.
GET/api/v1/sitesListe les sites que Relvato surveille pour vous.
GET/api/v1/sites/:id/overviewLe diagnostic d’un site : ce qui demande attention, la dernière exécution de chaque moniteur et l’utilisation de l’offre.
GET/api/v1/sites/:id/settingsLes réglages d’un site — jamais de valeur secrète.
GET/api/v1/sites/:id/healthLa santé actuelle et dans le temps (?range=28|90|182), le point des groupes, la disponibilité mesurée par les sondes.
GET/api/v1/sites/:id/performanceWeb Vitals en laboratoire et chez les vrais visiteurs, ce qui ralentit, les principales améliorations.
GET/api/v1/sites/:id/activityLe journal d’activité WordPress (?filter, ?search, ?days, ?limit).
GET/api/v1/sites/:id/updatesFenêtres de mises à jour automatiques WordPress, versions retenues, mises à jour sûres, durcissement.
GET/api/v1/sites/:id/quarantineMode quarantaine : la session active, ses changements, les sessions passées.
GET/api/v1/checks/:idUn moniteur complet : planification, ses propres réglages, constats ignorés, dernière exécution.
GET/api/v1/notificationsLes notifications du tableau de bord.
GET/api/v1/runsExécutions récentes, de la plus récente à la plus ancienne — paramètres optionnels siteId, checkId, status, before (pagination) et limit (1–100).
GET/api/v1/runs/:idUne exécution en détail : étapes, avertissements, constats et métriques (condensées si elles sont volumineuses).
GET/api/v1/runs/:id/fix-promptPour une exécution qui a trouvé un problème : le brief auquel répond l’IA de Relvato — stack, ce qui a changé, l’erreur et les preuves.
GET/api/v1/alert-settingsQui est prévenu de quoi : fréquence, gravité, canaux et répartition. Jamais d’URL ni de secret.
POST/api/v1/sites/:id/scanMet en file un scan à la demande d'un site et renvoie les identifiants d'exécution. Nécessite une clé en accès complet ; compté sur votre quota mensuel d'exécutions.

Exemple : lister les sites

{
  "sites": [
    {
      "id": "st_1a2b3c",
      "name": "style4street",
      "url": "https://style4street.com",
      "connectionType": "wordpress"
    }
  ]
}

Exemple : exécutions récentes

Une exécution en échec puis résolue (référence acceptée ou ignorée) renvoie status: "passed" avec resolved: true.

{
  "runs": [
    {
      "id": "rn_9f8e7d",
      "siteId": "st_1a2b3c",
      "checkId": "ck_4d5e6f",
      "journey": "checkout",
      "checkName": "Checkout",
      "status": "passed",
      "resolved": false,
      "trigger": "schedule",
      "startedAt": "2026-08-31T09:15:00.000Z",
      "durationMs": 4210,
      "error": null,
      "warning": null
    }
  ]
}

Exemple : une exécution en détail

Les constats arrivent dans metrics.items. Une exécution volumineuse est condensée plutôt que coupée : les longues séries deviennent des résumés, et ce qui a été laissé de côté est listé dans metricsTrimmed — le titre et les constats sont toujours conservés.

{
  "runId": "rn_9f8e7d",
  "runUrl": "https://app.relvato.com/runs/rn_9f8e7d",
  "check": { "key": "google-search", "name": "Google Search" },
  "status": "passed",
  "warning": "https://style4street.com/category/topuri/hanorace/ lost 57% of its Google impressions",
  "metrics": {
    "headline": { "tone": "warn", "text": "🔎 1 thing to review on Google Search (as of 2026-09-24)" },
    "items": [
      { "text": "https://style4street.com/category/topuri/hanorace/ lost 57% of its Google impressions — 98 in the 7 days to 2026-09-24, against 226 in an average week before", "tone": "warn" }
    ],
    "search": { "engine": "google", "tiles": [ … ], "dailies": [ { "label": "Impressions per day", "days": 84, "last7Total": 2196, "usualLast7Total": 2583 } ], … }
  },
  "metricsTrimmed": {
    "note": "Large parts were left out to keep this short — the run page has everything.",
    "omitted": ["search.dailies (the per-day values — summarized)", "search.tiles[].weekly (the 8 weekly bars)"]
  }
}

Exemple : le brief de correction d’une exécution

Pour une exécution qui a trouvé un problème, fix-prompt renvoie le brief auquel répond l’IA de Relvato : la stack du site, ce qui a changé juste avant, l’erreur et les constats, et pour Google / Bing Search les preuves qui écartent des causes. Donnez-le à votre propre modèle, ou lisez-le vous-même.

{
  "runId": "rn_9f8e7d",
  "runUrl": "https://app.relvato.com/runs/rn_9f8e7d",
  "hasIssue": true,
  "prompt": "# Help me understand a Google Search change on my WordPress site\n\nYou are a senior SEO specialist. … ## Evidence Relvato already has …"
}

Limites de débit

Les requêtes sont limitées par minute et par compte, REST et MCP confondus. Votre forfait fixe le plafond :

ForfaitRequêtes / min
Free30
Pro120
Business600
Agency2,400

Chaque réponse porte X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Au-delà de la limite, 429 est renvoyé avec un en-tête Retry-After.

Codes de statut

StatutSignification
200Succès.
400Il manque quelque chose à la requête ou elle n’est pas réalisable — le message dit quoi.
401Clé d'API manquante, inconnue ou révoquée.
403La clé est en lecture seule et la requête modifierait quelque chose ou lancerait un scan.
404Site ou exécution introuvable pour ce compte.
409Le site est désactivé, ou vous n'avez pas encore prouvé qu'il vous appartient (domaine non vérifié ou extension WordPress jamais connectée).
429Limite de débit atteinte, ou quota mensuel d'exécutions épuisé.

Serveur MCP (pour agents IA)

Relvato est aussi un serveur Model Context Protocol distant avec 57 outils : un agent comme Claude peut faire dans une conversation ce que vous feriez dans le tableau de bord — ajouter un site et vous guider pour le connecter, choisir et configurer ses moniteurs (jusqu’aux pages que vérifie le moniteur visuel), les lancer, expliquer les résultats et, avec votre accord, valider un changement voulu ou vous donner le lien pour appliquer dans WordPress le correctif que propose une exécution. Vous le connectez en vous identifiant sur Relvato ou avec une clé d'API ; dans les deux cas, il partage la limite de l'API REST. Valider les changements d’intégrité des fichiers, de scripts et de DNS, qui reçoit les alertes, les secrets et toute suppression restent dans le tableau de bord.

Référencé dans le GitHub MCP Registry ↗.

Identifiez-vous, sans clé. Ajoutez l'endpoint comme connecteur dans Claude (claude.ai, Desktop ou Claude Code), ChatGPT ou VS Code. Le client ouvre la connexion à Relvato ; vous l'autorisez à lire vos sites et résultats et à faire des changements : ajouter des sites et des moniteurs, modifier les plannings et lancer des scans. La connexion fonctionne dans les clients compatibles avec les Client ID Metadata Documents ; Cursor et la passerelle MCP de Docker ne le sont pas encore et utilisent une clé d'API.

Si vous appartenez à une organisation, vous choisissez l'un de ses espaces de travail à la connexion ; votre espace personnel n'y est pas proposé. Pour connecter votre espace personnel, utilisez une clé d'API.

Ce que vous pouvez demander à un agent connecté à Relvato :

  • « Pourquoi le paiement de ma boutique a-t-il échoué cette nuit, et comment le corriger ? »
  • « Mets en place la surveillance de example.com et dis-moi ce que je dois faire pour le connecter. »
  • « Qui est alerté quand un moniteur Security détecte un problème, et sur quels canaux ? »
  • « Ajoute mes pages de tarifs et de blog au moniteur visuel, puis lance-le. »
  • « Quelle est la vitesse de ma boutique pour les vrais visiteurs, et qu’est-ce qui la ralentit ? »

Endpoint https://app.relvato.com/api/mcp

OutilRôle
Mise en place
list_sitesListe les sites du compte et indique si chacun est prêt à lancer des moniteurs.
add_siteAjoute un site et renvoie son étape de configuration : connecter l'extension WordPress ou vérifier le domaine.
verify_siteVérifie cette étape : la connexion de l'extension, ou l'enregistrement DNS ou la balise meta de vérification du domaine.
start_monitoring_for_goalsChoisissez ce qui compte (paiement, sécurité, recherche, vitesse, …) et obtenez les moniteurs de votre offre qui le couvrent.
list_checksLes moniteurs que vous pouvez ajouter : ce que chacun repère, s'il est inclus dans votre offre et lesquels sont recommandés.
add_checksAjoute des moniteurs à un site ; chacun indique s'il a été ajouté, s'il existait déjà ou pourquoi non.
dismiss_recommendationNe plus recommander un moniteur pour un site, ou rétablir les recommandations écartées.
calibrate_siteWooCommerce : relire la boutique (un produit à acheter, le type de paiement, la devise) après un changement.
verify_vitals_beaconVérifie que la balise Web Vitals des vrais visiteurs est installée.
Lire
site_overviewVerdict clair sur le site : ce qui demande votre attention, chaque moniteur avec sa dernière exécution et sa planification, et l'utilisation de l'offre. Sous WordPress, aussi les abilities IA du site.
get_site_healthTaux de réussite actuel et sur 30 jours, la tendance sur 28 à 182 jours, le point de chaque groupe et la disponibilité mesurée par les sondes avec ses incidents.
get_performanceCore Web Vitals en laboratoire et chez les vrais visiteurs, ce qui ralentit le site et les principales améliorations, étape par étape.
get_checkUn moniteur complet : planification, ses propres réglages (pages, masques, détails du paiement, …), constats ignorés, sa recette s’il est écrit par l’IA, dernière exécution.
list_runsExécutions récentes, de la plus récente à la plus ancienne — par site, moniteur ou statut, avec pagination.
get_runUne exécution en détail : étapes, constats, comparaisons visuelles avec liens vers les images, le correctif proposé, les extensions à mettre à jour.
get_fix_promptPour une exécution qui a trouvé un problème : le même brief que celui auquel répond l’IA de Relvato, pour raisonner sur la cause probable et les correctifs.
get_updatesWordPress : fenêtres de mises à jour automatiques et ce qu’elles ont mis à jour ou annulé, versions retenues, mises à jour sûres, durcissement.
get_safe_updateSuit une mise à jour ou une désactivation sûre d’extension jusqu’à sa réussite, un moniteur cassé ou son annulation dans WordPress.
get_quarantineMode quarantaine : disponible ou non, actif jusqu’à quand, chaque changement repéré, sessions passées.
get_activity_logWordPress : connexions, connexions échouées, comptes, mises à jour, réglages et modifications de fichiers, dans l’historique de votre offre.
get_notificationsLes notifications du tableau de bord : moniteurs en échec, problèmes d’extension ou de balise, canaux en pause, facturation.
get_site_settingsLes réglages d’un site : ce qu’un agent peut changer et ce qui reste dans le tableau de bord (jamais de valeur secrète).
get_alert_settingsQui est prévenu de quoi : fréquence, gravité, état de chaque canal et répartition — sans URL ni secret.
get_status_pagesPages de statut et rapports clients : réglages seulement, jamais de lien privé ni d’adresse de destinataire.
list_heartbeatsLes heartbeats d’un site (tâches cron qui se signalent) : état, planification, dernier ping, signalements manqués — et les URL de ping en accès complet.
Configurer
update_checkActive ou désactive un moniteur, ou change quand il s’exécute : planification, relances aux mises à jour WordPress, exécutions supplémentaires aléatoires.
pause_monitor_groupMettre en pause tout un groupe de moniteurs pendant 1 heure, 24 heures ou jusqu’à la reprise, par exemple pendant une maintenance ; exactement les moniteurs coupés sont réactivés.
resume_monitor_groupReprendre tout de suite un groupe en pause ; un moniteur que l’offre ne permet plus reste coupé, avec la raison.
update_visual_monitorAjouter vos propres pages par adresse au moniteur visuel, régler masques, appareils, navigateurs et seuil.
update_check_settingsLes réglages propres d’un moniteur : détails du paiement, pages supplémentaires, ce que doit répondre la fonction IA du site, sélecteurs DKIM, …
add_custom_checkDécrivez ce qui doit être vrai sur une page ; l’IA de Relvato écrit le moniteur.
edit_custom_checkDonner un nouvel objectif ou une nouvelle page à un moniteur personnalisé ; l’IA écrit une nouvelle recette à approuver.
reauthor_custom_checkRépondre à la question de l’IA, ou lui faire réécrire la recette d’un moniteur personnalisé.
approve_custom_checkApprouver une recette proposée pour que le moniteur personnalisé s’exécute (les recettes interactives demandent un accord explicite).
update_site_settingsRythme, écart entre exécutions, nouvelle tentative après le pare-feu, rétablissement des moniteurs instables, retour arrière des extensions.
update_alert_settingsMoment des alertes et gravité minimale. Qui reçoit les alertes et la mise en sourdine restent dans le tableau de bord.
add_heartbeatCréez un heartbeat pour une tâche cron ou une sauvegarde et obtenez l’URL que la tâche appelle quand elle réussit.
update_heartbeatRenommer, replanifier, mettre en pause ou reprendre un heartbeat. La suppression reste dans le tableau de bord.
Lancer et agir
trigger_scanLance maintenant les moniteurs d’un site — tous, un groupe ou un seul — et renvoie les identifiants d’exécution et leur durée approximative (utilise le quota mensuel).
cancel_queued_runsArrête les exécutions en attente d’un site ; celle en cours se termine.
request_ai_fixDemander à l’IA de Relvato une proposition de correctif pour une exécution en échec (offres payantes).
apply_fixWordPress : donne le lien pour appliquer dans WordPress le correctif en un clic que propose une exécution — seulement celui-là —, puis Relvato relance le moniteur.
start_safe_updateWordPress : lance la mise à jour ou la désactivation d’une extension vulnérable, appliquée dans WordPress ; Relvato revérifie et propose l’annulation si quelque chose casse.
start_quarantineAprès un piratage : exécutions de sécurité toutes les heures pendant 48 heures, mises à jour d’extensions en pause.
extend_quarantineGarder le mode quarantaine 48 heures de plus.
send_test_alertEnvoyer une alerte de test par e-mail, Slack ou webhook.
resume_webhookRéactiver les alertes webhook après que Relvato les a mises en pause pour livraisons échouées.
report_false_positiveSignaler à l’équipe de Relvato qu’un résultat est faux ; rien ne change sur l’exécution.
Examiner les résultats
ignore_findingNe plus compter un constat sur un moniteur (annulable). Seulement si vous confirmez qu’il est attendu.
unignore_findingFaire de nouveau compter un constat ignoré.
accept_visual_changeFaire de la capture de cette exécution la nouvelle référence d’une page (annulable).
ignore_visual_changeIgnorer désormais la zone qui a changé sur une page (annulable).
flag_visual_change_as_problemMarquer comme échec un changement visuel que l’IA a laissé passer.
undo_visual_reviewAnnuler la dernière validation ou exclusion visuelle.
accept_structure_changeAdopter la nouvelle structure d’une page comme référence (annulable).
ignore_structure_changeIgnorer certains changements d’éléments sur une page (annulable).
undo_structure_reviewAnnuler la dernière validation ou exclusion de structure.

Dans un client qui lit un mcp.json, l'endpoint suffit — le client vous demande de vous identifier la première fois :

{
  "mcpServers": {
    "relvato": {
      "type": "http",
      "url": "https://app.relvato.com/api/mcp"
    }
  }
}

Pour utiliser plutôt une clé d'API (un script, un client sans connexion, ou votre espace personnel si vous êtes dans une organisation), ajoutez l'en-tête. Une clé en lecture seule ne reçoit que les outils de lecture :

{
  "mcpServers": {
    "relvato": {
      "type": "http",
      "url": "https://app.relvato.com/api/mcp",
      "headers": {
        "Authorization": "Bearer rlv_your_key"
      }
    }
  }
}

Plugin Claude Code

Dans Claude Code, le plugin Relvato ajoute le serveur et trois skills pour travailler depuis le dépôt de votre site. Installez-le depuis notre marketplace, puis lancez /mcp et identifiez-vous :

claude plugin marketplace add Relvato/relvato-mcp
claude plugin install relvato@relvato
  • /relvato:setup ajoute le site que ce dépôt déploie, prouve qu'il vous appartient (il peut ajouter la balise meta de vérification à votre code), choisit des moniteurs et lance les premières exécutions.
  • /relvato:check-after-deploy lance les moniteurs du site après un déploiement, indique combien de temps ils prennent, et signale ce qui est passé et ce qui a cassé.
  • /relvato:fix-failure lit une exécution en échec, trouve la cause dans votre code, applique la plus petite correction avec votre accord, puis relance ce moniteur.

Perplexity

Avec une offre Perplexity Pro, Max ou Enterprise, ajoutez Relvato comme connecteur personnalisé : Settings → Connectors → + Custom connector → Remote. Indiquez le point de terminaison ci-dessus comme URL du serveur MCP et Streamable HTTP comme transport.

Pour Authentication, choisissez API key et collez une clé API Relvato (créez-la dans API access, dans l'application ; une clé en lecture seule n'obtient que les outils de lecture). L'option OAuth de Perplexity ne fonctionne pas encore avec la connexion Relvato : elle suppose que le serveur enregistre Perplexity automatiquement, ce que Relvato ne propose pas.

Webhooks

L’API répond quand vous l’interrogez. Pour être prévenu dès qu’un moniteur détecte un problème, ajoutez un webhook : Relvato envoie un événement JSON signé à votre URL pour chaque alerte (à partir de Pro). Configurer un webhook →

Questions fréquentes

Quels forfaits incluent l'accès API et MCP ?

Tous, y compris Free — seule la limite par minute change. Free autorise 30 requêtes par minute ; les forfaits payants davantage.

Comment obtenir une clé ?

Connectez-vous et ouvrez Accès API dans l'app. Choisissez lecture seule ou accès complet pour chaque clé ; vous pouvez en créer plusieurs et révoquer chacune à tout moment.

Que peut faire une clé en lecture seule ?

Tout ce qui ne fait que lire : sites, santé et disponibilité, performance, exécutions et moniteurs, mises à jour et activité WordPress, quarantaine, notifications, briefs de correction et réglages d’alertes — en REST comme en MCP. Un client MCP connecté avec une clé en lecture seule ne voit que les outils de lecture. Tout ce qui ajoute, modifie, lance ou examine renvoie 403 et nécessite une clé à accès complet.

REST et MCP partagent-ils la limite ?

Oui. La limite est par compte et par minute, comptée sur les deux interfaces réunies.

Lancer un scan consomme-t-il mon quota ?

Oui. Les scans à la demande — via REST ou MCP — puisent dans le même quota mensuel d'exécutions que les exécutions planifiées.

Un agent peut-il ajouter des sites et modifier des moniteurs ?

Oui — dans les limites de votre offre, selon les mêmes règles que le tableau de bord. Il ne peut pas contourner la preuve de propriété : un nouveau site ne s'exécute qu'une fois son extension WordPress connectée ou son domaine vérifié. Il ne peut valider ou ignorer un résultat que de façon annulable et, sous WordPress, ne vous transmettre que le correctif que propose une exécution, à appliquer dans WordPress → Relvato. Valider les changements d’intégrité des fichiers, de scripts et de DNS, arrêter le mode quarantaine, choisir qui reçoit les alertes, les secrets et les suppressions restent dans le tableau de bord.

Un assistant IA peut-il se connecter sans clé d'API ?

Oui. Claude, ChatGPT et VS Code peuvent s'identifier sur Relvato (tout client compatible avec les Client ID Metadata Documents le peut) : ajoutez l'endpoint MCP et suivez la connexion. Les limites par minute et du forfait sont les mêmes qu'avec une clé. Si vous appartenez à une organisation, la connexion relie l'un de ses espaces de travail ; pour votre espace personnel, utilisez une clé d'API.

Relvato fonctionne-t-il avec l’API Abilities de WordPress ?

Dans les deux sens. L’extension Relvato enregistre quatre abilities (état du site, moniteurs, brief de correction et lancement des moniteurs) : un assistant connecté à un site WordPress par le MCP Adapter peut donc utiliser Relvato depuis ce site. Et site_overview liste les abilities qu’enregistrent toutes les extensions d’un site WordPress, telles que le dernier scan d’exposition les a lues : lesquelles n’importe qui peut exécuter, et lesquelles peuvent supprimer des données.

Construisez sur vos données de surveillance

Créez une clé et faites votre première requête en moins d'une minute.