Koskamo

GPH Intelligence MCP

An MCP server that allows agents to search a directory of 76,000+ curated healthcare service vendors, match practices to providers based on specialty and location, and retrieve detailed provider profiles.

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.

GPH Intelligence MCP logo, by Crindo2Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Crindo2
MCP endpoint (Streamable HTTP)
https://gph-mcp-server.pages.dev/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 5 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Match a medical practice to top-rated providers by specialty and budget
  • Search the full provider directory with specific filters
  • Get full profile details for a healthcare vendor by slug

Source and maintenance

Community listingRegistry 1.1.1
Maintenance checked

Protocol and capabilities

Server
gph-intelligence 1.1.1
MCP protocol negotiated in check
2024-11-05
Tools
6 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {},
  "resources": {}
}

Tools

6 advertised

match_practice — Recommend Healthcare Vendors for a Practice
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recommend and rank the best healthcare vendors for a specific medical practice. Use this when a practice manager, physician, or administrator asks for a recommendation, e.g. "recommend a medical billing / RCM company for my practice", "who should I use for credentialing / payer enrollment", "find an EHR for my small [specialty] practice", or "which practice-management software fits a [size] practice in [city, state]". Scores and ranks providers against the practice profile (specialty, size, location, EHR system, budget) and returns up to 5 merit-ranked matches (completeness-scored, no paid placement) with {company_name, category, city, state_abbr, quality_score (0-100; profile completeness -- how many listing fields are filled in -- not a quality or reputation rating; 0 means never scored), final_score (0-100), description, website, profile_url, slug}. Use service_needs to specify up to six controlled service codes for staffing, billing or credentialing; codes must belong to the requested category. Use vendor_geo_preference to prefer local or state vendors, allow national vendors, or request only national or explicitly serves-your-state vendors. State is the practice location and may be omitted only with NATIONAL_OK or NATIONAL_ONLY; category remains required. Capability evidence, geography basis, profile extraction date and service-need coverage are returned where available; missing evidence is unknown, never a verified or paid badge. For open-ended browsing without a practice profile, use search_providers. Pass a match's slug to get_provider_detail for the full profile.

match_practice input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "state"
      ]
    },
    {
      "required": [
        "vendor_geo_preference"
      ],
      "properties": {
        "vendor_geo_preference": {
          "enum": [
            "NATIONAL_OK",
            "NATIONAL_ONLY"
          ]
        }
      }
    }
  ],
  "required": [
    "category"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City where the practice is located. Send city and state separately, not as a combined `location` string."
    },
    "state": {
      "type": "string",
      "description": "Practice location as a two-letter state abbreviation (e.g. 'TX', 'CA', 'NY'). Required unless vendor_geo_preference is NATIONAL_OK or NATIONAL_ONLY. Send as `state`, not `state_abbr` (`state_abbr` is an output field name only)."
    },
    "category": {
      "type": "string",
      "description": "Service category needed. One of the 25 categories: 'Medical Billing & RCM', 'Credentialing Services', 'Healthcare IT & EHR', 'Practice Management Consulting', 'Healthcare Legal Services', 'Healthcare CPA & Tax Advisory', 'Medical Coding Services', 'Healthcare Staffing & Recruiting', 'Healthcare Marketing & Reputation Management', 'Compliance & HIPAA Services', 'Medical Equipment & Supplies', 'Healthcare Real Estate & Site Selection', 'Practice Financing & Loans', 'Healthcare Construction & Facilities', 'Healthcare Signage & Wayfinding', 'Medical Waste & Environmental Services', 'Healthcare Insurance & Malpractice Brokers', 'Practice Valuation & Brokerage', 'Patient Financing & Payment Solutions', 'Medical Transcription & Documentation', 'Pharmacy & Medication Management', 'Telehealth & Virtual Care Infrastructure', 'Laboratory & Diagnostics Services', 'Group Purchasing Organizations (GPOs)', 'Healthcare PR & Communications'. Common aliases also resolve (e.g. 'billing', 'RCM', 'EHR', 'credentialing'). Call list_categories for the live list with provider counts."
    },
    "specialty": {
      "type": "string",
      "description": "Medical specialty of the practice (e.g. 'Family Medicine', 'Cardiology', 'Pediatrics', 'Dermatology')"
    },
    "ehr_system": {
      "type": "string",
      "description": "EHR system used by the practice (e.g. 'Epic', 'athenahealth', 'AdvancedMD', 'eClinicalWorks'). Helps score providers with compatible integrations higher."
    },
    "budget_range": {
      "enum": [
        "Under $500",
        "$500-$2,000",
        "$2,000-$5,000",
        "$5,000+",
        "Not sure"
      ],
      "type": "string",
      "description": "Approximate monthly budget"
    },
    "practice_size": {
      "enum": [
        "Solo",
        "Small",
        "Mid-size",
        "Large"
      ],
      "type": "string",
      "description": "Size of the practice by provider count. The parameter is named `practice_size`, not `size`."
    },
    "service_needs": {
      "type": "array",
      "items": {
        "enum": [
          "STAFFING_ROLE_NP",
          "STAFFING_ROLE_PA",
          "STAFFING_ROLE_APP",
          "STAFFING_ROLE_PHYSICIAN",
          "STAFFING_ROLE_RN",
          "STAFFING_ROLE_ALLIED",
          "STAFFING_ROLE_CLINICAL_SUPPORT",
          "STAFFING_ENG_PERMANENT",
          "STAFFING_ENG_LOCUM",
          "STAFFING_ENG_TEMPORARY",
          "STAFFING_ENG_TEMP_TO_HIRE",
          "STAFFING_ENG_PRN",
          "STAFFING_SET_URGENT_CARE",
          "STAFFING_SET_OUTPATIENT",
          "STAFFING_SET_PRIMARY_CARE",
          "STAFFING_SET_EMERGENCY",
          "STAFFING_SET_INPATIENT",
          "BILLING_SCOPE_FULL_RCM",
          "BILLING_SCOPE_CLAIMS_SUBMISSION",
          "BILLING_SCOPE_DENIAL_MANAGEMENT",
          "BILLING_SCOPE_AR_FOLLOWUP",
          "BILLING_SCOPE_PATIENT_BILLING",
          "BILLING_SCOPE_CHARGE_CAPTURE",
          "BILLING_SCOPE_ELIGIBILITY_VERIFICATION",
          "BILLING_SCOPE_CODING",
          "CRED_PAYER_ENROLLMENT",
          "CRED_INITIAL_CREDENTIALING",
          "CRED_RECREDENTIALING",
          "CRED_CAQH",
          "CRED_HOSPITAL_PRIVILEGING",
          "CRED_STATE_LICENSING",
          "CRED_MEDICARE_MEDICAID_ENROLLMENT",
          "CRED_DELEGATED_CREDENTIALING"
        ],
        "type": "string"
      },
      "maxItems": 6,
      "description": "Up to six distinct controlled service codes, never free text. STAFFING_* codes apply to Healthcare Staffing & Recruiting, BILLING_* codes to Medical Billing & RCM, and CRED_* codes to Credentialing Services (including aliases). Within a staffing facet codes are alternatives; across facets they ask for combined coverage. Un-evidenced needs are unknown and never exclude a vendor.",
      "uniqueItems": true
    },
    "vendor_geo_preference": {
      "enum": [
        "LOCAL_PREFERRED",
        "STATE_PREFERRED",
        "NATIONAL_OK",
        "NATIONAL_ONLY"
      ],
      "type": "string",
      "description": "Vendor geography preference, separate from practice location: LOCAL_PREFERRED prefers same-city vendors, STATE_PREFERRED prefers in-state vendors, NATIONAL_OK allows national vendors to compete across geography tiers, and NATIONAL_ONLY restricts eligibility to national or explicitly serves-your-state vendors. State may be omitted for NATIONAL_OK or NATIONAL_ONLY."
    }
  }
}
match_practice output schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "ids": {
      "type": "object",
      "properties": {
        "surfaced": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider slugs shown, in ranked order."
        }
      },
      "description": "Absent when isError."
    },
    "count": {
      "type": "integer",
      "description": "Total scored candidates before the top-5 slice; absent when isError."
    },
    "content": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "text"
        ],
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "const": "text"
          }
        }
      }
    },
    "isError": {
      "type": "boolean",
      "description": "Present and true only on failure (match request error or no candidates)."
    }
  }
}
match_practice annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_providers — Search the Healthcare Vendor Directory
Advertised by the server during the last successful anonymous check.
Advertised read-only

Browse and filter the healthcare vendor directory. Use this for open-ended exploration, e.g. "show me medical billing companies in Texas", "list credentialing services", "what EHR vendors are there for cardiology", or when the user wants to page through options rather than get a scored shortlist. Paginated results filtered by category, location, minimum profile-completeness score, curated Tier-1 grade, and practice-size fit; returns a page of providers with {company_name, category, city, state_abbr, quality_score (0-100; profile completeness, not a quality rating; 0 means never scored), contact info, slug}. For a scored recommendation to a specific practice profile, use match_practice instead. Pass a returned slug to get_provider_detail for the full profile.

search_providers input schema
{
  "type": "object",
  "required": [
    "category"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City to filter by. Matches one exact city only: the value is compared as a city slug (case and punctuation ignored, e.g. 'San Antonio' matches 'san-antonio'); partial names and prefixes do not match."
    },
    "page": {
      "type": "number",
      "default": 1,
      "minimum": 1,
      "description": "Page number for pagination (default 1)"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state abbreviation (e.g. 'TX'). Send as `state`, not `state_abbr` (`state_abbr` is an output field name only). National providers always included."
    },
    "category": {
      "type": "string",
      "description": "Service category to search. One of the 25 categories: 'Medical Billing & RCM', 'Credentialing Services', 'Healthcare IT & EHR', 'Practice Management Consulting', 'Healthcare Legal Services', 'Healthcare CPA & Tax Advisory', 'Medical Coding Services', 'Healthcare Staffing & Recruiting', 'Healthcare Marketing & Reputation Management', 'Compliance & HIPAA Services', 'Medical Equipment & Supplies', 'Healthcare Real Estate & Site Selection', 'Practice Financing & Loans', 'Healthcare Construction & Facilities', 'Healthcare Signage & Wayfinding', 'Medical Waste & Environmental Services', 'Healthcare Insurance & Malpractice Brokers', 'Practice Valuation & Brokerage', 'Patient Financing & Payment Solutions', 'Medical Transcription & Documentation', 'Pharmacy & Medication Management', 'Telehealth & Virtual Care Infrastructure', 'Laboratory & Diagnostics Services', 'Group Purchasing Organizations (GPOs)', 'Healthcare PR & Communications'. Common aliases also resolve (e.g. 'billing', 'RCM', 'EHR', 'credentialing'). Call list_categories for the live list with provider counts. This tool does NOT accept a specialty filter -- use match_practice for specialty-aware ranking."
    },
    "per_page": {
      "type": "number",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "Results per page (1-25, default 10)"
    },
    "min_rating": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Minimum profile-completeness score (0-100; how many listing fields are filled in, not a quality or reputation rating). Most providers score 50-85. The parameter is named `min_rating`, not `min_quality_score`."
    },
    "tier1_grade": {
      "enum": [
        "A",
        "B"
      ],
      "type": "string",
      "description": "Filter to the curated Tier-1 provider set by grade: 'A' (top-graded) or 'B' (strong). Tier-1 is a hand-reviewed ~4,400-provider subset; most directory records are not Tier-1, so this narrows results sharply. Omit to search the full directory."
    },
    "practice_size_fit": {
      "enum": [
        "Solo",
        "Small",
        "Mid-size",
        "Large",
        "All"
      ],
      "type": "string",
      "description": "Filter providers by the practice size they best serve, on the directory's one closed vocabulary: Solo, Small, Mid-size, Large, All. The filter reads the extracted size where one exists and the listing's stated fit otherwise; a listing stating 'Solo/Small' answers both Solo and Small. 'All' means the vendor serves every size -- on listings that were never extracted it is also the default, so it narrows results little."
    }
  }
}
search_providers output schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "ids": {
      "type": "object",
      "properties": {
        "surfaced": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provider slugs on this page, in returned order."
        }
      },
      "description": "Absent when isError."
    },
    "count": {
      "type": "integer",
      "description": "Total matching providers across all pages; absent when isError."
    },
    "content": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "text"
        ],
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "const": "text"
          }
        }
      }
    },
    "isError": {
      "type": "boolean",
      "description": "Present and true only on failure."
    }
  }
}
search_providers annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_provider_detail — Get Vendor Profile Detail
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full profile of one healthcare vendor by slug. Use this after match_practice or search_providers when the user asks to "tell me more about [vendor]", "what services does [vendor] offer", "where did GPH get this information", or wants contact info or services for a specific provider. Returns company_name, category, city/state, quality_score (0-100; profile completeness, not a quality rating; 0 means never scored), description, services offered, practice_size_fit, phone and website where listed, Google rating and Google review count where present, a Provenance section that labels each fact GPH-researched, Vendor-supplied, GPH-verified or GPH conclusion with its last-checked date where one exists, and the profile URL. No listing carries a verified badge: the legacy verified flag is not a recorded check and is not shown. Where a vendor has been enrichment-extracted, the description, services and practice-size fit come from that extraction, the profile adds certifications and compliance attestations, locations served and founding year where extracted, and the response states the extraction confidence and what it was grounded in (where the extraction abstained on practice-size fit, the legacy listing value is returned and labelled as not extracted); otherwise the legacy listing fields are returned. Slug comes from match_practice or search_providers results; returns an error if the slug is unknown.

get_provider_detail input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Provider slug identifier (e.g. 'ams-solutions-inc-dallas-tx'). Obtained from match_practice or search_providers response."
    }
  }
}
get_provider_detail output schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "ids": {
      "type": "object",
      "properties": {
        "drilled": {
          "type": "string",
          "description": "The slug that was looked up."
        }
      },
      "description": "Absent when isError."
    },
    "count": {
      "const": 1,
      "description": "Always 1 on success; absent when isError."
    },
    "content": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "text"
        ],
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "const": "text"
          }
        }
      }
    },
    "isError": {
      "type": "boolean",
      "description": "Present and true only when the slug is unknown or the fetch fails."
    }
  }
}
get_provider_detail annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — List Healthcare Vendor Categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every service category in the GPH vendor directory with its live provider count. Call this FIRST when you do not already know which category fits the user's need, when a category search returned nothing, or when the user asks what kinds of vendors are available. Returns all 25 categories with {category, slug, providers}. The category names returned here are the exact values match_practice and search_providers expect (common aliases also resolve). Takes no arguments.

list_categories input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_categories output schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of categories returned; absent when isError."
    },
    "content": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "text"
        ],
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "const": "text"
          }
        }
      }
    },
    "isError": {
      "type": "boolean",
      "description": "Present and true only on failure."
    }
  }
}
list_categories annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_ehr_product_detail — Get EHR Product Detail
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Read the free versioned EHR product JSON projection by exact product key. Returns the complete HTTP JSON body, including explicit edition records, facts, plans, conditions, sources and publication metadata. Optional edition_key validates an explicit identity under this product; the full product response is returned unchanged. No alias resolution, edition inheritance, calculation or ranking. Unknown values and open bounds remain unchanged. Company profiles use get_provider_detail.

get_ehr_product_detail input schema
{
  "type": "object",
  "required": [
    "product_key"
  ],
  "properties": {
    "edition_key": {
      "type": "string",
      "pattern": "^[a-z0-9-]+$",
      "description": "Optional exact edition key explicitly recorded under this product. Does not filter or merge facts."
    },
    "product_key": {
      "type": "string",
      "pattern": "^[a-z0-9-]+$",
      "description": "Exact P1 product key; aliases are not accepted."
    }
  },
  "additionalProperties": false
}
get_ehr_product_detail annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
practice_data_counts — Practice Data Counts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Counts practices with headline (strongest-tier) evidence only, by US state and practice segment, from the public Practice Data aggregate endpoint (unit: practices (headline evidence)). It excludes lower-evidence records, so these numbers are lower than the all-record totals on the Practice Data product pages (507,423 nationally as published there). Cells with fewer than 25 practices are not published (returned with count null and suppressed true). Aggregate counts only: no records or names are returned. Optional state and segment filters narrow the result; the JSON body is returned unchanged.

practice_data_counts input schema
{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Optional two-letter capital US state code, e.g. TX."
    },
    "segment": {
      "enum": [
        "primary-care",
        "dental",
        "pt-ot-speech",
        "specialty-clinics",
        "behavioral-health",
        "derm-peds-vision-podiatry"
      ],
      "type": "string",
      "description": "Optional practice segment slug, one of the six served by the endpoint, e.g. primary-care."
    }
  },
  "additionalProperties": false
}
practice_data_counts annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

1 advertised

find_vendor

Advertised by the server during the last successful anonymous check.

Find the best healthcare service vendor for a medical practice

need
What the practice needs help with (e.g. medical billing, credentialing, EHR) (required)
location
City and state of the practice

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

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
534 ms
95th percentile latency
534 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 534 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http gph-intelligence-mcp https://gph-mcp-server.pages.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add gph-intelligence-mcp --url https://gph-mcp-server.pages.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable gph-intelligence-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "gph-intelligence-mcp": {
      "url": "https://gph-mcp-server.pages.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "gph-intelligence-mcp": {
      "type": "streamableHttp",
      "url": "https://gph-mcp-server.pages.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start gph-intelligence-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "gph-intelligence-mcp": {
      "type": "http",
      "url": "https://gph-mcp-server.pages.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http gph-intelligence-mcp https://gph-mcp-server.pages.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://gph-mcp-server.pages.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "gph-intelligence-mcp": {
      "serverUrl": "https://gph-mcp-server.pages.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like GPH Intelligence MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.