クライアントの名前などの個人情報は入力しないでください。

このページは英語から翻訳されています。正となるのは英語版です。気になる点があれば、英語版をご確認ください。 EN

AIエージェントを接続する(MCP)

Claude、ChatGPT、Cursor、自社のエージェントをMCPでビジネスワークスペースに接続し、クライアントの書類からDS-160フォームを準備させ、クライアントリンクを送らせる方法です。APIキーまたはOAuthでの接続、各スコープで許されること、エージェントが始めた実行が必ず署名前に止まる理由も説明します。

移民・ビザコンサルティング会社の自社のAIエージェントは、MCP(Model Context Protocol)を通じてDS160.ioのワークスペースで作業できます。エージェントは、クライアントの書類やメールをもとにフォームを作成し、見つけた回答を入力し、まだ不足している項目を確認し、残りを入力してもらうためのリンクをクライアントに送れます。その後、スタッフが自ら申請を確認し、CEACで署名します。

エージェントは1つのビジネスワークスペースに接続し、許可されたことだけを行えます。エージェントができることは、それぞれDS160.io APIのエンドポイントでもあります。

始める前に

  • ビジネスワークスペース。 MCPはビジネスワークスペースで利用できます。
  • オーナーまたは管理者の権限。 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プリセットを選んでキーを作成します。このプリセットはruns:writeを除くすべてのスコープにチェックを入れます。エージェントに不要なスコープはチェックを外してください。
  3. シークレットをコピーします。シークレットはds160_sk_で始まり、1回だけ表示されます。
  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)では、"servers"の下に同じurlとheadersを、"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. 求められている権限を確認してから、許可をクリックします。

その後、エージェントはそのワークスペースで、あなたとして操作します。接続を許可するには、そのワークスペースのオーナーまたは管理者である必要があります。

スコープ:それぞれで許可されること

スコープエージェントができること
forms:readフォームの一覧表示、フォームの名前とステータスの読み取り、不足している項目の確認、提出の状況の確認
forms:writeフォームの作成(と読み取り)
forms:clone既存のフォームを新しいフォームに複製
client-links:write申請者に送るクライアントリンクの作成
answers:readフォームの回答の読み取り
answers:writeフォームの回答の書き込みと削除
runs:writeCEACでの提出の開始と状況の確認

answers:readは、申請者の個人データをDS160.ioの外に送ります。 エージェントが読み取る氏名、生年月日、パスポート番号、渡航歴、そのほかDS-160のすべての回答は、エージェントと、AIプロバイダーなどエージェントを運用する事業者に渡ります。クライアントのデータの管理者であるワークスペースが、それを認めるかどうかを決め、データがDS160.ioを離れた後はそのデータについて責任を負います(プライバシーポリシーとデータ処理契約を参照)。エージェントがフォームに入力するだけでよい場合は、answers:readを外してください。answers:writeだけでも、回答を読み返さずに書き込めます。

エージェントができること、できないこと

  • フォームを準備できます。 フォームを作成し、クライアントから届いた内容をもとに回答を入力し、まだ回答がない質問や拒否される回答を確認し、残りを入力してもらうためのリンクをクライアントに送れます。
  • 書き込む回答はすべてチェックされます。 チェックの方法はフォームエディターと同じです。英語以外の文字を使える質問を除き、テキストは大文字で保存されます。合わない回答は理由とともに拒否され、同じまとまりのほかの回答には影響しません。
  • 変更はすべて記録されます。 フォームの項目の履歴には、キーによる変更は「API key 名前」、接続による変更は「メンバー via エージェント」として表示されます。
  • 署名や提出はできません。 エージェントが開始した提出は、ワークスペースの設定にかかわらず、常に署名前に停止します。担当者が申請を確認し、CEACで署名します(署名前にCEACでDS-160を確認するを参照)。
  • CEACのキャプチャは入力できません。 提出が待っている間に、担当者がDS160.ioで入力します。人の対応が必要になると、提出がそのタイミングと場所をエージェントに伝えます。
  • フォームの作成には料金がかかります。 アプリで作成する場合と同じく、作成または複製したフォームはそれぞれ作成されたフォームとして数えられます。
  • 作業できるのは自分のワークスペースだけです。 ほかのワークスペースは見えず、ほかのワークスペースのフォームは見つからないと報告されます。

ツール

ツール内容スコープ
list_formsワークスペースのフォームを新しい順に一覧表示しますforms:read
get_form1件のフォームの名前、ステータス、同意を読み取りますforms:read
create_formフォームを作成します(作成したフォームごとに課金)forms:write
clone_formフォームを新しいフォームに複製します。セクションを除外することもできますforms:clone
create_client_linkフォームのクライアントリンクを作成しますclient-links:write
search_docsこのドキュメントを検索します。キーまたは接続ごとに1日200回まですべて
describe_form_pagesフォームのページと各質問(回答のパス、種類、必須かどうか、ドロップダウンの値、各回答で表示される質問)を一覧表示し、回答の種類ごとのJSONを示しますすべて
get_answersフォーム全体または1つのページの回答を読み取りますanswers:read
set_answers1回の呼び出しで最大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>になっていて、シークレット全体が入っているか確認してください。取り消したキーは再び使えません。新しいキーを作成してください。
ツールがスコープの不足を伝えてくるキーまたは接続にそのスコープがありません。そのスコープを持つキーを作成し(または接続し直して許可し)、古いものを取り消してください。
回答が拒否される理由を確認してください。正しいパスとドロップダウンで受け付けられる値は、describe_form_pagesで調べられます。
start_runが拒否されるget_form_progressに、各セクションで不足している項目や誤っている項目が示されます。入力してから、もう一度提出を開始してください。そのフォームの提出がすでに進行中の場合は、get_runで状況を確認してください。
提出がneedsPersonの状態で待っている担当者がDS160.ioで提出のリンクを開き、キャプチャを入力します。提出が署名できる状態になったら、担当者が申請を確認し、CEACで署名します。