HISTOR — MCP tool-definition transparency log について
HISTORは、リモートエンドポイントやローカルパッケージが公開したMCPツール定義を記録する公開透明性ログです。署名付きの履歴と変更照合により、クライアントが受け取った定義を公開観測記録と比較できます。
主な機能
- 01ツール定義と変更履歴の記録
- 02署名付き記録のMerkleログへの追加
- 03クライアントが受信したツールセットの照合
- 04定義変更の追跡と差分表示
- 05監視対象サーバーの変更フィード
活用シーン
- 01エンドポイントのツールがログと一致するか確認
- 02利用中のMCPサーバーの定義変更を追跡
- 03ツール説明や入力スキーマの変更を確認
MCP 対応
MCPサーバーはhistor_check、histor_server、histor_changesを公開ログの照会に提供し、ローカルログを使う構成にもできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx aimarket-historHISTOR_MCP_REMOTEPublic HISTOR instance to query (default https://histor.modelmarket.dev). Pass --local to serve your own log from HISTOR_DATA_DIR instead.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
HISTOR
🔄 AI-Factoryモノレポから同期(追記専用の履歴)。プルリクエストを歓迎します — マージされたPRはインポートされ、ここに再同期されます。Issue · プルリクエスト
HISTOR(ἵστωρ、「見たからこそ知る者」)— MCP ツール定義の公開透明性ログ
公式レジストリに登録されたすべてのリモートMCPエンドポイントが公開していた内容 · 変更時期 · 署名済み、追記型、監査可能
英語 · ロシア語 · スペイン語 · フランス語 · 中国語
WARDEN品質サイクル:MOMUS → AI-Factory → SKOPOS → 共有ノードエージェント → デプロイ。
稼働状況: histor.modelmarket.dev ·
ランディングページ: alexar76.github.io/histor ·
機能: histor.check@v1 · histor.server@v1 · histor.changes@v1 ·
ポート: 9490
問題を一段落で説明
MCP サーバーは、無害なツールの説明で審査を通過した後、説明を変更できます。説明に新しい一文を加えるだけでプロンプトインジェクションが成立し、クライアントは再確認することなく、その内容をモデルに渡してしまいます。MCP にはツール定義のコンテンツアドレッシングがなく、公式レジストリは内容ではなく名前空間を検証し、ノート PC 上のスキャナーが確認できるのは、サーバーがノート PC に見せる内容だけです。HISTOR は、欠けていた公開メモリです。各サーバーが何を公開したかを記録して署名し、受け取った内容が他のすべての人に見えている内容と同じかどうかを、問い合わせた人に伝えます。
できること
flowchart LR
R["Official MCP registry<br/>~21k servers"] --> C["Crawler<br/>server/discover + tools/list<br/>never a tool call"]
C --> D["MTL/1 digest<br/>RFC 8785 + SHA-256"]
D --> L["Four signed labels<br/>AWR/2 · did:key"]
W["WARDEN sidecar<br/>published pattern set"] --> L
L --> M["Merkle log<br/>RFC 9162"]
M --> S["Signed tree head<br/>after every crawl"]
M --> API["Desk · API · badge · Atom feed"]
CL["Your client"] -- "tools it received" --> K["/api/v1/check"]
K -- "signed: same · different · seen before" --> CL
K -. "opt-in digest count" .-> M
- 読み取る:公式レジストリ内のすべてのリモートエンドポイントを対象に、
server/discover、続いてtools/listを実行します(レガシーサーバーでは初期化を使用)。ページをまたいで最後まで読み取ります。ツールは呼び出さず、何もインストールまたは実行しません。また、接続を開く前にプライベートアドレスを拒否します。 - 読み取る対象に追加:レジストリに掲載されていない人気のリモートサーバーを厳選した短いリスト(
histor/curated.json、DeepWiki など)も対象にします。HISTOR 独自の名前空間urn:awr:mtl:1:registry:histor.modelmarket.dev/curatedを使用するため、レジストリに掲載されているという表示にはなりません。このようなサーバーがレジストリに公開された場合は、レジストリの掲載情報がこちらの情報に置き換わります。 - npm と PyPI のパッケージを実行する:
npxまたはuvxでローカル起動するサーバーを、サンドボックス内で実行します。コードを実行せずにインストールし、おとりの認証情報を用意して外部への経路を遮断した gVisor 上で起動し、ディスカバリーとtools/listで読み取ります(必要に応じてレガシーの初期化を使用)。その後、サンドボックス内で最大 15 個のツールを呼び出し、それぞれにカナリア引数を一度渡します。gVisor 自体のトレースから、インストール時、起動時、ツール呼び出し時に、パッケージが行ったこと(起動したプログラム、名前解決の対象、おとりの認証情報へのアクセス)を確認できます。完了した観測結果は公開バージョンごとにキャッシュされ、不完全な観測は再試行されます。新しいバージョンがツールを通じてモデルに伝える内容を変更した場合、他のエンドポイントと同様に、ログに変更が記録されます。 - ダイジェストを計算する:MTL/1 の定義どおりにツールセットを計算します。対象は名前、説明、入力・出力スキーマで、UTF-16 コード単位の順序と RFC 8785 を使用します。
- 署名する:4 種類のラベルにそれぞれ、単独の AWR/2
VerificationVerdictを署名します。観測された内容、WARDEN パターンセットとの照合結果、前回のラベル以降に定義が変更されたかどうか、名前が脅威リストに載っているかどうかを記録します。 - 追記する:すべてのラベルを RFC 9162 の Merkle ログに追記し、各クロール後にツリーヘッドへ署名します。これにより、一貫性証明で履歴が追記のみであることを確認できます。
/checkに回答する:クライアントが受け取ったツールを送信すると、HISTOR がそのエンドポイントで同じセット、以前のセット、または何も観測していないかどうかが、署名付きで返されます。
リモートのチェックは、日次のレジストリ/パッケージサイクルとは独立して実行されます。既定の対象間隔は 6 時間です。過去 7 日間に少なくとも 2 回変更が観測されたエンドポイントは、30 分ごとにチェックされます。これらはスケジュール上の目標です。ホストの制限、障害、キューの処理能力によって、実際の間隔が長くなることがあります。また、中間状態を見逃す可能性もあります。設定と実測間隔については、リモートポーリングの運用を参照してください。
リリースの変更点とアップグレードに関する注意事項:CHANGELOG.md。
MCP 2026-07-28:モダン版とレガシー版の互換性。
**ローカルアップグレード概要:**依存関係とワークフローを選び、保存済みの観測結果を比較して、再テスト用チェックリストを作成します。
このソースディレクトリから、python3 -m histor upgrade-brief --watchlist examples/upgrade-brief/watchlist.json --out-dir ../output/histor-upgrade-brief-example/en を実行してください(Python 3.11 以降)。
レポートとチェックリストでは --lang ru|en|es|fr|zh をサポートしています(既定値は en)。
ガイドと、5 言語で利用できる再現可能な合成例を参照してください。
ラベルが示さないこと
このプロフィールでは safe、secure、audited、certified、approved、trusted という言葉を禁じており、この README でも使用していません。パターンに一致したことは、定義を読む理由にはなりますが、何かが確認されたことを意味するものではありません。4 つのメソッドのうち 3 つは fail を返すことがなく、4 つ目(継続性)が失敗するのも、2 つのダイジェストが異なるという機械的な意味に限られます。ソースは読み込まず、パッケージも解決せず、挙動も観察しません。変更は日付と差分で示し、非難として示すことはありません。詳細:docs/labels.md。
ツールリストにかかるコスト。 クライアントは、モデルへのリクエストごとに、接続されているすべてのサーバーのツールリストを再送信します。ログにある 18,204 個のパッケージと 16,170 個のリモートサーバーでは、リストの中央値は約 1,300 トークン、90 パーセンタイルは約 8,000 トークンで、31 個のパッケージでは 100,000 トークンを超えています:docs/tool-list-cost.md。各カウントは名前、説明、入力スキーマに分けられ、すべての変更にコスト差分が付随します(/api/v1/changes/<id>/cost)。また、histor tool-cost check はパッケージの CI で同じカウントを実行し、リストを重くするリリースを失敗させます:docs/tool-list-cost.md。
利用しているサーバーを監視する。 https://histor.modelmarket.dev/feed.xml?watch=<id>,<id> は、フォローしている最大 100 台のサーバーの変更を配信するフィードです。/api/v1/changes?watch=…&after=<cursor> はプログラム向けの同じフィードで、古い順に取得でき、途中から再開できます。チームでは、各変更を署名付きで Slack または独自のエンドポイントにプッシュできます:docs/watch.md。レジストリ、スキャナー、評価サービスについては、docs/data-feed.md をご覧ください。
データをダウンロードする。 週に 1 回、ログの全体像が histor.modelmarket.dev/datasets/ にファイルとして公開されます。掲載されているすべてのサーバー、表示されたすべてのツールセット、記録されたすべての変更、WARDEN スキャンが含まれます。ファイルは JSON Lines(gzip)形式で、ログのキーによる署名付きマニフェストが付属します。データセットは CC BY 4.0 で公開されています。各スナップショットの README にはフィールドが記載されており、pandas または DuckDB で読み込めます(histor/dataset.py)。Hugging Face でも公開しています。数値を引用する場合は、その集計対象となったスナップショットのバージョン DOI を記載してください(アーカイブされた各スナップショットには固有の DOI があり、データセットのページに記載されています)。doi:10.5281/zenodo.23512759 はすべてのスナップショットを指し、最新のものが開きます。
別の観測者と相互照合。 HISTOR は毎日、同じサーバーについて CrawlCheck が公開するツールセットのダイジェストと比較し、不一致も含めた結果を histor.modelmarket.dev/datasets/xcheck-crawlcheck/ で公開します。2 つのサービスは同じダイジェストを独立して計算します:docs/cross-check.md。
公開されている支払者の証拠。 histor payer-audit コマンド(0.4.1 以降)は Base USDC の受領記録を確認し、支払い総額と不明なケースを保持しながら、情報源に基づく挙動の兆候をエクスポートします。本番データベースやウォレットは不要です:docs/payer-audit.md。
インストール
pip install aimarket-histor # the package is aimarket-histor — "histor" on PyPI is an unrelated project
histor audit https://histor.modelmarket.dev # verify the public log's tree heads and proofs; needs no keys or database
uvx aimarket-histor # MCP server over stdio against the public log: histor_changes, histor_check, histor_server
Python 3.11 以降が必要です。最初に実行するコマンドは histor audit です。HISTOR を信頼せず、第三者と同じ方法でライブログを確認します(docs/log.md)。
MCP クライアント(Claude Code、Cursor、…)では、次の設定を使用します:{ "mcpServers": { "histor": { "command": "uvx", "args": ["aimarket-histor"] } } } —
公開ログを参照する 3 つのツールです。クロールもローカルへの保存も行いません。aimarket-histor --local
(または histor mcp)を使うと、代わりに HISTOR_DATA_DIR から独自のログを提供します。公式 MCP レジストリには
io.github.alexar76/histor として掲載されています。
接続したら、次のように尋ねてください:「histor_server をエンドポイント npm:mongodb-mcp-server で使ってください。
最後の観測、ツールの数、HISTOR レコードへのリンクを表示してください。」
独自の npm: または pypi: パッケージに置き換えるか、
ブラウザーで検索してください。
クイックスタート
ソースから独自のログを実行するには:
git clone https://github.com/alexar76/histor && cd histor
npm ci --prefix scanner # the WARDEN sidecar (node >= 20)
uv sync --extra dev --project .
HISTOR_CRAWL_LIMIT=40 uv run --project . python -m histor crawl # observe 40 endpoints
uv run --project . python -m histor serve # desk + API on :9490 (SQLite under ./data)
ローカルの MCP クライアントまたは Glama では、python -m histor mcp を実行します。ローカルログを使って、stdio 経由で
histor_changes、histor_check、histor_server を公開します。
HTTP ポートは開かず、クロールも開始しません。新しいログにデータを追加するには、上記の別個の crawl コマンドを使用してください。
Glama のビルド設定を参照してください。
本番環境では Postgres を使用し、HISTOR_PROFILE=prod は Postgres がなければ起動を拒否します。
HISTOR_POSTGRES_PASSWORD=… HISTOR_OPERATOR_TOKEN=… HISTOR_PUBLIC_BASE=https://histor.example \
docker compose -f docker-compose.yml -f docker-compose.postgres.yml up -d
スキーマの変更は番号付きマイグレーション(python -m histor migrate up|status)で管理され、サービスがリッスンを開始する前に適用されます。docs/operations.mdを参照してください。
ログに問い合わせる
# Is what my client received what HISTOR observed at that endpoint? Three lines that run as
# written: take a listed server, send its endpoint and tool list to /check, read the signed answer.
# With your own client, replace the second line by the endpoint and the tools/list result it received.
H=https://histor.modelmarket.dev/api/v1
S=$(curl -sS "$H/servers?limit=1" | jq -r '.servers[0].id')
curl -sS "$H/servers/$S" | jq '{endpoint: .server.endpoint, tools: .tools}' > received.json
curl -sS "$H/check" -H 'Content-Type: application/json' -d @received.json | jq '.verdict, .target.page'
# The signed tree head, and a proof that today's log extends yesterday's
curl -sS https://histor.modelmarket.dev/api/v1/log/sth
curl -sS "https://histor.modelmarket.dev/api/v1/log/proof/consistency?first=1000&second=1200"
すべてのエンドポイントはdocs/api.mdに記載されています。HISTOR を信頼せずにログを監査する方法についてはdocs/log.mdを、ログ形式自体(リーフ入力、ツリー、署名付きヘッド、検証ルール)についてはdocs/spec/transparency-log.mdを参照してください。規範的なベクトルはtest-vectors/にあります。内部構造についてはdocs/architecture.mdを参照してください。
テスト
make test # unit tests; set HISTOR_TEST_DATABASE_URL to run each storage test on Postgres too
make integration # real sockets: a loopback registry and MCP servers, uvicorn, the real WARDEN sidecar
上記のテストとカバレッジのバッジは、すべての Pages デプロイで CI によって計測され、shields.io 経由で読み込まれます。また、ログのバッジは稼働中のサービスを参照するため、表示されている数値はすべて最新です。
ERC-8004 アイデンティティ
HISTOR は Base 上の ERC-8004 エージェント 96683であり、2026-10-01 に正規の IdentityRegistry 0x8004A169…a432へ登録され、AIMarket の運営者ウォレット 0x1218ff36…Ad0aによって所有されています。その登録ファイルには、ウェブページ、ホストされている histor-check エンドポイント、およびすべてのラベルに署名する did:key が記載されているため、ラベルの署名を登録済みエージェントに結び付けることができます。トランザクションと確認方法については、ERC-8004 identitiesを参照してください。
位置づけ
| コンポーネント | 役割 |
|---|---|
| WARDEN | クライアント上で、接続時にツール定義を確認します |
| HISTOR | サーバーが公開した内容を公開情報として記録します |
| THEMIS | Hub 上で公開時にケイパビリティを承認します |
| AIMarket Hub | カタログに histor.check@v1 を掲載します |
| AWR | すべてのラベルで使用される署名付きドキュメント形式です |
ライセンス
MIT — LICENSEを参照してください。AIMarket エコシステムの一部です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。