cala について
Cala は、公開データのナレッジグラフを検索するエージェント向けスキルです。構造化フィルター、エンティティ検索、出典付きの自由形式検索を案内し、出典を保持して失敗時には推測で補わない方針です。
主な機能
- 01ナレッジグラフの構造化検索
- 02エンティティ検索と取得
- 03検索可能な項目と関係の確認
- 04出典付き時系列データの取得
- 05文章形式の主張を出典に追跡
活用シーン
- 01条件に合う企業やエンティティの抽出
- 02エンティティ間の関係や過去指標の確認
- 03事実情報の出典と日付の検証
MCP 対応
`https://api.cala.ai/mcp/` に接続し、Cala の MCP サーバーが提供するナレッジグラフ検索ツールを利用します。代替手段として REST API も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cala-ai/ cala-skill --skill calaインストール後、Claude Code で/calaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreLICENSEREADME.md.claude-plugin/plugin.json詳細
Cala — AI エージェントのためのナレッジレイヤー
Cala は、世界中の公開データを対象とするナレッジグラフです。名前付きエンティティ、その属性、エンティティ間の関係、タイムスタンプ付きの観測値を収録し、すべての値にソースと日付が付いています。ウェブをスクレイピングする代わりに、これをクエリしてください。
このスキルは、Cala のツールが読み込まれていることを前提としています(ツールのスキーマにパラメーターと本文の形式が記載されています)。ここでは、スキーマだけではわからない、使うツールの選び方、クエリ言語、読み取り時の原則、失敗した場合の対処方法を説明します。
アクセス
MCP(推奨): API キーを使って https://api.cala.ai/mcp/ に接続し、ツールを直接呼び出してください。Cala のツールがコンテキストにない場合、サーバーが設定されていません。処理を中止し、ユーザーに https://docs.cala.ai/integrations/mcp を案内してください。
REST(代替): ベース URL は https://api.cala.ai/v1、ヘッダーは X-API-KEY: <key> です。エンドポイント名はツール名と1対1で対応しています。仕様は https://api.cala.ai/openapi.json にあります。API キーは https://console.cala.ai/api-keys から取得してください。
適切なツールを選ぶ
Filter / list / "find all X where Y"? → knowledge_query
Open-ended "what", "who", "explain"? → knowledge_search
Have a name, want the entity (a seed UUID)? → entity_search
Have a UUID, want a coarse profile? → entity_retrieval (no body)
Have a UUID, don't know what's queryable? → entity_introspection
Have a UUID, want specific fields/rels/metrics → entity_introspection → entity_retrieval
構造化された方法を選んでください。 knowledge_query と、フィールドを指定した entity_retrieval は、knowledge_search よりもトークン消費が大幅に少なく、挙動も予測しやすくなります。回答の形式がわかっている場合は、構造化された方法を選んでください。knowledge_search は、本当に自由度の高い質問に限って使います。
knowledge_query — 構造化フィルター
ドット表記のクエリ言語です。. はそれぞれ、グラフ上を進む1つのホップとして読みます。OpenAI.founded.year は、founded エッジをたどってから year を読み取ります。フィールド名の自然な言い換えも解釈されるため、意図したとおりに記述してください。
- 演算子:
=完全一致 ·!=等しくない ·><<=>=数値比較 ·,= 同一フィールドに対するAND(investors=Sequoia Capital,Andreessen Horowitz→ 両方から支援を受けている。いずれか一方ではありません)。 - 修飾子。句の順序は
filters → order_by → limit → return():order_by=field ASC|DESC— レコードの表示順だけでなく、表示されるレコード自体が変わります(デフォルトの並べ替えは関連度順です)。limit=N— 結果数の上限を設定します。return(f1, f2, ...)— 指定したフィールドのみを返します。トークン消費を抑えられます。
- 数値フィールドは、おおよその文字列(
"over 100M"、"~206,753")を返すことがあります。厳密な値として扱わず、情報を統合してください。
{"input": "OpenAI.founded.year"}
{"input": "startups.location=Spain.funding>10M.order_by=funding DESC.limit=5.return(name, funding, sector)"}
{"input": "companies.investors=Sequoia Capital,Andreessen Horowitz"}
{"input": "companies.sector=climate tech.funding_round.series=A,B.location=Southern Europe.return(name, funding, investors)"}
results(行)と entities(言及されたすべてのもの。場所や人物など。行と1対1で対応するとは限りません)が返されます。エンティティ UUID を entity_retrieval に渡すと、さらに詳しく調べられます。
名前付きエンティティ — entity_search → entity_retrieval
entity_search で名前をシードエンティティに解決します(あいまい検索で名前から UUID を特定します。各検索結果には name、entity_type、description が含まれます。選択には説明を使ってください)。
シード UUID を指定すると、entity_retrieval は次の2つのモードで読み取ります。
- 概要プロフィール — 本文なしで実行します。デフォルトのプロパティのみを返し、関係や数値観測値は含まれません。
- フィールド指定 — 正確な
properties、relationships、numerical_observationsを本文で指定します。関係や時系列データを取得する唯一の方法であり、最も効率的な読み取り方法です。
スキーマを調べてから、取得するフィールドを指定してください。 クエリ可能なスキーマはエンティティごとに異なるため、まずシードに対して entity_introspection を実行します。これにより、データがある近傍(プロパティ、入力・出力関係、指標 UUID)が返されます。その後、該当するものだけを指定してください。事前に調べずに指定すると、リクエストの往復が無駄になり、空のエッジを要求する可能性があります。
関係の形式。 エッジは方向を持つ UPPER_SNAKE 型で、入力または出力方向にたどります。多数の型があります。たとえば、企業に入る方向には FOUNDED(創業者)、IS_CEO_OF(幹部)、IS_DIRECT_OWNER_OF(投資家)があり、出る方向には IS_ULTIMATE_PARENT_OF(子会社)があります。特定のエンティティが実際に持つエッジについては、イントロスペクション結果を正として扱ってください。
観測値(numerical_observations)は、財務データ、マクロ指標、為替、ポジショニングなどの時系列データです。それぞれ、イントロスペクションで取得した指標 UUID に対応しています。ライブのティックではなく、履歴を含む最新のソース付きの値です。
すべてのプロパティと関係には出典情報(sources:名前、文書 URL、日付)が付いています。これを保持し、事実を提示するときはソースと日付も伝えてください。
knowledge_search — 典拠付きのナラティブ回答
自由形式の質問に使用します。content(Markdown)と、次の典拠チェーンを返します。
explainability[i]={content: "claim", references: [ctx-id, ...]}— 各主張はコンテキスト ID に対応します。context[j]= ソースドキュメント。各ドキュメントにはidと、origins[k].document.url(引用可能なリンク)、origins[k].source.name(発行元)が含まれます。
主張を引用するには、その主張の references を context[j].id に対応付け、そのコンテキストの origins にある URL と発行元を使用します。entities には、詳細を確認するための UUID が格納されています。
失敗時 — 停止し、でっち上げない
失敗した場合は必ず停止し、その旨をユーザーに伝えてください。ウェブ検索、学習済み知識の想起、記憶に暗黙にフォールバックしてはいけません。それは Cala の回答を装ったでっち上げです。ユーザーはフォールバックを明示的に依頼できます。
- 到達不能 → 停止し、
https://console.cala.ai/api-keysとhttps://docs.cala.ai/integrations/mcpを案内します。 - タイムアウト(クエリには最大 180 秒かかることがあります。通常、原因は Cala ではなくホストです)→ 同じ呼び出しを 1 回再試行してから停止し、「MCP クライアントのタイムアウトを約 180 秒に延長して、再試行してください」と案内します。
- データなし →
{"results": [], "entities": []}(一致なし/曖昧すぎる)と{"results": [{"error": "...too complex..."}], "entities": null}(複雑すぎる)を区別します。検索範囲を広げるか、質問を簡潔にするか、knowledge_searchに切り替えてください。それでも結果が空の場合は停止します。 - レート制限(HTTP 429)→ 停止してユーザーに伝え、再試行しないでください。