MCP App Store
by KeenEthics
Business & Operations
Demandbase icon

Demandbase

by Demandbase Inc

Overview

Demandbase integration with ChatGPT and Codex gives sales, marketing, and GTM teams seamless access to rich B2B data directly within ChatGPT and Codex for faster account research, prospecting, and engagement. This app connects ChatGPT and Codex to Demandbase via a secure MCP connection, giving you access to both first-party and third-party data. Third-Party Data (3P): Search and retrieve industry-leading company and contact data from Demandbase, including firmographics, technographics, family trees, company news, and leadership profiles. First-Party Data (1P): Securely access your organization's Demandbase data, including known accounts, contacts, CRM entities, engagement, in-flight opportunities, intent signals, and buying-group data. Account Brief: Generate a single, consolidated account overview combining engagement state, opportunities, buying-group coverage, intent signals, company profile, and recent news in a single request. What you can do Search companies by name, location, size, revenue, or industry Discover decision-makers and influencers by role or job level Fetch full company profiles, including recent news and competitors Tap into 1P signals such as engagement, MQA status, and account activity Identify buying intent on specific topics or keyword sets over time Find net-new buying-group contacts that aren't already in your CRM Pull a complete account brief in a single request for fast meeting preparation Who it's for Sales reps looking for fast answers about target accounts in real time Marketing teams enriching leads and refining personas RevOps and Enablement teams embedding GTM intelligence into workflows AI product teams building agent-powered workflows Availability This integration is available to Demandbase customers with the appropriate Demandbase licenses and entitlements. To request access, please contact your Demandbase Customer Success Manager (CSM). For technical support, contact support@demandbase.com.

Tools

account_brief

ChatGPT
Build 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

ChatGPT
Demandbase 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

ChatGPT
Demandbase 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&#x27;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 (&quot;my contacts/leads&quot;, &quot;in our CRM/database/internal&quot;). Use netNew=true for &quot;net-new contacts&quot;, &quot;contacts not in CRM&quot;, &quot;new people for buying group&quot; 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 (&quot;all&quot;, &quot;top&quot;), time ranges (&quot;last week&quot;), intent words (&quot;analyze&quot;, &quot;rank&quot;) are NOT integers. No integer typed → ALWAYS omit. Integer typed → use it. Confidence gate (REQUIRED): self-rate 1–10 (tool+params); if &lt;8 STOP—ask 1–2 clarifying Qs; do NOT call. Clarify-first (REQUIRED): ask 1-2 Q BEFORE calling if (a) user mentions &quot;ICP&quot; — ALWAYS ask for their criteria (ICP is customer-defined), (b) user says &quot;prospects&quot; without clear scope, (c) ambiguous collective like &quot;decision-makers&quot; 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&#x27;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 (&quot;CTO&quot;/&quot;Chief Technology Officer&quot;); use jobFunctions+jobLevels for roles (e.g., sales+manager). includeData by depth: personal details→[&quot;businessIdentity&quot;], current role→[&quot;currentEmploymentRecord&quot;], job history→[&quot;otherEmployments&quot;], full background→all three. Location mapping (REQUIRED): contact&#x27;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=&#x27;persona&#x27; or &#x27;buyerRole&#x27; 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

ChatGPT
Fetch 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

ChatGPT
Internal 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

ChatGPT
Internal 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

Claude

company_global_directory

Claude

contact_global_directory

Claude

get_demandbase_reference_data

Claude

search_internal_account_database

Claude

search_internal_person_database

Claude

submit_feedback

Claude

Example Prompts

Click any prompt to copy it.

App Stats

13

Tools

3

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily