The Crossbeam MCP connector routes your AI agent's tool calls to Crossbeam's own MCP server through Scalekit. Each user signs in to Crossbeam once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 11 tools.
- Tools
- 11
- What they doRead · write · destructive
- 11 · 0 · 011 read0 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Crossbeam MCP connection
In AgentKit > Connections, create a Crossbeam MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Crossbeam MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'crossbeammcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Crossbeam MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'crossbeammcp_find_new_accounts',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "crossbeammcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Crossbeam MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="crossbeammcp_find_new_accounts",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolcrossbeammcp_find_new_accountsReturns pipeline-generation accounts: companies your partners sell to that you could go after.Read-onlyFind New Accounts
Returns pipeline-generation accounts: companies your partners sell to that you could go after. Use when the user asks which companies their partners can introduce them to, for net-new or greenfield prospecting, or for accounts missing from their CRM. 'pipeline_type' classifies the account, not a deal stage. Every account falls into exactly one class, and each row reports its own under the same name. Different filters narrow together and values within one filter are alternatives, so countries=["US","DE"] with employee_ranges=["201-500"] means in the US or Germany, and 201-500 employees. Partner tags are the exception, described on that parameter. Do NOT use for overlap questions about accounts you already work; use find_overlapping_accounts_and_leads. Do NOT use to rank partners on a specific deal; use find_partner_recommendations. If any partner name or the partner tag name resolves to zero or multiple matches, returns ClarificationRequired listing each unresolved value and its candidates; present them to the user and re-invoke with partner_ids or partner_tag_id. Returns: A paginated list of accounts, each with the partners that count it as a customer. If `pagination.has_more` is true, tell the user how many more results exist and ask before fetching the next page. On a free plan only the first page is available and paging is not offered, so `has_more` is false there even when `total_count` reports more matching accounts than came back. An empty result has several possible causes (no partner sharing greenfield data, a free-tier plan, owner-scoped access, or the data not having rebuilt yet), so hedge rather than asserting the user has no new accounts. Data rebuilds every 2 to 24 hours depending on class and plan, so an account added to the CRM today can still appear as net_new. net_new accounts have no `account_id`, since they are absent from your CRM; `domain` is their key.
Inputs
account_domainstring- Search term matched against account name and domain. Used only when account_name is empty or absent.
account_namestring- Search term matched against account name and domain. Pass just the company name; strip trailing sales suffixes ('opp', 'opportunity', 'deal', 'account').
countriesstring- Filter by headquarters country. ISO 3166-1 alpha-2 codes (US, GB, DE). Use GB for the United Kingdom. Country names and multi-country regions are rejected.
employee_rangesstring- Filter by company size. An account matches if its employee count falls in any listed range.
limitinteger- Number of records per page (1-10, default 10). Use page to reach further records.default
10 only_recommendedboolean- Only return accounts with at least one high-impact partner.default
false pageinteger- Page number to retrieve (1-indexed, default 1).default
1 partner_idsstring- Partner organization UUIDs. Takes precedence over partner_names and skips fuzzy matching.
partner_namesstring- Partner names. Only return accounts at least one of these partners sells to. Fuzzy matched. Pass several to cover a set of partners in one call. Each returned account still lists all of its partners, not just the filtered ones. Ignored if partner_ids is provided.
partner_tag_idstring- Partner tag UUID. Retry parameter; takes precedence over partner_tag_name and skips name resolution. Widens rather than narrows: combined with partner_ids or partner_names, accounts are returned for partners matching either filter, not only those matching both.
partner_tag_namestring- Partner tag name (fuzzy matched), e.g. 'Strategic' or 'Tier 1'. Only return accounts sold to by partners carrying that tag. Widens the partner filter the same way partner_tag_id does. If ClarificationRequired is returned, present the candidate tags and retry with partner_tag_id.
pipeline_typestring- Which class of pipeline-generation account to return. 'prospect': in one of your prospect populations, overlaps a partner's customers, and you have no open opportunity on it. 'net_new': a partner's customer that is absent from your CRM entirely. 'not_in_my_populations': a partner's customer that is in your CRM but in none of your populations; usually a population-rule gap rather than a missed deal. 'all' unions the three.default
all reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
sort_bystring- How to rank the accounts. 'recommended_partner_count' puts the accounts with the most high-impact partners first, and 'last_partner_customer_date' puts the most recently won partner customers first. Omit for the default, which is recommended_partner_count.
sort_orderstring- Sort direction ('asc' or 'desc'). Only used when sort_by is provided; defaults to descending.
crossbeammcp_find_overlapping_accounts_and_leadsReturns a list of accounts.Read-onlyFind Overlapping Accounts And Leads
Returns a list of accounts. Use for any question whose answer is a list of accounts â "which accounts do we share with X", "what accounts overlap with partner Y", "shared customers between us and Z", "list the companies we both have". The named company in these questions is a partner being checked against the user's CRM. If the user asks for partners instead (the inverse direction: "which of our partners work with X", "who else is selling into Y"), use `find_overlapping_partners`. The deciding signal is the shape of the question â accounts-out vs partners-out â not which company is named. Two modes: pass an array in `partners` for a specific-partner report, or an EcosystemFilter object (or omit) for an ecosystem-wide scan. Narrow with per-partner `segments`/`populations`, or with `partners.segments`/`partner_scores`/`tag_name` for ecosystem mode. Use `our_segments` or `our_populations` to restrict which of your own populations are included. Always pass the user's exact wording in name fields (partner name, population name, tag name) â let the tool fuzzy-match. Do not substitute IDs from memory. Ambiguous names come back in a single `ClarificationRequired` listing every candidate; present them to the user, then retry with the confirmed id fields. Large reports compute in the background. If not ready, the tool returns `RetryLater` with `retry_after_seconds`; keep calling on that cadence. Use `page` and `limit` for pagination. `pagination.has_more` is authoritative. Do not re-request a page to test it. When it is false and `total_count` exceeds the rows you received, the account's plan capped the result: report that ceiling instead of describing the rows as ranked or representative. A `sort_warning` means they are not ordered either.
Inputs
limitstring- Number of records per page (1-10, default 10).
list_namestring- Optional name to embed in the response's `list_link` URL (rendered with a ⨠prefix in Crossbeam). Derive it from the user's request and the report's scope, e.g. "Mutual customers with Acme" or "My open opportunities vs Acme's customers". When omitted the link opens unnamed and the user names it in Crossbeam before saving.
our_populationsstring- Filter to specific populations of your own data. On the first call use name (user's exact wording); on retry after the user confirms, use id to bypass fuzzy matching. Useful for custom populations (segment 'other') that cannot be identified by segment alone.
our_segmentsstring- Restrict results to records in these segment types of your own data (customers, open_opportunities, prospects, other). Partner reports default to all segments. Ecosystem reports default to customers, open_opportunities, and other, matching the app's ecosystem view; ask for prospects explicitly to include them.
pagestring- Page number to retrieve (1-indexed, default 1).
partnersstring- Controls partner selection and determines the report mode: - Array of PartnerSpecs â partner report restricted to those specific partners. - EcosystemFilter object â ecosystem report across all partners, optionally narrowed by segment, partner score, or tag. - Omitted or null â ecosystem report with all partners, restricted to the default ecosystem segments. On the first call always pass the user's exact wording in partners[].name. Do not substitute a UUID or canonical name from memory. See the Name resolution section for the full clarification workflow.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
sort_bystring- Column to sort results by: 'record_name' (alphabetical), 'overlap_time' (when the overlap was first detected), or 'partner_overlap_count' (how many partners share this record). Omit for default API ordering. Note: sorting is unavailable on free-tier accounts; a sort_warning will be returned.
sort_orderstring- Sort direction ('asc' or 'desc'). Only used when sort_by is provided.
crossbeammcp_find_overlapping_partnersReturns a list of partners, sorted by partner-level metrics such as partner_score or deal_size_with_partner.Read-onlyFind Overlapping Partners
Returns a list of partners, sorted by partner-level metrics such as partner_score or deal_size_with_partner. Use for any question whose answer is a list of partners â "which partners...", "who else is selling into X", "which of our partners work with Y", "who has X as a customer". The named company in these questions is the account being looked up against the user's partner ecosystem. If the user asks for accounts instead (the inverse direction: "which accounts do we share with X", "what overlapping companies do we have with Y"), use `find_overlapping_accounts_and_leads`. The deciding signal is the shape of the question â partners-out vs accounts-out â not which company is named. Identify the account by at least one of: account_id (direct), account_name (fuzzy), or account_domain (fuzzy). account_id bypasses fuzzy matching; name and domain may be combined to narrow on both. Optionally filter the partners with partner_ids or partner_name, or narrow to a partner tag with partner_tag_id or partner_tag_name; omit all to get every partner that shares the account. Always pass the user's exact wording in name fields and let the tool fuzzy-match. Do not substitute IDs from memory. Ambiguous names come back in a single `ClarificationRequired` listing each candidate; present them to the user, then retry with the confirmed id fields. Use sort_by + sort_order to rank partners; page + limit for pagination.
Inputs
account_domainstring- Own account domain (fuzzy matched). Useful when the user mentions a company by URL or email domain. Same ClarificationRequired flow as account_name.
account_idstring- Own CRM account ID. Retry parameter; takes precedence over account_name and account_domain and skips fuzzy matching. Supply after the user confirms which account they meant.
account_namestring- Own account name (fuzzy matched). Use the user's exact wording on the first call, but strip trailing sales suffixes ('opp', 'opportunity', 'deal', 'account') and pass only the underlying entity â 'the Acme Corp opp' â 'Acme Corp'. If ClarificationRequired is returned, present the candidate accounts and ask the user which one they meant; retry with account_id.
limitinteger- Number of partner rows per page (1-100, default 10).default
10 pageinteger- Page number to retrieve (1-indexed, default 1).default
1 partner_idsstring- Partner organization UUIDs. Retry parameter; takes precedence over partner_name and skips name resolution. Pass one UUID to filter to a single partner, or several to filter to a set. No error if combined with partner_name.
partner_namestring- Partner organization name (fuzzy matched). Omit to include all partners. If ClarificationRequired is returned, present the candidate partners and retry with partner_ids.
partner_tag_idstring- Partner tag UUID. Retry parameter; takes precedence over partner_tag_name and skips name resolution. Filters to partners carrying this tag.
partner_tag_namestring- Partner tag name (fuzzy matched), e.g. 'Strategic' or 'Tier 1'. Filters to partners carrying that tag. If ClarificationRequired is returned, present the candidate tags and retry with partner_tag_id.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
sort_bystring- Partner-level metric to sort by. Omit for default ordering.
sort_orderstring- Sort direction ('asc' or 'desc'). Only used when sort_by is provided.
crossbeammcp_find_partner_recommendationsReturn ranked partner suggestions for an open opportunity, helping identify which partners can best assist with a deal.Read-onlyFind Partner Recommendations
Return ranked partner suggestions for an open opportunity, helping identify which partners can best assist with a deal.
Inputs
deal_or_account_namestringrequired- Name of the deal or account to look up. Matched case-insensitively against both deal name and account name. Pass just the underlying entity name â strip trailing sales suffixes the user may use ('opp', 'opportunity', 'deal', 'account'). Example: 'the Acme Corp opp' â 'Acme Corp'.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
crossbeammcp_get_account_contextRetrieve a unified view of an account, including details and owner information.Read-onlyGet Account Context
Retrieve a unified view of an account, including details and owner information. Look up by domain, CRM record ID, or company name.
Inputs
account_domainstring- Search by account's domain
account_idstring- Search by the account's CRM record ID
account_namestring- Search term for finding accounts. Pass just the company/entity name â strip trailing sales suffixes the user may use ('opp', 'opportunity', 'deal', 'account'). Example: 'the Acme Corp opp' â 'Acme Corp'.
limitinteger- Number of records per page (1-100, default 10).default
10 pageinteger- Page number to retrieve (1-indexed, default 1).default
1 reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
crossbeammcp_get_ecosystem_activitySurface recent partner activity across your ecosystem, such as new overlaps, updates, and engagement signals.Read-onlyGet Ecosystem Activity
Surface recent partner activity across your ecosystem, such as new overlaps, updates, and engagement signals.
Inputs
event_typesstring- Filter by event types: 'partner_deal_opened', 'partner_deal_closed_won', or 'partner_greenfield_deal_closed_won'.
limitstring- Maximum number of results to return. Default is 25, must be between 1 and 1000.
pagestring- Page number to retrieve. Default is 1. Must be at least 1.
partner_idsstring- Filter by partner org UUIDs. Takes precedence over partner_names and skips fuzzy matching.
partner_namesstring- Filter by partner names. Fuzzy matched. Ignored if partner_ids is provided.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
record_idsstring- A list of CRM record IDs to filter by
record_typestring- Type of record, 'account' or 'lead', to source activity forone of
accountleaddefaultaccount
crossbeammcp_get_partner_contextProvide an overview of a partner relationship, including scores and recent activity.Read-onlyGet Partner Context
Provide an overview of a partner relationship, including scores and recent activity. Filter by partner name, tag, or region.
Inputs
limitinteger- Number of partners to return per page. Must be between 1 and 100.default
10 pageinteger- Page number to retrieve. Must be at least 1.default
1 partner_idsstring- Partner org UUIDs to filter results. Takes precedence over partner_names.
partner_namesstring- Partner names to filter results. Fuzzy matched. Ignored if partner_ids is provided.
partner_tag_idstring- Partner tag UUID to filter by tag. Takes precedence over partner_tag_name.
partner_tag_namestring- Partner tag name to filter results. Fuzzy matched. When the user mentions partners by region (EMEA, NAMER, APAC), tier (tier-1, strategic, preferred), partner type (ISV, reseller, agency), or any other categorical label, pass that label here. Ignored if partner_tag_id is provided.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
sort_bystring- Metric to sort partners by.
sort_orderstring- Sort direction. Only applied when sort_by is set.
crossbeammcp_get_partner_suggestionsSurface potential new partners based on ecosystem fit, helping expand your partner network.Read-onlyGet Partner Suggestions
Surface potential new partners based on ecosystem fit, helping expand your partner network.
Inputs
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
crossbeammcp_search_crossbeam_knowledgeAnswer Crossbeam product questions and surface best practices from the Crossbeam knowledge base.Read-onlySearch Crossbeam Knowledge
Answer Crossbeam product questions and surface best practices from the Crossbeam knowledge base.
Inputs
querystringrequired- No description.
reasoningstring- A concise explanation (keep it under ~1000 characters) of why you selected this tool for the user's request: what in the prompt led you to choose it and what you expect the call to return. Strongly encouraged on every call.
sourcesarray- Which knowledge corpora to search. Omit or pass an empty list to search all three. When the user names a specific corpus, pass ONLY that source: 'ELG book' / 'the book' â ['elg_book']; 'help center' / 'docs' â ['help_center']; 'blog' / 'case studies' â ['blog_site']. Pass multiple sources only when the user explicitly asks for multiple.
No tools match.