recalled.dev
Référence

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

text
POST https://api.recalled.dev/v1/mcp

L'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 :

text
Authorization: Bearer rec_live_<prefix>_<secret>
Content-Type: application/json

Le 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 :

json
{
  "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 :

json
{
  "name": "recalled",
  "transport": "http",
  "url": "https://api.recalled.dev/v1/mcp",
  "headers": {
    "Authorization": "Bearer rec_live_xxx_yyy"
  }
}

Tools disponibles

ToolCe qu'il fait
get_project_infoIdentification du projet auquel cette session est liée, et scopes de la clé API courante.
get_recent_eventsEvents les plus récents, plus récents en premier, jusqu'à 100.
search_eventsRecherche full text sur action, nom d'acteur, email d'acteur, id d'acteur. Pagination cursor.
list_eventsFiltres structurés (action, acteur, organisation, IP, plage de dates). Pagination cursor.
retrieve_eventRécupère un event par id avec tous les détails.
get_event_receiptRetourne un reçu portable et citable pour un event, avec verification_url et view_url publics.
list_actions_summaryTop actions sur une fenêtre de N jours, avec count et part en pourcentage.
verify_chainRecalcule chaque hash et signature HMAC, retourne un rapport d'intégrité.
usage_summaryCompteur d'events du mois en cours vs limite du plan, pourcentage utilisé.
delete_actorEffacement RGPD article 17. Nécessite confirm: true pour s'exécuter.
audit_actor_planRetourne un plan pas à pas pour auditer un acteur. L'assistant l'exécute ensuite en appelant les autres tools de données.
investigate_incident_planRetourne un plan d'investigation pour les events autour d'un timestamp.
compliance_checkRetourne un plan d'audit RGPD / SOC 2 / ISO 27001 que l'assistant exécute en chaînant les tools de données.
get_setup_guideRetourne 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.

URICe qu'elle expose
recalled://project/infoMétadonnées du projet et id, nom, prefix, scopes de la clé API.
recalled://usage/currentUsage du mois courant, limite du plan, pourcentage utilisé.
recalled://events/recentLes 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.

PromptTool équivalentCe qu'il produit
/audit_actoraudit_actor_planAudit l'activité d'un acteur sur une fenêtre choisie. Entrées : actor_id, days optionnel.
/investigate_incidentinvestigate_incident_planEnquê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_checkcompliance_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.

text
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.
text
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 argument confirm explicite 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.