Ne saisissez pas de données personnelles, comme le nom d'un client.

Cette page a été traduite de l'anglais. La version anglaise fait foi — si quelque chose vous semble incorrect, vérifiez-la. EN

Connecter un agent d'IA (MCP)

Connectez Claude, ChatGPT, Cursor ou votre propre agent à votre workspace professionnel via MCP, pour qu'il prépare des formulaires DS-160 à partir des documents d'un client et envoie des liens clients.

L’agent d’IA d’un cabinet d’immigration peut travailler dans son workspace DS160.io via MCP (Model Context Protocol). À partir des documents ou des e-mails d’un client, l’agent peut créer un formulaire, remplir les réponses qu’il trouve, vérifier ce qui manque encore et envoyer au client un lien pour compléter le reste. Votre équipe vérifie ensuite la demande et la signe elle-même sur le CEAC.

L’agent se connecte à un seul workspace professionnel et ne peut faire que ce que vous lui permettez. Chacune de ses actions est aussi un endpoint de l’API de DS160.io.

Avant de commencer

  • Un workspace professionnel. MCP est disponible sur les workspaces de type Business.
  • Un accès Propriétaire ou Administrateur. Seuls les Propriétaires et Administrateurs d’un workspace peuvent créer des clés d’API ou autoriser une connexion.
  • Un client MCP. Claude Code, Cursor, VS Code, Codex et Windsurf se connectent avec une clé d’API. claude.ai et ChatGPT se connectent en se connectant à DS160.io.

L’adresse du serveur est :

https://www.ds160.io/api/mcp

Utilisez cette adresse même si votre workspace a son propre domaine.

Se connecter avec une clé d’API

  1. Ouvrez Paramètres du workspace → Équipe et accès → Clés d’API et cliquez sur Créer une clé d’API.
  2. Nommez la clé d’après l’agent (par exemple Claude Code, équipe d’accueil), choisissez le préréglage MCP et créez la clé. Le préréglage coche tous les scopes sauf runs:write ; décochez ceux dont l’agent n’a pas besoin.
  3. Copiez le secret. Il commence par ds160_sk_ et n’est affiché qu’une seule fois.
  4. Ajoutez le serveur à votre client avec le secret dans un en-tête Authorization. Dans Claude Code :
claude mcp add --transport http ds160 https://www.ds160.io/api/mcp --header "Authorization: Bearer ds160_sk_…"

Les autres clients prennent la même adresse et le même en-tête dans leurs paramètres. Dans Cursor (.cursor/mcp.json) :

{
    "mcpServers": {
        "ds160": {
            "url": "https://www.ds160.io/api/mcp",
            "headers": { "Authorization": "Bearer ds160_sk_…" }
        }
    }
}

Dans VS Code (.vscode/mcp.json), ajoutez les mêmes url et headers sous "servers" avec "type": "http". Ne laissez pas le secret dans des fichiers que vous versionnez : utilisez les variables d’environnement ou les entrées secrètes de votre client lorsqu’il en propose.

Connecter claude.ai ou ChatGPT

claude.ai et ChatGPT n’envoient pas de clé. Ils se connectent plutôt en se connectant à DS160.io :

  1. Dans claude.ai ou ChatGPT, ajoutez https://www.ds160.io/api/mcp comme connecteur personnalisé.
  2. Lorsque c’est demandé, connectez-vous à DS160.io avec votre propre compte.
  3. Choisissez le workspace professionnel dans lequel l’agent travaillera.
  4. Vérifiez les autorisations demandées, puis cliquez pour autoriser.

L’agent agit alors en votre nom, dans ce workspace. Vous devez être Propriétaire ou Administrateur du workspace pour autoriser une connexion.

Scopes : ce que chacun permet

ScopeCe que l’agent peut faire
forms:readLister les formulaires, lire le nom et le statut d’un formulaire, vérifier ce qui manque, suivre une soumission
forms:writeCréer des formulaires (et les lire)
forms:cloneCopier un formulaire existant dans un nouveau
client-links:writeCréer des liens clients à envoyer aux demandeurs
answers:readLire les réponses d’un formulaire
answers:writeÉcrire et supprimer les réponses d’un formulaire
runs:writeLancer une soumission sur le CEAC et la suivre

answers:read fait sortir de DS160.io les données personnelles des demandeurs. Les noms, dates de naissance, numéros de passeport, historiques de voyage et toutes les autres réponses du DS-160 que lit l’agent sont transmis à l’agent et à celui qui le fait fonctionner, par exemple un fournisseur d’IA. Votre workspace, en tant que responsable du traitement des données de ses clients, décide si cela est autorisé, et est responsable de ces données une fois qu’elles ont quitté DS160.io (voir la politique de confidentialité et l’Accord de traitement des données). Si l’agent n’a besoin que de remplir des formulaires, ne lui donnez pas answers:read : avec answers:write seul, il peut écrire des réponses sans les relire.

Ce que l’agent peut et ne peut pas faire

  • Il peut préparer un formulaire : le créer, remplir les réponses à partir de ce que le client a envoyé, voir quelles questions manquent encore ou seraient refusées, et envoyer au client un lien pour le reste.
  • Chaque réponse qu’il écrit est contrôlée comme l’éditeur de formulaires la contrôle. Le texte est enregistré en majuscules sauf si la question accepte des lettres hors de l’alphabet anglais. Une réponse qui ne convient pas est refusée avec un motif, sans effet sur le reste du lot.
  • Chaque modification est enregistrée. L’historique des modifications du formulaire affiche chaque modification sous la forme “API key nom” pour une clé, ou “membre via agent” pour une connexion.
  • Il ne peut ni signer ni soumettre. Une soumission lancée par un agent s’arrête toujours avant la signature, quel que soit le paramètre du workspace : une personne vérifie la demande et la signe sur le CEAC (voir Relire un DS-160 sur le CEAC avant la signature).
  • Il ne peut pas saisir les captchas du CEAC. Une personne les saisit dans DS160.io pendant que la soumission attend ; la soumission indique à l’agent quand quelqu’un est nécessaire, et où.
  • La création d’un formulaire est facturée comme dans l’application : chaque formulaire créé, ou cloné, compte comme un formulaire créé.
  • Il ne travaille que dans son propre workspace. Il ne peut pas voir les autres workspaces, et un formulaire d’un autre workspace est signalé comme introuvable.

Outils

OutilCe qu’il faitScope
list_formsListe les formulaires du workspace, du plus récent au plus ancienforms:read
get_formLit le nom, le statut et le consentement d’un formulaireforms:read
create_formCrée un formulaire (facturé par formulaire créé)forms:write
clone_formCopie un formulaire dans un nouveau, en omettant éventuellement des sectionsforms:clone
create_client_linkCrée un lien client pour un formulaireclient-links:write
search_docsRecherche dans cette documentation, 200 recherches par jour par clé ou par connexiontous
describe_form_pagesListe les pages du formulaire et chaque question : son chemin de réponse, son type, si elle est obligatoire, les valeurs des listes déroulantes et les questions qu’ouvre chaque réponse, avec le JSON de chaque type de réponsetous
get_answersLit les réponses d’un formulaire, pour tout le formulaire ou une seule pageanswers:read
set_answersÉcrit jusqu’à 200 réponses par appel, dans l’ordre : chacune est écrite, supprimée (valeur null) ou refusée avec un code et un motifanswers:write
get_form_progressPour chaque section : son statut, les questions obligatoires sans réponse et les problèmes par chemin ; et si le formulaire est completforms:read, answers:read ou answers:write
start_runLance une soumission sur le CEAC pour le consulat choisi ; s’arrête avant la signatureruns:write
get_runLe statut d’une soumission, un résumé de son avancement, si une personne est nécessaire, et le lien vers elleruns:write ou forms:read

Révoquer l’accès

  • Une clé : révoquez-la sous Paramètres du workspace → Équipe et accès → Clés d’API. L’appel suivant de l’agent est refusé.
  • Une connexion (claude.ai, ChatGPT) : révoquez-la dans Compte et sécurité, ou pour tout le workspace dans Paramètres du workspace. Les deux listent les connexions existantes.

Révoquez immédiatement si une clé a pu fuiter ou si un agent n’est plus utilisé.

Limitez l’agent à ce que le demandeur a fourni

Un DS-160 est signé par le demandeur, qui déclare que chaque réponse est exacte. Demandez à votre agent de ne répondre qu’à partir de ce que le demandeur vous a fourni (ses documents, ses e-mails et ses réponses) et de ne jamais deviner ni inventer une réponse. En cas de doute, il doit laisser la question vide, afin que get_form_progress l’affiche comme manquante et que le client ou votre équipe y réponde. Relisez le formulaire avant que quiconque le signe.

Dépannage

ProblèmeQue faire
Le client indique qu’il ne peut pas se connecter, ou reçoit 401Vérifiez que l’adresse est https://www.ds160.io/api/mcp et que l’en-tête est Authorization: Bearer <secret>, avec le secret complet. Une clé révoquée ne peut pas être réutilisée : créez-en une nouvelle.
Un outil indique qu’un scope manqueLa clé ou la connexion n’a pas ce scope. Créez une clé qui l’a (ou reconnectez-vous et autorisez-le), puis révoquez l’ancienne.
Une réponse est refuséeLisez son motif. Utilisez describe_form_pages pour obtenir le bon chemin et les valeurs qu’accepte une liste déroulante.
start_run est refuséget_form_progress liste ce qui manque ou est incorrect dans chaque section. Complétez-le, puis relancez la soumission. Si une soumission du formulaire est déjà en cours, suivez-la avec get_run.
La soumission attend avec needsPersonQuelqu’un ouvre le lien de la soumission dans DS160.io et saisit le captcha. Une fois la soumission prête à signer, quelqu’un vérifie la demande et la signe sur le CEAC.