- Brand
- Crossbeam
- Category
- Sales & CRM
- Primary Subcategory
- Conversation & Revenue Intelligence
Integration details
Description
Pace is the context layer for your sales pipeline. It pre-computes deal intelligence from your CRM, emails, and call recordings, then serves it to your AI assistant as live, structured context on every deal. Ask what's really going on with an account, get AI risk and forecast assessments backed by evidence, catch deals that have gone quiet, and know precisely where your team is going to land. No more digging through Salesforce or HubSpot, no more guessing.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Conversation & Revenue Intelligence
- Secondary Subcategories
- None listed
- Brand
- Crossbeam
- Access
- Account required
- First tracked
- 2026-07-28
- Tool count
- 21
- Geography
- 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 Pace
Get updates when Pace’s Discoverability Score or category rank changes.
Competing in ChatGPT Conversation & Revenue Intelligence
View Category21 tools agents can invoke
Discover available filterable fields for opportunities and accounts. Returns the list of synced CRM fields for this organization's opportunities and accounts, including both standard mapped fields (e.g. stage, opportunity type) and custom fields. Each field includes its API name, human-readable label, type category, picklist options (if applicable), object_type ("Opportunity" or "Account"), and the write flags 'is_updateable' and 'is_nillable'. Use the field 'name' (not 'label') when constructing filters for list_opportunities. For picklist/multipicklist fields, the filter value must be the option's API value — the KEY in the 'options' map (e.g. "closedwon"), NOT the human label (e.g. "Closed Won"). Use 'type_category' to pick appropriate operators. Place Opportunity fields in custom_filters and Account fields in account_custom_filters. Before editing a field with update_crm_field, check 'is_updateable' (whether the field can be written through that tool) and 'is_nillable' (whether it can be cleared/set to null). 'is_updateable' reports editability through update_crm_field specifically, which edits ONLY Opportunity fields today — so every Account field reports 'is_updateable'=false regardless of the CRM's own metadata.
discover_custom_fields
Fetch account details with optional contacts and opportunities. Returns account info (name, website, domain, owner), contact count, and opportunity summary (open/closed-won/closed-lost counts and amounts) by default. Use `include_contacts=true` to include the full list of contacts (names, titles, emails, phones). Use `include_opportunities=true` to include the full list of opportunities (name, amount, stage, status, close date).
get_account_details
Fetch the activity timeline for an opportunity or account. Returns emails, call recordings, calendar meetings, Slack Connect threads and partner-call insights merged into one list, newest first. This is the same feed the Pace web app shows on a deal, so it is the single tool to reach for on any "what happened with this customer" question. A partner-call insight is a summary of what a partner said about this account on a call with them; it sits in the timeline at that call's time. Provide one of opportunity_id, opportunity_external_id or account_external_id; an opportunity resolves to its account automatically. Narrow with `types` (any of "email", "call", "event", "slack", "partner_insight") when the question is only about one kind of activity. Page further back in time by passing the previous response's `next_before` as `before`. Slack items are whole threads: the root message plus its replies, each with the author's name and whether they are external to your organization. Times are ISO 8601 in the caller's timezone (named in `timezone`), offset included, e.g. 2026-10-14T14:00:00-04:00 is 2:00 PM there. An all-day event (`is_all_day`) carries bare dates instead.
get_activities
Fetch the latest AI-generated assessment for a deal (opportunity). Parameters: - `record_type`: "Opportunity" - `record_id`: Internal ID (integer) - `record_external_id`: CRM external ID (string, alternative to record_id) Provide `record_type` and either `record_id` or `record_external_id`. **Opportunity** assessments return deal health insights: signal (short headline), summary, risks, engagement level, and momentum.
get_assessment
Explain WHY the AI forecast changed between two dates in the same fiscal quarter. Use this tool for questions like "why did my forecast drop this week?", "what changed in the team's forecast since the start of the quarter?", or "which deals moved my number?". For the CURRENT forecast snapshot (amounts, quota, attainment), use get_forecast_stats instead — this tool only explains changes. The total forecast delta is decomposed into six buckets that sum exactly to it: - closed_won_delta: deals that closed won during the window - closed_lost_delta: deals that closed lost during the window - moved_in_delta: deals whose close date moved INTO the quarter - moved_out_delta: deals whose close date moved OUT of the quarter - weighted_change_delta: deals in scope at both dates whose amount x win-probability shifted - not_yet_created_delta: change in the projection for deals not yet created Scope (same as get_forecast_stats): - crm_user_id provided: analyze one user's forecast (from search_users_by_name) - team_id provided: analyze a team's forecast (from search_teams_by_name) - Neither: organization-wide. Team and org scope need org-level permissions; on a permission error, fall back to the user's own crm_user_id and say so. Never pass both team_id and crm_user_id. Dates: - start_date (required) and end_date (optional, defaults to now), ISO YYYY-MM-DD. - BOTH DATES MUST BE IN THE SAME FISCAL QUARTER. To analyze "this quarter so far", use the current fiscal quarter's start date from the organization context as start_date and omit end_date. The tool errors if the dates span quarters. Returns analysis{} with: start/end dates, quarter boundaries, the six bucket deltas, total_ai_forecast_delta, and top_increases[]/top_decreases[] — the top_n deals driving the change, each with change_type (bucket), delta, and old/new amount, probability, and close date.
get_forecast_change_analysis
Fetch the latest AI forecast evaluation for an opportunity. Provide either `opportunity_id` (internal) or `opportunity_external_id` (CRM external ID). Returns win probability and forecast recommendations: - Suggested forecast category (Commit, BestCase, Pipeline, etc.) - Win probability percentage (0-100%) - Confidence score (0-1) - Detailed reasoning for the evaluation
get_forecast_evaluation
Get forecast statistics for a user, team, or organization. Returns closed won, commit, best case, pipeline amounts with quota and attainment. Also returns the manually-submitted forecast (commit/best case + notes) for the scope and period. Scope: - crm_user_id provided: Single user forecast - team_id provided: Team forecast (all members) - Neither: Org-wide forecast Team and org scope need org-wide forecast permissions. If the call returns a permission error, answer with the user's own forecast (crm_user_id) and say so. Period: - period_start/period_end: Custom date range (ISO YYYY-MM-DD). IMPORTANT: period_end is EXCLUSIVE (that date is not included in results). Example: for Q1 Jan-Mar, use period_start="2026-01-01", period_end="2026-04-01" (NOT "2026-03-31"). - Omit both to use the organization's default forecast period (RECOMMENDED — automatically uses the org's fiscal year calendar). This is the current fiscal quarter for most orgs, or the current calendar month for orgs configured to forecast monthly. Prefer this over manually computing period dates. Returns users[], totals{}, period{}, manual_forecast{}, error. Each user has: - closed_won_amount: Already closed in the requested period - commit_amount, best_case_amount, pipeline_amount: Open pipeline by category - predicted_close_amount: WHERE THEY WILL LAND = closed_won + probability-weighted open - period_quota: Quota for the requested period (prorated if custom period, else full quarter) - quarter_quota: Full quarterly quota (always) - is_quota_prorated: Boolean flag indicating if period_quota was prorated - attainment_pct: % achieved (closed_won / period_quota) manual_forecast (null if none submitted) has: - commit_amount: Manually committed forecast amount - best_case_amount: Manually submitted best case amount - note: The commit note from the manually-submitted forecast
get_forecast_stats
Retrieve open (pending) action items / todos for one or more opportunities. Use this tool when the user asks about outstanding tasks, next steps, or action items for specific deals/opportunities. Input (provide one): - opportunity_ids: list of internal opportunity IDs (use search_opportunities or list_opportunities to find them first) - opportunity_external_ids: list of CRM external opportunity IDs (alternative to opportunity_ids) Returns a list of open todos with title, description, priority, category, due date, and other metadata. Each todo carries `assigned_user` (id, first_name, last_name): a deal's todos can be held by the opportunity owner or by one of the managers above them, so check who holds a todo before telling the user it is theirs to do. Todos with `requires_email = true` additionally include `suggested_recipients` (curated contact email addresses) and `email_context` (guidance on what the email should accomplish) when available — use them when drafting that email.
get_open_todos_for_opportunities
Fetch opportunity details from the database. Accepts either `opportunity_ids` (list of internal IDs) or `opportunity_external_ids` (list of CRM external IDs). Returns detailed information for each accessible opportunity including name, amount, stage, close date, forecast category, owner, and links. IDs that are inaccessible or not found are reported in not_found_ids. Optionally accepts extra_fields — a list of CRM field API names (from discover_custom_fields) to include custom field values from the CRM record. Extra field values appear under an "extra_fields" key on each opportunity. Optionally accepts account_extra_fields — a list of Account CRM field API names (from discover_custom_fields with crm_object_type="Account") to include custom field values from the related Account record. Values appear under an "account_extra_fields" key on each opportunity. Note: Access is scoped based on user permissions. Users without `opportunities_see_all` permission can only view their own opportunities.
get_opportunity_details
Return the caller's organization context, current fiscal quarter, and allowed forecast periods. Use this tool at the start of a conversation (or whenever date-based filters are needed) to ground the model in the org's fiscal calendar. Different organizations can start their fiscal year in different months, so "this quarter" is not a universal span — always rely on this tool instead of computing quarters from the wall-clock date. Returns: - organization_id, organization_name - fiscal_year_start_month (1-12) - today (ISO date, in the caller's timezone) - current_time: the caller's wall-clock time with zone, e.g. "Wednesday, October 14, 2026, 9:12 AM EDT (America/New_York)". Other tools already return timestamps in this zone, as ISO 8601 with its offset. - timezone: the caller's IANA timezone ("UTC" when they have none set) - current_quarter: number (1-4), label (e.g. "Q1"), start (inclusive ISO date), end (exclusive ISO date) - current_month: start (inclusive ISO date), end (exclusive ISO date) - allowed_forecast_periods: list of period types the org forecasts on (any of "quarter", "month"). Use this to pick a valid `period` value for set_forecast / get_forecast_stats.
get_org_context
Call this FIRST whenever the user wants to draft, write, or reply to an email to a prospect or customer about a deal. Returns Pace's email-drafting playbook: which CRM tools to call to gather the deal context, the account executive's identity and sending address, and Pace's email-writing guidelines for matching the account executive's style. It does not write the email itself — follow the returned instructions to write the draft.
get_sales_email_playbook
List accounts with optional filters and sorting. Results are paginated (default 50 per page, max 50). Use the `page` parameter to fetch additional pages when `total_matching` exceeds the returned count. Supports filtering by: - team_id: Filter by team/AE group - owner_id: Filter by owner's CRM user ID - custom_filters: Filter by Account custom CRM fields (object_type="Account"). custom_filters format: Each filter is a dict with keys: "field" (CRM API name from discover_custom_fields, e.g. "Region__c" — not the human label), "operator", and "value". Pick an operator compatible with the field's type_category: - string: equals, not_equals, in, not_in, contains, not_contains, starts_with, is_null, is_not_null - picklist: equals, not_equals, in, not_in, is_null, is_not_null - multipicklist: equals, not_equals, in, not_in, contains, not_contains, contains_all, starts_with, is_null, is_not_null - number/currency: equals, not_equals, in, not_in, gt, gte, lt, lte, is_null, is_not_null - date/datetime: equals, not_equals, in, not_in, gt, gte, lt, lte, is_null, is_not_null (value must be ISO-8601) - boolean: equals, not_equals, is_null, is_not_null (value must be true/false) value must be a list for in/not_in/contains_all; omit value (or use null) for is_null/is_not_null; use a single scalar otherwise. Invalid or incompatible entries are dropped before the query runs, so always call discover_custom_fields first to confirm the field name and type_category. Supports sorting by: name, created_at Each account includes an opportunity summary with open_count, closed_won_count, closed_lost_count, total_open_amount, and total_closed_won_amount. Results are scoped based on user permissions.
list_accounts
List opportunities with optional filters and sorting. Use the `status` parameter to filter by opportunity status: - "all" (default): All opportunities regardless of status - "open": Only open opportunities - "closed_won": Only closed-won opportunities - "closed_lost": Only closed-lost opportunities - "closed": All closed opportunities (won and lost) Results are paginated (default 50 per page, max 50). Use the `page` parameter to fetch additional pages when `total_matching` exceeds the returned count. The response includes `page` (current page) and `total_pages` for navigation. Results are always limited to the deals the user is allowed to see. Omit owner_id and team_id to list all of them: the whole organization for users who can see every deal, their own deals otherwise. Supports filtering by: - forecast_category: Rep's forecast (Commit, BestCase, Pipeline, Omitted) - suggested_forecast: AI-suggested forecast - team_id: Filter by team/AE group - owner_id: Filter by owner - forecast_mismatch: True = AI differs from rep forecast - close_date_from/to: Date range (ISO format YYYY-MM-DD) - amount_min/max: Amount range, compared to each deal's amount in its own currency (no conversion) - custom_filters: Filter by Opportunity custom CRM fields (object_type="Opportunity"). - account_custom_filters: Filter by Account custom CRM fields (object_type="Account"). Same dict format as custom_filters. - momentum: AI-assessed deal momentum. Values: positive, neutral, negative - engagement_level: AI-assessed engagement level. Values: high, medium, low, none - forecast_bias: Forecast mismatch direction. Values: over_optimistic, over_pessimistic - win_probability_trend: Trend of win probability over recent evaluations. Values: improving, declining, stable - activity_from / activity_to: Keep only deals whose account had activity in this window (ISO dates YYYY-MM-DD). Both are optional: no activity_from means ever, and activity_to defaults to now and includes the whole day given. "Last 3 days" is activity_from set to today minus 3 days; "this week" is activity_from set to Monday; "never had any activity" is has_activity=false with no dates. - activity_types: Which activity counts. Values: email, call, event (calendar meeting), slack, partner_insight (a partner discussed the deal on a partner call). Omit for all of them. - has_activity: True (default) keeps deals WITH matching activity in the window; False keeps deals with NONE ("open deals with no activity in the last 7 days"). Use these for any "deals with / without activity" question. Never answer one by reading each deal's timeline with get_activities. custom_filters / account_custom_filters format: Each filter is a dict with keys: "field" (CRM API name from discover_custom_fields, e.g. "Region__c" — not the human label), "operator", and "value". Pick an operator compatible with the field's type_category: - string: equals, not_equals, in, not_in, contains, not_contains, starts_with, is_null, is_not_null - picklist: equals, not_equals, in, not_in, is_null, is_not_null - multipicklist: equals, not_equals, in, not_in, contains, not_contains, contains_all, starts_with, is_null, is_not_null - number/currency: equals, not_equals, in, not_in, gt, gte, lt, lte, is_null, is_not_null - date/datetime: equals, not_equals, in, not_in, gt, gte, lt, lte, is_null, is_not_null (value must be ISO-8601) - boolean: equals, not_equals, is_null, is_not_null (value must be true/false) value must be a list for in/not_in/contains_all; omit value (or use null) for is_null/is_not_null; use a single scalar otherwise. Invalid or incompatible entries are dropped before the query runs, so always call discover_custom_fields first to confirm the field name and type_category. Supports sorting by: amount, close_date, name
list_opportunities
Search for accounts by name. Uses fuzzy matching to find accounts even with typos or partial matches. Returns account details including external ID, name, website, domain, and owner. Results are scoped based on user permissions. Users without 'opportunities_see_all' permission will only see accounts they own.
search_accounts
Search organization documents using semantic similarity. Returns the most relevant document chunks matching the query. Useful for finding policies, playbooks, pricing guides, competitive intel, etc. Args: query: Natural language search query describing what to find top_k: Number of relevant chunks to return (default: 5, max: 10) document_id: Optional - filter results to a specific document (by internal ID)
search_documents
Search for emails using semantic similarity. Optionally filter by `opportunity_id` (or `opportunity_external_id`) or `account_external_id` to scope results to a specific deal or company. When neither is provided, searches across all emails in the organization. Unlike keyword search, this finds emails based on meaning, so "budget concerns" would match emails about "cost constraints" or "pricing objections".
search_emails
Search for opportunities by name or account name. Uses fuzzy matching to find opportunities even with typos or partial matches. By default searches across all opportunities (open and closed). Use the `status` parameter to filter results: - "all" (default): Search across all opportunities - "open": Only open opportunities - "closed_won": Only closed-won opportunities - "closed_lost": Only closed-lost opportunities - "closed": All closed opportunities (won and lost) Results are scoped based on user permissions. Users without 'opportunities_see_all' permission will only see their own opportunities.
search_opportunities
Search for teams (AE groups) by name using fuzzy matching. Use this tool to find teams when given a name like "Enterprise" or "West Coast". Also answers "who manages/runs team X?" and shows how teams nest. Returns a list of matching teams, each with: - id, name, and team members - manager: the team's manager ({id, name, email}), or null - parent_team: the team this team nests under ({id, name}), or null If no query is provided (empty string), returns all teams in the organization.
search_teams_by_name
Search for CRM users by name using fuzzy matching. Use this tool to find users when given a name like "John" or "Mary Smith". Handles typos and variations (e.g., "Jon" finds "John"). Also answers "who is X's manager?" and "what does X manage?". Returns a list of matching users, each with: - id, name, email - team: the user's team ({id, name}), or null - manager: the user's direct manager ({id, name}), or null - manages_teams: teams the user manages ([{id, name}]). Only the roots of the managed subtree are listed; managing a root implies managing its sub-teams.
search_users_by_name
Record a new sales forecast entry. Use this tool when a user wants to set the commit amount, best case amount, or add a note to a forecast. Period selection (use `period`): - "default": use the organization's allowed forecast period. Works only if the org forecasts on a single period (quarter OR month). If the org allows both, the tool returns an error and you must specify a period explicitly. - "current_quarter" / "next_quarter": use the current or next fiscal quarter. Rejected if the org doesn't forecast on quarters. - "current_month" / "next_month": use the current or next calendar month. Rejected if the org doesn't forecast on months. Call `get_org_context` if you need to know which periods the org allows. Level selection (inferred from intent — provide at most one of ae_group_id or crm_user_id): - "update my forecast" / "set my numbers" → omit both ae_group_id and crm_user_id (sets the calling user's own personal forecast). - "set [rep name]'s forecast" / "update the commit for [rep] on their behalf" → provide crm_user_id (that rep's personal forecast; resolve the name to an ID with search_users_by_name). - "update the forecast for my team" / "set the team forecast for [team name]" → provide ae_group_id (resolve the team name to an ID with search_teams_by_name). Parameters: - period: One of "default", "current_quarter", "next_quarter", "current_month", "next_month". Defaults to "default", the org's current forecast period. - ae_group_id: Team ID (from search_teams_by_name). Provide for team-level forecasts. - crm_user_id: CRM user ID (from search_users_by_name). Provide to set an individual rep's personal forecast on their behalf; omit to set your own. - commit_amount: The commit amount — the rep's high-confidence number. - best_case_amount: The best case amount — optimistic scenario. - note: Optional note or comment attached to this forecast entry. Permissions: - Your own personal (sales) forecast: requires manage_sales_forecast permission. - Another rep's personal forecast (via crm_user_id): requires manage_reps_forecast permission (sales managers / admins). - Team level: requires manage_team_forecast permission (team managers). Call search_users_by_name / search_teams_by_name first if you need to resolve a name to an ID.
set_forecast
Update one or more CRM fields on a SINGLE opportunity, writing directly to the CRM (Salesforce or HubSpot). This is a WRITE that overwrites existing CRM values. WHEN TO USE: - The user gave an explicit instruction to change a specific field to a specific value on a specific opportunity (e.g. "set Amount to 150000", "change CloseDate to 2025-06-30", "clear Next_Step__c"). WHEN NOT TO USE: - The user only wants to read, list, or analyze data — never write as a side effect of a read. - The field, value, or opportunity is ambiguous — clarify first; do not guess. - You inferred a change yourself — only act on the user's explicit instruction. INPUTS: - Identify the opportunity via opportunity_id (internal ID from search/list tools) OR opportunity_external_id (CRM record ID). - updates: a list of {"field_name": <CRM field API name>, "value": <value>}, e.g.: [ {"field_name": "Amount", "value": 150000.0}, {"field_name": "CloseDate", "value": "2025-06-30"}, {"field_name": "StageName", "value": "Negotiation"}, {"field_name": "Tags__c", "value": ["gold", "priority"]}, {"field_name": "Next_Step__c", "value": null} ] VALUE RULES (provider-agnostic): - Picklist: the option's API value — the KEY in discover_custom_fields "options", NOT the human label. - Multipicklist: a list of API values. - Clear a field: null (or [] for multipicklist) — only allowed when the field is is_nillable. - Number/currency: a number; date: "YYYY-MM-DD". PRECONDITIONS: - Call discover_custom_fields first and confirm the field's "is_updateable" is true (and "is_nillable" is true if you intend to clear it). "is_updateable" reports editability through this tool, which edits only Opportunity fields, so every Account field reports "is_updateable"=false. For picklists, use a value from "options". - Use the exact "name" string from discover_custom_fields for field_name, copied verbatim — do not re-case or guess it. Field API names are provider-specific (e.g. HubSpot uses lowercase "amount", Salesforce uses "Amount"); the examples above are illustrative, not the name for your CRM. BEHAVIOR: - Atomic: if ANY field is ineligible or invalid, nothing is written and an error is returned. - Permissions: you must own the opportunity or have opportunities_edit_all; otherwise it fails. - Returns per-field success/error under "fields_updated", plus any "warnings". Only opportunities are supported. Accounts and other objects cannot be edited via this tool.
update_crm_field
Pace ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Pace'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 Pace alternatives on ChatGPT?
As of 2026-10-26, Pace competes with AdaptClose, Aircover.ai, Airspeed, Anagram, ASPR, Avoma, Backstory, Caretta and 11 more in ChatGPT Conversation & Revenue Intelligence, 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.