Typ geen persoonsgegevens, zoals de naam van een klant.

Deze pagina is uit het Engels vertaald. De Engelse versie is leidend — als iets niet klopt, raadpleeg de Engelse versie. EN

Een AI-agent koppelen (MCP)

Koppel Claude, ChatGPT, Cursor of uw eigen agent via MCP aan uw zakelijke werkruimte, zodat die DS-160-formulieren voorbereidt uit documenten van een klant en client-links verstuurt.

De eigen AI-agent van een immigratiekantoor kan via MCP (het Model Context Protocol) in de DS160.io-werkruimte van het kantoor werken. Uit de documenten of e-mails van een klant kan de agent een formulier aanmaken, de antwoorden invullen die hij vindt, controleren wat er nog ontbreekt en de klant een link sturen om de rest in te vullen. Uw medewerkers controleren daarna de aanvraag en ondertekenen die zelf op CEAC.

De agent wordt aan één zakelijke werkruimte gekoppeld en kan alleen doen wat u toestaat. Alles wat hij kan doen is ook een endpoint van de DS160.io-API.

Voordat u begint

  • Een zakelijke werkruimte. MCP is beschikbaar voor Business-werkruimtes.
  • Toegang als Eigenaar of Beheerder. Alleen Eigenaren en Beheerders van de werkruimte kunnen API-sleutels aanmaken of een koppeling toestaan.
  • Een MCP-client. Claude Code, Cursor, VS Code, Codex en Windsurf koppelen met een API-sleutel. claude.ai en ChatGPT koppelen door in te loggen bij DS160.io.

Het adres van de server is:

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

Gebruik dit adres ook als uw werkruimte een eigen domein heeft.

Koppelen met een API-sleutel

  1. Open Werkruimte-instellingen → Team en toegang → API-sleutels en klik op API-sleutel aanmaken.
  2. Noem de sleutel naar de agent (bijvoorbeeld Claude Code, intaketeam), kies de voorinstelling MCP en maak de sleutel aan. De voorinstelling vinkt elke scope aan behalve runs:write; vink elke scope uit die de agent niet nodig heeft.
  3. Kopieer het secret. Het begint met ds160_sk_ en wordt maar één keer getoond.
  4. Voeg de server toe aan uw client, met het secret in een Authorization-header. In Claude Code:
claude mcp add --transport http ds160 https://www.ds160.io/api/mcp --header "Authorization: Bearer ds160_sk_…"

Andere clients nemen hetzelfde adres en dezelfde header op in hun instellingen. In Cursor (.cursor/mcp.json):

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

In VS Code (.vscode/mcp.json) voegt u dezelfde url en headers toe onder "servers", met "type": "http". Zet het secret niet in bestanden die u commit: gebruik omgevingsvariabelen of geheime invoervelden als uw client die ondersteunt.

claude.ai of ChatGPT koppelen

claude.ai en ChatGPT sturen geen sleutel. Zij koppelen in plaats daarvan door in te loggen bij DS160.io:

  1. Voeg in claude.ai of ChatGPT https://www.ds160.io/api/mcp toe als aangepaste connector.
  2. Log in bij DS160.io met uw eigen account wanneer daarom wordt gevraagd.
  3. Kies de zakelijke werkruimte waarin de agent gaat werken.
  4. Bekijk de rechten die worden gevraagd en klik om ze toe te staan.

De agent handelt daarna namens u, in die werkruimte. U moet Eigenaar of Beheerder van de werkruimte zijn om een koppeling toe te staan.

Scopes: wat elke scope toestaat

ScopeWat de agent kan doen
forms:readFormulieren opsommen, de naam en status van een formulier lezen, controleren wat er ontbreekt, een indiening volgen
forms:writeFormulieren aanmaken (en lezen)
forms:cloneEen bestaand formulier naar een nieuw formulier kopiëren
client-links:writeClient-links aanmaken om naar aanvragers te sturen
answers:readDe antwoorden van een formulier lezen
answers:writeDe antwoorden van een formulier schrijven en verwijderen
runs:writeEen indiening bij CEAC starten en volgen

answers:read haalt persoonsgegevens van aanvragers uit DS160.io. Namen, geboortedata, paspoortnummers, reisgeschiedenis en elk ander DS-160-antwoord dat de agent leest, gaan naar de agent en naar wie hem draait, zoals een AI-aanbieder. Uw werkruimte beslist als verwerkingsverantwoordelijke voor de gegevens van haar klanten of dat mag, en is verantwoordelijk voor die gegevens zodra ze DS160.io hebben verlaten (zie het privacybeleid en de verwerkersovereenkomst). Als de agent alleen formulieren hoeft in te vullen, laat answers:read dan weg: met alleen answers:write kan hij antwoorden schrijven zonder ze terug te lezen.

Wat de agent wel en niet kan

  • Hij kan een formulier voorbereiden: het aanmaken, antwoorden invullen uit wat de klant heeft gestuurd, zien welke vragen nog ontbreken of geweigerd zouden worden, en de klant een link sturen voor de rest.
  • Elk antwoord dat hij schrijft wordt gecontroleerd zoals de formuliereditor het controleert. Tekst wordt in hoofdletters opgeslagen, tenzij de vraag letters buiten het Engelse alfabet toestaat. Een antwoord dat niet past, wordt met een reden geweigerd, en de rest van de batch blijft onaangetast.
  • Elke wijziging wordt vastgelegd. De veldgeschiedenis van het formulier toont elke wijziging als “API-sleutel naam” voor een sleutel, of als “lid via agent” voor een koppeling.
  • Hij kan niet ondertekenen of indienen. Een indiening die een agent start, stopt altijd vóór ondertekening, wat de instelling van de werkruimte ook is: een persoon controleert de aanvraag en ondertekent die op CEAC (zie Een DS-160 op CEAC controleren vóór ondertekening).
  • Hij kan de captcha’s van CEAC niet typen. Een persoon typt ze in DS160.io terwijl de indiening wacht; de indiening laat de agent weten wanneer en waar iemand nodig is.
  • Een formulier aanmaken wordt gefactureerd zoals in de app: elk aangemaakt of gekloond formulier telt als een aangemaakt formulier.
  • Hij werkt alleen in zijn eigen werkruimte. Hij ziet geen andere werkruimtes, en een formulier uit een andere werkruimte wordt als niet gevonden gemeld.

Tools

ToolWat hij doetScope
list_formsSomt de formulieren van de werkruimte op, nieuwste eerstforms:read
get_formLeest de naam, status en toestemming van één formulierforms:read
create_formMaakt een formulier aan (gefactureerd per aangemaakt formulier)forms:write
clone_formKopieert een formulier naar een nieuw formulier, eventueel zonder bepaalde sectiesforms:clone
create_client_linkMaakt een client-link voor een formulierclient-links:write
search_docsDoorzoekt deze documentatie, 200 zoekopdrachten per dag per sleutel of koppelingelke
describe_form_pagesSomt de pagina’s van het formulier en elke vraag op: het pad van het antwoord, het type, of de vraag verplicht is, de waarden van keuzelijsten en de vragen die elk antwoord opent, met de JSON voor elk type antwoordelke
get_answersLeest de antwoorden van een formulier, voor het hele formulier of één paginaanswers:read
set_answersSchrijft tot 200 antwoorden per aanroep, in volgorde: elk wordt geschreven, verwijderd (waarde null) of geweigerd met een code en redenanswers:write
get_form_progressPer sectie: de status, de verplichte vragen zonder antwoord en de problemen per pad; en of het formulier compleet isforms:read, answers:read of answers:write
start_runStart een indiening bij CEAC voor een gekozen consulaat; stopt vóór ondertekeningruns:write
get_runDe status van een indiening, een samenvatting van waar die is, of er een persoon nodig is, en de link ernaartoeruns:write of forms:read

Toegang intrekken

  • Een sleutel: trek hem in onder Werkruimte-instellingen → Team en toegang → API-sleutels. De volgende aanroep van de agent wordt geweigerd.
  • Een koppeling (claude.ai, ChatGPT): trek die in onder Account en beveiliging, of voor de hele werkruimte in de Werkruimte-instellingen. Beide tonen de koppelingen die er zijn.

Trek de toegang meteen in als een sleutel mogelijk is uitgelekt of een agent niet meer wordt gebruikt.

Houd de agent bij wat de aanvrager heeft gegeven

Een DS-160 wordt ondertekend door de aanvrager, die verklaart dat elk antwoord waar is. Laat uw agent alleen antwoorden op basis van wat de aanvrager u heeft gegeven (zijn documenten, e-mails en antwoorden), en nooit een antwoord raden of verzinnen. Als hij niet zeker is, moet hij de vraag leeg laten, zodat get_form_progress die als ontbrekend toont en de klant of uw medewerkers hem beantwoorden. Controleer het formulier voordat iemand het ondertekent.

Problemen oplossen

ProbleemWat te doen
De client kan geen verbinding maken, of krijgt 401Controleer of het adres https://www.ds160.io/api/mcp is en de header Authorization: Bearer <secret>, met het volledige secret. Een ingetrokken sleutel kan niet opnieuw worden gebruikt: maak een nieuwe aan.
Een tool meldt dat een scope ontbreektDe sleutel of koppeling heeft die scope niet. Maak een sleutel met die scope (of koppel opnieuw en sta hem toe) en trek daarna de oude in.
Een antwoord wordt geweigerdLees de reden. Gebruik describe_form_pages voor het juiste pad en de waarden die een keuzelijst accepteert.
start_run wordt geweigerdget_form_progress toont per sectie wat er ontbreekt of niet klopt. Vul dat in en start de indiening opnieuw. Loopt er al een indiening van het formulier, volg die dan met get_run.
De indiening wacht met needsPersonIemand opent de link van de indiening in DS160.io en typt de captcha. Zodra de indiening klaar is voor ondertekening, controleert iemand de aanvraag en ondertekent die op CEAC.