mcp
get_audit
Outil MCP qui récupère un audit déjà lancé par identifiant. Renvoie les scores de modules, le score total et chaque constat avec sévérité et recommandation.
Ce que fait cet outil
get_audit renvoie le résultat complet d’un audit déjà lancé via son audit_id. C’est la cible d’interrogation pour run_audit et la voie canonique pour lire tous les constats d’une URL donnée.
- Renvoie la même enveloppe
McpAuditResponsequerun_audit, mais avec les constats remplis une fois l’audit terminé. - Expose les scores de modules (0-100) sur les 11 modules d’audit, plus le
total_scoreagrégé. - Inclut chaque constat avec
module,rule_id,passed,severity,title,recommendationoptionnel et undocs_url. - Renvoie un
statusreflétant l’état en amont :queued,running,completeoufailed. - Fournit un
report_urlen lien profond vers le rapport HTML surapp.metricspot.com.
Pourquoi c’est important
get_audit est le côté lecture du serveur MCP. Les agents l’appellent pour interroger une exécution en file d’attente, relire les constats d’un audit antérieur, ou comparer deux audits de la même URL dans le temps.
Workflows concrets :
- Un bot de commentaire PR appelle
get_auditpour l’audit précédent d’une URL, comparetotal_scoreau nouveau, et n’escalade que si la régression dépasse un seuil. - Un agent “corriger un constat à la fois” boucle sur
findingsfiltré parseverity: critical, ouvre une issue par règle en échec et lie ledocs_urlpour le contexte.
Comment l’utiliser
Passez l’audit_id renvoyé par run_audit (ou par list_audits). Le même identifiant peut être ré-interrogé sans limite ; les résultats sont mis en cache côté serveur et peu coûteux à lire.
Schéma d’entrée
{
"type": "object",
"properties": {
"audit_id": { "type": "string", "minLength": 1 }
},
"required": ["audit_id"]
}
Exemple de schéma de réponse
{
"audit_id": "aud_01HZ8X9YP7K3T2N6Q5",
"url": "https://example.com",
"status": "complete",
"total_score": 82,
"module_scores": {
"technical": 95,
"onpage": 76,
"performance": 71,
"ai": 84,
"modern_seo": 80,
"social": 65,
"accessibility": 90,
"privacy": 78,
"readability": 85,
"tech_stack": 100
},
"findings": [
{
"module": "technical",
"rule_id": "technical.https",
"passed": true,
"severity": "critical",
"title": "Site is served over HTTPS",
"docs_url": "https://metricspot.com/docs/technical-https/"
},
{
"module": "ai",
"rule_id": "ai.llms_txt",
"passed": false,
"severity": "minor",
"title": "No llms.txt published",
"recommendation": "Add an llms.txt to /.well-known/ listing canonical docs URLs for LLM crawlers.",
"docs_url": "https://metricspot.com/docs/llms-txt/"
}
],
"report_url": "https://app.metricspot.com/audits/aud_01HZ8X9YP7K3T2N6Q5",
"created_at": "2026-05-13T10:18:04.000Z"
}
Claude Code
claude mcp add --transport http metricspot https://mcp.metricspot.com/mcp \
--header "Authorization: Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Demandez :
Récupère l’audit MetricSpot
aud_01HZ8X9YP7K3T2N6Q5et liste chaque constat en échec, groupé par module et trié par sévérité.
Cursor
.cursor/mcp.json :
{
"mcpServers": {
"metricspot": {
"url": "https://mcp.metricspot.com/mcp",
"headers": {
"Authorization": "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Demandez :
Tire le dernier audit de cette URL depuis MetricSpot et réécris le title de la page pour corriger les règles on-page en échec.
Python (interroger jusqu’à la fin)
import httpx, time, json
HEADERS = {
"content-type": "application/json",
"accept": "application/json, text/event-stream",
"authorization": "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx",
}
def get_audit(audit_id):
r = httpx.post("https://mcp.metricspot.com/mcp", headers=HEADERS, json={
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "get_audit", "arguments": {"audit_id": audit_id}},
}, timeout=60.0)
return json.loads(r.json()["result"]["content"][0]["text"])
while True:
audit = get_audit("aud_01HZ8X9YP7K3T2N6Q5")
if audit["status"] in ("complete", "failed"):
break
time.sleep(3)
print("score:", audit["total_score"])
for f in audit["findings"]:
if not f["passed"] and f["severity"] in ("critical", "major"):
print(f["severity"], f["rule_id"], "-", f["title"])
Node / TypeScript (HTTP brut)
const res = await fetch("https://mcp.metricspot.com/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
authorization: "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "get_audit",
arguments: { audit_id: "aud_01HZ8X9YP7K3T2N6Q5" },
},
}),
});
const audit = JSON.parse((await res.json()).result.content[0].text);
console.log(audit.status, audit.total_score);
Erreurs courantes
| Code | Quand | Action |
|---|---|---|
UNAUTHORIZED (401) | Jeton Bearer manquant ou invalide | Émettez une clé sur https://app.metricspot.com/settings/api-keys |
AUDIT_NOT_FOUND (404) | audit_id n’appartient pas à ce compte | Appelez list_audits pour des identifiants valides |
FORBIDDEN (403) | Le jeton n’a pas le scope read | Réémettez la clé avec le scope par défaut |
UPSTREAM_FAILED (5xx) | Erreur du backend applicatif | Réessayez ; retryable: true est positionné sur les échecs transitoires |
Questions fréquentes
À quelle fréquence interroger un audit en file d’attente ?
Toutes les 3-5 secondes est le bon rythme. La plupart des audits se terminent en 10-30 s, donc 6-10 interrogations par audit est typique. Pas de coût par appel au-delà du réseau. Faites du backoff si status reste queued au-delà de 90 s.
Puis-je récupérer un audit lancé par quelqu’un d’autre ?
Non. La recherche d’audit est scopée au propriétaire de la clé API. Appeler get_audit avec l’audit_id d’un autre utilisateur renvoie AUDIT_NOT_FOUND plutôt que de divulguer l’existence de l’audit. Les audits anonymes (id "anonymous") ne peuvent pas être récupérés du tout.
La réponse inclut-elle les constats des règles qui passent ?
Oui. Chaque règle évaluée par le moteur figure dans findings, avec passed: true ou passed: false. Filtrez côté client pour ne faire ressortir que les échecs, ou pour calculer des taux de réussite par module.
Sources
Dernière mise à jour 2026-05-13