MCP server for U.S. dental provider data
270,000+ U.S. dentists across 41 states + DC, plus 49 Medicaid programs state Medicaid fee schedules. Four read-only tools, citation envelope on every response, two billing rails. Compatible with Claude.ai, Cursor, Cline, Continue, ChatGPT, and any MCP-aware client.
TL;DR for agents reading this page
Streamable HTTP MCP server at https://mcp.providersignal.com/mcp. Four tools (lookup_provider_by_npi, search_providers, get_dso_affiliation, get_territory_summary) wrap the ProviderSignal /api/v1/agent/* REST API. Authenticate with Authorization: Bearer ps_live_<key> for subscription billing, or pay per call in USDC on Base mainnet via x402. Discovery manifest at /.well-known/mcp.json. Every response carries a citation envelope with source attribution and a confidence score.
Four tools, dozens of agent workflows
Each card below is a real prompt a buyer might give an AI agent that has this MCP server connected. The tool pills show how the workflow maps back to the underlying calls.
"Find dentists in Dallas County whose licenses expire in the next 6 months and aren't affiliated with a DSO."
search_providersget_dso_affiliationOutcome: Renewal-window call list, filtered to rep-direct buyers (no chain procurement gates).
"Show me Texas markets with the highest density of solo independents over 55, and tell me how many practices each ZIP code has."
get_territory_summarysearch_providersOutcome: Acquisition heatmap of retirement-risk independents, ranked by ZIP-level concentration.
"Look up NPI 1376155820 and tell me if there are any disciplinary actions, OIG exclusions, or anomalies I should disclose to a buyer."
lookup_provider_by_npiOutcome: One-shot due-diligence check before engaging a seller. Citation envelope shows the source date and confidence score for legal defensibility.
"Cross-reference these 200 NPI numbers from a CRM export and flag any that have changed addresses, expired, or moved into a DSO since last quarter."
lookup_provider_by_npiget_dso_affiliationOutcome: Bulk freshness check that turns a stale CRM into a maintained source of truth. Per-call USDC billing fits batch jobs cleanly.
A 2-tool answer in a real Claude.ai conversation
The flow below is what a connected client renders for the user. The MCP server calls the tools, the agent formats the final answer.
1. User prompt
2. Agent calls get_territory_summary
3. Agent calls search_providers (Travis County subset)
4. Agent answer to the user
Two tool calls, ~$2.85 total in per-call USDC (x402 rail) or 3 credits on the subscription rail. Citation envelope provides the freshness date the agent quotes back to the user.
Tools (4 read-only)
Each MCP tool maps to one path under /api/v1/agent. Every response is wrapped in a citation envelope (see Response Shape). Full input schemas (JSON Schema for every parameter) are served by the tools/list JSON-RPC method.
Resolve a 10-digit NPI to a full provider record. Use when an agent has the NPI and needs name, taxonomy, practice address, license status, DSO flag, OIG-exclusion flag, lat/lon, CMS-claims flag, and a 0-100 confidence score (about 30 fields).
Sample call & response ›
Filtered list with pagination. Use when an agent needs to find practices by geography or status. Filters compose with AND. per_page caps at 100. Returns the same envelope as lookup with a compact per-row record array.
Sample call & response ›
Determine whether a provider is part of a Dental Service Organization, which one, and how confident the inference is. Use when buying decisions hinge on chain procurement vs independent rep-direct.
Sample call & response ›
Aggregate market intelligence for a geography. Use when scoping a new sales territory, evaluating an acquisition market, or comparing regions. Returns provider count, DSO penetration, retirement-risk count, license-status breakdown, organization count.
Sample call & response ›
Pick a billing rail
Both rails authenticate against the same backend. Choose based on your traffic profile.
Bearer-token subscription
Pass an existing ProviderSignal API key on every request. Per-call usage rides your subscription tier's rate limit.
- Pro / Rep tiers: 500 req/min
- Team: 200 req/min
- Enterprise: 1,000+ req/min
- Get a key at /settings/api-keys
x402 per-call USDC
Skip the subscription. Call /api/v1/agent/* directly. The first request returns 402 with PaymentRequirements; sign a USDC transfer on Base mainnet and retry with X-PAYMENT.
- $0.10 to $2.50 per call (see pricing below)
- No signup, no credit card
- Settles on Base mainnet (chain id 8453)
- Full flow: /docs/agent-payments
Native x402 challenge inside an MCP tool call is a v1.1 deferred item. Most MCP clients today don't handle the tool-call payment-challenge loop. Until they do, x402 is reachable outside MCP via the direct /api/v1/agent/* endpoints.
Per-call USDC pricing
Subscription becomes more economical above roughly $30/mo of per-call spend. For batch jobs and infrequent calls, x402 wins on simplicity (no key management) and cost.
basic tier endpoints (lookup, search) are priced near commodity because the underlying data is largely derivable from public NPI sources. moat tier endpoints (DSO inference, scoring, license events history, territory rollup) encode work that takes months to replicate from raw sources, and are priced 10-25x basic.
Endpoint
Streamable HTTP transport per the Model Context Protocol spec. POST JSON-RPC 2.0 messages to:
Discovery manifest (no auth required):
MCP protocol version implemented: 2025-06-18. Notifications return HTTP 204; batched JSON-RPC requests are supported.
Response Shape
Every tool returns a JSON-RPC result with a single content array carrying the citation envelope as text.
Initialize
List tools
Call a tool
Tool response (envelope)
The envelope inside content[0].text carries:
data— provider record, search results, or aggregatemeta.source_attribution— one entry per data table touched, withlast_refresh,schema_version, and license posturemeta.confidence.provider_record— 0-100 score with breakdown (completeness, multi-source, freshness)meta.request— request id, endpoint, billed credits, billing method (subscription or per_query)
The full field glossary lives at /docs/fields.
Input Validation
Tool arguments are validated at the edge before any database call. Validation errors return JSON-RPC -32602 (invalid params) and never burn rate-limit quota. Defense in depth: the main API re-validates everything server side.
- npi:
/^\d{10}$/ - state:
/^[A-Z]{2}$/ - zip:
/^\d{5}(-\d{4})?$/(5- or 9-digit) - license_status: enum (active, inactive, expired, retired, deceased)
- page: integer 1 to 10000
- per_page: integer 1 to 100
- strings: 200 chars max (city: 80 max)
Rate Limits & Body Cap
Three guard rails:
- 60 req/min per IP at the MCP edge, enforced by the Cloudflare-native rate limiter. Fires before any auth or parse work, so anonymous probes cost almost nothing.
- 16 KB body cap via Content-Length. Larger requests return HTTP 413 before parse.
- Per-key tier limit from your subscription (Pro 500/min, Team 200/min, Enterprise higher). Enforced after key validation.
When you hit a 429, the response includes a retry_after_seconds hint plus standard X-RateLimit-* headers.
Discovery Manifest
The .well-known/mcp.json manifest is the 2026 MCP-discovery convention. MCP-aware clients fetch it on connect and render the results in their connector picker.
- Server name, version, protocol version, transport
- Primary auth: Bearer;
alternateBillingblock with the full x402 price ladder - Tool list with names and short descriptions
Connect a Client
Claude.ai (Pro / Team / Enterprise)
- Settings › Connectors › Add custom connector
- URL:
https://mcp.providersignal.com/mcp - Bearer token: paste your
ps_live_key - Save. Claude probes the manifest and registers all four tools.
Cursor
Settings › MCP › Add new MCP server. Same URL + Bearer token. Cursor lists the tools in its agent panel and makes them available in any chat.
Cline (VS Code)
Continue (JetBrains / VS Code)
Add to your config.json under experimental.modelContextProtocolServers with the same URL and Authorization header.
ChatGPT
Custom connector via the developer settings. URL and Bearer token same as above.
Custom agent code
Open a POST stream to the endpoint. Send initialize, then tools/list, then tools/call per the MCP spec. JSON-RPC 2.0 batches are supported.
Frequently asked questions
How do I connect to the ProviderSignal MCP server from Claude.ai?›
Open Claude.ai Settings, then Connectors, then Add custom connector. Paste https://mcp.providersignal.com/mcp as the URL and your ProviderSignal API key (ps_live_<...>) as the Bearer token. Save. Claude probes the discovery manifest at /.well-known/mcp.json and registers all four tools automatically.
What tools does the MCP server expose?›
Four read-only tools: lookup_provider_by_npi (full provider record by NPI), search_providers (filtered list by state/city/zip/license_status), get_dso_affiliation (Dental Service Organization chain inference), and get_territory_summary (aggregate market intelligence for a geography).
What does each call cost?›
Two billing rails. On the Bearer-token subscription rail, calls ride your existing tier rate limit (Pro/Rep 500 req/min, Team 200, Enterprise 1,000+). On the x402 per-call rail, prices range from $0.10 (basic lookup) to $2.50 (territory rollup) in USDC on Base mainnet. Subscription becomes more economical above ~$30/mo of per-call spend.
Is there a free tier?›
Yes. /api/v1/free/lookup serves 100 NPI lookups per IP per day with no authentication. Use it to evaluate data quality before committing to a subscription or x402 wallet setup. See /docs/free-tier.
What data sources back the responses?›
NPPES (HHS National Plan and Provider Enumeration System), state dental boards (41 states + DC enriched), CMS Medicare Part B billing data, NPDB malpractice and adverse-action data, OIG LEIE federal exclusion list, and 49 state Medicaid fee schedules. Every response carries a meta.source_attribution array listing the tables touched and their last refresh dates.
What is the citation envelope?›
Every API response wraps the data payload in a meta object containing source_attribution (which tables provided the data), confidence (a 0-100 score with completeness/multi-source/freshness breakdown), and request (id, endpoint, billed credits, billing method). The envelope is the canonical legal-defensibility surface and lets agents cite their work back to a buyer.
Which MCP clients work with this server?›
Anything that speaks the MCP Streamable HTTP transport: Claude.ai (custom connectors), Cursor (Settings > MCP), Cline (VS Code, via mcp.json), Continue (JetBrains/VS Code), ChatGPT (custom connector in developer settings), and any agent code that POSTs JSON-RPC 2.0 to the /mcp endpoint with a Bearer header.
Why is x402 not yet exposed inside MCP tool calls?›
Most MCP clients in 2026 don't yet implement the tool-call payment-challenge loop required to handle a 402 returned mid-tool-call. Until they do, the x402 path is reachable outside MCP via direct calls to /api/v1/agent/*. The MCP server itself uses Bearer-token subscription auth; native x402 inside MCP is a v1.1 deferred item.
References
- Agent payments via x402 + USDC: per-call billing rail, network details, payment flow.
- Free evaluation tier: 100 lookups per day, no auth required.
- Field glossary & stability commitment: every field returned, with deprecation policy.
- Full REST API reference: auth, scopes, pagination, errors.
- /openapi.json: OpenAPI 3.1 spec covering every endpoint.
- modelcontextprotocol.io: Model Context Protocol spec.
- x402.org: x402 protocol spec.