メインコンテンツにスキップ

Fin Agent API: MCPサーバー

Fin Agent API MCPサーバーとは何か、その使い方。

対応者:Brian McKiernan

注意:Fin Agent APIのMCPサーバーは現在ベータ版であり、最終リリース前に大幅に変更される可能性があります。ご意見をお待ちしており、今後の製品機能の指針に役立てます。

Fin Agent APIは、外部AIエージェントがFinをツールとして呼び出せるリモートModel Context Protocol (MCP)サーバーを公開します。独自のエージェントでサポートロジックを再構築する代わりに、Claude、Claude Code、Cursor、または独自のエージェントフレームワークなど、MCP対応クライアントから直接Finのknowledge base、手順、およびマルチターン会話機能を利用できます。

接続方法はクライアントが誰として動作するかによって2つあります:

チームメイト

エンドユーザー

URL

認証

Fin Agent APIのapiキーを使ったワークスペース認証

Messenger JWTを使った単一の検証済みエンドユーザー認証

信頼モデル

信頼されたサーバー間バックエンド

信頼されていないユーザーごとのクライアント(エンドユーザー環境内または近くで動作するAIアシスタント)

誰のID?

クライアントは各呼び出しがどのエンドユーザー(user_id)として動作するかを主張する

トークンがIDそのものであり、クライアントは他の誰としても動作できない

アプリレベルのシークレットを保持?

はい(Fin Agent APIキー)

いいえ — 1ユーザーにスコープされたJWTのみ


ユースケース

Fin Agent API MCPサーバーは、独自のエージェントがFinの機能にアクセスする必要があるマルチエージェントシナリオ向けに設計されています:

  • 製品エージェントへの組み込みサポート。 知識ベースやコンテンツを複製せずに、設定済みのFin knowledgeを使って製品のAIアシスタントにサポート質問への回答能力を持たせます。

  • 手順の自動化。 オーケストレーションエージェントがユーザーに代わってFinの手順(返金、アップグレード、キャンセル)をトリガーし、マルチターンのやり取りをプログラム的に処理します。

  • 能力駆動のルーティング。 list_fin_capabilitiesを使って特定ユーザーに利用可能なアクションを判別し、エージェントの意思決定ロジックで適切なツールにルーティングします。

  • 開発者向けツール。 Claude CodeやCursorなどの開発者ツール内にFin knowledgeを表示し、内部のusersが既存のワークフローからサポートコンテンツを照会できるようにします。

前提条件

IntercomのワークスペースでFin Agent API機能が有効になっている必要があります。アクセス権がない場合はアカウントマネージャーにお問い合わせください。


エンドポイント

リクエストを行う者によって2つのエンドポイントがあります。

チームメイトエンドポイント

https://api.intercom.io/fin/mcp

信頼されたバックエンドサービスがユーザーに代わってFinを呼び出す場合に使用します。呼び出し元はワークスペースのOAuthアクセストークンで認証します。エンドユーザーのIDは呼び出しサービスのリクエストボディで提供されます。

このモデルは、バックエンドがリクエストを行う者を制御するサーバー間統合に適しています。

エンドユーザーエンドポイント

https://api.intercom.io/fin/mcp/{YOUR_APP_ID_CODE}

MCPクライアントがエンドユーザー環境内または近くで動作する場合に使用します。例えば、ユーザーのマシン上でローカルに動作するAIアシスタントなどです。呼び出し元は単一の検証済みエンドユーザーを表す署名済みJWTで認証します。

{YOUR_APP_ID_CODE}パスパラメーターはIntercomワークスペース識別子(Messengerインストールスニペットで使用される同じapp_id)です。

認証は既存のMessenger JWTメカニズムを使用し、すでにMessengerのID検証が設定されていればIntercom側で追加設定は不要です。


認証

チームメイトエンドポイント

Fin Agent APIのapiキーをAuthorizationヘッダーのBearerトークンとして渡します:

Authorization: Bearer YOUR_FIN_AGENT_API_KEY

エンドユーザーエンドポイント

ワークスペースのMessengerシークレット(設定 > ワークスペース > セキュリティ > Messenger)を使って署名済みJWTを生成します。JWTはHS256で署名し、subクレームにユーザーの外部IDを含める必要があります。これはMessengerのエンドユーザー認証用に生成するJWTとほぼ同じですが、以下のaudexpの要件があります。

JWTペイロードの例:

{
"user_id": "user@example.com",
"aud": "fin-agent-api-mcp",
"exp": 1719849600
}

注意:

  • expaudは必須です。

  • expは現在から30日以内でなければなりません。

  • audfin-agent-api-mcpでなければなりません。

Bearerトークンとして渡します:

Authorization: Bearer YOUR_USER_JWT

JWTで識別されたユーザーがFinの応答対象です。このユーザーを使って会話を作成し、手順をマッチングします。バックエンドがこのトークンをサーバー側で生成しクライアントに提供します。Messengerシークレットをクライアント側に絶対に公開しないでください。


Claudeからの接続

Claudeデスクトップ

claude_desktop_config.jsonに以下を追加してください:

チームメイトエンドポイント:

{
"mcpServers": {
"fin": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.intercom.io/fin/mcp",
"--header",
"Authorization: Bearer {YOUR_FIN_AGENT_API_KEY}"
}
}
}
}

エンドユーザーエンドポイント:

{
"mcpServers": {
"fin": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.intercom.io/fin/mcp/{YOUR_APP_ID_CODE}",
"--header",
"Authorization: Bearer {YOUR_USER_JWT}"
}
}
}
}

Claude Code(CLI)

チームメイトエンドポイント:

claude mcp add intercom-fin \
--transport http \
https://api.intercom.io/fin/mcp \
--header "Authorization: Bearer YOUR_FIN_AGENT_API_KEY"

エンドユーザーエンドポイント:

claude mcp add intercom-fin \
--transport http \
https://api.intercom.io/fin/mcp/YOUR_APP_ID_CODE \
--header "Authorization: Bearer YOUR_USER_JWT"

.mcp.jsonのmcpServersに同等のJSONを追加してください。


ツール

接続後、MCPサーバーはクライアントに5つのツールを公開します。

list_fin_capabilities

指定されたユーザーに利用可能なFin Agent APIの機能を返します:ユーザーがトリガーできるオーディエンスマッチ手順と、すべてのusersが利用できる静的アクション(質問する、会話に返信する)。

他のツールを呼び出す前に、特定のユーザーに対してFinが何をできるかを最初に確認するためにこれを呼び出します。手順アクセスはオーディエンスマッチであり、すべてのユーザーがすべての手順にアクセスできるわけではありません。

入力: user_id — ユーザーの外部ID。

返却: 利用可能な機能をタイプ、ID、名前付きでリストしたJSONドキュメント。

ask_fin

Finに一度きりの質問を送り、回答を返します。Finは設定済みのknowledge sourceを検索し、持続的な会話を開始せずに直接回答を返します。

マルチターンのフローが不要で直接回答が欲しい情報検索に使用します。

入力: user_id、message(質問内容)。

get_fin_response

進行中の会話や手順フローに対するFinの返信をポーリングします。会話や手順を開始した後にFinの最新の応答を取得するために使用します。

入力: conversation_id。

reply_to_fin_conversation

既存のFin会話にフォローアップメッセージを送信します。マルチターンのやり取りを続けるために使用します。例えば、手順中にFinが要求した追加情報を提供する場合などです。

入力: conversation_id、message。

run_fin_procedure

ユーザーのために特定のFin手順をトリガーします。手順とは、返金処理やサブスクリプション更新などの設定されたマルチステップワークフローです。Finは手順を開始し、追加情報を求め、やり取りを完了まで進めます。

実行したいアクションの手順IDを見つけるために、まずlist_fin_capabilitiesを使用してください。

入力: procedure_id、user_id。

こちらの回答で解決しましたか?