account_brief
ChatGPTBuild an account brief from the customer's CRM/ABM account database and Demandbase company context: account state, signals, opportunities, buying-group coverage, intent data, profile, and news. Use for account overview, account brief, account 360, meeting prep context, or "summarize this account" requests. Pass accountId when available; use accountName/domain only when ID is not yet known.
company_global_directory
ChatGPTDemandbase company catalogue search + fetch. Tool selection (REQUIRED): use for external/global company searches; do not use for "accounts" (use search_internal_account_database for internal/CRM/tenant). ALSO use this tool for intent/research queries (e.g., "what topics is X researching", "what is X interested in") — either as primary tool or as automatic fallback when the internal tool returns no intent results. Pagination (CRITICAL): NEVER set queryOptions.perPage unless the user types an explicit number — scope/time/intent words ("all", "top", "last week", "analyze", "rank") are NOT integers. Confidence gate (REQUIRED): self-rate 1–10 (tool+params); if <8 STOP—ask 1–2 clarifying Qs; do NOT call. Clarify-first (REQUIRED): ask 1-2 Q BEFORE calling if (a) user mentions "ICP" — ALWAYS ask for their criteria (ICP is customer-defined), (b) company name is a single ambiguous word with no domain/country, or (c) enrichment/news depth is unclear. NOTE (REQUIRED): filtering on familyTree/competitors is not supported — explain and do NOT call. Financial analytics (YoY financials, quarterly trends, CAGR, EBITDA, margins, income statement, SEC filings) belong to company_financials — call that instead; the revenue returned here is a single static profile value, not a time series. Mapping rules: preserve entity strings as-is (e.g., "Inc."). Strict inequalities: "over 500"→"501,". revenueRange is in millions: "$1B"→"1000", "over $1B"→"1001,". Ambiguous location → clarify before calling. Location filter (REQUIRED): ALWAYS call get_demandbase_reference_data with referenceTypes=['country'] or ['state'] FIRST to resolve the canonical name, then pass it in location. News categories filter (REQUIRED): ALWAYS call get_demandbase_reference_data with referenceTypes=['newsCategories'] FIRST to resolve the enum Value, then pass it. Do NOT guess enum values. Use get_demandbase_reference_data for getting keywordSetIds and keywords. Data types: basicCorporateProfile=name,description,revenue etc.; industryClassifications=industry codes; contactPoints=website,address,phone,etc.; familyTree=structure; competitors; installedTech=technology stack; news; intent=researched keywords with strength and trending signals; itSpend; Industry filter (REQUIRED): ALWAYS call get_demandbase_reference_data with referenceTypes=['industry'] FIRST, even if the name looks correct. Pass only the resolved name in industries. IMPORTANT: By default core profile will be returned. Add other types only if explicitly requested. Use only tool-returned data. Example: company_global_directory(companyName="Apple Inc.", includeData=["competitors","news"], newsCategories=["ACQUISITIONS"]).
contact_global_directory
ChatGPTDemandbase contact catalogue search + fetch with net-new contacts in a particular account which are not present in the CRM and are part of buying group. When netNew=false (default): standard contact search/fetch When netNew=true: finds contacts in an account's buying groups who are NOT in your CRM. Use companyName as the account name or provide netNewAccountId directly. Tool selection (REQUIRED): default for generic contact searches + prospecting (no internal indicators). Use internal person tools only when user explicitly signals internal scope ("my contacts/leads", "in our CRM/database/internal"). Use netNew=true for "net-new contacts", "contacts not in CRM", "new people for buying group" requests. Pagination (CRITICAL): NEVER set queryOptions.perPage unless the user types an explicit number — inferring it from prompt intent or completeness is FORBIDDEN. Scope words ("all", "top"), time ranges ("last week"), intent words ("analyze", "rank") are NOT integers. No integer typed → ALWAYS omit. Integer typed → use it. Confidence gate (REQUIRED): self-rate 1–10 (tool+params); if <8 STOP—ask 1–2 clarifying Qs; do NOT call. Clarify-first (REQUIRED): ask 1-2 Q BEFORE calling if (a) user mentions "ICP" — ALWAYS ask for their criteria (ICP is customer-defined), (b) user says "prospects" without clear scope, (c) ambiguous collective like "decision-makers" without concrete role constraints, (d) name-only search for a common name without disambiguating context (company/role/location), or (e) job level/function/title unclear. Industry/revenue/employees filter (REQUIRED): if the user's request includes any of these, FIRST call company_global_directory, THEN call this tool with companyIdsToInclude along with contact filters needed. Parameter defaults (REQUIRED): Use jobTitles for explicit titles ("CTO"/"Chief Technology Officer"); use jobFunctions+jobLevels for roles (e.g., sales+manager). includeData by depth: personal details→["businessIdentity"], current role→["currentEmploymentRecord"], job history→["otherEmployments"], full background→all three. Location mapping (REQUIRED): contact's location→contactLocation={country/state/city}; employer location→companyLocation={country/state/city}. Ambiguous scope→clarify before calling. BuyerRoles and personas are only valid when netNew=true. Use get_demandbase_reference_data with referenceType='persona' or 'buyerRole' to discover available names. Data types: businessIdentity=personal details; currentEmploymentRecord=current job; otherEmployments=job history. IMPORTANT: By default presonal details will be returned; add other types only if explicitly requested. Use only tool-returned data; do NOT add unrequested filter parameters.
get_demandbase_reference_data
ChatGPTFetch reference data: account lists, keyword sets, keywords, buying groups, personas, buyer roles, activity types, industry catalog, countries, job levels, job functions, news categories, states. Tool selection (REQUIRED): use to list/browse/resolve reference data or get account list IDs. Do NOT use to search accounts, contacts, or companies. Name lookup (REQUIRED): for "details of " fetch the FULL list and match client-side. GROUPING: accountList, activityTypes, industry, country, jobLevel, jobFunction, newsCategories, state, keywordSets, keywords must each be requested alone. buyingGroup, persona, buyerRole may combine. FILTERS: accountListFilters for accountList only. keywordFilters for keywordSets/keywords. Static types accept no filters/queryOptions. Pagination (CRITICAL): NEVER set queryOptions.limit unless the user types an explicit number. NEVER mention nextPageToken to the user.
search_internal_account_database
ChatGPTInternal account database search (CRM/ABM). Use for "MY accounts"/"OUR database". Tool selection (REQUIRED): default for "accounts" unless user explicitly asks external/global/Demandbase; if the request references internal sales/CRM state (owner, journey stage, pipeline/opportunities), use this tool even if the user says "companies". Global/public/catalogue intent → use Demandbase company catalogue; do NOT call this tool. Reference-first (REQUIRED) — for these four only: resolve via get_demandbase_reference_data BEFORE this call and pass only the resolved value — account list name → accountListNames; accountBuyingGroupFilters.buyingGroupName (referenceTypes=['buyingGroup']); persona/buyer-role NAMES → IDs (['persona']/['buyerRole']) for missingPersonaId/missingBuyerRoleId; industry name → demandbaseIndustry (['industry'], ALWAYS, even if the name looks correct). Everything else needs NO resolution — pass activity types, intent keyword shorthands ('competitive') and completenessScoreRange (0-100) straight through. Pagination (CRITICAL): NEVER set queryOptions.limit unless the user types an explicit number — scope/time words ("all", "top", "last week", "rank") are NOT integers. NEVER mention or describe nextPageToken to the user. Confidence gate (REQUIRED): self-rate 1–10 (tool+params); if <8 STOP—ask 1–2 clarifying Qs; do NOT call. Clarify-first (REQUIRED): ask 1-2 Q before ANY call if (a) account/company name is a single common word with no domain/location, (b) score/range is qualitative ("high"/"likely"/"low") — NEVER assume a numeric value, (c) a collective role like "decision-makers" lacks titles/levels, (d) user mentions "ICP" — ALWAYS ask for their criteria, or (e) revenue is shorthand (">1B", ">100M") — confirm USD annual revenue. Ranges/dates: "min,max"|"min,"|",max"|"val"(exact); "over/greater than X"→X+1; "less than X"→X-1; "at least X"→"X,"; "at most X"→",X"; "before X"→",X-1day"; "after X"→"X+1day,". 0–1 scores as %: ">80"→"0.81,", "<50"→",0.49", exact "0.94"→"0.94". Conflicting constraints → most restrictive. Numeric X>Y → swap to Y,X and proceed; date start>end → ask before calling; boolean not clearly true/false → ask and do NOT call; "status" ambiguous → clarify journeyStage vs accountStatus. Dict text filters {"value":"a,b","operator":"in"}; operators: strings none, lists in/notIn (default in), booleans equals, ranges none. NOT SUPPORTED: campaigns, creative; any write/create/enrich actions. Intent filters (CRITICAL): set only when the user explicitly says so — intentType (trending/keyword/keyword_set context), intentStrength (high/medium/low). Map "last N days" to the ISO date N days ago for intentDate. DEFINITIONS: MQA=Marketing Qualified Account. "Match Company ID" = companyIds in company_global_directory. Empty Result Fallback (REQUIRED): if {"data": []}, say no internal results; ask permission once to try Demandbase company catalogue with same filters. Intent Fallback (REQUIRED): for intent/research queries (e.g., "what topics is X researching"), if no intent results are returned, AUTOMATICALLY call company_global_directory with includeData=['intent'].
search_internal_person_database
ChatGPTInternal person/contact database search (CRM/Leads). Use for internal/CRM people queries; use Demandbase contact catalogue for ICP/prospecting/global contact discovery unless the user explicitly signals internal scope. Tool selection (REQUIRED): call this tool when the request clearly targets internal data ("my contacts/leads", "in our CRM/database/internal") OR uses internal-only fields (engagementMinutes*/leadOrContact). Do NOT treat "our ICP"/prospecting language as internal by itself. Pagination (CRITICAL): NEVER set queryOptions.limit unless the user types an explicit number — scope/time/intent words ("all", "top", "last week", "analyze", "rank") are NOT integers. NEVER mention or describe nextPageToken to the user. Confidence gate (REQUIRED): self-rate 1–10 (tool+params); if <8 STOP—ask 1–2 clarifying Qs; do NOT call. Clarify-first (REQUIRED): ask 1-2 Q BEFORE calling if (a) user mentions "ICP" — ALWAYS ask for their criteria (ICP is customer-defined), (b) engagement time window is unsupported (only 7 days exists — do NOT silently substitute), (c) role label is collective/ambiguous ("decision-makers") without buying group context or concrete constraints, or (d) job title/level/function is unclear. Job filter (REQUIRED): Do NOT pass jobLevels/jobFunctions without first calling get_demandbase_reference_data to resolve. Pass the Code (e.g., 'director', 'marketing'). Date phrasing: "before X"→",X-1day"; "after X"→"X+1day,". Lead vs Contact (REQUIRED): leads/MQLs/prospects→leadOrContact=["Lead"] (include "Anonymous Lead" when appropriate, e.g. ["Lead","Anonymous Lead"]); contacts→["Contact"]. "Top" default: no metric given → sort by engagementMinutesLast7Days desc, omit limit. Name handling: full name + clear internal scope → proceed. Common last name only or ambiguous full name (e.g., "John Smith") without company/email/location → ask for disambiguator first. Buying Group Filters (CRITICAL): memberStatus — NEVER default to 'CONFIRMED'; only set when user explicitly says "confirmed" or "suggested". buyingGroupName (REQUIRED) — resolve the buying group NAME via get_demandbase_reference_data (referenceTypes=['buyingGroup']) FIRST, then pass the exact resolved name; never guess. buyerRole/buyingGroupMemberPersona — pass the role/persona NAME directly; if unsure of the exact value, resolve via get_demandbase_reference_data (referenceTypes=['buyerRole'] / ['persona']) FIRST. FILTER FORMATS: Strings (firstName/lastName/email/jobTitle/accountName/ownerName), no operator; Dict text {"value":"a,b","operator":"in"}; lists in/notIn (default in); Ranges "min,max"|"min,"|",max"|"exact". DEFINITIONS: MQL=Marketing Qualified Lead. NOT SUPPORTED: person lists, intent data, campaigns, creative; any write/create/enrich actions. EXAMPLE: "Find my contact John Smith"→firstName="John",lastName="Smith",leadOrContact=["Contact"]. Empty Result Fallback (REQUIRED): if {"data": []}, say no internal results; ask permission once to try Demandbase contact catalogue with same filters (no auto-fallback).
account_brief
Claudecompany_global_directory
Claudecontact_global_directory
Claudeget_demandbase_reference_data
Claudesearch_internal_account_database
Claudesearch_internal_person_database
Claudesubmit_feedback
Claude