• 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/スキル
SKILLKnowledge Workproductivity

search-contacts

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

Carta CRM(顧客関係管理システム)から連絡先(人物)の記録を検索して取得します。 **次のような場合に使用:** - 「連絡先を探して」 - 「連絡先を検索」 - 「この人の情報を調べて」 - 「[名前]の連絡先詳細を表示」 - 「[名前]の詳しい情報」 - 「[名前]について教えて」 - IDで連絡先を取得 - 連絡先一覧を表示 - 「[企業名]にいる人を探して」 - 人物を検索 - /search-contacts 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.

ユースケース
  • 連絡先を名前で検索したい
  • 連絡先のメールアドレスを調べたい
  • 特定の企業に属する人物を探したい
  • 連絡先の詳細情報を取得したい
  • 連絡先一覧を表示したい
本文(日本語訳)

Carta CRM プラグイン(バージョン 1.14.2)

概要

Carta CRM(顧客管理システム)に登録された連絡先を検索します。特定の1人の人物についての質問であればその人の情報カード、複数人のグループであれば表形式で表示します。最初にこの区別を判断してください。それが以降のすべての処理を決定します。

ステップ1 — 質問の種類を判定:1人ですか、複数人ですか?

  • 詳細表示 — ユーザーが特定の1人を指名していて詳細情報を求めている場合:「田中太郎の詳細」「山田さんについて教えて」「この連絡先についてもっと知りたい」など → ステップ2へ
  • リスト表示 — ユーザーが複数人、または絞り込まれた結果を求めている場合:「アクメ社の担当者」「パイプラインの連絡先」「連絡先を一覧で」など → ステップ3へ
  • IDで指定 — ユーザーが連絡先IDを直接指定している場合 → ステップ2へ(名前解決をスキップ)

ユーザーが特定の1人を指名している場合は、「検索して」「探して」という言い方でも詳細表示の要求です。本当に不明な場合は、リスト表示として扱い、何に絞り込むかをユーザーに確認してください。

ステップ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 }
    })
    

    そして「複数の連絡先がマッチしました。どちらですか?」と聞いてください。ユーザーが選んだら、その人物のIDでfetch_contact_by_idを呼び出します。CRMでは同姓同名がよくあるため、確認なしに最初の候補を開くと、間違った人物を確信を持って表示することになります。

  • マッチなし → その旨を伝えてください。空のビューは表示しないでください。

ユーザーが直接IDを指定した場合は、解決の必要はありません。1回の呼び出しで1枚のカードを表示するだけです。

1回の質問につき、最多で1枚のカードを表示します。ユーザーが複数人を指名した場合は、複数のビューを重ねるのではなく、どの人物のカードを開くかを聞いてください。

ステップ3 — リスト表示:検索して表形式で表示

crm_view_tool({
  "name": "crm:search_contacts",
  "arguments": {
    query: "<検索語>",
    limit: 20
  }
})

ユーザーが特定のリストやフォルダを名前で言及した場合は、その名前をリストIDに解決してから、そのIDを検索に渡して結果を絞り込みます。この名前解決自体にはビューがないため、crm_call_toolを使います:

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

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

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

CRM ビューは組織ごとに有効化され、個別レコードビューはさらにその上に別フラグで制御されています。そのため上記のcrm_view_tool呼び出しは以下の応答を返すかもしれません:

CRM tool 'search_contacts' has no view — call it with crm_call_tool instead. (CRM ツール「search_contacts」にはビューがありません。crm_call_tool で呼び出してください。)

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

カードがビューなしの詳細リクエストでも、解決方法は同じです。ステップ2のcrm_call_tool解決を続けて、選ばれたレコードをテキストとして表示してください。

ステップ4 — 結果を表示

カードが表示された場合、ユーザーはレコード全体を見ています。そのフィールドを改めて述べないでください。ユーザーが聞いたことに答えるか、1行で確認を示してください。

テーブルが表示された場合、ユーザーはすべての行をすでに見ています。テキストで改めてリストアップしたり、書き直したり、要約したりしないでください。テーブルが重複してしまいます。ユーザーが実際に聞いている質問に答えるか、1行で確認を示してください(例:「23件の連絡先が見つかりました。最初の列にあるIDは/update-contactで使用できます」)。

crm_call_toolにフォールバック(代替処理)した場合、空でないフィールドをすべて読みやすい形で表示してください。名前、役職、会社、メールアドレス、電話番号、タグを含め、IDは目立つように表示してください。ユーザーが/update-contactを実行するときに必要になります。

fetch_contact_by_idは関連する取引機会(案件)とメモも返します。ビューはそれらを表示しますが、ユーザーが特定の人物についてのコンテキスト(背景情報)を求めているなら、テキストで呼び出してください。

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

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

原文(English)を表示

<!-- carta:plugin-version --> <carta-plugin>carta-crm:1.14.5</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 による自動翻訳です。