Skip to content

外部ツールから会員情報を連携する ​

外部システムは、サブスクラインの 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-Typeapplication/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 / admin_member_read と同じトークンにも設定できません。

このページの getMemberProfile / updateMemberProfile を使うだけなら admin_member_read は不要です。admin_member_read は、管理画面の会員一覧・契約・注文をAIから参照するための許可です(MCPコネクター)。

トークンは作成直後に一度だけ表示されます。外部ツールのサーバー側で秘密情報として保管し、HTML や JavaScript、URL のクエリには入れないでください。

2. 利用可能なツールを確認する ​

発行したトークンで tools/list を呼ぶと、許可されたスコープのツールだけが返ります。

bash
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 つです。

ツール必要なスコープ内容
getMemberProfileread会員プロフィールを取得する
updateMemberProfilemember_profile_write指定したプロフィール項目だけを更新する

3. 対象会員を指定する ​

対象会員は、次のどちらかで指定します。2 方式を同じリクエストで併用することはできません。

サブスクラインの会員 ID で指定する ​

すでにサブスクラインの memberId を外部ツール側で保持している場合に使います。

json
{
  "memberId": "member_example_123"
}

LINE ユーザー ID で指定する ​

lineConfigId と lineUserId を組み合わせて指定します。

json
{
  "lineConfigId": "line_config_example_123",
  "lineUserId": "U0123456789abcdef0123456789abcdef"
}

LINE Provider を確認してください

LINE ユーザー ID は LINE Provider ごとに異なります。外部ツールが取得した lineUserId と、サブスクラインに接続している LINE 公式アカウントが同じ LINE Provider に属している必要があります。異なる Provider のユーザー ID では同じ利用者を特定できません。

サブスクラインにまだ会員として登録されていない LINE ユーザー ID でも、getMemberProfile は指定した LINE 公式アカウントでその利用者のプロフィールを取得できるかを LINE に確認します。取得できれば(友だち、または LINE 公式アカウントにメッセージを送ったことがある利用者)、その場で友だちとして会員を作成し、プロフィールを返します。作成直後は氏名・メールアドレスなどのプロフィール項目は空(null)です。2 回目以降は同じ memberId が返ります。LINE 公式アカウントとサブスクラインを連携する前から友だちだったお客様も、この方法で memberId を取得できます。

  • 会員の作成で、あいさつメッセージ・自動応答・リッチメニューの切り替えなど、友だち追加のときの処理は行いません。
  • LINE ユーザー ID の形式(U に続く、0〜9 と小文字の a〜f からなる 32 文字)に合わない場合、LINE でプロフィールを取得できない場合(友だちでない・存在しない ID など)、管理画面で削除した会員の場合は、会員を作成せず「指定された会員が見つかりません」を返します。
  • LINE からの応答が約 1 秒以内に無い場合や、LINE 側でエラーが起きた場合も、会員を作成せず「指定された会員が見つかりません」を返します。時間をおいて再度呼び出してください。
  • updateMemberProfile は会員を作成しません。未登録の LINE ユーザー ID を更新したい場合は、先に getMemberProfile を呼び出してください。
  • 会員を作成することがあるため、getMemberProfile はツール一覧で「参照のみ」の扱い(readOnlyHint)になっていません。利用に必要な権限は read のままです。

lineConfigId は、管理画面サイドバー「LINE」>「LINE公式アカウント」で対象アカウントの「編集」を開き、「アカウントID(lcid / lineConfigId)」の横のコピーボタンでコピーした値を使用します。トークンを発行したテナントと異なる memberId / lineConfigId を指定しても取得・更新できません。

4. 会員プロフィールを取得する(read) ​

bash
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 文字列でプロフィールが入ります。

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 に指定した項目だけを更新します。たとえばメールアドレスと電話番号だけを送った場合、氏名や住所などの既存値は変更しません。

bash
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 を呼び出してください。

json
{
  "updated": true,
  "updatedFields": ["email", "tel", "prefCode", "zipCode", "address"]
}

更新できる項目は次のとおりです。

項目内容・形式
displayName表示名
firstName / lastName名 / 姓
furigana氏名のフリガナ(カタカナ)
firstNameKana / lastNameKana名 / 姓のカナ
genderMALE / 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 が異なる、トークンと対象会員のテナントが異なる、lineUserId の利用者が LINE 公式アカウントの友だちではない、または LINE への確認が時間内に終わらなかった
  • result.isError: true で形式エラー: メールアドレス、電話番号、生年月日などの値を確認する
  • result.isError: true で都道府県エラー: prefCode が有効か、zipCode / address と一緒に指定しているか確認する
  • HTTP 429: 1 分あたりのリクエスト上限を超えているため、間隔を空けて再試行する

実装前の接続確認では、最初に tools/list、次にテスト用会員への getMemberProfile、最後にテスト用会員だけを対象とした updateMemberProfile の順で確認してください。実在のお客様を接続試験に使用しないでください。

サブスクラインの使い方をAIに聞く

ページのタイトル・URL・公式マニュアルの参照先を入れた質問文が自動で入ります。

顧客情報、個人情報、社外秘の情報は入力しないでください。質問内容は選んだ外部AIへ送られます。

いずれも新しいタブで開きます。Geminiだけは質問文を渡せないため、コピーした内容を貼り付けて送信してください。