Aval

GuidesAgents IA et validation humaine

Ajouter une validation humaine à un agent MCP

Donner à Claude, ChatGPT ou Cursor un outil ask_human : l'agent vous demande votre accord sur votre téléphone avant d'agir, et attend.

· par Antoine

Le protocole MCP permet de donner des outils à un agent. L'un des plus utiles ne fait rien de technique : il pose une question à un humain et attend sa réponse.

Pourquoi passer par MCP

MCP, pour Model Context Protocol, est la prise standard qui relie un agent IA à des outils. Claude, ChatGPT, Le Chat, Grok, Claude Code, Cursor et VS Code savent tous s'y brancher. Un serveur MCP déclare ses outils, avec leur nom et leurs paramètres, et l'agent décide seul quand les appeler.

Pour la validation humaine, c'est pratique : au lieu de coder une pause dans chaque agent, on lui donne un outil ask_human. Il l'appelle quand il arrive devant une décision qui ne lui revient pas, comme il appellerait un outil de recherche.

À quoi ressemble l'outil

Dans Aval, l'outil s'appelle ask_human et prend ces paramètres :

  • question : la question, courte et compréhensible seule (300 caractères au plus) ;
  • options : de deux à six réponses possibles, qui deviennent des boutons. Par défaut, « Oui » et « Non » ;
  • context : ce qu'il faut savoir pour décider, en texte simple : montant, destinataire, brouillon, lien ;
  • agent_name : qui pose la question, par exemple « Claude Code · factures » ;
  • expires_in_minutes : le délai avant que la question expire, une heure par défaut et jusqu'à sept jours.

Un appel ressemble à ceci :

ask_human(
  question: "Je paie la facture OVH de 42,90 € ?",
  options: ["Payer", "Attendre", "Refuser"],
  context: "Échéance demain. Même montant que le mois dernier.",
  agent_name: "Claude Code · factures"
)

La question part aussitôt sur votre téléphone, sur Telegram ou par mail, avec un bouton par option. L'appel attend la réponse jusqu'à 45 secondes. Si vous n'avez pas encore répondu, il rend le statut pending et un identifiant ; l'agent rappelle alors wait_for_answer avec cet identifiant, autant de fois qu'il faut. À la fin, il reçoit l'une de trois issues : answered avec l'option choisie (et un commentaire si vous en avez écrit un), expired si l'échéance est passée, ou cancelled.

Le brancher

L'adresse du serveur est https://www.taraxe.com/aval/mcp. Il n'y a pas de clé à copier : au premier appel, l'agent vous fait vous connecter avec votre mail, et le compte se crée avec 20 questions offertes.

  • Claude : Personnaliser, puis Connecteurs, puis « Ajouter un connecteur personnalisé », et collez l'adresse.
  • ChatGPT : dans les plugins, ajoutez un serveur MCP (le mode développeur doit être activé dans les réglages avancés).
  • Claude Code : claude mcp add --transport http aval https://www.taraxe.com/aval/mcp, puis /mcp pour vous connecter.
  • Cursor et VS Code : un bouton sur la page d'Aval ajoute le serveur en un clic.

Dire à l'agent quand demander

Brancher l'outil ne suffit pas tout à fait. L'agent le voit, il en lit la description, mais c'est mieux de lui dire clairement où passe la limite. Collez une consigne de ce genre dans ses instructions :

Avant de payer, d'envoyer un message en mon nom ou de supprimer quoi que ce soit, demande-moi avec l'outil ask_human. Si je ne réponds pas, ne le fais pas.

Adaptez-la à votre usage. Un agent qui gère votre boîte mail n'a pas les mêmes limites qu'un agent qui travaille sur une base de données.

Écrire de bonnes questions

  • Une décision par question. « Je paie et j'envoie le reçu au comptable ? » mélange deux choses.
  • Une question qui se comprend seule. Vous la lisez sur l'écran verrouillé, sans la conversation de l'agent : « Je paie la facture OVH de 42,90 € ? » plutôt que « Je continue ? ».
  • L'option la plus probable en premier : c'est celle qu'on touche le plus vite.
  • Des options qui disent ce qui va se passer : « Payer » plutôt que « Oui ».
  • Une option pour remettre à plus tard quand ça a du sens : « Attendre », « Demain ».
  • Dans le contexte, ce que vous iriez vérifier vous-même : le montant, le nom, les premières lignes du mail.

Et la sécurité ?

L'agent pose la question, mais il ne peut pas y répondre. Le lien de réponse est un secret qui ne passe que par votre mail ou votre téléphone, et l'accès que reçoit l'agent ne lui permet que de poser des questions et de lire les réponses. Une question expirée ne vaut jamais un accord : la réponse dit en toutes lettres à l'agent de ne pas agir.

Questions fréquentes

L'agent attend-il ma réponse sans limite ?

Chaque appel attend au plus 45 secondes, puis l'agent rappelle wait_for_answer. La question elle-même vit jusqu'à son échéance, une heure par défaut et jusqu'à sept jours. Attendre ne coûte rien.

Puis-je répondre autre chose que les boutons ?

Oui. En plus de choisir une option, vous pouvez écrire un mot à l'agent, par exemple « paie, mais avec la carte pro ». Il le reçoit avec votre réponse.

Ça marche sans MCP ?

Oui, avec l'API : une requête HTTP avec une clé, depuis un script, n8n ou Make. Le guide n8n : faire valider une étape sur son téléphone montre comment.