Carta CRM から資金調達の記録を検索して取得します。 **次のような場合に使用:** ユーザーが「資金調達を検索して」「資金調達ラウンドを調べて」「〇〇の資金調達詳細を見せて」「ID で資金調達を取得して」「資金調達一覧を表示して」「うちにはどんな資金調達がある?」などと言った場合、または「/search-fundraisings」コマンドが実行された場合 **返される情報:** ID、名前、段階、カスタム項目など、資金調達の詳細情報を返します。取得した資金調達 ID は、資金調達更新スキル(update-fundraising skill)で使用できます。
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 -->
<重要>
_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(顧客関係管理システム)で資金調達ラウンドを検索します。単一の特定ラウンドに関する質問の場合はそのラウンドの詳細を表示し、複数のラウンドまたはラウンドの集合に関する質問の場合は表を表示します。この違いを最初に判定することで、以降のすべての処理が決まります。
ユーザーが「検索」や「探す」と言っていても、特定の単一ラウンドを指名している場合は詳細表示リクエストです。本当に不明確な場合は、リスト表示として扱い、ユーザーに絞り込み方法を質問してください。
crm_call_tool を使用して検索してください。crm_view_tool は使用しません。 このステップはユーザーへの情報表示ではなく、検索結果の取得が目的です。ビューツールを使うと応答内のすべての配列が件数に折りたたまれるため、個別のデータ行と必要な ID がツールに到達せず、ユーザーはリスト表示を見ることになり、ユーザーの要求に合いません。
crm_call_tool({
"name": "crm:search_fundraising",
"arguments": { query: "<ラウンド名>", limit: 10 }
})
検索結果の件数に応じて分岐してください:
完全一致が 1 件のみ → そのラウンドの詳細カードを表示して終了:
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: ["<ステージ 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.
これは通常の応答であり、エラーではなく、この組織ではそのビューが有効化されていないということです。同じ呼び出しを 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 による自動翻訳です。