MCP Server

Connect AI agents to DealSurface through the Model Context Protocol. Research prospects, filter carriers by their book of business, map buying committees, and draft outreach through natural conversation.

What is MCP?

The Model Context Protocol (MCP) is an open standard for connecting AI assistants to external tools. The DealSurface MCP server (@dealsurface/mcp-server) wraps the REST API into a set of tools that any MCP-compatible AI agent can use.

When to use MCP vs REST

Use the MCP server when:

  • Building an AI agent or conversational workflow
  • Working in Claude Desktop or an MCP-compatible client
  • You want the AI to decide which tools to call and in what order
  • Prototyping a multi-step sales research workflow

Use the REST API when:

  • Building a custom integration or script
  • You need precise control over every API call
  • Integrating with a CRM, dashboard, or automation platform
  • Processing data in bulk

Available tools

The MCP server exposes 10 tools, each mapping to a REST API endpoint:

ToolREST endpointCredits
list_productsGET /productsFree
get_productGET /products/:idFree
list_prospectsGET /prospectsFree
get_prospectGET /prospects/:tickerFree
search_excerptsGET /excerptsFree
get_dealmapGET /dealmapFree
generate_dealmapPOST /dealmap/generate0-10
override_stakeholder_rolePATCH /dealmap/node-roleFree
set_top_pickPATCH /dealmap/node-top-pickFree
craft_outreachPOST /outreach1

Upgrading to 2.0.0

Upgrade the package; nothing else changes

2.0.0 targets the v2 REST API, and v1 has been removed — so 0.2.x and earlier stop working, receiving 410 Gone with a message telling you to upgrade. Upgrade the package and you keep the same tool names, the same authentication, and the same client configuration.

The only removed input for an existing caller is framework_category on search_excerpts (also gone from every excerpt result). Everything else gains optional inputs and returns more data.

Release notes

2.3.02026-08-30minor

Insurance-group family heads become first-class prospects. Additive fields; one behavior change in family representation.

  • Behavior change: a scored private insurance group now represents its family in list_prospects under the group's own ticker (previously a subsidiary's ticker carried the family row). Subsidiary tickers remain valid for direct lookup.
  • Group heads without their own filings serve blended subsidiary evidence: search_excerpts returns their excerpts with per-excerpt source_ticker and source_company_name attribution, and craft_outreach works for scored groups instead of returning 404.
  • New additive fields on prospect detail and excerpt responses: evidence_scope (own | family | none) and family_role (head | member | standalone); group detail responses use narrative_scope: "group".
2.2.02026-08-26minor

Hierarchical lines of business and union-premium targeting. Additive — no field was removed or renamed.

  • The lines_of_business vocabulary grows to 43 filterable keys: the eight CIS policy-type splits (individual_life, group_life, individual_annuity, group_annuity, individual_accident_health, group_accident_health, medicare_supplement, long_term_care) plus the life / annuity / accident_health roll-ups, title, aggregate_write_ins and international. The split keys are populated once the CIS re-ingest has run for an environment and may return empty results until then.
  • Product target segments report carrier_facts.union_premium (rank window or gross USD band measured across the union of the selected lines) and a widened licensed_footprint with bands and states_any. Per-line premium fields remain for segments saved under the previous per-line contract.
  • Prospect detail CIS observations keep line_of_business as the roll-up key and add policy_line_of_business (for example individual_life). The premium block adds rollup_lines_of_business: roll-up keys whose policy-type splits are also present in by_line_of_business — a roll-up’s total contains its splits, so never sum the two together.
2.1.02026-08-17minor

Human-readable company names. The value of company_name has changed — no field was removed or renamed, but the text it returns is different.

  • company_name now returns the name a person would use — Aflac rather than AMERICAN FAMILY LIFE ASSURANCE COMPANY OF COLUMBUS. It falls back to the filed name for companies that have not been through name resolution yet.
  • New legal_name carries the name the company files under. If you were matching on company_name against filings or a CRM, switch to this field.
  • New logo_domain gives a bare domain for the company logo, or null. Most companies have none; that is an ordinary state, not an error.
  • Applies to prospect lists, prospect detail, hierarchy children, the family pointer, and the DealMap chart. DealMap charts generated earlier report the new name too — it is resolved at request time, not stored.
2.0.12026-08-12patch

Agent-guidance patch — descriptions and server instructions only, no tool or API behavior changes.

  • Server-level MCP instructions (surfaced in the initialize handshake): agents are told to present fields with plain-English labels (“Buying Signal Score”, “Deal Score”) rather than raw identifiers, and to interpret buying_signal_score qualitatively: 1.0 means strong buying-signal indicators were found in the evidence, hedging proportionally down to 0 (none detected).
  • get_prospect now documents that only assessed subsidiaries resolve; an unassessed hierarchy.children ticker returns 404 by design.
  • search_excerpts now documents that keyword matches the excerpt’s tagged pain points, not the raw quote text.
2.0.02026-08-03breaking

Targets the /api/v2 REST surface; the version number now tracks the API major. Requires v2 — /api/v1 has been removed, so 0.2.x stops working.

  • Insurance filters on list_prospects — lines of business, premium bands, licensed states, entity type, ownership, name search, and sorting — with the line, state, and sort vocabularies enum-validated in the tool schemas, so an invalid value is rejected client-side with the accepted set in front of the model.
  • Lists cover the full candidate universe with assessment_status labels; unassessed rows carry null scores and rank last.
  • Premium and complaint data on every list row and prospect detail, including the family complaint index (complaint share ÷ premium share) and full per-year, per-line series.
  • Subsidiary drill-down: pass any assessed hierarchy.children ticker back to get_prospect; DealMap and outreach tools resolve subsidiary tickers upward to the corporate family.
  • New tool set_top_pick (wraps PATCH /dealmap/node-top-pick) completes the buying committee workflow.
  • Breaking: framework_category removed from search_excerpts and from every excerpt result.
  • A rebuilding or out-of-date prospect projection now returns a clear not-ready failure instead of an empty list, so agents retry rather than concluding a product has no prospects.
0.2.02026-05-21

Added optional include_disabled metadata access for list_products and get_product. Operational tools continue to use active products only.

0.1.32026-04-06

Added get_dealmap, generate_dealmap, and override_stakeholder_role tools for buying committee mapping. Removed get_leads tool (use get_dealmap instead). Updated craft_outreach for role-aware personalization.

0.1.22026-04-03

Improved tool descriptions for clarity.

0.1.12026-03-15

Initial public release. Published to npm and MCP Registry.

MCP Server Overview | DealSurface Docs