Carta CRM(顧客管理システム)から投資家の記録を検索して取得します。 **次のような場合に使用:** 「投資家を探して」「投資家を検索して」「投資家の情報を調べて」「〇〇さんの投資家情報を見せて」「〇〇さんの詳しい情報が欲しい」「〇〇さんについて教えて」「IDで投資家を取得して」「投資家の一覧を表示して」「うちにはどんな投資家がいる?」など、ユーザーが投資家の情報を求めたとき 投資家の ID、名前、カスタムフィールドなど詳細情報を返します。 取得した投資家 ID は、投資家情報の更新スキルと組み合わせて使うことができます。
Searches for and retrieves investor records from the Carta CRM. Use this skill when the user says things like "find an investor", "search investors", "look up an investor", "show me investor details for [name]", "full details on [name]", "tell me about [name]", "get investor by ID", "list investors", "what investors do we have", or "/search-investors". Returns investor details including ID, name, and custom fields. The investor ID returned can be used with the update-investor skill.
<!-- carta:instrumentation-fallback -->
<重要>
_instrumentation_v2 は、Cartaスキルの使用状況を記録する匿名のテレメトリ(利用統計)です。Carta MCPツールの呼び出し引数に必ず含めてください。プラグインのフックが実行時に上書きするため、常に送信しても安全です。形式:
_instrumentation_v2: {"skills": ["<プラグイン名>:<スキル名>", ...], "model": "<モデルID>", "surface": "<値>"}
skillsはセッション内で累積されます。現在のこの呼び出しだけでなく、これまでに読み込まれたすべてのCartaスキルをリストします。各項目を"プラグイン名:スキル名"の形式で名前空間化し、古い順に並べ、最後に最近使用したスキルを置きます。Cartaスキル(carta-cap-table:*、carta-crm:*、carta-investors:*)のみをリストしてください。Cartaではないプラグインのスキルは含めないでください。
surfaceはClaudeを実行しているインターフェースです。"chat"(claude.aiまたはClaudeアプリ、つまり通常のチャット。Coworkではない)、"cowork"(Coworkモード)、"code-terminal"、"code-desktop"、"excel"のいずれかです。これらのいずれにも当てはまらない場合や判断できない場合は、完全に省略してください。推測したり、別の値を作り出したりしないでください。
</重要>
Carta CRMで投資家を検索します。1人の特定の投資家に関する質問なら、その投資家のプロフィールを表示します。複数の投資家に関する質問なら、テーブル(表)で一覧を示します。まずこの違いを判定することが、その後のすべての処理を決めます。
詳細表示 — ユーザーが1人の投資家を名前で指示し、詳しい情報を求めている場合:「Preqinの詳しい情報」、「Index Venturesについて教えて」、「この投資家について詳しく」、「Preqinは誰か」 → ステップ2へ。
リスト表示 — ユーザーが複数の投資家や、フィルタリングした結果を求めている場合:「パイプライン(営業案件の流れ)内の投資家」、「シードステージの投資家」、「うちにはどんな投資家がいるか」 → ステップ3へ。
IDで指定 — ユーザーが投資家IDを直接入力した場合 → ステップ2へ(名前解決をスキップ)。
ユーザーが1人の投資家を名前で指示している場合は、「検索して」や「探して」と言われても、詳細表示リクエストです。判定が本当に曖昧なら、リスト表示と見なして、何を絞り込みたいのかを聞きます。
crm_call_toolを使って解決してください。crm_view_toolは使いません。 このステップはあなた(AI)のためのものです。ビュー呼び出しを使うと、応答内のすべての配列が数字に圧縮されるため、行データが届かず、IDも取得できません。そしてユーザーには望まないリストが表示されてしまいます。
crm_call_tool({
"name": "crm:search_investors",
"arguments": { query: "<投資家名>", limit: 10 }
})
次に、返ってきた候補の数で分岐します:
ちょうど1件マッチ → プロフィールを表示して終了:
crm_view_tool({ "name": "crm:get_investor", "arguments": { id: "<id>" } })
複数件マッチ → 推測してはいけません。候補をビューで表示して、どれを求めているのか聞きます:
crm_view_tool({
"name": "crm:search_investors",
"arguments": { query: "<投資家名>", limit: 10 }
})
その後「複数の投資家が見つかりました。どちらを意味していますか?」と聞きます。ユーザーが選んだら、その投資家について get_investor を呼び出します。企業名はしばしば共通の語幹を持つため(例:「Index」「Index Ventures」)、最初の検索結果を根拠なく開くと、見当違いなレコードが自信を持って表示されてしまいます。
マッチなし → その旨を伝えます。空のビューは表示しません。
ユーザーがIDを直接入力した場合、解決の必要はありません。1回の呼び出しで1つのプロフィールを取得します。
1つのリクエストにつき、最大1つのプロフィールを表示してください。ユーザーが複数の投資家を名前で挙げた場合は、複数のビューを積み重ねるのではなく、どちらを開くかを聞きます。
crm_view_tool({
"name": "crm:search_investors",
"arguments": {
query: "<検索語>",
limit: 20
}
})
ユーザーがもっと結果を見るよう求めたら、limitを増やしてください。ページネーション(複数ページ表示)には offset を使用します。
CRMビューはオーガニゼーション(組織)ごとに有効になり、単一レコードのビューはさらにその上に2番目のフラグが必要です。そのため、上記のいずれかの crm_view_tool 呼び出しが以下のように応答する場合があります:
CRM tool 'search_investors' has no view — call it with crm_call_tool instead. (CRMツール 'search_investors' にはビューがありません。代わりに crm_call_tool で呼び出してください。)
これは通常の応答であり、エラーではありません。このオーガニゼーションはそのビューを有効にしていないということです。その呼び出しを同じ内容で crm_call_tool を通じて再実行し、結果をステップ4のテキスト形式で提示してください。crm_view_toolを再実行しないでください。また、このメッセージをユーザーに報告しないでください。
詳細表示リクエストで、プロフィールカードが利用できない場合も、同じやり方で解決します。ステップ2の crm_call_tool 解決を進め、選択されたレコードをテキストで表示してください。
カードが表示された場合、ユーザーはレコード全体を見ています。その項目を改めて述べないでください。ユーザーが聞いたことに答えるか、1行で確認するだけで十分です。
テーブルが表示された場合、ユーザーはすべての行をすでに見ています。テキストで改めて列挙したり、整形し直したり、要約したりしないでください。テーブルと重複します。実際に聞かれた質問に答えるか、1行で確認してください(例:「9人の投資家が見つかりました。IDは最初の列にあり、/update-investorで使用できます。」)。
crm_call_tool にフォールバックした場合、すべての空でない項目を読みやすくまとめて表示し、IDは目立つように示してください。ユーザーが /update-investor を実行するときに必要になります。
投資家が見つからない場合:
「検索に一致する投資家が見つかりません。別の名前またはキーワードをお試しください。」
<!-- carta:instrumentation-fallback -->
<IMPORTANT>
_instrumentation_v2 is anonymous Carta skill-usage telemetry. ALWAYS include it in your Carta MCP tool-call arguments — the plugins' hooks overwrite it when they run, so always sending it is safe. Shape:
_instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}
skills is cumulative for the session: list every Carta skill loaded so far, not only the one driving this call. Namespace each entry "plugin:skill" and keep them oldest-first, with the most recently used skill last. List only Carta skills (carta-cap-table:*, carta-crm:*, carta-investors:*) — never skills from non-Carta plugins.
surface is the Claude surface you are running in: "chat" (claude.ai or the Claude app, i.e. regular chat, not Cowork), "cowork" (Cowork mode), "code-terminal", "code-desktop", or "excel". Omit it entirely if none of those describe your surface or you cannot tell — do not guess and do not invent another value.
</IMPORTANT>
Look up investors in the Carta CRM. A request about one named investor renders that investor's card; a request for a set renders a table. Route on that distinction first — it decides every call below.
A named single investor is a detail request even when the user says "search" or "find". If it's genuinely unclear, treat it as a list and ask what they want to narrow to.
Resolve through crm_call_tool, never crm_view_tool. This step is for you, not the
user: a view call collapses every array in the response to a count, so the rows — and the
id you need — never reach you, and the user gets a list they did not ask for.
crm_call_tool({
"name": "crm:search_investors",
"arguments": { query: "<investor name>", limit: 10 }
})
Then branch on how many candidates came back:
crm_view_tool({ "name": "crm:get_investor", "arguments": { id: "<id>" } })
crm_view_tool({
"name": "crm:search_investors",
"arguments": { query: "<investor name>", limit: 10 }
})
Then ask: "Several investors match — which one did you mean?" When they pick, call
get_investor for it. Firms often share a stem ("Index", "Index Ventures"), so opening
the top hit unasked shows the wrong record with full confidence.When the user gives an ID outright, there is nothing to resolve — one call, one card.
Render at most one card per request. If the user named several investors, ask which to open rather than stacking views.
crm_view_tool({
"name": "crm:search_investors",
"arguments": {
query: "<search term>",
limit: 20
}
})
Increase limit if the user asks to see more results. Use offset to paginate.
CRM views are enabled per organisation, and single-record views behind a second flag on
top of that. So any crm_view_tool call above may answer with:
CRM tool 'search_investors' has no view — call it with crm_call_tool instead.
That is a normal response, not a failure — this organisation does not have that view
enabled. Retry that one call verbatim through crm_call_tool and present the result as
text per Step 4. Do not retry crm_view_tool, and do not report the message to the
user.
A detail request whose card has no view still resolves the same way: keep the
crm_call_tool resolve from Step 2 and present the chosen record as text.
When a card rendered, the user sees the whole record. Do not restate its fields. Answer what they asked, or acknowledge in one line.
When a table rendered, the user already sees every row. Do NOT re-list, re-format, or
summarise them as text — that duplicates the table. Answer the question they actually
asked, or acknowledge in one line (e.g. "Found 9 investors — the ID is in the first
column, for /update-investor.").
When you fell back to crm_call_tool, display all non-empty fields in a readable
summary and show the ID prominently — the user will need it to run /update-investor.
If no investors are found:
"No investors found matching your search. Try a different name or keyword."
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。