No escribas datos personales, como el nombre de un cliente.

Esta página ha sido traducida del inglés. La versión en inglés es la fuente de verdad: si algo parece incorrecto, consulta esa. EN

Conectar un agente de IA (MCP)

Conecta Claude, ChatGPT, Cursor o tu propio agente a tu workspace empresarial mediante MCP, para que prepare formularios DS-160 a partir de los documentos de un cliente y envíe enlaces de cliente.

El propio agente de IA de un despacho de inmigración puede trabajar en su workspace de DS160.io mediante MCP (Model Context Protocol). A partir de los documentos o correos de un cliente, el agente puede crear un formulario, rellenar las respuestas que encuentre, comprobar lo que aún falta y enviar al cliente un enlace para completar el resto. Después, tu equipo revisa la solicitud y la firma en CEAC.

El agente se conecta a un único workspace empresarial y solo puede hacer lo que le permitas. Cada cosa que puede hacer es también un endpoint de la API de DS160.io.

Antes de empezar

  • Un workspace empresarial. MCP está disponible en los workspaces de tipo Business.
  • Acceso de Propietario o Administrador. Solo los Propietarios y Administradores de un workspace pueden crear claves de API o autorizar una conexión.
  • Un cliente MCP. Claude Code, Cursor, VS Code, Codex y Windsurf se conectan con una clave de API. claude.ai y ChatGPT se conectan iniciando sesión en DS160.io.

La dirección del servidor es:

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

Usa esta dirección aunque tu workspace tenga su propio dominio.

Conectar con una clave de API

  1. Abre Configuración del Espacio de Trabajo → Equipo y acceso → Claves de API y haz clic en Crear clave de API.
  2. Pon a la clave el nombre del agente (por ejemplo Claude Code, equipo de admisión), elige el preajuste MCP y crea la clave. El preajuste marca todos los scopes excepto runs:write; desmarca los que el agente no necesite.
  3. Copia el secreto. Empieza por ds160_sk_ y se muestra una sola vez.
  4. Añade el servidor a tu cliente con el secreto en un encabezado Authorization. En Claude Code:
claude mcp add --transport http ds160 https://www.ds160.io/api/mcp --header "Authorization: Bearer ds160_sk_…"

Los demás clientes usan la misma dirección y el mismo encabezado en su configuración. En Cursor (.cursor/mcp.json):

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

En VS Code (.vscode/mcp.json), añade los mismos url y headers dentro de "servers" con "type": "http". No dejes el secreto en archivos que subas al repositorio: usa las variables de entorno o las entradas secretas de tu cliente cuando las tenga.

Conectar claude.ai o ChatGPT

claude.ai y ChatGPT no envían una clave. En su lugar se conectan iniciando sesión en DS160.io:

  1. En claude.ai o ChatGPT, añade https://www.ds160.io/api/mcp como conector personalizado.
  2. Cuando te lo pida, inicia sesión en DS160.io con tu propia cuenta.
  3. Elige el workspace empresarial en el que trabajará el agente.
  4. Revisa los permisos que solicita y haz clic para autorizar.

A partir de ahí, el agente actúa en tu nombre en ese workspace. Debes ser Propietario o Administrador del workspace para autorizar una conexión.

Scopes: qué permite cada uno

ScopeLo que puede hacer el agente
forms:readListar formularios, leer el nombre y el estado de un formulario, comprobar lo que falta, seguir un envío
forms:writeCrear formularios (y leerlos)
forms:cloneCopiar un formulario existente en uno nuevo
client-links:writeCrear enlaces de cliente para enviar a los solicitantes
answers:readLeer las respuestas de un formulario
answers:writeEscribir y eliminar las respuestas de un formulario
runs:writeIniciar un envío en CEAC y seguirlo

answers:read saca de DS160.io los datos personales de los solicitantes. Los nombres, fechas de nacimiento, números de pasaporte, historial de viajes y cualquier otra respuesta del DS-160 que lea el agente pasan al agente y a quien lo ejecute, como un proveedor de IA. Tu workspace, como responsable del tratamiento de los datos de sus clientes, decide si eso está permitido y es responsable de esos datos una vez que salen de DS160.io (ver la política de privacidad y el Acuerdo de tratamiento de datos). Si el agente solo necesita rellenar formularios, no le des answers:read: con answers:write solo, puede escribir respuestas sin volver a leerlas.

Lo que el agente puede y no puede hacer

  • Puede preparar un formulario: crearlo, rellenar respuestas con lo que envió el cliente, ver qué preguntas aún faltan o serían rechazadas, y enviar al cliente un enlace para el resto.
  • Cada respuesta que escribe se comprueba como la comprueba el editor de formularios. El texto se guarda en mayúsculas salvo que la pregunta admita letras que no sean del inglés. Una respuesta que no encaja se rechaza con un motivo, y el resto del lote no se ve afectado.
  • Cada cambio queda registrado. El historial de cambios del formulario muestra cada cambio como “API key nombre” para una clave, o como “miembro via agente” para una conexión.
  • No puede firmar ni enviar. Un envío iniciado por un agente siempre se detiene antes de firmar, sea cual sea la configuración del workspace: una persona revisa la solicitud y la firma en CEAC (ver Revisar un DS-160 en CEAC antes de firmar).
  • No puede escribir los captchas de CEAC. Los escribe una persona en DS160.io mientras el envío espera; el envío avisa al agente cuándo se necesita a alguien y dónde.
  • Crear un formulario se factura igual que crearlo en la aplicación: cada formulario creado, o clonado, cuenta como un formulario creado.
  • Solo trabaja en su propio workspace. No puede ver otros workspaces, y un formulario de otro workspace se indica como no encontrado.

Herramientas

HerramientaQué haceScope
list_formsLista los formularios del workspace, del más nuevo al más antiguoforms:read
get_formLee el nombre, el estado y el consentimiento de un formularioforms:read
create_formCrea un formulario (se factura por formulario creado)forms:write
clone_formCopia un formulario en uno nuevo, con la opción de omitir seccionesforms:clone
create_client_linkCrea un enlace de cliente para un formularioclient-links:write
search_docsBusca en esta documentación, 200 búsquedas al día por clave o conexióncualquiera
describe_form_pagesLista las páginas del formulario y cada pregunta: su ruta de respuesta, su tipo, si es obligatoria, los valores de los desplegables y las preguntas que abre cada respuesta, con el JSON de cada tipo de respuestacualquiera
get_answersLee las respuestas de un formulario, de todo el formulario o de una páginaanswers:read
set_answersEscribe hasta 200 respuestas por llamada, en orden: cada una se escribe, se elimina (valor null) o se rechaza con un código y un motivoanswers:write
get_form_progressPara cada sección: su estado, las preguntas obligatorias sin respuesta y los problemas por ruta; y si el formulario está completoforms:read, answers:read o answers:write
start_runInicia un envío en CEAC para el consulado elegido; se detiene antes de firmarruns:write
get_runEl estado de un envío, un resumen de dónde está, si se necesita a una persona y el enlace al envíoruns:write o forms:read

Revocar el acceso

  • Una clave: revócala en Configuración del Espacio de Trabajo → Equipo y acceso → Claves de API. La siguiente llamada del agente se rechaza.
  • Una conexión (claude.ai, ChatGPT): revócala en Cuenta y seguridad, o para todo el workspace en Configuración del Espacio de Trabajo. Ambos listan las conexiones que existen.

Revoca de inmediato si una clave puede haberse filtrado o si un agente ya no se usa.

Limita al agente a lo que dio el solicitante

Un DS-160 lo firma el solicitante, que declara que todas las respuestas son verdaderas. Indica a tu agente que responda solo con lo que el solicitante te dio (sus documentos, correos y respuestas) y que nunca adivine ni invente una respuesta. Cuando no esté seguro, debe dejar la pregunta vacía, para que get_form_progress la muestre como pendiente y la responda el cliente o tu equipo. Revisa el formulario antes de que nadie lo firme.

Solución de problemas

ProblemaQué hacer
El cliente dice que no puede conectarse, o recibe 401Comprueba que la dirección es https://www.ds160.io/api/mcp y que el encabezado es Authorization: Bearer <secret>, con el secreto completo. Una clave revocada no se puede volver a usar: crea una nueva.
Una herramienta indica que falta un scopeLa clave o la conexión no tiene ese scope. Crea una clave con él (o vuelve a conectar y autorízalo) y luego revoca la anterior.
Se rechaza una respuestaLee el motivo. Usa describe_form_pages para obtener la ruta correcta y los valores que acepta un desplegable.
Se rechaza start_runget_form_progress lista lo que falta o está mal en cada sección. Complétalo y vuelve a iniciar el envío. Si ya hay un envío del formulario en curso, síguelo con get_run.
El envío espera con needsPersonAlguien abre el enlace del envío en DS160.io y escribe el captcha. Cuando el envío está listo para firmar, alguien revisa la solicitud y la firma en CEAC.