Anybot などの外部ツールから会員情報を連携する
Anybot などの外部システムは、サブスクラインの MCP エンドポイントへ HTTP リクエストを送り、会員プロフィールの取得と部分更新ができます。このページでは、外部システムの担当者が実装するときに必要な情報をまとめます。
MCP の JSON-RPC API です
この会員プロフィールツールは拡張版の /api/v2/mcp でのみ利用できます。通常の REST API ではありません。すべて同じ MCP エンドポイントへ POST し、JSON 本文の method と params.name で操作を指定します。
接続情報
| 項目 | 値 |
|---|---|
| HTTP メソッド | POST |
| エンドポイント | https://api.subscline.jp/api/v2/mcp |
| 認証 | Authorization: Bearer subscline_... |
| Content-Type | application/json |
| 形式 | JSON-RPC 2.0(MCP Streamable HTTP) |
1. 接続トークンを発行する
サブスクライン管理画面の「設定」>「AI/MCP 連携」>「接続を作成」で、外部ツール専用の接続を作成します。
- 会員情報を取得する場合:
read - 会員情報を更新する場合:
member_profile_write - 取得と更新の両方を行う場合:
readとmember_profile_write
write は配信などの下書き作成用です。write だけでは updateMemberProfile はツール一覧に表示されず、直接呼び出してもscope不足になります。会員の個人情報を更新する必要がある接続にだけ member_profile_write を明示的に付けてください。
postback は自動応答の外部発火専用です。会員情報の取得・更新には使用せず、read / write / member_profile_write と同じトークンにも設定できません。
トークンは作成直後に一度だけ表示されます。外部ツールのサーバー側で秘密情報として保管し、HTML や JavaScript、URL のクエリには入れないでください。
2. 利用可能なツールを確認する
発行したトークンで tools/list を呼ぶと、許可されたスコープのツールだけが返ります。
curl --request POST 'https://api.subscline.jp/api/v2/mcp' \
--header 'Authorization: Bearer subscline_xxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'会員プロフィール連携で使うツールは次の 2 つです。
| ツール | 必要なスコープ | 内容 |
|---|---|---|
getMemberProfile | read | 会員プロフィールを取得する |
updateMemberProfile | member_profile_write | 指定したプロフィール項目だけを更新する |
3. 対象会員を指定する
対象会員は、次のどちらかで指定します。2 方式を同じリクエストで併用することはできません。
サブスクラインの会員 ID で指定する
すでにサブスクラインの memberId を外部ツール側で保持している場合に使います。
{
"memberId": "member_example_123"
}LINE ユーザー ID で指定する
lineConfigId と lineUserId を組み合わせて指定します。
{
"lineConfigId": "line_config_example_123",
"lineUserId": "U0123456789abcdef0123456789abcdef"
}LINE Provider を確認してください
LINE ユーザー ID は LINE Provider ごとに異なります。外部ツールが取得した lineUserId と、サブスクラインに接続している LINE 公式アカウントが同じ LINE Provider に属している必要があります。異なる Provider のユーザー ID では同じ利用者を特定できません。
lineConfigId はサブスクライン管理画面で対象の LINE 公式アカウントを開いた URL や、サブスクライン担当者から共有された値を使用します。トークンを発行したテナントと異なる memberId / lineConfigId を指定しても取得・更新できません。
4. 会員プロフィールを取得する(read)
curl --request POST 'https://api.subscline.jp/api/v2/mcp' \
--header 'Authorization: Bearer subscline_xxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "getMemberProfile",
"arguments": {
"lineConfigId": "line_config_example_123",
"lineUserId": "U0123456789abcdef0123456789abcdef"
}
}
}'成功時は result.isError が false になり、result.content[0].text に JSON 文字列でプロフィールが入ります。
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{\"memberId\":\"member_example_123\",\"email\":\"user@example.com\",\"tel\":\"09012345678\"}"
}
],
"isError": false
}
}5. 会員プロフィールを更新する(member_profile_write)
profile に指定した項目だけを更新します。たとえばメールアドレスと電話番号だけを送った場合、氏名や住所などの既存値は変更しません。
curl --request POST 'https://api.subscline.jp/api/v2/mcp' \
--header 'Authorization: Bearer subscline_xxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "updateMemberProfile",
"arguments": {
"lineConfigId": "line_config_example_123",
"lineUserId": "U0123456789abcdef0123456789abcdef",
"profile": {
"email": "user@example.com",
"tel": "09012345678",
"prefCode": 13,
"zipCode": "1000001",
"address": "東京都千代田区"
}
}
}
}'成功時の result.content[0].text には、更新結果と更新対象の項目名だけが入ります。member_profile_write だけを許可した接続へ既存の会員情報は返りません。更新後の値を取得する必要がある場合は、read も許可した接続で別途 getMemberProfile を呼び出してください。
{
"updated": true,
"updatedFields": ["email", "tel", "prefCode", "zipCode", "address"]
}更新できる項目は次のとおりです。
| 項目 | 内容・形式 |
|---|---|
displayName | 表示名 |
firstName / lastName | 名 / 姓 |
furigana | 氏名のフリガナ(カタカナ) |
firstNameKana / lastNameKana | 名 / 姓のカナ |
gender | MALE / FEMALE / NO_ANSWER |
email | メールアドレス |
birthday | 生年月日。例: 1990-01-31 |
tel | 電話番号。例: 09012345678 |
prefCode | 都道府県 ID。例: 東京都は 13 |
zipCode | 郵便番号。例: 1000001 |
address / address2 | 住所 / 建物名など |
zipCode または address を更新する場合は、住所とセグメント判定に使う都道府県が食い違わないよう、同じ profile に prefCode も指定してください。空文字での削除や、表にない項目の更新はできません。同じ内容を再送しても予約・契約・配信・通知などの追加処理は発生しませんが、プロフィールの更新日時は再送のたびに更新されます。
エラーの確認
- HTTP
401: Bearer トークンがない、無効化済み、または値が誤っている result.isError: trueで権限エラー: トークンに必要なread/member_profile_writeがないresult.isError: trueでスタッフ権限エラー: 接続を作成・認可したアカウントにユーザー閲覧権限、またはユーザー情報編集権限がないresult.isError: trueで「指定された会員が見つかりません」: ID が誤っている、LINE Provider が異なる、またはトークンと対象会員のテナントが異なるresult.isError: trueで形式エラー: メールアドレス、電話番号、生年月日などの値を確認するresult.isError: trueで都道府県エラー:prefCodeが有効か、zipCode/addressと一緒に指定しているか確認する- HTTP
429: 1 分あたりのリクエスト上限を超えているため、間隔を空けて再試行する
実装前の接続確認では、最初に tools/list、次にテスト用会員への getMemberProfile、最後にテスト用会員だけを対象とした updateMemberProfile の順で確認してください。実在のお客様を接続試験に使用しないでください。