Serveur MCP
Recalled expose un serveur Model Context Protocol officiel pour que les agents IA (Claude Desktop, Cursor, ChatGPT, agents custom basés sur les SDKs MCP officiels) puissent lire et agir sur ton audit trail directement.
> Plan requis. L'endpoint MCP est disponible sur Starter, Pro et Scale. Les comptes Free peuvent toujours créer des clés API pour le SDK et l'API REST, mais /v1/mcp renvoie une erreur JSON-RPC qui pointe vers la page d'upgrade. Upgrade depuis recalled.dev/dashboard/billing.
L'endpoint MCP réutilise les clés API que tu as déjà. Même authentification, même scoping par projet, aucune infra à mettre en place. Si tu sais appeler /v1/events, tu sais utiliser le MCP, à condition que le propriétaire du projet soit sur un plan payant.
Endpoint
POST https://api.recalled.dev/v1/mcpL'endpoint parle le transport Streamable HTTP (spec MCP 2025-03-26). Il tourne en mode stateless : chaque requête JSON-RPC obtient un serveur frais, isolé à la clé API qui l'a authentifiée. Aucun token de session à gérer côté client.
Authentification
Même Bearer token que l'API REST :
Authorization: Bearer rec_live_<prefix>_<secret>
Content-Type: application/jsonLe MCP scope tout au projet propriétaire de la clé API. Une session MCP liée au projet A ne peut jamais lire les events du projet B.
Connecter Claude Desktop
Édite claude_desktop_config.json et ajoute :
{
"mcpServers": {
"recalled": {
"url": "https://api.recalled.dev/v1/mcp",
"headers": {
"Authorization": "Bearer rec_live_xxx_yyy"
}
}
}
}Redémarre Claude Desktop. Recalled devrait apparaître dans la liste des outils.
Connecter Cursor
Ouvre Cursor Settings, MCP, puis ajoute un nouveau serveur :
{
"name": "recalled",
"transport": "http",
"url": "https://api.recalled.dev/v1/mcp",
"headers": {
"Authorization": "Bearer rec_live_xxx_yyy"
}
}Tools disponibles
| Tool | Ce qu'il fait |
|---|---|
get_project_info | Identification du projet auquel cette session est liée, et scopes de la clé API courante. |
get_recent_events | Events les plus récents, plus récents en premier, jusqu'à 100. |
search_events | Recherche full text sur action, nom d'acteur, email d'acteur, id d'acteur. Pagination cursor. |
list_events | Filtres structurés (action, acteur, organisation, IP, plage de dates). Pagination cursor. |
retrieve_event | Récupère un event par id avec tous les détails. |
get_event_receipt | Retourne un reçu portable et citable pour un event, avec verification_url et view_url publics. |
list_actions_summary | Top actions sur une fenêtre de N jours, avec count et part en pourcentage. |
verify_chain | Recalcule chaque hash et signature HMAC, retourne un rapport d'intégrité. |
usage_summary | Compteur d'events du mois en cours vs limite du plan, pourcentage utilisé. |
delete_actor | Effacement RGPD article 17. Nécessite confirm: true pour s'exécuter. |
audit_actor_plan | Retourne un plan pas à pas pour auditer un acteur. L'assistant l'exécute ensuite en appelant les autres tools de données. |
investigate_incident_plan | Retourne un plan d'investigation pour les events autour d'un timestamp. |
compliance_check | Retourne un plan d'audit RGPD / SOC 2 / ISO 27001 que l'assistant exécute en chaînant les tools de données. |
get_setup_guide | Retourne le prompt opinion pour ajouter Recalled à une codebase. EN ou FR. |
Resources disponibles
Les mêmes données exposées par get_project_info, usage_summary et get_recent_events sont aussi publiées comme resources MCP, pour les clients qui préfèrent le modèle resources aux tool calls. Tools et resources restent synchronisés, choisis ce que ton client supporte le mieux.
| URI | Ce qu'elle expose |
|---|---|
recalled://project/info | Métadonnées du projet et id, nom, prefix, scopes de la clé API. |
recalled://usage/current | Usage du mois courant, limite du plan, pourcentage utilisé. |
recalled://events/recent | Les 50 events les plus récents pour un contexte rapide. |
Prompts disponibles
Les prompts sont des recettes réutilisables qui combinent tools et resources pour répondre à des questions courantes. Ils apparaissent comme des actions rapides dans les clients qui supportent les prompts MCP (Cursor, ChatGPT, agents custom). Claude Desktop ignore actuellement les prompts et ne voit que les tools, donc chaque prompt est aussi exposé sous forme de tool *_plan avec le même contenu.
| Prompt | Tool équivalent | Ce qu'il produit |
|---|---|---|
/audit_actor | audit_actor_plan | Audit l'activité d'un acteur sur une fenêtre choisie. Entrées : actor_id, days optionnel. |
/investigate_incident | investigate_incident_plan | Enquête sur les events autour d'un timestamp, propose un récit de cause racine. Entrées : at (ISO), window_minutes optionnel, focus optionnel. |
/compliance_check | compliance_check | Évaluation de conformité RGPD, SOC 2, ISO 27001 basée sur les données présentes dans le projet. |
Exemple de session
Une fois connecté, tu peux poser tes questions à l'assistant en langage naturel et il choisira les bons outils.
Toi : qui a supprimé des factures ces 7 derniers jours ?
Assistant : (appelle list_events avec action="invoice.deleted", date_from il y a 7 jours)
Assistant : 4 factures ont été supprimées par 2 acteurs distincts ces 7 derniers jours. La plus récente date d'il y a 3 heures, par user_42.Toi : lance un audit de conformité sur ce projet.
Assistant : (appelle /compliance_check, puis verify_chain, list_actions_summary, lit project_info)
Assistant : RGPD vert, SOC 2 amber (changements de rôle admin pas tous loggués), ISO 27001 amber. ...Tarification
Le MCP est disponible sur tous les plans, y compris Free. Il ne consomme pas ton quota d'events : il lit les events existants et expose les mêmes actions que l'API REST. Les actions effectuées par un tool (par exemple ingestion via REST, effacement RGPD) restent facturées et rate limitées comme tout autre appel.
Modèle de sécurité
- Bearer token uniquement, dans le header
Authorization. Jamais en query string. - HTTPS uniquement.
- Pas de "token passthrough" : le serveur MCP valide la clé contre ton projet avant toute action.
- Chaque requête ouvre son propre serveur scopé et le ferme en réponse. Aucun état partagé entre tenants.
- Les tools destructifs (
delete_actor) exigent un argumentconfirmexplicite pour qu'un agent ne les exécute pas par accident.
Dépannage
"Invalid API key" : la clé n'a pas été trouvée, a été révoquée, ou le prefix ne correspond pas. Génère une nouvelle clé dans le dashboard.
"Method Not Allowed" sur une requête GET : l'endpoint est POST uniquement en mode stateless. Les clients MCP doivent envoyer du JSON-RPC en POST.
Rate limited : le MCP partage le rate limit global de /v1/*. Si ton agent boucle agressivement, regroupe ses appels ou ajoute du backoff.