Agent Receipts について
Agent Receiptsは、AIエージェント向けのローカル記憶・行動監査システムで、記憶や操作にEd25519署名付きの検証可能なレシートを付与します。記憶の出所や操作を追跡したい開発者向けで、データはローカルに保存されます。
主な機能
- 01セッションをまたぐエンティティ関係の記憶
- 02記憶と操作への署名付きレシート
- 03レシートと来歴チェーンの検証
- 04検証可能な記憶バンドルの入出力
- 05ローカルSQLiteストレージ
- 06CLIとローカルダッシュボード
活用シーン
- 01エージェントのセッション間でプロジェクトや好みを保持
- 02エージェント操作の入出力を検証
- 03記憶した事実の出所を追跡
- 04記憶をエクスポートし別のインスタンスで検証
MCP 対応
MCP サーバーは、AIエージェント向けに記憶、操作追跡、レシート検証、制約、評価、記憶バンドルのツールを公開します。READMEにはClaude Code、Claude Desktop、Cursorでの設定例があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
24掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| action | string | はい | 記録するアクション名(例:“generate_code”、“analyze_data”) |
| input_hash | string | はい | 入力データの事前計算済み SHA-256 ハッシュ。形式は "sha256:hexstring" |
| receipt_type | enum | いいえ | レシートのタイプ:“action”(デフォルト)、“verification”、“judgment”、または“arbitration”action | verification | judgment | arbitration |
| output_hash | string|null | いいえ | 出力データの事前計算済み SHA-256 ハッシュ。形式は "sha256:hexstring" |
| output_summary | string|null | いいえ | 出力の人が読める要約 |
| model | string|null | いいえ | 使用した AI モデル |
| tokens_in | any | いいえ | 入力トークン数 |
| tokens_out | any | いいえ | 出力トークン数 |
| cost_usd | any | いいえ | USD 建ての費用 |
| latency_ms | any | いいえ | レイテンシ(ミリ秒) |
| tool_calls | any | いいえ | アクション中に呼び出されたツール |
| tags | any | いいえ | 分類用タグ |
| confidence | any | いいえ | 信頼度スコア(0~1) |
| metadata | object | いいえ | 任意のメタデータ |
| parent_receipt_id | string|null | いいえ | チェーンの親レシート ID |
| chain_id | string | いいえ | チェーン ID(指定がない場合は自動生成) |
| status | enum | いいえ | 初期ステータス:“pending”(デフォルト。後で完了)または“completed”pending | completed | failed | timeout |
| constraints | array | いいえ | 評価する制約定義の配列(タイプ:max_latency_ms、max_cost_usd、min_confidence、required_fields、status_must_be、output_schema) |
| expires_at | string | いいえ | このレシートの有効期限となる ISO 日時 |
| ttl_ms | number | いいえ | 現在からの有効期間(ミリ秒) |
詳細
Agent Receipts
AI エージェントはすべてを記憶し、その記憶を証明できます。
暗号学的なレシートで裏付けられた、AI エージェント向けの永続メモリです。エージェントが学習するすべての事実は署名され、追跡可能で、第三者が独立して検証できます。クラウドは不要です。
インタラクティブデモを試す · 30 秒でインストール · 他との違い
問題点
AI エージェントを使って開発しているとします。Claude Code が認証モジュールをリファクタリングし、「完了しました。すべてのテストに合格しました」と報告します。エージェントが顧客向けの見積もりを作成し、正しい価格を適用したと言います。アシスタントは先週のあなたの好みを覚えています。しかし、なぜそう判断したのか、あるいはその判断が正しいのかを確認できません。
次の 3 つの問題があります。
-
エージェントはセッションが変わるとすべてを忘れます。 会話のたびにゼロから始まります。コンテキストが失われ、同じことを何度も説明し直すことになります。
-
エージェントが記憶していても、その中身を確認できません。 プラットフォームのメモリはブラックボックスです。何を、いつ、なぜ保存したのか確認できません。修正、エクスポート、検証もできません。
-
エージェントが実際に何をしたかを証明する方法がありません。 ログは変更可能です。エージェントは自分でログを書きます。「ファイルを 3 つ更新し、すべてのテストに合格しました」――本当にそうでしょうか。エージェント自身の作業について、その言葉を信じるしかありません。
Agent Receipts ができること
実際に使えるメモリ
エージェントはセッションをまたいで、人物、プロジェクト、ツール、設定、事実などを構造化された形で永続的に記憶できます。単純なキーと値のストアではありません。すべての事実が、それを生み出した会話に紐づく、エンティティと観察事項のグラフです。
# Your agent learns something
memory_observe → "User prefers TypeScript, uses Neovim, building a SaaS called ModQuote"
# Next session, it already knows
memory_context → loads everything: entities, observations, relationships, preferences
# You can search it
memory_recall → "what tech stack does the user prefer?" → structured results
# You can forget (and the forget itself is tracked)
memory_forget → soft delete with audit trail
システムプロンプトを追加すると、エージェントがこれを自動的に処理します。メモリを手動で管理する必要はありません。
本物の証明
メモリの観察事項やエージェントのアクションが発生するたびに、署名付き JSON ドキュメントであるレシートが生成されます。レシートには次の情報が含まれます。
- Ed25519 署名 — 改ざんを防ぎ、第三者が独立して検証できます
- 入出力のハッシュ — 何が入力され、何が出力されたかを正確に証明します(生データは保存されません)
- タイムスタンプ — 発生時刻と完了時刻
- エージェント ID — 実行したエージェント
- 来歴チェーン — あらゆるメモリを、それを生み出した会話までたどれます
これはログではありません。ログはエージェント自身が自らについて書く、変更可能なテキストファイルです。レシートは暗号学的な証明であり、あなたやサーバー、エージェントを信頼しなくても、第三者が検証できます。
すべてローカルで実行
npx @agent-receipts/mcp-server
これだけです。API キーも、アカウントも、クラウドも、月額料金も不要です。データがマシンの外に送信されることもありません。SQLite データベースは ~/.agent-receipts/ に保存されます。オフラインでも動作します。
これが必要な理由
私は ModQuote を開発していました。自動車保護施工店向けに、AI エージェントが見積もりを作成するマルチテナント SaaS です。実際のお金が動き、実際のお客様がいて、実際の法的責任が伴います。
Claude が 2,400 ドルの PPF 見積もりを作成したとき、私は答えが必要でした。どの車両データを受け取ったのか?どの価格設定ルールを適用したのか?お客様が価格に異議を唱えた場合、何が起きたのかを証明できるのか?エージェント自身が記録したログではなく、暗号学的な証明で。
既存のツールを調べました。
- Mem0 — 優れたメモリー機能がありますが、証明はできません。情報を記憶できますが、いつ、なぜ学習したのかは証明できません。メモリーは変更可能です。
- Langfuse — 優れた可観測性機能がありますが、これはトレーシングであり、証明ではありません。ログはシステム内部のもので、第三者が検証できません。
- Zep — 時系列ナレッジグラフですが、ホスト型で中身が不透明です。
どれも、次の問いには答えられませんでした。「この特定のエージェントが、この特定の入力を使って、この特定の時刻に、この特定のアクションを実行したことを、システム外部の人に証明できますか?」
そこで Agent Receipts を開発しました。今では、見積もりの生成ごとに署名付きレシートが作成されます。すべてのメモリーには来歴チェーンがあります。そして「エージェントはどうやってその金額を算出したのか?」と聞かれたとき、自分で検証できるレシートを渡せます。
何が違うのか
| Agent Receipts | Mem0 | Langfuse | Zep | |
|---|---|---|---|---|
| メモリー | 署名付きのエンティティ・観察グラフ | スマート抽出+統合 | メモリーなし | 時系列ナレッジグラフ |
| 証明 | Ed25519 署名付きレシート | なし | 変更可能なトレース | なし |
| 検証 | オフラインで、誰でも、サーバー不要 | なし | なし | なし |
| インフラストラクチャ | npx だけで完了。設定不要。 | 抽出に LLM が必要 | クラウドまたはセルフホスト | クラウド API |
| コスト | 永久に無料(ローカル) | 無料プラン、その後は有料 | 無料プラン、その後は有料 | 有料 |
| エクスポート | 暗号検証対応のポータブルバンドル | エクスポート可能 | API エクスポート | なし |
| 監査証跡 | 不変のレシートチェーン | 変更可能 | 変更可能なログ | 変更可能 |
Agent Receipts は、これらのツールの改良版ではありません。別の種類のツールです。
Mem0 が答えるのは、「エージェントは何を記憶しているか?」 Langfuse が答えるのは、「LLM パイプラインで何が起きたか?」 Agent Receipts が答えるのは、「それを証明できますか?」
はじめに
1. MCP サーバーを追加する
Claude Code:
claude mcp add agent-receipts -- npx @agent-receipts/mcp-server
Claude Desktop(claude_desktop_config.json)/Cursor(.cursor/mcp.json):
{
"mcpServers": {
"agent-receipts": {
"command": "npx",
"args": ["@agent-receipts/mcp-server"]
}
}
}
2. システムプロンプトを追加する
これにより、メモリーをいつ記録し、コンテキストをいつ呼び出し、アクションをいつ追跡するかをエージェントに指示でき、自動的に動作します。
npx @agent-receipts/cli prompts claude-code
出力をプロジェクトの指示またはシステムプロンプトにコピーします。
3. 使い始める
エージェントは次のことを行うようになります。
- セッション開始時に
memory_contextを呼び出し、あなたについて把握している情報を読み込む - 記憶する価値のある情報を学んだときに
memory_observeを呼び出す - 重要なアクションを実行したときに
track_actionを呼び出す - すべてに Ed25519 で署名する
4. 動作を確認する
npx @agent-receipts/dashboard # Web UI at localhost:3274
npx @agent-receipts/cli stats # Terminal overview
npx @agent-receipts/cli memory entities # See what your agent remembers
5. インストール前に試す
インタラクティブデモを実行 → — メモリー、検証、バンドルのエクスポートを 60 秒で体験できます。インストールは不要です。
含まれるもの
- 24 個の MCP ツール — メモリー、アクション、検証、制約、判断、請求、バンドル
- 21 個の SDK メソッド — TypeScript API 全機能
- 14 個の CLI コマンド+9 個のメモリーサブコマンド — ターミナル中心
- 18 個のダッシュボードページ — レシート、メモリーグラフ、チェーン、エージェント、制約、判断、請求書
- 492 個のテスト — TypeScript の
anyはゼロ、ESLint 警告はゼロ - Ed25519+SHA-256 —
@noble/ed25519を使用(監査済み、純粋な JavaScript) - SQLite+FTS5 — ローカル優先の全文メモリー検索
ポータブルメモリーバンドル
エージェントのメモリー全体を、検証可能な単一のファイルとしてエクスポートできます。
npx @agent-receipts/cli memory export > my-project.bundle.json
バンドルには、すべてのエンティティ、観察、関係性、それらを作成したレシート、そしてすべてを検証するために必要な公開鍵が含まれます。別のエージェント、別のチーム、または別の Agent Receipts インスタンスに渡せば、相手はあなたを信頼することなく、すべての事実を検証できます。
リンク
| インタラクティブデモ | ブラウザーで60秒間お試しいただけます |
| ライブダッシュボード | サンプルデータを含むダッシュボード全体をご覧いただけます |
| 仕組み | レシートの構造、メモリモデル、ModQuote のストーリー |
| npm | 6つのパッケージすべて |
SDK API リファレンス全文(21メソッド)
アクションの追跡
ar.track(params)— ハッシュを自動生成して完了済みのアクションを追跡しますar.start(params)— 保留中のレシートを作成しますar.complete(receiptId, params)— 保留中のレシートを完了しますar.verify(receiptId)— レシートの Ed25519 署名を検証しますar.get(receiptId)— ID でレシートを取得しますar.list(filter?)— フィルタリングとページネーションを指定してレシートを一覧表示しますar.getPublicKey()— 署名用の公開鍵を取得しますar.getJudgments(receiptId)— レシートの判定結果を取得しますar.cleanup()— 期限切れのレシートを削除しますar.generateInvoice(options)— レシートから請求書を生成します
メモリ
ar.context(params?)— セッション初期化用のメモリコンテキスト全体を取得しますar.observe(params)— メモリの観察結果を保存します(常にレシートを作成します)ar.recall(params?)— メモリを検索します(デフォルトでは記録せず、レシートを作成する場合はaudited: trueを指定します)ar.forget(params)— 観察結果またはエンティティを論理削除します(常にレシートを作成します)ar.entities(filters?)— エンティティを一覧表示しますar.relate(params)— エンティティ間の関係を作成しますar.provenance(observationId)— 来歴チェーンを取得しますar.memoryAudit(params?)— メモリ監査レポートを取得します
バンドル
ar.exportBundle(params?)— ポータブルで検証可能なメモリバンドルをエクスポートしますar.importBundle(bundle, params?)— メモリバンドルをインポートして検証します
エイリアス
ar.emit(params)—track()のエイリアスです
MCP ツールリファレンス全文(24ツール)
| ツール | 説明 | 主なパラメーター |
|---|---|---|
track_action | ハッシュを自動生成してエージェントのアクションを追跡します | action, input, output, constraints |
create_receipt | 事前計算したハッシュを使用してレシートを作成します | action, input_hash, output_hash |
complete_receipt | 結果を指定して保留中のレシートを完了します | receipt_id, output, status |
verify_receipt | 暗号署名を検証します | receipt_id |
get_receipt | ID でレシートを取得します | receipt_id |
list_receipts | フィルタリングしてレシートを一覧表示します | agent_id, status, chain_id |
get_chain | チェーン内のすべてのレシートを取得します | chain_id |
get_public_key | Ed25519 公開鍵をエクスポートします | — |
judge_receipt | AI Judge による評価を開始します | receipt_id, rubric |
complete_judgment | 保留中の判定を完了します | receipt_id, verdict, score |
get_judgments | レシートのすべての判定結果を取得します | receipt_id |
cleanup | 期限切れのレシートを削除します | dry_run, cleanup_memory |
generate_invoice | レシートから請求書を生成します | from, to, format |
get_started | はじめに読むためのガイド | — |
memory_context | セッション初期化用のコンテキスト全体を取得します | scope, max_entities |
memory_observe | メモリの観察結果を保存します | entity_name, entity_type, content |
memory_recall | 保存済みのメモリを検索します | query, entity_type, scope |
memory_forget | 観察結果またはエンティティを論理削除します | entity_id または observation_id |
memory_entities | 既知のエンティティを一覧表示します | entity_type, scope, query |
memory_relate | エンティティ間の関係を作成します | from_entity_id, to_entity_id, type |
memory_provenance | 観察結果の来歴チェーンを取得します | observation_id |
memory_audit | メモリ操作の監査レポートを取得します | agent_id, from, to |
memory_export_bundle | ポータブルなメモリバンドルをエクスポートします | entity_ids, include_receipts |
memory_import_bundle | メモリバンドルをインポートして検証します | bundle, skip_existing |
CLI の完全なリファレンス
| コマンド | 説明 |
|---|---|
init | データディレクトリを作成し、署名鍵を生成します |
keys [--export] [--import] | 署名鍵を表示、エクスポート、またはインポートします |
inspect <id|file> | レシートを整形して表示します |
verify <id|file> [--key] | レシートの署名を検証します |
list [--agent] [--status] [--json] | フィルターを指定してレシートを一覧表示します |
chain <chain_id> [--tree] | レシートチェーンを表示します |
judgments <id> [--json] | レシートに対する判定を一覧表示します |
cleanup [--dry-run] | 有効期限が切れたレシートを削除します |
stats | レシートの統計情報を集計します |
export <id|--all> [--pretty] | レシートを JSON 形式でエクスポートします |
invoice --from --to [--format] | 請求書を生成します |
seed [--demo] [--count] [--clean] | デモデータを登録します |
watch [--agent] [--action] | 新しいレシートを監視します |
prompts <client> | セットアップガイド(claude-code、cursor、system) |
memory context | メモリーコンテキストの概要 |
memory observe <name> <type> <content> | 観察内容を保存します |
memory recall [query] | メモリーを検索します |
memory entities [--type] | エンティティを一覧表示します |
memory forget <id> | 観察内容またはエンティティを忘れます |
memory audit | メモリー監査レポート |
memory provenance <obs_id> | プロベナンスチェーン |
memory export | メモリーを JSON 形式でエクスポートします |
memory import <file> | メモリーをインポートします |
設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
AGENT_RECEIPTS_DATA_DIR | データディレクトリのパス | ~/.agent-receipts |
AGENT_RECEIPTS_AGENT_ID | デフォルトのエージェント ID | local-agent |
AGENT_RECEIPTS_ORG_ID | 組織 ID | local-org |
AGENT_RECEIPTS_ENVIRONMENT | 環境ラベル | production |
RECEIPT_SIGNING_PRIVATE_KEY | Ed25519 秘密鍵(16 進数) | 自動生成 |
ストレージ:
~/.agent-receipts/
├── keys/
│ ├── private.key # Ed25519 private key (mode 0600)
│ └── public.key # Ed25519 public key
├── receipts.db # SQLite database (receipts + memory)
└── config.json # Agent and org configuration
パッケージ
| パッケージ | 説明 |
|---|---|
@agent-receipts/schema | Zod スキーマと TypeScript 型 |
@agent-receipts/crypto | Ed25519 署名、検証、鍵管理 |
@agent-receipts/mcp-server | 24 個のツールを備えた MCP サーバー |
@agent-receipts/sdk | TypeScript SDK(21 個のメソッド) |
@agent-receipts/cli | コマンドラインインターフェース |
@agent-receipts/dashboard | ミッションコントロールの Web UI |
ロードマップ
- クラウドティア — チームダッシュボード、複数エージェント間のメモリー同期、組織間検証
- セマンティック検索 — 埋め込み表現を活用したメモリー検索
- フレームワークアダプター — LangChain、CrewAI、AutoGen との統合
- 組織間の信頼ブリッジ — 2 つの組織が互いのエージェントのレシートを検証
ライセンス
MIT
Amin Suleiman が開発 — ModQuote と Agent Receipts を開発しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。