Carta CRMから取引記録を検索して取り出すスキルです。 次のような場合に使用: ユーザーが「取引を探して」「取引を検索して」「取引を調べて」「[会社名]の取引を表示して」「IDで取引を取得」「[段階]の取引を探して」「取引一覧を表示」「[会社名]でどんな取引がある?」「/search-deals」などと言ったとき 取引ID、会社名、段階、パイプライン(営業プロセスの流れ)、タグ、カスタム項目を含む取引の詳細情報を返します。返された取引IDは、update-deal(取引更新)スキルで使用できます。
Searches for and retrieves deal records from the Carta CRM. Use this skill when the user says things like "find a deal", "search deals", "look up a deal", "show me deals for [company]", "get deal by ID", "find deal in [stage]", "list deals", "what deals do we have for [company]", or "/search-deals". Returns deal details including ID, company, stage, pipeline, tags, and custom fields. The deal ID returned can be used with the update-deal 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 の案件を検索します。ユーザーが ID を提供した場合は、その案件を直接取得します。それ以外の場合はフィルター付きで search_deals を使用します。常に案件 ID を表示して、ユーザーが更新時に参照できるようにします。
重要: search_deals を呼び出す前に必ず get_deal_fields を呼び出して、フィルター用の有効なフィールド ID を確認してください。このステップをスキップしないでください。
検索の前に必ず呼び出します。これはスキーマ検索(データ構造の定義確認)で独自のビューを持たないため、crm_call_tool を通じて実行します。
crm_call_tool({ "name": "crm:get_deal_fields", "arguments": {} })
フィールド ID、型、説明をよく読み、ユーザーの意図を最も具体的に合致するフィールドにマッピングし、それらを filters パラメータで使用します。
fetch_deal_by_deal_id を呼び出しsearch_deals を呼び出しcrm_view_tool を使用すると、結果がユーザーが並べ替えたりクリックして詳細を見られるインタラクティブなテーブルで表示されます。crm_call_tool と同じ name と arguments を受け取ります。
ID で検索:
crm_view_tool({ "name": "crm:fetch_deal_by_deal_id", "arguments": { id: "<deal id>" } })
フィルター検索:
crm_view_tool({
"name": "crm:search_deals",
"arguments": {
query: "<自由形式の検索文 — 最後の手段のみ>",
stages: ["<stage id>"],
filters: [
{ field_id: "<field id>", operator: "eq", value: "<value>" }
],
limit: 50
}
})
特定のフィールドがユーザーの意図に合致する場合は、query より filters を優先してください。
利用可能な演算子: eq(等しい)、neq(等しくない)、gt(より大きい)、gte(以上)、lt(より小さい)、lte(以下)、contains(を含む)、in(含まれる)、between(の間)。
stages を使用してパイプラインステージ(funnel、tracking、due-diligence、execution、dead、completed)でフィルターします。
remainingCount > 0 の場合は limit を増やすか offset を使用してページネーションします。
CRM ビューは組織ごとに有効化されるため、上記の呼び出しが以下のような応答を返すことがあります。
CRM tool 'search_deals' has no view — call it with crm_call_tool instead.
これは失敗ではなく、通常の応答です。この組織ではそのビューが有効化されていません。その呼び出しを crm_call_tool 経由で同じ形式で再実行し、結果をテキストとしてステップ 4 に従い提示してください。crm_view_tool は再試行しないでください。ユーザーにはこのメッセージを報告しないでください。
ビューが表示された場合、ユーザーはすでに画面上のすべての案件を見ています。テーブルの行を復唱、再フォーマット、要約としてテキストで繰り返さないでください。そうするとテーブルが重複します。ユーザーが実際に尋ねた質問に答えるか、1 行で確認してください(例:「8 件の案件が不動産調査中です。ID は最初の列にあり、/update-deal で使用できます」)。
crm_call_tool にフォールバックした場合、空でないすべてのフィールドを読みやすい要約で表示し、案件 ID を目立つように表示してください。ユーザーが /update-deal を実行する際に必要です。
fetch_deal_by_deal_id は注記やリンクされた人物を含む全詳細を返します。ビューはそれらをレンダリングするため、ユーザーが尋ねた場合のみテキストで呼び出してください。
案件が見つからない場合:
「検索条件に合致する案件は見つかりません。別の企業名を試すか、フィルター条件を調整してください。」
合計数を記載し、remainingCount > 0 の場合はページネーション オプションを提供してください。
<!-- 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>
Search for deals in the Carta CRM. If the user provided an ID, fetch that deal
directly. Otherwise use search_deals with filters. Always surface the deal ID
so the user can reference it for updates.
Important: Call get_deal_fields before every search_deals call to discover
valid field IDs for filters. Do not skip this step.
Always call this before searching. It is a schema lookup with no view of its own, so it
goes through crm_call_tool:
crm_call_tool({ "name": "crm:get_deal_fields", "arguments": {} })
Read the field IDs, types, and descriptions carefully. Map the user's intent to the
most specific matching field(s) and use those in the filters parameter.
fetch_deal_by_deal_idsearch_dealsUse crm_view_tool so the result renders as an interactive table the user can sort and
click through. It takes exactly the same name and arguments as crm_call_tool.
By ID:
crm_view_tool({ "name": "crm:fetch_deal_by_deal_id", "arguments": { id: "<deal id>" } })
By filters:
crm_view_tool({
"name": "crm:search_deals",
"arguments": {
query: "<free-text search — last resort only>",
stages: ["<stage id>"],
filters: [
{ field_id: "<field id>", operator: "eq", value: "<value>" }
],
limit: 50
}
})
Prefer filters over query whenever a specific field matches the user's intent.
Available operators: eq, neq, gt, gte, lt, lte, contains, in, between.
Use stages to filter by pipeline stage (funnel, tracking, due-diligence, execution, dead, completed).
Increase limit or use offset to paginate if remainingCount > 0.
CRM views are enabled per organisation, so either call above may answer with:
CRM tool 'search_deals' 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.
When the view rendered, the user already sees every deal on screen. Do NOT re-list,
re-format, or summarise the rows as text — that duplicates the table. Answer the question
they actually asked, or acknowledge in one line (e.g. "8 deals in due diligence — the ID
is in the first column, for /update-deal.").
When you fell back to crm_call_tool, display all non-empty fields in a readable
summary and show the deal ID prominently — the user needs it to run /update-deal.
fetch_deal_by_deal_id returns full detail including all notes and linked people. The
view renders those, so only call them out in text if the user asked about them.
If no deals are found:
"No deals found matching your search. Try a different company name or adjust the filters."
Note the total count and offer to paginate if remainingCount > 0.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。