Records — エージェントが集めたものの行き着く先
あなたのエージェントは、問い合わせ・書類チェックリスト・予約リクエスト・エスカレーションを、あなたが処理していくキューへ登録し、その一つひとつを生み出した会話へと紐づける。MCP 経由で、あるいは自前のスタックがあれば素の HTTP 経由で。
問い合わせを見極めておきながら、それをトランスクリプトに残したままにするエージェントは、仕事を半分しかしていません。 Records はもう半分です——ダッシュボード内のキュー、人手を要するものごとに一エントリ、それを生み出した会話がワンクリック先にある状態で。
ここに設定は何もいりません。setup wizard がエージェントを作成するとき、これらのツールも接続するので、「担当チームに構造化されたファイルを手渡す」と謳うテンプレートは、そのファイルの渡し先を得たことになります。
エージェントが登録するもの
| 種別 | 登録される条件 |
|---|---|
lead | 同僚が動き出すのに十分な情報がある——誰が、何を求め、どう連絡がつくか。 |
checklist | 書類が未提出で、数日にわたって追いかけることになる。 |
booking | 人でしか確定できない枠がリクエストされた。 |
escalation | 今すぐ人が必要な人がいる。 |
lead と checklist は、二つ目を作るのではなくその会話の record を更新します。そのため、一つのチャットで二度登録したエージェントは、キューを散らかす代わりに自己修正します。booking と escalation は毎回一つずつ作成します。それらは二つあれば二つの実体だからです。
参照番号
すべての record には短い参照番号——7K4M-2QP——が付きます。O/0 も I/1 も含まないアルファベットから作られます。電話越しに読み上げられ、聞き間違えて打ち直されるものだからです。エージェントはこれを顧客に渡し、顧客は後からそれについて問い合わせられます。
参照番号はアクセスキーではありません。読み取りは、会話から引き継がれた、尋ねている本人の身元によって認可されます。そのため、誰かが小耳に挟んだ参照番号を引用しても、何も返ってきません。
自前のスタックからツールを使う
二つのインターフェース、同じ挙動。あなたの token はダッシュボードの Tenant & API にあります。
MCP
wizard が作成したエージェントでは、すでに接続済みです。別の場所に配線するには、streamable_http MCP サーバーを
https://agent4.io/api/mcp に向け、Authorization: Bearer ヘッダーを付けます。ツール:submit_lead、open_checklist、
request_booking、escalate、lookup_case、close_case。
HTTP
curl -X POST https://agent4.io/api/tools/records \
-H "Authorization: Bearer $AGENT4_TOOL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "lead",
"title": "Sarah — quote for a home policy",
"summary": "Wants contents cover on a flat she has just bought.",
"contact": { "name": "Sarah", "phone": "07700 900000" },
"fields": { "sumInsured": "40000", "startDate": "2026-08-01" }
}'{ "reference": "7K4M-2QP", "created": true, "message": "Recorded. The reference is 7K4M-2QP …" }PATCH /api/tools/records/{reference} に {"outcome":"quoted"} を付けてクローズします。読み取りは
GET /api/tools/records/{reference} で、その record の持ち主である本人の X-Agent4-End-User を要します。
フィールド
title、summary、contact、urgency はどの業種でも同じで——キューが並べ替え、表示するものです。それ以外はすべて
fields に入り、各テンプレートが自分の業種で集めるキーを宣言するので、telephone は入り口で phone に畳み込まれます。どのテンプレートも宣言しなかったキーは、捨てられるのではなく保持され、record の「also mentioned」に表示されます。
知らされること
誰にも知らされないキューは、誰も読まないキューです。だから Notifications はキューそのものに備わっています。二つのチャネルがあり、種別ごとにどちらを発火させるかを選べます。
Email は、別のアドレスを指定しない限りあなたのサインインアドレスに届きます——支払う人が、キューをさばく人であることはまれです。初期状態では、escalation と booking リクエストはあなたにメールし、問い合わせはメールしません。すべての問い合わせで鳴る受信箱はミュートされ、それが escalation もろとも黙らせてしまうからです。
Webhook。 record が登録された瞬間に、あなたの URL へそれを POST します。
{
"event": "record.created",
"record": {
"reference": "7K4M-2QP",
"type": "lead",
"title": "Sarah — quote for a home policy",
"summary": "Wants contents cover on a flat she has just bought.",
"contact": { "name": "Sarah", "phone": "07700 900000" },
"fields": { "sumInsured": "40000", "startDate": "2026-08-01" },
"agent": "Front desk"
},
"url": "https://agent4.io/dashboard/records/7K4M-2QP"
}二つのヘッダーが一緒に届きます:X-Agent4-Timestamp と、X-Agent4-Signature——後者は、timestamp、ドット、生のボディをつないだものの HMAC-SHA256 で、設定ページの署名シークレットを鍵とします。これを検証すれば、その POST が、URL を知った誰かではなく私たちのものだと分かります。timestamp は署名の内側にあるので、捕捉されたリクエストを後からあなたに向けてリプレイすることはできません。
expected = hmac.new(secret.encode(), f"{ts}.{raw_body}".encode(), hashlib.sha256).hexdigest()
hmac.compare_digest(expected, request.headers["X-Agent4-Signature"])URL は https で、公開インターネットから到達可能でなければなりません——あなたのネットワーク内でしか解決しないアドレスは、 record が届くたびに黙って失敗するのではなく、保存時に拒否されます。それに頼る前に、設定ページからテスト送信してください。受信側が実際に何と応えたかを報告します。
ペイロードは record の中身を、連絡先の詳細を含めて運びます——それらを省いた webhook は、チケットを起票するには足りず、まさにそのために存在するものなのですから。したがって、あなたがこれを向ける先のエンドポイントは、顧客の個人データを受け取ることになり、あなたがそれを保管する他のどの場所とも同じ配慮に値します。
同僚に一件を引き継ぐ
二つ目のアカウントは不要です。リンクを有効にして送るだけ——WhatsApp で、または誰かが画面からスキャンする QR として。 ケースをクローズするとリンクは無効になります。つまり失効は、覚えておくべき別の作業としてではなく、仕事を仕上げる一部として起こります。リンクを一度オフにして再びオンにすると別のリンクが生成されるので、「オフ」は、古いリンクをまだ持つ誰かにとっても本当にオフを意味します。
record を印刷することもできます。印刷物には有効期限がなく、呼び戻すこともできないので、建物を出る前に一考の価値があります。
出ていくとき
キューからいつでも、すべての record を CSV としてエクスポートできます。これを卒業して CRM へ移っても、エージェントは働き続けます——record はあなたのもので、あなたと一緒に移動します。
何を、どう保存するか
record の中身のすべて——title、summary、連絡先の詳細、メモ——は保存時に暗号化されます。プレーンなカラムにあるのは、キューが並べ替え・絞り込みに必要なものだけです:種別、状態、タイムスタンプ、そして会話を指し戻す識別子。そのいずれも人物を特定しません。
意図的に受け入れた帰結:私たちはデータベースクエリであなたの record の中身を検索できません。絞り込みは種別、状態、エージェント、日付によって行います。
record はあなたの顧客の個人データであり、あなたに代わって保持しています。一件、またはすべてを、ダッシュボードから削除できます。アカウントを閉じれば、それらも一緒に削除されます。