Carta CRM(顧客関係管理システム)から資金調達の記録を検索して取得するスキルです。 **次のような場合に使用:** ユーザーが「資金調達を探して」「資金調達ラウンドを検索して」「[企業名]の資金調達詳細を表示して」「[企業名]の詳しい情報を見せて」「IDから資金調達を取得」「資金調達のリストを表示」「どの資金調達があるか」といった内容や「/search-fundraisings」コマンドで指示した場合。 **返される情報:** 資金調達 ID、名前、段階(ラウンド段階)、カスタムフィールドなどの詳細情報を返します。 取得した資金調達 ID は、「update-fundraising(資金調達更新)」スキルと組み合わせて使用できます。
Searches for and retrieves fundraising records from the Carta CRM. Use this skill when the user says things like "find a fundraising", "search fundraisings", "look up a fundraising round", "show fundraising details for [name]", "full details on [name]", "get fundraising by ID", "list fundraisings", "what fundraisings do we have", or "/search-fundraisings". Returns fundraising details including ID, name, stage, and custom fields. The fundraising ID returned can be used with the update-fundraising skill.
<!-- carta:instrumentation-fallback -->
<IMPORTANT>
_instrumentation_v2 は、Cartaスキルの使用状況を匿名で記録するテレメトリ(利用統計)です。Carta MCPツール呼び出しの引数に必ず含めること — プラグインのフック処理が実行時に上書きするため、常に送信しても問題ありません。形式:
_instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}
skills はセッション内で累積的に記録します:これまで読み込まれたCartaスキルをすべて列記してください。この呼び出しを起動したスキルだけでなく、すべてを含めます。各項目は "plugin:skill" の形式で名前空間を付け、古い順に並べ、最後に最も最近使用したスキルを置いてください。Cartaスキル(carta-cap-table:*、carta-crm:*、carta-investors:*)のみ記載してください — Carta以外のプラグインのスキルは含めません。
surface はあなたが使用しているClaudeのプラットフォームです:"chat"(claude.aiまたはClaudeアプリ、通常のチャット。Cowork以外)、"cowork"(Coworkモード)、"code-terminal"、"code-desktop"、"excel" のいずれか。当てはまるものがない場合または不明な場合は、完全に省略してください — 推測したり架空の値を作ったりしないでください。
</IMPORTANT>
Carta CRMで資金調達ラウンド(募資案件)を検索します。1つの具体的なラウンドについての質問であれば、そのラウンドの詳細情報を表示します。複数のラウンドや抽出結果の質問であれば、表形式で表示します。この区別を最初に判断することが、以降のすべての処理を決めます。
ユーザーが「検索して」「探して」と言っていても、1つの具体的なラウンド名が挙げられていれば、詳細表示として扱います。本当に判断できない場合は、一覧表示として扱い、何を絞り込みたいのか確認してください。
crm_call_tool を使用してください。crm_view_tool は使わないでください。 このステップはあなたのための操作で、ユーザー向けではありません。ビュー呼び出しは応答内のすべての配列を件数に置き換えてしまい、行データ(必要なidを含む)に到達できず、ユーザーは望まない一覧を見ることになります。
crm_call_tool({
"name": "crm:search_fundraising",
"arguments": { query: "<ラウンド名>", limit: 10 }
})
戻ってきた候補の数で分岐します:
crm_view_tool({ "name": "crm:get_fundraising", "arguments": { id: "<id>" } })
crm_view_tool({
"name": "crm:search_fundraising",
"arguments": { query: "<ラウンド名>", limit: 10 }
})
その後「複数の資金調達がマッチしました — どちらを意図していますか?」と尋ねてください。ユーザーが選択したら、それに対して get_fundraising を呼び出します。1つの企業が複数ラウンドを持つことはよくあるため、最初の検索結果を勝手に開くと、間違ったラウンドを確信をもって表示してしまいます。ユーザーが最初からIDを提示した場合、解決する必要はありません — 1回の呼び出しで1枚のカードを表示します。
1回のリクエストでは最大1枚のカードのみ 表示してください。ユーザーが複数ラウンドを名前で挙げた場合は、どれを開くか尋ね、複数のビューを積み上げないでください。
crm_view_tool({
"name": "crm:search_fundraising",
"arguments": {
query: "<検索キーワード>",
limit: 20
}
})
ユーザーがステージ(段階)名で絞り込んだ場合は、その名前をステージIDに解決してから stages: ["<stage id>"] として渡してください。このルックアップには専用のビューがないため、crm_call_tool で実行します:
crm_call_tool({ "name": "crm:get_fundraising_stages", "arguments": {} })
ユーザーがもっと結果を見たいと言ったら、limit を増やしてください。offset を使用してページネーション(複数ページの表示)に対応します。
CRMビューは組織ごとに有効化でき、単一レコードのビューはそれに加えてさらに別のフラグで制御されています。そのため、上記の crm_view_tool 呼び出しが以下の応答を返すことがあります:
CRM tool 'search_fundraising' has no view — call it with crm_call_tool instead.
これは失敗ではなく、正常な応答 です — その組織ではそのビューが有効になっていません。その1回の呼び出しを同じ形式で crm_call_tool を使って再実行し、結果をテキストで提示してください(ステップ4を参照)。crm_view_tool を再試行せず、ユーザーへはこのメッセージを報告しないでください。
詳細表示リクエストでカードのビューがない場合も、解決方法は同じです:ステップ2の crm_call_tool 解決を続け、選択されたレコードをテキストで提示してください。
カードが表示された場合、ユーザーはすべてのレコード情報を見ています。フィールドを繰り返さないでください。ユーザーの質問に答えるか、1行で確認するだけにしてください。
表が表示された場合、ユーザーはすべての行を既に目にしています。テキストで再度一覧化、再フォーマット、または要約しないでください — 表と重複します。ユーザーが本当に知りたいことに答えるか、1行で確認してください(例:「6件の資金調達がマッチしました — IDは最初の列にあり、/update-fundraising で使用できます」)。
crm_call_tool にフォールバックした場合は、すべての空でないフィールドを読みやすいサマリーで表示し、IDを目立たせてください — ユーザーが /update-fundraising を実行する際に必要です。
資金調達が見つからない場合:
「検索に一致する資金調達が見つかりません。別の名前またはキーワードをお試しください。」
<!-- 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 fundraisings in the Carta CRM. A request about one named round renders that round's card; a request for a set renders a table. Route on that distinction first — it decides every call below.
A named single round 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_fundraising",
"arguments": { query: "<round name>", limit: 10 }
})
Then branch on how many candidates came back:
crm_view_tool({ "name": "crm:get_fundraising", "arguments": { id: "<id>" } })
crm_view_tool({
"name": "crm:search_fundraising",
"arguments": { query: "<round name>", limit: 10 }
})
Then ask: "Several fundraisings match — which one did you mean?" When they pick, call
get_fundraising for it. One company often has several rounds, so opening the top hit
unasked shows the wrong round 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 rounds, ask which to open rather than stacking views.
crm_view_tool({
"name": "crm:search_fundraising",
"arguments": {
query: "<search term>",
limit: 20
}
})
If the user filtered by stage name, resolve the name to a stage ID first, then pass
stages: ["<stage id>"]. This lookup has no view of its own, so it goes through
crm_call_tool:
crm_call_tool({ "name": "crm:get_fundraising_stages", "arguments": {} })
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_fundraising' 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. "6 fundraisings match — the ID is in the first
column, for /update-fundraising.").
When you fell back to crm_call_tool, display all non-empty fields in a readable
summary and show the ID prominently — the user needs it to run /update-fundraising.
If no fundraisings are found:
"No fundraisings found matching your search. Try a different name or keyword."
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。