InPlan MCP
An official MCP server provided by InPlan that allows AI agents to check Medicare Advantage and marketplace plan provider networks. It exposes seven tools to verify if a provider is listed in a specific plan, retrieve provider details, list plans for a provider, and access coverage data, all while preserving source evidence and dates.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.inplan.io/mcpWhat you can do with it
- Check if a provider is in a specific plan
- Retrieve provider profile and specialties
- List all plans listing a specific provider
- Get plan details and coverage data
Source and maintenance
Protocol and capabilities
- Server
- inplan 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
lookup_provider — Look up a provider by NPI
Identity of a US healthcare provider by NPI: name, credential, specialties, practice locations and groups, plus a summary of the Marketplace (ACA) and Medicare Advantage plans whose network directories list them (plan counts, states, plan years, as_of dates). Use it to confirm who an NPI is before checking networks. For the plan list itself use plans_for_provider. Costs 1 call.
{
"type": "object",
"required": [
"npi"
],
"properties": {
"npi": {
"type": "string",
"description": "10-digit National Provider Identifier, as a string, e.g. \"1184617268\"."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Look up a provider by NPI",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}plans_for_provider — Plans that list a provider
Every Marketplace (ACA) and Medicare Advantage plan whose network directory lists the provider, one row per plan and plan year, each with plan name, insurer, state, network tier and source {type, as_of}. Medicare Advantage rows carry service_area_states and provider_state_in_service_area. Filter by market, state or year; page with limit and offset (next_offset is null on the last page). A plan missing from this list is not a statement that the provider is out of network. Costs 1 call per page.
{
"type": "object",
"required": [
"npi"
],
"properties": {
"npi": {
"type": "string",
"description": "10-digit National Provider Identifier, as a string, e.g. \"1184617268\"."
},
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Plans per page, 1 to 500. Default 50."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. \"OH\". Optional."
},
"market": {
"enum": [
"aca",
"ma"
],
"type": "string",
"description": "\"aca\" = Marketplace plans, \"ma\" = Medicare Advantage plans. Optional; default both."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip; pass next_offset from the previous page. Default 0."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Plans that list a provider",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_network — Is this provider in this plan?
Answers whether one plan's network directory lists one provider. answer "listed" (in_network: true) comes with evidence: plan year, network tier and source {type, as_of}. answer "not_found" (in_network: null) means no listing was found in current directory data for this provider and plan; it is NOT a statement that the provider is out of network, so never report it as "out of network". answer "no_provider_network" is a drug-only plan. Directories change; tell users to confirm with the plan before care. Costs 1 call.
{
"type": "object",
"required": [
"npi",
"plan_id"
],
"properties": {
"npi": {
"type": "string",
"description": "10-digit National Provider Identifier, as a string, e.g. \"1184617268\"."
},
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"plan_id": {
"type": "string",
"description": "Plan ID. Marketplace (ACA) plans: 14 characters like \"29276OH0970001\" (a 16-character \"-01\" variant form is accepted). Medicare Advantage plans: \"H1234-001-000\" (the segment \"-000\" is optional)."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Is this provider in this plan?",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_network_batch — Check up to 100 provider and plan pairs
The check_network answer for up to 100 (npi, plan_id) pairs in one request, with the same listed / not_found / no_provider_network semantics. Invalid pairs come back with a per-item error and are not charged; each accepted pair costs 1 call. Needs the Builder plan or higher.
{
"type": "object",
"required": [
"items"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Default plan year for items that do not set one. Optional."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi",
"plan_id"
],
"properties": {
"npi": {
"type": "string",
"description": "10-digit National Provider Identifier, as a string, e.g. \"1184617268\"."
},
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"plan_id": {
"type": "string",
"description": "Plan ID. Marketplace (ACA) plans: 14 characters like \"29276OH0970001\" (a 16-character \"-01\" variant form is accepted). Medicare Advantage plans: \"H1234-001-000\" (the segment \"-000\" is optional)."
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "1 to 100 pairs."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Check up to 100 provider and plan pairs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_plan — Plan details
Details of one Marketplace (ACA) or Medicare Advantage plan by plan ID: name, insurer or organization, state or service area, plan type, metal level, the plan years we hold, and whether we hold its directory listings, with their as_of date. Costs 1 call.
{
"type": "object",
"required": [
"plan_id"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"plan_id": {
"type": "string",
"description": "Plan ID. Marketplace (ACA) plans: 14 characters like \"29276OH0970001\" (a 16-character \"-01\" variant form is accepted). Medicare Advantage plans: \"H1234-001-000\" (the segment \"-000\" is optional)."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Plan details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_plan_providers — Providers listed in a plan
Providers that a Marketplace (ACA) plan's network directory lists, with name, credential, primary specialty, network tiers and up to 5 locations. Filter by state, specialty (substring, e.g. "cardiology"), zip, or zip plus radius in miles. Pages are cursor-based: pass next_cursor back unchanged until it is null; with filters a page can hold fewer than limit providers. Medicare Advantage plans: use check_network or plans_for_provider instead. Needs the Growth plan or higher. Costs 1 call per page.
{
"type": "object",
"required": [
"plan_id"
],
"properties": {
"zip": {
"type": "string",
"description": "5-digit ZIP code, as a string. Optional."
},
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Providers per page, 1 to 100. Default 25."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. \"OH\". Optional."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"radius": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Miles around zip, 1 to 100. Needs zip."
},
"plan_id": {
"type": "string",
"description": "Plan ID. Marketplace (ACA) plans: 14 characters like \"29276OH0970001\" (a 16-character \"-01\" variant form is accepted). Medicare Advantage plans: \"H1234-001-000\" (the segment \"-000\" is optional)."
},
"specialty": {
"type": "string",
"maxLength": 60,
"description": "Specialty name or part of it, e.g. \"family medicine\". Optional."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "Providers listed in a plan",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}coverage — What InPlan covers
The markets, states and insurers InPlan holds directory listings for, with plan counts and as_of dates, by plan year. Filter by market, state or year. Use it to see which states and insurers you can query. Costs 1 call.
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Plan year, e.g. 2026. Optional; by default all plan years we hold are considered."
},
"state": {
"type": "string",
"description": "2-letter US state code, e.g. \"OH\". Optional."
},
"market": {
"enum": [
"aca",
"ma"
],
"type": "string",
"description": "\"aca\" = Marketplace plans, \"ma\" = Medicare Advantage plans. Optional; default both."
}
}
}{
"type": "object",
"required": [
"request_id",
"data_as_of",
"data",
"sources"
],
"properties": {
"data": {
"type": "object",
"description": "The answer. Same shape as the matching InPlan API v1 endpoint.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "How to read the answer."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"description",
"as_of"
],
"properties": {
"type": {
"type": "string"
},
"as_of": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Source types behind the answer (insurer_directory, plan_directory, provider_registry, plan_catalog), each with its as_of date."
},
"data_as_of": {
"type": [
"string",
"null"
],
"description": "Date (YYYY-MM-DD) of the newest data behind this answer."
},
"request_id": {
"type": "string",
"description": "Request id; quote it when you contact support."
}
},
"additionalProperties": {}
}{
"title": "What InPlan covers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 631 ms
- 95th percentile latency
- 631 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 631 ms · metadata changed · 7 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http inplan-mcp https://api.inplan.io/mcpCodex
codex mcp add inplan-mcp --url https://api.inplan.io/mcpCursor
{
"mcpServers": {
"inplan-mcp": {
"url": "https://api.inplan.io/mcp"
}
}
}Cline
{
"mcpServers": {
"inplan-mcp": {
"type": "streamableHttp",
"url": "https://api.inplan.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"inplan-mcp": {
"type": "http",
"url": "https://api.inplan.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http inplan-mcp https://api.inplan.io/mcpClaude Desktop
{
"mcpServers": {
"inplan-mcp": {
"url": "https://api.inplan.io/mcp"
}
}
}Windsurf
{
"mcpServers": {
"inplan-mcp": {
"serverUrl": "https://api.inplan.io/mcp"
}
}
}Let your agent find its tools
Find servers like InPlan MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run InPlan MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.