Не вводите персональные данные, например имя клиента.

Эта страница переведена с английского. Английская версия — источник истины: если что-то выглядит неточно, сверьтесь с ней. EN

Подключение ИИ-агента (MCP)

Подключите Claude, ChatGPT, Cursor или своего агента к бизнес-пространству через MCP, чтобы он готовил формы DS-160 по документам клиента и отправлял клиентские ссылки.

Собственный ИИ-агент иммиграционной фирмы может работать в её рабочем пространстве DS160.io через MCP (Model Context Protocol). По документам или письмам клиента агент может создать форму, заполнить найденные ответы, проверить, чего ещё не хватает, и отправить клиенту ссылку, чтобы тот заполнил остальное. Затем ваши сотрудники сами проверяют заявление и подписывают его на CEAC.

Агент подключается к одному бизнес-пространству и может делать только то, что вы ему разрешили. Каждое его действие — это также эндпоинт API DS160.io.

Перед началом

  • Бизнес-пространство. MCP доступен в рабочих пространствах типа Business.
  • Доступ владельца или администратора. Создавать API-ключи или разрешать подключение могут только Владелец и Администратор рабочего пространства.
  • MCP-клиент. Claude Code, Cursor, VS Code, Codex и Windsurf подключаются с API-ключом. claude.ai и ChatGPT подключаются через вход в DS160.io.

Адрес сервера:

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

Используйте этот адрес, даже если у вашего рабочего пространства есть собственный домен.

Подключение с API-ключом

  1. Откройте Настройки рабочего пространства → Команда и доступ → API-ключи и нажмите Создать API-ключ.
  2. Назовите ключ по имени агента (например, Claude Code, отдел приёма), выберите пресет MCP и создайте ключ. Пресет отмечает все scope, кроме runs:write; снимите отметку со scope, которые агенту не нужны.
  3. Скопируйте секрет. Он начинается с ds160_sk_ и показывается только один раз.
  4. Добавьте сервер в свой клиент, передав секрет в заголовке Authorization. В Claude Code:
claude mcp add --transport http ds160 https://www.ds160.io/api/mcp --header "Authorization: Bearer ds160_sk_…"

Другие клиенты принимают тот же адрес и заголовок в своих настройках. В Cursor (.cursor/mcp.json):

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

В VS Code (.vscode/mcp.json) добавьте те же url и headers в "servers" с "type": "http". Не храните секрет в файлах, которые вы коммитите: используйте переменные окружения или защищённые поля ввода секретов, если ваш клиент их поддерживает.

Подключение claude.ai или ChatGPT

claude.ai и ChatGPT не отправляют ключ. Вместо этого они подключаются через вход в DS160.io:

  1. В claude.ai или ChatGPT добавьте https://www.ds160.io/api/mcp как пользовательский коннектор.
  2. Когда появится запрос, войдите в DS160.io со своей учётной записью.
  3. Выберите бизнес-пространство, в котором будет работать агент.
  4. Проверьте запрашиваемые разрешения и нажмите, чтобы разрешить.

После этого агент действует от вашего имени в этом рабочем пространстве. Чтобы разрешить подключение, вы должны быть Владельцем или Администратором рабочего пространства.

Scope: что разрешает каждый

ScopeЧто может делать агент
forms:readПолучать список форм, читать название и статус формы, проверять, чего не хватает, следить за запуском
forms:writeСоздавать формы (и читать их)
forms:cloneКопировать существующую форму в новую
client-links:writeСоздавать клиентские ссылки для отправки заявителям
answers:readЧитать ответы формы
answers:writeЗаписывать и удалять ответы формы
runs:writeЗапускать подачу в CEAC и следить за ней

answers:read выводит персональные данные заявителей из DS160.io. Имена, даты рождения, номера паспортов, история поездок и все остальные ответы DS-160, которые читает агент, передаются агенту и тому, кто его запускает, например поставщику ИИ. Ваше рабочее пространство как контролёр данных своих клиентов решает, допустимо ли это, и отвечает за эти данные после того, как они покинули DS160.io (см. политику конфиденциальности и Соглашение об обработке данных). Если агенту нужно только заполнять формы, не давайте ему answers:read: с одним answers:write он может записывать ответы, не читая их обратно.

Что агент может и чего не может

  • Он может подготовить форму: создать её, заполнить ответы по тому, что прислал клиент, увидеть, каких вопросов ещё не хватает или какие ответы будут отклонены, и отправить клиенту ссылку для остального.
  • Каждый записанный им ответ проверяется так же, как его проверяет редактор формы. Текст сохраняется заглавными буквами, если вопрос не допускает букв за пределами английского алфавита. Неподходящий ответ отклоняется с указанием причины, а остальные ответы в пакете это не затрагивает.
  • Каждое изменение записывается. История поля формы показывает каждое изменение как «API-ключ имя» для ключа или как «участник через агент» для подключения.
  • Он не может подписать или подать форму. Запуск, начатый агентом, всегда останавливается перед подписью, независимо от настройки рабочего пространства: человек проверяет заявление и подписывает его на CEAC (см. Проверка DS-160 на CEAC перед подписью).
  • Он не может вводить капчи CEAC. Их вводит человек в DS160.io, пока запуск ждёт; запуск сообщает агенту, когда и где нужен человек.
  • Создание формы оплачивается так же, как в приложении: каждая созданная или клонированная форма считается созданной формой.
  • Он работает только в своём рабочем пространстве. Он не видит другие рабочие пространства, а форма из другого пространства считается ненайденной.

Инструменты

ИнструментЧто делаетScope
list_formsВозвращает список форм рабочего пространства, сначала новыеforms:read
get_formЧитает название, статус и согласие одной формыforms:read
create_formСоздаёт форму (оплачивается за каждую созданную форму)forms:write
clone_formКопирует форму в новую, при желании без некоторых разделовforms:clone
create_client_linkСоздаёт клиентскую ссылку для формыclient-links:write
search_docsИщет по этой документации, 200 поисков в день на ключ или подключениелюбой
describe_form_pagesПеречисляет страницы формы и каждый вопрос: путь ответа, тип, обязательность, значения выпадающих списков и вопросы, которые открывает каждый ответ, а также JSON для каждого типа ответалюбой
get_answersЧитает ответы формы, целиком или для одной страницыanswers:read
set_answersЗаписывает до 200 ответов за вызов, по порядку: каждый записывается, удаляется (значение null) или отклоняется с кодом и причинойanswers:write
get_form_progressДля каждого раздела: статус, обязательные вопросы без ответа и проблемы по путям; а также заполнена ли формаforms:read, answers:read или answers:write
start_runЗапускает подачу в CEAC для выбранного консульства; останавливается перед подписьюruns:write
get_runСтатус запуска, краткое описание того, где он находится, нужен ли человек, и ссылка на негоruns:write или forms:read

Отзыв доступа

  • Ключ: отзовите его в разделе Настройки рабочего пространства → Команда и доступ → API-ключи. Следующий вызов агента будет отклонён.
  • Подключение (claude.ai, ChatGPT): отзовите его в разделе Аккаунт и безопасность или для всего рабочего пространства в Настройках рабочего пространства. В обоих разделах перечислены существующие подключения.

Отзывайте доступ сразу, если ключ мог утечь или агент больше не используется.

Агент должен опираться только на данные заявителя

Форму DS-160 подписывает заявитель, заявляя, что каждый ответ правдив. Поручите агенту отвечать только на основе того, что вам предоставил заявитель (его документов, писем и ответов), и никогда не угадывать и не придумывать ответы. Если агент не уверен, он должен оставить вопрос пустым, чтобы get_form_progress показал его как пропущенный, и на него ответили клиент или ваши сотрудники. Проверьте форму, прежде чем кто-либо её подпишет.

Решение проблем

ПроблемаЧто делать
Клиент не может подключиться или получает 401Убедитесь, что адрес — https://www.ds160.io/api/mcp, а заголовок — Authorization: Bearer <secret> с полным секретом. Отозванный ключ нельзя использовать снова: создайте новый.
Инструмент сообщает, что не хватает scopeУ ключа или подключения нет этого scope. Создайте ключ с ним (или подключитесь заново и разрешите его), затем отзовите старый.
Ответ отклонёнПрочитайте причину. Используйте describe_form_pages, чтобы узнать правильный путь и значения, которые принимает выпадающий список.
start_run отклонёнget_form_progress перечисляет, чего не хватает или что неверно в каждом разделе. Заполните это и запустите снова. Если запуск этой формы уже идёт, следите за ним через get_run.
Запуск ждёт с needsPersonКто-то открывает ссылку на запуск в DS160.io и вводит капчу. Когда запуск готов к подписи, кто-то проверяет заявление и подписывает его на CEAC.