Public, developer-first MCP server and demo workspace for sales operations workflows across CRM, outbound, enrichment, and account status synthesis.
Most sales integration demos stop at provider-specific API wrappers. This repo is intentionally more opinionated:
- workflow-oriented MCP tools instead of raw API passthroughs
- normalized account, contact, opportunity, interaction, and signal records
- provenance and confidence on merged provider data
- TypeScript orchestration with a Python heuristic scoring and resolution service
- fixture-backed demo scenarios for reviewers without live credentials
- hardened live adapters for
Salesforce,Gmail,Apollo, andSerper
The flagship question this project answers is:
Where are we at with this account?
That answer is synthesized from CRM state, recent comms, external signals, resolved stakeholders, and next-best-action reasoning.
apps/mcp-serverTypeScript MCP server exposing workflow-oriented tools and resourcesapps/demo-webReact/Vite operator workspace for reviewing account state, risks, and recommended actionspackages/coreCanonical types, provider contracts, and scoring interfacespackages/providersProvider registry, runtime config, implemented live adapters, scaffolded placeholders, and fixture adapterspackages/workflowsAccount synthesis, timeline, next-action, and outbound draft workflowspackages/fixturesDeterministic demo scenarios and provider payloadspython/intelligenceFastAPI heuristic scoring and resolution service for entity resolution, signal ranking, account health, and deal-risk scoringdocs/BUILD_SPEC.mdImplementation-grade build spec and architecture plandocs/PROVIDER_MATRIX.mdProvider coverage, auth model, and capability matrixdocs/AUTH_DESIGN.mdProduction OAuth design for futureSalesforceandGmailsupport
get_account_statusget_account_timelineresearch_accountrecommend_next_actiondraft_outbound_emailpush_account_to_salesforce
The demo UI exposes those workflows as an operator workspace. The MCP server is still the primary product artifact.
Implemented live adapters:
SalesforceGmailApollo.ioSerper.dev
Scaffolded live adapters:
SmartleadClayZoomInfoCrunchbaseBuiltWithApify
Fixture-backed adapters:
PitchBookTrigify
Workflows may incorporate implemented, scaffolded, or fixture-backed providers depending on runtime mode.
The implemented live adapters are not just raw fetch wrappers. The hardened path includes:
- provider-specific auth assumptions
Salesforce,Gmail: pre-fetched OAuth 2.0 access tokenApollo,Serper:x-api-key
- retry and timeout handling in the shared HTTP client
- page-size and max-page runtime controls per provider
- pagination-aware live reads for
Salesforce,Gmail,Apollo, andSerper - provider-specific normalization into canonical records
- partial-failure isolation so one failing provider does not take down the entire synthesis workflow
Salesforce and Gmail do not implement full OAuth flows in this version. The adapters expect a pre-fetched OAuth 2.0 access token and send it as a bearer token.
That keeps local demos simple while staying honest about current capability. The full production auth design is documented in docs/AUTH_DESIGN.md.
- Install dependencies:
pnpm install- Configure provider modes and any live credentials:
cp .env.example .envProvider modes:
fixture: deterministic demo datalive: use the live adapter for that providerdisabled: omit the provider entirely
Key live adapter environment variables:
SALES_MCP_SALESFORCE_ACCESS_TOKENSALES_MCP_SALESFORCE_BASE_URLSALES_MCP_GMAIL_ACCESS_TOKENSALES_MCP_APOLLO_API_KEYSALES_MCP_SERPER_API_KEY
Compatibility note:
SALES_MCP_SALESFORCE_API_KEYandSALES_MCP_GMAIL_API_KEYare still read as legacy fallbacks, but new setups should use*_ACCESS_TOKEN.
Optional hardening controls:
SALES_MCP_<PROVIDER>_PAGE_SIZESALES_MCP_<PROVIDER>_MAX_PAGESSALES_MCP_<PROVIDER>_TIMEOUT_MSSALES_MCP_<PROVIDER>_RETRY_COUNT
Optional outbound sender config:
SALES_MCP_OUTBOUND_SENDER_NAMESALES_MCP_OUTBOUND_SENDER_TITLESALES_MCP_OUTBOUND_SENDER_COMPANY
Run the Python heuristic scoring and resolution service:
pnpm dev:intelligenceRun the demo stack:
pnpm dev:demo-stackRun the MCP server demo workflow:
pnpm demo:account-statusCurrent repo verification:
pnpm testpnpm typecheckpnpm buildpython3 -m unittest discover -s python/intelligence/testspython3 -m compileall python/intelligence/src
The stdio server scaffold follows the official MCP TypeScript SDK server pattern: