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), verified status, 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.7/5.0
Behavior5/5

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

Annotations already mark the operation read-only, idempotent, and non-destructive; the description adds substantive behavior beyond that: pagination, the meaning of quality_score as profile completeness rather than quality, 0 meaning never scored, national providers always being included, and the sharp narrowing effect of Tier-1 filtering. These are non-obvious, decision-relevant behaviors an agent needs before calling.

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

Conciseness5/5

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

The description is front-loaded with the core verb phrase and keeps examples, output-shape, and routing notes in compact clauses. Every sentence contributes either usage guidance, filter/return semantics, or sibling differentiation; there is no filler.

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?

With an output schema present, the description did not need to enumerate return values, yet it still names the returned fields and clarifies the ambiguous quality_score field. Combined with the detailed parameter descriptions and annotations, an agent has everything needed to call search_providers correctly, including pagination and the distinction from match_practice.

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

Parameters3/5

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

Schema description coverage is 100%, and the input schema already documents each parameter in detail, including city slug matching, state vs state_abbr, category aliases, min_rating semantics, and the practice_size vocabulary. The prose description only names the filter categories at a high level and does not add new parameter-level meaning, so it stays at the baseline for high schema coverage.

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?

The text opens with 'Browse and filter the healthcare vendor directory,' naming a concrete verb, object, and intent. It also preempts confusion with sibling tools by explicitly separating open-ended exploration and paging from a scored shortlist, and it points to match_practice and get_provider_detail for adjacent tasks.

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?

The description states explicitly when to use this tool ('open-ended exploration', 'page through options rather than get a scored shortlist') and when to use an alternative ('For a scored recommendation to a specific practice profile, use match_practice instead'). It also closes the loop by instructing the agent to pass a returned slug to get_provider_detail for full profiles.

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.