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). 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) 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. Unsupported analytics (YoY financials, quarterly trends, CAGR) are NOT available — explain and ask what profile data they'd like instead before calling. 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. Data types: basicCorporateProfile=name,description,revenue etc.; industryClassifications=industry codes; contactPoints=website,address,phone,etc.; familyTree=structure; competitors; installedTech; news. IMPORTANT: By default core profile will be returned. Add other types only if explicitly requested. Use only tool-returned data. Range: >50→"51,"; <50→",49" (employeesRange/revenueRange in millions). Example: company_global_directory(companyName="Apple Inc.", includeData=["competitors","news"], newsCategories=["ACQUISITIONS"]).
contact_global_directory
ChatGPTDemandbase contact catalogue search + fetch. 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"). 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. 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 tenant-configured reference data: account lists. Tool selection (REQUIRED): use to list/browse/resolve account lists or get their IDs before calling another tool. Do NOT use to search accounts, contacts, or companies. Name lookup (REQUIRED): for "details of <name>" always fetch the FULL list (no filters) and match client-side. FILTERS: accountListFilters only — keys: name (contains), ownedBy (equals/exact), isPublic ('true'/'false'), numberOfAccounts (range str: 'min,max'|'min,'|',max'|'exact'). No filters for any other type (do NOT invent parameters). Pagination (CRITICAL): NEVER set queryOptions.limit unless the user types an explicit number. No integer typed → ALWAYS omit. Integer typed → use it.
search_internal_account_database
ChatGPTInternal account database search (CRM/ABM). Use for "MY accounts" / "OUR database". Default for "accounts" unless user explicitly asks external/global/Demandbase. Tool selection (REQUIRED): default for "accounts" unless user explicitly asks external/global/Demandbase; if the request references internal sales/CRM state (e.g., "we aren't talking to", "engaged sales", owner, journey stage, pipeline/opportunities), use this tool even if the user says "companies". If intent is global/public/catalogue → use Demandbase company catalogue (don't call this tool). Account list filter (REQUIRED): resolve list name via get_demandbase_reference_data first, then pass as accountListNames. Pagination (CRITICAL): NEVER set queryOptions.limit 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 ANY call if (a) account/company name is a single common word with no domain/location, (b) score/range is expressed qualitatively ("high"/"likely"/"low") — NEVER assume a numeric value, (c) a collective role like "decision-makers" is used without titles/levels, (d) user mentions "ICP" — ALWAYS ask for their criteria (ICP is customer-defined), or (e) revenue is in shorthand (">1B", ">100M") — confirm USD annual revenue before calling. Range/date handling (REQUIRED): numeric X>Y range → swap to Y,X and proceed. Date start>end → ask before calling. Boolean not clearly true/false → ask and do NOT call. "before X" → ",X-1day"; "after X" → "X+1day,". "status" ambiguous → clarify journeyStage vs accountStatus. FILTER FORMATS: Ranges "min,max"|"min,"|",max"|"val"(exact); Dict text {"value":"a,b","operator":"in"}(default in); OPERATORS: Strings none; Lists in/notIn(default in); Booleans equals; ranges use range syntax only. NOT SUPPORTED: intent data, buying groups, activities, campaigns, creative; any write/create/enrich actions. DEFINITIONS: MQA=Marketing Qualified Account. CROSS-TOOL IDs: "Match Company ID" = companyIds in company_global_directory. RANGE TRANSLATION: "over/greater than X"→X+1; "less than X"→X-1; "at least X"→"X,"; "at most X"→",X". 0–1 scores as %: ">80"→"0.81,", "<50"→",0.49", exact "0.94"→"0.94". Multiple conflicting constraints → use most restrictive. EXAMPLES: over 80% pipeline→pipelinePredictScoreRange="0.81,"; between $1M-$5M→revenueRange="1000000,5000000"; before June 30, 2023→closedOpportunityDateRange=",2023-06-29". Empty Result Fallback (REQUIRED): if {"data": []}, say no internal results; ask permission once to try Demandbase company catalogue with same filters (no auto-fallback).
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 — 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) engagement time window is unsupported (only 7 days exists — do NOT silently substitute), (c) role label is collective/ambiguous ("decision-makers") without concrete constraints, or (d) job title/level/function is unclear. 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. Global intent: ICP/prospecting/public catalogue → use Demandbase contact catalogue (don't call this tool). FILTER FORMATS: Strings (firstName/lastName/email/jobTitle/accountName/ownerName); Dict text {"value":"a,b","operator":"in"}(default in); Ranges "min,max"|"min,"|",max"|"exact". OPERATORS: Strings none; Lists in/notIn(default in); DEFINITIONS: MQL=Marketing Qualified Lead. NOT SUPPORTED: person lists, intent data, buying groups, activities, campaigns, creative; any write/create/enrich actions. EXAMPLES: "Find my contact John Smith"→firstName="John",lastName="Smith",leadOrContact=["Contact"]; "top MQLs"→leadOrContact=["Lead"],queryOptions={"order":"engagementMinutesLast7Days desc"}. Empty Result Fallback (REQUIRED): if {"data": []}, say no internal results; ask permission once to try Demandbase contact catalogue with same filters (no auto-fallback).