Skip to main content
Glama

Find a procedure

search_cpt_codes
Read-onlyIdempotent

Find procedures by everyday name or billing code. Follow decision: clarify important variants before pricing; never choose a clinical default.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results (default 10, max 25)
queryYesConcise procedure name, medical term, or candidate CPT code; omit personal narratives and identifiers (e.g. "knee MRI", "blood work", "99213")
categoryNoFilter by category: "evaluation_management", "laboratory", "radiology", "surgery", "preventive"
specialtyNoFilter by medical specialty (e.g. "cardiology", "dermatology")

Output Schema

NameRequiredDescriptionDefault
queryYes
totalYes
resultsYes
categoryYes
coverageYes
decisionYes
specialtyYes
provenanceYes
suggestionsYes
pricing_codesYes
related_chargesYes
availability_scopeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • addedOutput schema / properties / availability_scope
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / decision
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "guidance": {
      +      "type": "string"
      +    },
      +    "options": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "question": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "status": {
      +      "enum": [
      +        "ready",
      +        "compare_variants",
      +        "needs_clarification",
      +        "no_match",
      +        "unavailable"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "question",
      +    "options",
      +    "guidance"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / pricing_codes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / related_charges
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "price_availability": {
      +        "enum": [
      +          "available",
      +          "unavailable",
      +          "unknown"
      +        ],
      +        "type": "string"
      +      },
      +      "pricing_note": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "name",
      +      "pricing_note",
      +      "price_availability"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / price_availability
      Added value: +{
      +  "enum": [
      +    "available",
      +    "unavailable",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / pricing_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / service_role
      Added value: +{
      +  "enum": [
      +    "procedure",
      +    "add_on",
      +    "separate_charge"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "code",
      -  "name",
      -  "description",
      -  "category",
      -  "isCommon"
      -]New value: +[
      +  "code",
      +  "name",
      +  "description",
      +  "category",
      +  "isCommon",
      +  "price_availability",
      +  "service_role",
      +  "pricing_note"
      +]
    • addedOutput schema / properties / suggestions
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "query",
      -  "specialty",
      -  "category",
      -  "total",
      -  "provenance",
      -  "results"
      -]New value: +[
      +  "query",
      +  "specialty",
      +  "category",
      +  "total",
      +  "provenance",
      +  "results",
      +  "coverage",
      +  "pricing_codes",
      +  "availability_scope",
      +  "related_charges",
      +  "suggestions",
      +  "decision"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / provenance / properties / source_url / description
      Added value: +"Supporting source link. A CMS Hospital Price Transparency policy page is not the hospital source file; do not attribute hospital-published prices to CMS."
  3. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Search query, procedure name, medical term, or CPT code number (e.g. \"knee MRI\", \"blood work\", \"99213\")"New value: +"Concise procedure name, medical term, or candidate CPT code; omit personal narratives and identifiers (e.g. \"knee MRI\", \"blood work\", \"99213\")"
  4. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real behavioral direction beyond that: results may be ambiguous and the agent must not silently pick a clinical default, which is exactly the failure mode for a code search.

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?

Two short sentences, front-loaded with the core action, with zero restated filler. The only weak spot is the telegraphic 'Follow decision:' phrasing, which reads as internal shorthand rather than clear instruction.

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

Completeness4/5

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

An output schema exists and annotations are rich, so return values and safety profile need no explanation. For a four-parameter search tool the description covers intent, query semantics, and disambiguation duty; only the vague 'important variants' clause leaves an agent guessing.

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 coverage is 100%, so limit, query, category, and specialty are already fully documented, including examples and the category vocabulary. The phrase 'everyday name or billing code' reinforces the query parameter's dual intent but adds little beyond the schema's own example ('knee MRI', '99213'). Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Find procedures by everyday name or billing code,' which makes clear it searches procedure/CPT records rather than providers, hospitals, or entities like the sibling search_* tools. It stops short of naming those siblings explicitly, but the resource is unambiguous.

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

Usage Guidelines3/5

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

'Follow decision: clarify important variants before pricing' implies a workflow position (search procedures before calling pricing tools such as get_pricing_estimate), but it never names an alternative tool or an explicit when-not condition. The guidance is suggestive rather than operational, and 'clarify important variants' is undefined.

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.