• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialproductivity

search-contacts

プラグイン
carta-crm
ソース
GitHub で見る ↗
説明

Carta CRM(顧客管理システム)から連絡先(人物)のレコードを検索して取得するスキルです。 **次のような場合に使用:** - 「連絡先を探して」 - 「〇〇さんについて詳しく教えて」 - 「〇〇さんの連絡先詳細を表示して」 - 「〇〇という企業の人物を探して」 - 「連絡先を一覧表示して」 - 「IDで連絡先を取得して」 などと言われた場合 ID番号、名前、メールアドレス、職位、所属企業、タグなど、連絡先の詳細情報を返します。 取得した連絡先IDは、「連絡先を更新」スキルで使用することができます。

原文を表示

Searches for and retrieves contact (people) records from the Carta CRM. Use this skill when the user says things like "find a contact", "search contacts", "look up a person", "show me contact details for [name]", "full details on [name]", "tell me about [name]", "get contact by ID", "list contacts", "find people at [company]", "search people", or "/search-contacts". Returns contact details including ID, name, email, title, company, and tags. The contact ID returned can be used with the update-contact skill.

ユースケース
  • 連絡先を検索・取得するとき
  • 人物の詳細情報を確認するとき
  • 企業に属する人物を探すとき
  • 連絡先を一覧表示するとき
  • IDで連絡先を取得するとき
本文(日本語訳)

Carta CRM概要

Carta CRMの連絡先を検索できます。一人の人物についての検索であれば、その人物の詳細情報を表示します。複数人についての検索であれば、表にして表示します。まずこの違いを見分けることが重要です。以降の操作はすべてこの判別で決まります。

ステップ1 — 検索内容の判別:一人か複数か?

  • 詳細表示 — ユーザーが一人の人物を指定して詳細情報を求めている:「田中太郎の詳しい情報を教えて」「山田花子について教えて」「この人物の詳細」「田中太郎とは誰?」→ ステップ2へ進む
  • リスト表示 — ユーザーが複数人、フィルタ済みの結果、または複数人の結果を求めている:「Acme社の人物」「営業パイプラインの連絡先」「連絡先一覧」→ ステップ3へ進む
  • IDで検索 — ユーザーが連絡先IDを指定している → ステップ2へ進む(名前の解決をスキップ)

ユーザーが「検索」や「探して」と言っていても、一人の人物を指定していれば詳細表示です。判断が難しい場合は、リスト表示として扱い、何を絞り込みたいのかをユーザーに聞いてください。

ステップ2 — 詳細表示:名前を解決して、詳細情報を表示

必ずcrm_call_toolを使い、crm_view_toolは使わないでください。 このステップはユーザーのためではなく、あなたが情報を確認するためのものです。ビュー呼び出しを使うと、結果に含まれるすべての配列が数値に変換されてしまい、個別の行データと必要なIDが得られず、ユーザーが求めていないリスト表示をしてしまいます。

crm_call_tool({
  "name": "crm:search_contacts",
  "arguments": { query: "<人物の名前>", limit: 10 }
})

その後、マッチ結果の件数によって分岐します:

  • 完全に1件一致 → その人物の詳細を表示して終了:
    crm_view_tool({ "name": "crm:fetch_contact_by_id", "arguments": { id: "<id>" } })
    
  • 複数件一致 → 推測せず、候補をリスト表示して確認してください:
    crm_view_tool({
      "name": "crm:search_contacts",
      "arguments": { query: "<人物の名前>", limit: 10 }
    })
    
    その後、「複数の連絡先が見つかりました。どちらのことですか?」と聞いてください。ユーザーが選んだら、その人物に対してfetch_contact_by_idを呼び出してください。CRMでは同姓同名は珍しくないため、ユーザーが指定していない最初の1件を勝手に表示すると、間違った人物を確信をもって見せてしまいます。
  • マッチなし → その旨を伝えてください。空のリスト表示はしないでください。

ユーザーがIDを直接指定した場合、名前の解決は不要です。1回の呼び出しで1人分の詳細を表示してください。

1回のリクエストにつき、詳細情報は最大1人分だけ表示します。ユーザーが複数人を指定した場合は、複数の詳細を積み重ねるのではなく、どの人物を表示するか聞いてください。

ステップ3 — リスト表示:検索して表をレンダリング

crm_view_tool({
  "name": "crm:search_contacts",
  "arguments": {
    query: "<検索キーワード>",
    limit: 20
  }
})

ユーザーが特定のリストやフォルダを名前で指定している場合は、先にその名前をリストIDに変換してから、list_idを検索に渡して結果を絞ってください。この検索専用のビューはないため、crm_call_toolを使います:

crm_call_tool({ "name": "crm:get_contact_lists", "arguments": {} })

ユーザーがさらに多くの結果を見たいと言ったら、limitを増やしてください。ページネーション(複数ページ表示)にはoffsetを使います。

ビューが利用できない場合

CRM機能は組織ごとに有効・無効が設定でき、1人分の詳細ビューはさらに追加の設定が必要です。そのためcrm_view_toolを呼び出すと以下の回答が返ることがあります:

CRM tool 'search_contacts' has no view — call it with crm_call_tool instead.

これは失敗ではなく正常な応答です。この組織ではそのビューが有効になっていません。その呼び出しを同じ内容でcrm_call_toolを使って再実行し、結果をテキストとして提示してください(ステップ4参照)。crm_view_toolの再実行はせず、ユーザーにこのメッセージは伝えないでください。

詳細表示のリクエストでカードのビューが利用できない場合も、解決方法は同じです:ステップ2のcrm_call_toolによる名前解決をそのまま進め、選ばれた記録をテキストで提示してください。

ステップ4 — 結果の提示

カード(詳細)が表示された場合、ユーザーは全項目を見ることができます。項目の内容を繰り返さず、ユーザーの質問に答えるか、1行で確認するだけにしてください。

テーブル(リスト)が表示された場合、ユーザーはすべての行を既に見ています。内容を再度列挙したり、形式を変えたり、要約をテキストで説明しないでください。テーブルとの重複になります。代わりに、ユーザーが実際に知りたいことに答えるか、1行で確認してください(例:「23件の連絡先が見つかりました。ID は最初の列に表示されており、/update-contact で使用できます」)。

crm_call_toolにフォールバック(切り替え)した場合、名前、肩書き、企業名、メールアドレス、電話番号、タグなど、空でないすべての項目を読みやすい形式で表示してください。ユーザーが/update-contactを実行する際に必要なため、IDは目立つように表示してください。

fetch_contact_by_idは関連する案件や備考も返します。ビューではそれらも表示されますが、ユーザーが特定の人物のコンテキスト情報を求めているなら、テキストでも呼び出してください。

連絡先が見つからない場合:

「検索に一致する連絡先が見つかりません。別の名前、メールアドレス、またはキーワードを試してください。」

原文(English)を表示

<!-- carta:plugin-version --> <carta-plugin>carta-crm:1.15.0</carta-plugin>

Overview

Look up contacts in the Carta CRM. A request about one named person renders that person's card; a request for a set renders a table. Route on that distinction first — it decides every call below.

Step 1 — Determine intent: one person, or a set?

  • Detail — the user named one person and wants the record: "full details on Jane Doe", "tell me about Ihar", "more on this contact", "who is Jane Doe". → Step 2.
  • List — the user wants a set, or filtered or plural results: "people at Acme", "contacts in my pipeline", "list contacts". → Step 3.
  • By ID — the user gave a contact ID → Step 2, skipping the resolve.

A named single person 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.

Step 2 — Detail: resolve the name, then render the card

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_contacts",
  "arguments": { query: "<person's name>", limit: 10 }
})

Then branch on how many candidates came back:

  • Exactly one match → render its card and stop:
    crm_view_tool({ "name": "crm:fetch_contact_by_id", "arguments": { id: "<id>" } })
    
  • Several matches → do NOT guess. Render the candidates as a view and ask which one:
    crm_view_tool({
      "name": "crm:search_contacts",
      "arguments": { query: "<person's name>", limit: 10 }
    })
    
    Then ask: "Several contacts match — which one did you mean?" When they pick, call fetch_contact_by_id for it. Namesakes are common in a CRM, so opening the top hit unasked shows the wrong person with full confidence.
  • No match → say so; do not render an empty view.

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 people, ask which to open rather than stacking views.

Step 3 — List: search and render the table

crm_view_tool({
  "name": "crm:search_contacts",
  "arguments": {
    query: "<search term>",
    limit: 20
  }
})

If the user mentions a specific list or folder by name, resolve the name to a list ID first, then pass list_id to narrow the search. This lookup has no view of its own, so it goes through crm_call_tool:

crm_call_tool({ "name": "crm:get_contact_lists", "arguments": {} })

Increase limit if the user asks to see more results. Use offset to paginate.

If the view is unavailable

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_contacts' 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.

Step 4 — Present results

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 23 contacts — the ID is in the first column, for /update-contact.").

When you fell back to crm_call_tool, display all non-empty fields in a readable summary — name, title, company, email, phone, and tags — and show the ID prominently, since the user needs it to run /update-contact.

fetch_contact_by_id also returns related deals and notes. The view renders those, but call them out in text if the user is asking for context on a specific person.

If no contacts are found:

"No contacts found matching your search. Try a different name, email, or keyword."

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。