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:plugin-version --> <carta-plugin>carta-crm:1.15.0</carta-plugin>
Carta CRM内の案件を検索します。ユーザーがIDを指定した場合はその案件を直接取得し、それ以外の場合はフィルター機能を使って検索します。ユーザーが後で更新する際に参照できるよう、常に案件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行で認識してください(例:「営業段階(Due Diligence)の案件が8件です — 最初の列にIDがあり、/update-dealで使用できます」)。
crm_call_toolにフォールバックした場合、空でないすべてのフィールドを読みやすい形式で表示し、案件IDを目立つように示してください — ユーザーが/update-dealを実行するために必要です。
fetch_deal_by_deal_idはメモやリンク先の担当者を含むすべての詳細情報を返します。ビューがこれらをレンダリングするため、ユーザーが明確に質問した場合のみテキストで呼び出してください。
案件が見つからない場合:
「検索条件に一致する案件が見つかりません。別の企業名を試すか、フィルターを調整してください。」
件数の合計を記載し、remainingCount > 0の場合はページネーション対応を提案してください。
<!-- carta:plugin-version --> <carta-plugin>carta-crm:1.15.0</carta-plugin>
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 による自動翻訳です。