- Brand
- Centralize
- Category
- Sales & CRM
- Primary Subcategory
- B2B Sales CRM Platforms
Integration details
Description
Centralize helps enterprise sales teams build the relationships they need to win complex deals. Use the people, relationships, and engagement in your Centralize workspace to see where you stand, find who's missing, and plan your best way in. Bring shared account context into ChatGPT to prepare for meetings and decide who to engage next. View and edit existing Org Charts, find Warm Connections across your team, and request introductions from teammates who hold those relationships. You can also find and enrich contacts, set Buying Roles and contact sentiment, and create or edit notes and Tasks. Bundled skills cover the Org Chart Builder and all 14 workflows in the public Centralize skills library. They guide warm introductions, pipeline reviews, account expansion, event planning, enrichment comparisons, and territory analysis. Buyer persona and workspace setup workflows are also included. Supported data syncs through your existing customer relationship management integration. Write access includes editing Org Charts, creating and deleting Tasks, and sending introduction requests to teammates by Slack or email. Requires an existing Centralize account with MCP access. Your existing workspace permissions apply.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- B2B Sales CRM Platforms
- Secondary Subcategories
- None listed
- Brand
- Centralize
- Access
- Account required
- First tracked
- 2026-11-03
- Tool count
- 59
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Centralize
Get updates when Centralize’s Discoverability Score or category rank changes.
Competing in ChatGPT B2B Sales CRM Platforms
View Category59 tools agents can invoke
Activate inactive accounts that already exist in Centralize, including accounts synced from Salesforce or HubSpot. This matches the Activate flow on the Accounts page. Use `searchCustomers` to find `customerId`. Share the `url` of each account with the user. Tell the user which accounts `failed` lists and why they were not activated. For a missing domain, ask the user for a domain and retry with `domains`.
activateAccounts
Create and activate one or more accounts in Centralize, like the Add Accounts flow in the UI, and start contact import. Use `searchCustomers` first to avoid duplicates. Always tell the user which accounts in `notAddedDueToLimit` were skipped and why. Share the `url` of each account with the user. For organizations that sync accounts from a CRM, use `activateAccounts` on the existing accounts instead.
addAccounts
Create a saved account view (a filtered accounts list) in Centralize and return a link to it. Filters are stored and re-evaluated, so the view stays current as accounts change. Use `searchCustomers` first to confirm the criteria match the intended accounts.
createAccountView
Create a new contact function for the organization. Functions categorize contacts by job role (e.g. "Revenue Operations", "Solutions Engineering"). Provide example job titles and keywords to help the system classify contacts. By default the function is account-specific; set `isDefault` to true only to assign it to every account (O(accounts) write work). Use `listFunctions` to see existing functions first.
createFunction
Add up to 100 notes. Each note goes on one account (customer), opportunity, or contact. Notes sync to Salesforce or HubSpot when the org has CRM note sync turned on, the same as notes written in the app. Each note gets its own result, so one failed note does not stop the others.
createNote
Create an outreach request in Centralize: ask a teammate to send a message you drafted to an external contact. This is the same request the "Reach Out" modal creates — the sender is notified in Slack or by email, the request goes through your org's approval workflow when one is configured, and it is tracked in Centralize so it can be actioned or declined. Write the email yourself and pass it as `body` (plain text; blank lines become paragraphs) — Centralize does not rewrite it. Resolve `targetContactId` with `searchContacts` or `getWarmConnections`, and `senderContactId` with `listOutreachSenders` (it cannot be you). The request is live as soon as this returns — the `url` it returns is for reference, not confirmation. Track the outcome afterwards with `listOutreachRequests`.
createOutreachRequest
Create a new persona configuration for the organization. A persona defines a target buyer profile by combining a function (or custom function) with seniority levels. After creation, persona engagement is automatically computed. Use `listFunctions` to discover available functions and `listPersonas` to see existing personas.
createPersona
Create a manual workspace task. The task is assigned to the current user unless assigneeUserId is provided. Creation can notify teammates through Slack or email and sync the task to the connected CRM. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
createTasks
Preview and deactivate up to five accessible accounts in your authenticated workspace. Requires Admin or Owner access. First call with dryRun=true, a new requestId, and the current configurationVersion from getAccountActivationConfig. Show the preview and obtain explicit user confirmation. Then send the same arguments and previewToken with dryRun=false and confirmed=true. Reuse that requestId for retries. Stale or expired previews require a new preview. After OPERATION_FAILED, use a new requestId and preview. A configuration change found under the write lock is a terminal failure. Deactivation preserves charts, contacts, domain mappings, and historical work. It queues cleanup of account synchronization settings and saves admin exclusions where activation rules apply. CRM matches can be unknown and do not establish historical activation causes. Rule-based sync and unsupported identities require settings review.
deactivateAccounts
Permanently delete a workspace task. Only the assignee or creator can delete a task. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
deleteTasks
Explain current activation rule overlap for up to five accessible accounts. Requires Admin or Owner access. Evaluates nested logic through the CRM compiler, including conditions on the same opportunity. Reports explicit inclusions, main-rule matches, and admin exclusions. CRM errors, missing records, and unsupported rules are unknown. Removing a redundant explicit entry does not deactivate an account that still matches another rule. Current matches do not prove historical activation causes.
explainAccountActivation
Get the pre-built account context narrative for a customer account — the platform's synthesized history of where things stand. Returns stakeholders (role, sentiment, priorities), open threads (agreed next steps and whether they stalled), risks/objections, buying process (dated deal history — discovery, POCs, stalls, re-engagement), competitive, relationships, momentum (score/direction/why), coverage, and what changed since the last version, plus freshness (rebuiltAt / latestActivityAt). Use it to answer "get me up to speed", "catch me up", "where do things stand", "account history / status", or "full account review"-style requests. Returns { found: false } when no narrative exists for the account (only accounts with Recommended Actions enabled have one) — fall back to searchCustomers / listTouchpoints / searchMeetings. Pass a customerId returned by another MCP tool (e.g. searchCustomers).
getAccountContext
List the account-level custom fields configured for this organization. Use the returned `name` as `searchCustomers`'s `customFieldFilters[i].name`. For picklist fields, `picklistValues` enumerates the valid values. For reference fields (e.g. a User picker like 'CSM Owner'), `fieldReferenceTo` lists the referenced object types — the stored value is an external system ID, not a display name. For User-reference fields, `searchCustomers` resolves a person's name to the Salesforce User ID automatically, so you can pass the human name directly as the filter value. Returns an empty list for organizations without a Salesforce integration.
getAccountCustomFields
Return the most recent AI-generated call strategy for a customer, optionally scoped to a specific meeting.
getCallStrategy
Return the contact hierarchy (reporting relationships) for a customer.
getContactHierarchy
Get deal-scoped context for ONE opportunity — the structured backbone for "where does this deal stand?", "what's the most recent context on the [X] deal?", "catch me up on this opportunity", or "deal review"-style questions. Returns the deal's fields (name, stage, amount, close date, owner, next step), qualification/MEDDPICC (economic buyer, decision criteria, metrics, …), the deal roster (contacts + their role), and the ACCOUNT-level pre-built narrative backbone (stakeholders, open threads, risks, momentum, buying process — account-scoped, may reflect sibling deals; NON-citable). Synthesize these into a NARRATIVE that tells the deal's story — do NOT just list the fields. To cover what was actually DISCUSSED, ALSO call searchConversations for this deal's account (use the returned accountId) and quote/cite that content — this tool's narrative backbone is not itself a citable source. Pass an opportunityId returned by searchOpportunities. Throws "not found" when the deal is missing or not accessible.
getOpportunityContext
Return the customer's org chart as a flat list of nodes. Each node is a person (contact set), a group/department (groupName set), or a PLACEHOLDER (isPlaceholder true) — a seat the user knows exists but has not identified a person for yet. Treat a placeholder as a real position in the hierarchy (its children genuinely report to it), but never describe it as a person and never claim to know who fills it. Reconstruct the tree by joining on parentNodeId.
getOrgChart
Get one workspace task by its external ID.
getTask
Get Centralize usage over time for the organization: actions per week, weekly active users, and per-user activity totals for the window versus the preceding window of equal length — the "usage over time" product-metrics report. Set `includeFeatureBreakdown` to also get actions per feature per week. Weeks start on Monday, only whole weeks in range are returned, and the window may span at most 372 days. Usage data lands hourly and the aggregates refresh twice a day. Requires an enterprise plan.
getUsageOverTime
List warm connections — external contacts ("target contacts") at your accounts who are LinkedIn first-degree connections of a connector (someone connected to your organization, often an internal teammate but possibly an advisor or investor). This is the same data as the Connections page, one row per target↔connector pair. Filter by any column: `connectorName` (reverse lookup — every contact a named connector can introduce; resolves all of that person's connector records, so it works even for internal teammates who are not in contact search), `customerId` (account), `contactId` (a single target), free-text `name` (target name/title), `company` (the target's company/account), `connectorCompany` (the connector's employer — e.g. "all connections from Anthropic"), `seniority`, `function`, `location` (where the target lives, e.g. "San Francisco", "California", "US"), `relationshipStrength`, and `connectedAfter`/`connectedBefore` / `reachOutRequestedAfter`/`reachOutRequestedBefore` / `hasReachOutRequest` date filters. To filter by industry (or any other account attribute), use `customFieldFilters` — industry is stored as an account custom field; call `getAccountCustomFields` to find its API name. Results are strongest-relationship first.
getWarmConnections
List accounts that HAVE or HAVE NOT had touchpoints (emails, calls, meetings, Slack) in the last `daysBack` days — the "accounts with/without touchpoints" product-metrics report. Use it for coverage and whitespace questions ("which accounts went dark in the last 30 days?"). Returns the same materialized aggregates as the /product-metrics dashboard, which refreshes twice a day, so it is not real time — use `listTouchpoints` for live per-account activity. Requires an enterprise plan.
listAccountTouchpointCoverage
List the buying roles assigned on a customer account — who is the Economic Buyer, Champion, Influencer, and so on. Covers both levels: roles set on the account as a whole (opportunityId null) and roles set on a specific opportunity (opportunityId populated). Also returns availableRoles, the organization's full role taxonomy, which is what setContactBuyingRoles accepts — the names are org-specific, not a fixed list.
listBuyingRoles
Discover Centralize skills and workflows, including org chart building, warm paths, pipeline review, customer expansion, and event planning. Load the matching workflow with getSkill before applying it. This lists static instructions; it does not read customer data or run a workflow.
listSkills
List the organization's contact tags: the labels reps put on contacts within an account, shared by every account in the organization. Returns up to 50 tags by name. Pass query to get only the tags whose names are similar to it, best match first, which is how to check whether a tag already exists before calling tagContacts.
listContactTags
List the organization's contact functions. Functions categorize contacts by job role and are used when creating personas and filtering contacts. Returns both default (org-wide) and account-specific functions with their descriptions, example job titles, and keywords.
listFunctions
Export explicit account activation entries for your authenticated workspace. Requires Admin or Owner access. Read all pages until nextCursor is null, including empty pages. Reconstruct records by kind and key, joining jsonFragment parts in order. Account records appear once; reference records retain every matching clause and its independent flag. A constrained identity filter is not an activation exception. Entry-resolution records report missing, ambiguous, malformed, and unsupported identities. Unknown candidate accounts are not confirmed manual inclusions. Names are not unique identities. If retryable is true, pause and retry nextCursor. Usage keeps existing plan and account-access checks. Metrics refresh twice a day; missing refresh times remain unknown. Touchpoints measure relationship activity, not product usage.
listIndividualAccountActivations
List job changes — tracked contacts who left a job (and where they went) within a date range. Use this to export job changes (e.g. to a spreadsheet or Slack). Optionally filter by account, by a single contact, or by a month range (startDate/endDate are rounded to whole months, matching the in-app Job Changes page). Results are newest-first and paginated via the opaque `cursor`.
listJobChanges
List workspace users and their LinkedIn connection sync status. Owner, Admin, Member, and Read roles can view these statuses, as on Integrations → LinkedIn Connections. Partners cannot. Use synced=false for users without synced connections. lastSyncedBefore excludes users who never synced. Results use descending user ID order.
listLinkedInSyncStatus
List notes attached to a contact, customer, or opportunity. Optionally filter by free-text query.
listNotes
List org chart adoption per account: how many contacts are on the chart, the contact count by seniority, when it was last edited and by whom — the "org chart usage" product-metrics report. Use it for coverage questions ("which accounts have no org chart or a stale one?", "where is the C-suite missing?"). Returns materialized aggregates that refresh twice a day; use `getOrgChart` for the live chart of a single account. Requires an enterprise plan.
listOrgChartUsage
List outreach requests you have created (the Sent Requests page) with their current status, so you can follow up on whether each one was actioned or declined. Statuses: APPROVAL_NEEDED (waiting on an internal approver), PENDING (sender notified, no response yet), ACCEPTED (sender agreed to send), DONE (sender confirmed it went out), DECLINED (sender said no — `declineReason` explains why). Filter by `status`, `targetContactId`, `customerId`, or `createdAfter`. By default only outreach requests are returned; pass `includeIntroductions` to also get warm-intro requests.
listOutreachRequests
List the teammates who can send an outreach request — internal members of your organization, excluding you (an outreach request always asks someone else to send the message). Use this to resolve the `senderContactId` for `createOutreachRequest`; internal teammates are not reliably returned by `searchContacts`, which covers external contacts at your accounts. Filter by name with `query`.
listOutreachSenders
List the organization's persona configurations. Each persona defines a target buyer profile with a function, seniority levels, and optional business context. Use this to understand which buyer profiles the org is tracking engagement for.
listPersonas
List the seniority levels available for personas. Returns the built-in base seniorities (pass these to createPersona's `seniorities`) and the org's custom seniorities (pass their names to createPersona's `customSeniorityNames`). Use this before createPersona to choose seniorities.
listSeniorities
List workspace tasks that the user can access. Use filters to find tasks before reading, updating, or deleting one.
listTasks
List touchpoints (emails, calls, Slack, meetings) for a customer or contact. Supports date-range filters and cursor pagination.
listTouchpoints
Read account activation settings, count, limit, and paginated rule records for your authenticated workspace. Requires Admin or Owner access. Read all pages. Concatenate jsonFragment parts by path to reconstruct each rule node. Group records retain conjunction and childCount. Child-object records retain their group path. Clause references use root paths and value indices together with configurationVersion. The count includes accessible accounts only.
getAccountActivationConfig
Load the complete instructions for a skill returned by listSkills. Use it for a named workflow or a matching user request. Read the instructions, check current tool schemas and permissions, and apply the workflow within the user-authorized scope. Loading a skill does not run tools, grant access, authorize writes, or send notifications.
getSkill
Return AI-suggested next actions for an account (customer). Active only. If none exist, generation is kicked off in the background — the caller should retry in a minute or two.
recommendNextActionsForAccount
Return AI-suggested next actions for an opportunity (deal). Active only. If none exist, generation is kicked off in the background — the caller should retry in a minute or two.
recommendNextActionsForOpportunity
Preview and remove up to five selected explicit activation entries in your authenticated workspace. Requires Admin or Owner access. First call with dryRun=true and a new requestId. Show the preview and obtain explicit user confirmation. Then send the same requestId, selections, configurationVersion, and previewToken with dryRun=false and confirmed=true. Reuse the requestId for retries. Expired or changed previews require a new preview; use a new requestId after a terminal failure. Unknown or ambiguous entries cannot be committed. Removing an entry does not immediately deactivate accounts or guarantee reduced usage: another inclusion can keep the account active. Rule changes converge through the existing scheduled rules process. Charts, contacts, and account records are preserved.
removeIndividualAccountActivations
Remove a node — a contact, a group/business-unit, or a placeholder — from the customer's org chart. Identify it by nodeId (from getOrgChart, or the groupNodeId returned by setOrgChartManagers) or, for a business unit, by groupName; provide exactly one. Removing a group is how you rename or replace a business unit: remove it, then re-create the replacement with setOrgChartManagers (groupParentContactId / groupParentGroupName) and re-attach its members. Any children of the removed node are re-parented to the removed node's parent (or the company root); they are NOT deleted. The company root node cannot be removed. Removing a contact node also clears that contact's influencer (dotted-line) relationships. This only removes the contact from the CHART — it does not delete the contact record or its association with the customer. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
removeOrgChartNodes
Search customers (accounts) by free-text query, Account Owner, or custom fields. Pass `owner` with a person's name (e.g. 'Hunter Flynn' or just 'Hunter') to filter by Account Owner — matches the customer's Account Owner field only (the Contact-typed owner; sales-manager / success-manager are separate roles and are not searched). For other owner-like roles (CSM Owner, Renewal Owner, etc.) use `customFieldFilters` — call `getAccountCustomFields` first to discover the field's API name. For User-reference custom fields like CSM Owner you may pass the person's NAME as the value (e.g. 'Nicole Tettke'); the server resolves it to the underlying Salesforce User ID(s), so you do not need to look the ID up yourself. Each result includes an `owner` summary identifying who owns the account. Each result includes `url`, a deep link to the account map in Centralize, and `crmId`, the account's id in the connected CRM (Salesforce or HubSpot). Returns a paginated list.
searchCustomers
Search contacts by free-text query, customer, function, seniority, or location. Function and seniority are matched against the organization's custom taxonomy (case-insensitive name match) and apply to the contact–customer relationship, not the contact globally. Pass `location` to filter contacts whose physical location is within `locationRadiusMiles` (default 25) of the named place — the place is resolved to coordinates via Google Geocoding, so any city/region/country/landmark works ('New York', 'Paris', 'Bay Area', 'LAX'). For 'within 50 miles of LA', set `location: 'Los Angeles'` and `locationRadiusMiles: 50`. Each result includes the contact's current title, location, full job history, and every email address on record (`emails` array, primary first; the primary is also in `email`). Contacts with no email address on record automatically get background enrichment. This pass can overwrite profile fields and merge duplicate contacts when identity merging is enabled. The enrichment result is asynchronous: the per-result `enrichmentStatus` field is `'triggered'` when a fresh enrichment pass was started, or `'in_progress'` when one was already running (not re-triggered). Either way, re-run the search after a few minutes to pick up any discovered email addresses — the response `message` summarizes.
searchContacts
Retrieve raw conversation content (call transcripts, email bodies) filtered by account, contact, touchpoint, communication type, or time. Results are ordered newest-first and capped by a token budget per call — use the returned cursor to fetch older content. Provide at least one of customerId, contactId, or touchpointId.
searchConversations
Search calendar meetings for an account or contact. Returns meeting metadata and attendees grouped into internal (people in your organization) vs external (prospects/customers/partners). Date range is inclusive. Does NOT return raw transcript content — call searchConversations for that. Provide at least one of customerId or contactId.
searchMeetings
Search sales opportunities (deals) by account, owner, name, stage, type, close-date range, or closed status. All filters are optional and combine with AND. Excludes soft-deleted opportunities.
searchOpportunities
Set the buying roles for a contact — the contact's role in the deal (e.g. Economic Buyer, Champion, Influencer), distinct from the Supporter/Neutral/Detractor disposition set by updateContactSentiments. Roles are set on the customer account by default; pass opportunityId to bind them to a specific opportunity instead. Role names are matched case-insensitively against the organization's own taxonomy; call listBuyingRoles first to get the valid names. Pass the full desired list: roles not in the list are removed. Pass an empty list to clear all buying roles. The contact must already be associated with the customer. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
setContactBuyingRoles
Set the influencer (dotted-line) relationships for a contact in the customer's org chart. Influencers are soft-influence links distinct from the reporting line set by setOrgChartManagers — a contact may have multiple influencers. Pass the full desired list of influencer contact IDs: existing influencers not in the list are removed and new ones are added. Pass an empty list to clear all influencers. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
setOrgChartInfluencers
Set, change, or clear a contact's manager in the customer's org chart. The manager can be another PERSON (parentContactId) or a GROUP / business unit (parentGroupName), letting a contact report into a business unit like "Sales". Provide at most one of parentContactId / parentGroupName. parentGroupName is matched by name against the chart's existing groups; if no group with that name exists it is created automatically, so callers never need a separate create step. A group can live ANYWHERE in the chart: use groupParentContactId to hang it off a person (e.g. "Sales" under the CRO) or groupParentGroupName to nest it inside another business unit; with neither, a new group attaches to the company root and an existing group stays where it is. Passing a group parent also MOVES an existing group there. Groups cannot be renamed — to rename or replace one, remove it with removeOrgChartNodes and create the new one here. Works for both new placements and moving existing nodes — if the contact is already in the chart, their subtree is re-parented under the new manager (their children come with them). Pass parentContactId=null (and omit parentGroupName) to reparent the contact directly under the company root. If a person manager is currently a descendant of the contact, the subtree is rotated to avoid a cycle (the contact's direct children inherit the contact's original parent, then the contact becomes a child of the new manager). The contact must already be associated with the customer; org-chart nodes are created automatically if missing. Pass up to 100 items in `items`. Items run in order, and each gets its own result in `results`, so one failed item does not stop the others.
setOrgChartManagers
Centralize ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Centralize's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Centralize alternatives on ChatGPT?
As of 2026-11-03, Centralize competes with HubSpot, Attio, Close, Zoho CRM, 33CRM, Agiled, Alaz, Anvil CRM and 66 more in ChatGPT B2B Sales CRM Platforms, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


