Skip to main content
Glama

Search the TestWell catalog

search_tests
Read-onlyIdempotent

Search TestWell's public catalog of cash-pay lab tests and panels by keyword, biomarker, CPT code, or category. Returns name, slug, per-lab prices, sample, fasting, turnaround and order URL. Prices are stickers; every order adds one $6 lab processing fee (see quote_order for all-in totals).

Input Schema

NameRequiredDescriptionDefault
langNoReturn Spanish names/descriptions where a translation exists (default en)
typeNoRestrict to individual tests or bundled panels
limitNoMax results (default 10)
queryYesKeyword, biomarker, CPT code or health goal, e.g. 'vitamin d', 'TSH', '80053', 'cholesterol'
categoryNoCatalog category, e.g. 'Thyroid', 'Heart Health'
orderableOnlyNoExclude items listed as coming soon (default true)

Output Schema

NameRequiredDescriptionDefault
langNo
countNo
itemsNo
queryNo
labFeeNoUSD

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / items / items / properties / measuredTurnaround / description
      Previous value: -"Measured medians from real orders (specimen at lab → results), per lab; published only when n ≥ 30. Empty until enough data exists."New value: +"Measured medians from real TestWell orders (specimen at lab → final results), per lab, in days; a pair is published only when it has 30+ completed orders. Sample sizes are not published."
    • removedOutput schema / properties / items / items / properties / measuredTurnaround / items / properties / n
      Removed value: -{
      -  "type": "number"
      -}
    • changedOutput schema / properties / items / items / properties / measuredTurnaround / items / required
      Previous value: -[
      -  "lab",
      -  "n",
      -  "medianDays",
      -  "asOf"
      -]New value: +[
      +  "lab",
      +  "medianDays",
      +  "asOf"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / items / items / properties / eligibility
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "attestation": {
      +          "type": "string"
      +        },
      +        "minAge": {
      +          "type": "number"
      +        },
      +        "mustOrderAlone": {
      +          "type": "boolean"
      +        },
      +        "unavailableStates": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / items / items / properties / measuredTurnaround
      Added value: +{
      +  "description": "Measured medians from real orders (specimen at lab → results), per lab; published only when n ≥ 30. Empty until enough data exists.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "asOf": {
      +        "type": "string"
      +      },
      +      "lab": {
      +        "type": "string"
      +      },
      +      "medianDays": {
      +        "type": "number"
      +      },
      +      "n": {
      +        "type": "number"
      +      },
      +      "p90Days": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "lab",
      +      "n",
      +      "medianDays",
      +      "asOf"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "count": {
      +      "type": "number"
      +    },
      +    "items": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "aliases": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "biomarkerCount": {
      +            "type": "number"
      +          },
      +          "biomarkers": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "category": {
      +            "type": "string"
      +          },
      +          "cpt": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "CPT code when verified"
      +          },
      +          "currency": {
      +            "type": "string"
      +          },
      +          "description": {
      +            "type": "string"
      +          },
      +          "fastingRequired": {
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "labFee": {
      +            "description": "Flat per-order lab processing fee (charged once per order)",
      +            "type": "number"
      +          },
      +          "labs": {
      +            "description": "Labs that run it: Quest, Labcorp, BioReference",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "markdownUrl": {
      +            "description": "Absolute https URL on test-well.com",
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "orderUrl": {
      +            "description": "Prefilled cart link",
      +            "type": "string"
      +          },
      +          "orderable": {
      +            "type": "boolean"
      +          },
      +          "popular": {
      +            "type": "boolean"
      +          },
      +          "prepInstructions": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "prices": {
      +            "additionalProperties": {},
      +            "description": "Sticker price per lab; null where the lab does not run the item",
      +            "properties": {
      +              "bioreference": {
      +                "anyOf": [
      +                  {
      +                    "description": "USD",
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "labcorp": {
      +                "anyOf": [
      +                  {
      +                    "description": "USD",
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "quest": {
      +                "anyOf": [
      +                  {
      +                    "description": "USD",
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "resultsIn": {
      +            "description": "Turnaround, e.g. '1-3 business days'",
      +            "type": "string"
      +          },
      +          "reviewedAt": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "sampleType": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "enum": [
      +              "test",
      +              "panel"
      +            ],
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Absolute https URL on test-well.com",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "labFee": {
      +      "description": "USD",
      +      "type": "number"
      +    },
      +    "lang": {
      +      "type": "string"
      +    },
      +    "query": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, idempotent and closed-world behavior, so the description need not repeat safety basics. It adds useful domain context beyond annotations: the returned result fields and the pricing caveat that listed prices are stickers with a $6 lab processing fee added to each order.

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?

Three sentences, front-loaded with the core action and search axes, followed by return fields and a compact pricing caveat. Every sentence contributes information an agent would otherwise have to infer.

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 a full output schema, rich input schema descriptions, and strong annotations, the description supplies the remaining context an agent needs: catalog scope, searchable fields, returned fields, and the pricing caveat pointing to quote_order for all-in totals.

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%, with clear descriptions for query, lang, type, limit, category, and orderableOnly, so the schema carries almost all parameter meaning. The description restates the main search axes but adds no syntax, format, or selection guidance beyond what the schema already provides.

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 and resource: search TestWell's public catalog of cash-pay lab tests and panels. It names the search axes (keyword, biomarker, CPT code, category), so an agent can distinguish it from get_test or list_panels without opening either schema.

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

Usage Guidelines4/5

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

The description makes the search-oriented use case clear and explicitly routes all-in pricing precision to quote_order. It does not explicitly exclude or distinguish itself from every relevant sibling such as get_test or list_panels, but the usage context is strong.

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.

Resources