Skip to main content
Glama

GPH Intelligence - Healthcare Vendor Finder

Search the Healthcare Vendor Directory

search_providers
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoCity 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.
pageNoPage number for pagination (default 1)
stateNoTwo-letter state abbreviation (e.g. 'TX'). Send as `state`, not `state_abbr` (`state_abbr` is an output field name only). National providers always included.
categoryYesService 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_pageNoResults per page (1-25, default 10)
min_ratingNoMinimum 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_gradeNoFilter 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_fitNoFilter 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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idsNoAbsent when isError.
countNoTotal matching providers across all pages; absent when isError.
contentYes
isErrorNoPresent and true only on failure.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / city / description
      Previous value: -"City name to filter by (partial match supported)"New value: +"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."
  2. Changed2 schema fields changed
    • changedInput schema / properties / practice_size_fit / description
      Previous value: -"Filter providers by the practice size they best serve."New value: +"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."
    • changedInput schema / properties / practice_size_fit / enum
      Previous value: -[
      -  "Solo/Small",
      -  "Mid-size",
      -  "Large",
      -  "All"
      -]New value: +[
      +  "Solo",
      +  "Small",
      +  "Mid-size",
      +  "Large",
      +  "All"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / min_rating / description
      Previous value: -"Minimum quality score (0-100). Most providers score 50-85. The parameter is named `min_rating`, not `min_quality_score`."New value: +"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`."
  4. Changed3 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Service category to search (e.g. 'Medical Billing & RCM', 'Credentialing Services')"New value: +"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."
    • changedInput schema / properties / min_rating / description
      Previous value: -"Minimum quality score (0-100). Most providers score 50-85."New value: +"Minimum quality score (0-100). Most providers score 50-85. The parameter is named `min_rating`, not `min_quality_score`."
    • changedInput schema / properties / state / description
      Previous value: -"Two-letter state abbreviation (e.g. 'TX'). National providers always included."New value: +"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."
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "content": {
      +      "items": {
      +        "properties": {
      +          "text": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "const": "text"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "count": {
      +      "description": "Total matching providers across all pages; absent when isError.",
      +      "type": "integer"
      +    },
      +    "ids": {
      +      "description": "Absent when isError.",
      +      "properties": {
      +        "surfaced": {
      +          "description": "Provider slugs on this page, in returned order.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "isError": {
      +      "description": "Present and true only on failure.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "content"
      +  ],
      +  "type": "object"
      +}
  6. Changed4 schema fields changed
    • changedInput schema / properties / per_page / description
      Previous value: -"Results per page (1-50, default 10)"New value: +"Results per page (1-25, default 10)"
    • changedInput schema / properties / per_page / maximum
      Previous value: -50New value: +25
    • addedInput schema / properties / practice_size_fit
      Added value: +{
      +  "description": "Filter providers by the practice size they best serve.",
      +  "enum": [
      +    "Solo/Small",
      +    "Mid-size",
      +    "Large",
      +    "All"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / tier1_grade
      Added value: +{
      +  "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.",
      +  "enum": [
      +    "A",
      +    "B"
      +  ],
      +  "type": "string"
      +}
  7. Changed12 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Service category to search (e.g. 'Medical Billing & RCM')"New value: +"Service category to search (e.g. 'Medical Billing & RCM', 'Credentialing Services')"
    • changedInput schema / properties / city / description
      Previous value: -"City name to filter by"New value: +"City name to filter by (partial match supported)"
    • changedInput schema / properties / min_rating / description
      Previous value: -"Minimum quality score (0-100)"New value: +"Minimum quality score (0-100). Most providers score 50-85."
    • addedInput schema / properties / min_rating / maximum
      Added value: +100
    • addedInput schema / properties / min_rating / minimum
      Added value: +0
    • addedInput schema / properties / page / default
      Added value: +1
    • addedInput schema / properties / page / minimum
      Added value: +1
    • addedInput schema / properties / per_page / default
      Added value: +10
    • changedInput schema / properties / per_page / description
      Previous value: -"Number of results to return (default 10, max 50)"New value: +"Results per page (1-50, default 10)"
    • addedInput schema / properties / per_page / maximum
      Added value: +50
    • addedInput schema / properties / per_page / minimum
      Added value: +1
    • changedInput schema / properties / state / description
      Previous value: -"Two-letter state abbreviation"New value: +"Two-letter state abbreviation (e.g. 'TX'). National providers always included."
  8. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral context: pagination, the returned field set, that quality_score is profile completeness not quality (0 = never scored), and that tier1_grade narrows sharply to a hand-reviewed ~4,400 subset.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the routing decision, then return shape and parameter caveats. Slightly dense with redundant example queries and some restatement of schema notes, but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still conveys return shape and the slug handoff; parameter caveats (aliases, enum vocabularies, filter interactions) are covered. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3. The description adds genuine beyond-schema meaning: the quality_score caveat, the 'not a quality rating' framing for min_rating, and the negative constraint that no specialty filter exists here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Browse and filter the healthcare vendor directory') and explicitly distinguishes itself from match_practice (scored shortlist) and get_provider_detail (full profile via slug). An agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the exact conditions for use ('open-ended exploration', paging through options) and the exclusion ('rather than get a scored shortlist'), then points to match_practice for specialty-aware/scored ranking. Also explains the follow-up path to get_provider_detail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.