Skip to main content
Glama

Server Details

Cash-pay lab tests: catalog search, all-in quotes by state, draw sites by ZIP, reviewed ranges.

Ownership verified
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 18 tools

Disambiguation4/5

Most tools have a clear resource+action separation across checkout, catalog, comparison, and educational/reference functions, and the descriptions make intent obvious. The main confusable pairs are quote_order vs create_checkout's dry_run pricing preview and lookup_reference_range vs interpret_results, which overlap in output but differ in input and usage. No tools are truly interchangeable.

Naming Consistency5/5

All 18 tools follow a consistent snake_case verb_noun structure, such as create_checkout, get_checkout, search_tests, and recommend_tests. Verbs are predictable and objects match the resource being acted on. This makes the tool surface easy to navigate and route correctly.

Tool Count4/5

At 18 tools, the count is slightly above the ideal 3-15 range, but the server covers a genuinely broad domain including catalog browsing, checkout, pricing, provider comparison, education, and lab interpretation. Each tool has a distinct job and none feels obviously redundant. The count is reasonable given the stated scope.

Completeness4/5

The checkout lifecycle is complete with create, read, update, cancel, and complete operations, and catalog, pricing, comparison, and educational surfaces are well covered. Minor gaps include the lack of an explicit list-all-tests endpoint and no dedicated multi-test cross-provider price comparison, though search_tests and compare_provider partly cover those needs. No critical workflow dead ends are apparent.

Available Tools

18 tools
calculate_free_testosteroneCalculate free testosterone (Vermeulen)A
Read-onlyIdempotent
Inspect

Calculate free and bioavailable testosterone from total testosterone, SHBG and albumin using the Vermeulen (1999) mass-action equation — the method behind lab-reported 'calculated free testosterone'. Educational; not a diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
shbgYesSHBG in nmol/L
totalTYesTotal testosterone
albuminGdLNoAlbumin in g/dL (default 4.3)
totalTUnitNoDefault ng/dL

Output Schema

ParametersJSON Schema
NameRequiredDescription
testsNo
inputsNo
methodNo
toolUrlNo
freePercentNo
freeTestosteroneNo
bioavailableTestosteroneNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds behavioral context beyond annotations by naming the underlying mass-action equation and clarifying the result is educational rather than diagnostic, which helps an agent set expectations without over-promising.

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 two sentences with no filler: the first states the calculation and method, the second adds the educational disclaimer. It is front-loaded with the verb and resource and every phrase 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?

For a deterministic calculation tool, the description plus annotations and schemas cover the method, purpose, safety profile, input semantics, and output expectations. No critical information an agent would need to invoke it correctly is missing.

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%, so the schema fully documents units, defaults, and constraints. The description only names the three inputs (total testosterone, SHBG, albumin) and adds no meaning beyond the schema, which matches the baseline for high 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 description opens with a specific verb and resource: calculate free and bioavailable testosterone from total testosterone, SHBG and albumin. It identifies the exact formula (Vermeulen 1999 mass-action equation) and distinguishes this from generic conversion or reference-range tools among the siblings.

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?

It clearly states when to use the tool (when calculated free/bioavailable testosterone is needed) and adds an explicit boundary with 'Educational; not a diagnosis'. However, it does not name alternative sibling tools or say when to prefer them.

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

cancel_checkoutCancel a checkout sessionAInspect

Cancel an open (unpaid) checkout session. Paid sessions cannot be canceled here — the patient's complete-details email explains refunds.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkout_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate this is not read-only and not idempotent, so the description is not solely responsible for safety signaling. It adds useful context that only unpaid sessions can be canceled and paid sessions follow a different path, but it does not describe side effects, reversibility, or required authorization beyond what annotations imply.

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 two sentences with no filler. The primary purpose is front-loaded in the first sentence, and the important exception is placed immediately after.

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?

For a single-parameter tool with an output schema present, the description provides enough context for correct invocation: it defines the target state, the limitation, and points to where refunds are explained. It could be slightly stronger by naming the alternative sibling tool for paid sessions, but the email reference covers the practical gap.

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

Parameters2/5

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

The input schema has 0% description coverage, and the description does not add any detail about checkout_session_id beyond its existence. The parameter name is self-explanatory, but the description fails to compensate for the lack of schema-level semantic guidance.

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 description uses a specific verb ('Cancel') and a clearly defined resource ('open (unpaid) checkout session'), immediately distinguishing it from sibling tools like create_checkout, complete_checkout, and update_checkout. It also explicitly separates this tool from paid-session handling by stating paid sessions cannot be canceled here.

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 clearly states when the tool is appropriate: cancel an open/unpaid checkout session. It also gives an explicit exclusion for paid sessions and points to the patient's complete-details email for refunds, but it does not name a specific sibling tool as the alternative for refunds.

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

compare_pricesCompare all-in prices across providers for a testA
Read-onlyIdempotent
Inspect

For one blood test, the all-in single-test price (sticker + per-order fees) at TestWell and at every tracked direct-to-consumer provider with a verified equivalent — JustLabs, Quest, Labcorp OnDemand, Ulta Lab Tests, Walk-In Lab, HealthLabs and more — each with the date it was verified, plus typical hospital self-pay and Quest Direct reference prices. States the multi-test caveat (fees are paid once per order). Source: the TestWell Blood Test Price Index (CC BY 4.0).

ParametersJSON Schema
NameRequiredDescriptionDefault
testYesTest slug or name, e.g. 'tsh', 'lipid panel', 'vitamin-d'

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
testNo
foundNo
queryNo
caveatsNo
datasetNoAbsolute https URL on test-well.com
licenseNo
providersNoSorted by all-in price, TestWell included
referenceNo
methodologyNo
cheapestSingleTestAllInNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context: prices include verification dates, reference prices are included, the multi-test caveat is disclosed, and the data source is provided. No contradiction with annotations.

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?

The description is front-loaded with the core purpose and packs in relevant details such as provider list, verification dates, and fee composition. It is somewhat dense and long, but each element contributes to correct tool selection and invocation.

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?

The description fully explains what price components are included, which providers are covered, the verification-date aspect, reference prices, and the multi-test caveat. Combined with a rich output schema and safety annotations, nothing essential for calling the tool correctly is missing.

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% and the parameter already includes examples and a clear description. The description reinforces that the parameter represents one blood test, but does not add significant meaning 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?

The description states a specific verb and resource: compare all-in prices across providers for one blood test. It precisely defines scope (single-test, sticker + per-order fees), enumerates the providers, and mentions verification dates and reference prices, clearly distinguishing it from generic search or quote tools.

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 clearly scopes usage to a single blood test and explicitly calls out the multi-test caveat, so an agent understands when this tool applies. It does not explicitly name alternatives or state when not to use it, but the context is clear enough.

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

compare_providerCompare TestWell with another lab-testing serviceA
Read-onlyIdempotent
Inspect

Honest side-by-side of TestWell and another direct-to-consumer lab service (Quest Direct, Labcorp OnDemand, Function Health, JustLabs, Ulta Lab Tests, …): pricing model, per-order fees, labs, turnaround, where each wins, spot prices on common tests as sticker AND all-in, with verification dates and sources. Call with no argument to list the providers covered.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoCompetitor slug or name, e.g. 'quest-direct', 'Function Health', 'justlabs'

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoAbsolute https URL on test-well.com
foundNo
sourcesNo
verdictNo
testwellNo
verifiedNoDate the competitor's prices were verified
providersNoReturned when no provider was named
competitorNo
spotPricesNo
testWellNotForNo
testWellWinsAtNo
competitorWinsAtNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the base safety profile is covered. The description adds real behavioral context: it states that the empty-argument call lists covered providers and that comparisons carry verification dates and sources. No contradictions with annotations.

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?

The description is dense: one long sentence enumerating comparison scope and content, followed by a short invocation instruction. Every clause carries information, though the numerous comma-separated dimensions make it heavier than a two-sentence minimal example.

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?

Given an output schema exists and the single parameter is fully documented in the schema, the description covers what is compared, the special no-argument behavior, and the sourcing/verification angle. The only notable gap is routing against compare_prices, but that is a usage-guidance issue rather than an invocation-completeness gap.

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 description coverage is 100%, so the property is already documented. The description adds value by listing provider examples in prose and, more importantly, by revealing that omitting the provider enumerates all covered providers — a behavior that makes the optional parameter self-discoverable. This exceeds the baseline 3.

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?

The description uses a specific verb-resource pair ('Honest side-by-side of TestWell and another direct-to-consumer lab service') and enumerates concrete comparison dimensions and known providers, so an agent can tell what it does. It does not explicitly distinguish itself from the sibling compare_prices, which also covers pricing, so it stops short of a 5.

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?

The description implies when the tool applies (comparing TestWell with a named competitor) and gives one explicit invocation rule: 'Call with no argument to list the providers covered.' It does not state when to prefer compare_prices instead, nor any exclusions or prerequisites, leaving the selection decision to inference.

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

complete_checkoutPay and place the orderAInspect

Charge the payment credential the platform obtained for a session that is ready_for_payment and create the order. Input follows the ChatGPT payment-sheet contract: checkout_session_id, buyer, payment_data { token, provider: 'stripe', billing_address }. The token is a Stripe shared payment token (spt_…); platforms without one should send the user to pay_online_url from create_checkout. After payment the patient gets an email link to add date of birth, sex, phone and consent — the lab requisition is issued when that is done.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNo
payment_dataYes
idempotency_keyNo
checkout_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
orderNo
statusYes
totalsYes
messagesYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds meaningful behavioral context by disclosing that payment is charged, an order is created, an email link is sent, and the lab requisition is only issued after the patient completes additional steps. This goes beyond the annotation flags without contradicting them.

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?

Four compact sentences deliver the core action, the input contract, the token caveat with alternative routing, and the post-payment flow. Every sentence adds necessary information and the most important operational detail is front-loaded.

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?

The description is complete enough for the tool's complexity: it covers preconditions, input contract, token format, alternative flow, and downstream consequences. The presence of an output schema reduces the need to describe return values. Minor omissions like idempotency_key semantics prevent a perfect score.

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 description coverage is 0%, so the description carries the burden. It names the key parameters (checkout_session_id, buyer, payment_data) and clarifies semantics for token ('Stripe shared payment token (spt_…)') and provider ('stripe'). It does not explain idempotency_key in detail, but the main payment contract is well illuminated.

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 description states a specific action ('charge the payment credential ... and create the order') and clearly identifies the resource (a checkout session ready_for_payment). It differentiates the tool from siblings like create_checkout, cancel_checkout, and update_checkout by describing the payment/order-placement responsibility.

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?

It gives an explicit precondition (session must be ready_for_payment) and names the alternative path for platforms without a Stripe shared token: send the user to pay_online_url from create_checkout. This is clear when-to-use and when-not-to-use guidance.

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

convert_unitsConvert lab unitsA
Read-onlyIdempotent
Inspect

Convert a lab value between US conventional and SI units for 30 common analytes (glucose, cholesterol, testosterone, vitamin D, …) using published factors; hemoglobin A1c uses the NGSP↔IFCC master equation and also returns estimated average glucose.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe numeric value to convert
analyteYesAnalyte slug or name, e.g. 'glucose', 'total-cholesterol', 'testosterone', 'vitamin-d', 'a1c'
directionNoDefault toSI (US → SI)

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
errorNo
inputNo
factorNo
methodNo
outputNo
analyteNo
biomarkerUrlNo
estimatedAverageGlucoseNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuinely useful behavior: published conversion factors, the NGSP↔IFCC master equation for HbA1c, and the extra estimated average glucose return. These details go beyond the annotations without contradicting them.

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 a single dense sentence that front-loads the main action and scope, then adds a valuable special case. Every clause contributes useful information and there is no filler.

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?

For a simple read-only conversion tool with an output schema and 3 parameters, the description covers core usage and the key HbA1c exception. Minor gaps are the lack of a full list of supported analytes and no statement about behavior for unsupported ones, but the schema examples mitigate this.

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?

The input schema covers 100% of parameters with descriptions for value, analyte (with examples), and direction (with enum and default). The description only reinforces the US/SI framing and adds the A1c output note, so it does not meaningfully augment the schema.

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?

The description states exactly what the tool does: converts a lab value between US conventional and SI units for 30 common analytes. It is clearly about unit conversion, which separates it from calculation/interpretation siblings, though it does not explicitly name or exclude any sibling.

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?

The description implies when to use the tool by defining its scope, and it adds a special rule for hemoglobin A1c. However, it never states when not to use it or points to an alternative, such as calculate_free_testosterone for derived values.

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

create_checkoutCreate a checkout sessionAInspect

Start a TestWell order for the user: tests/panels, the US state where they will visit the lab (required for pricing and lab routing), and the buyer's name, email and phone. Returns priced line items in cents, the single $6 lab fee, the total, any blocking messages, and pay_online_url — a prefilled cart the user can pay in a browser when the platform has no payment token. Use dry_run to preview without creating a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNo
itemsYes
stateNoUS state code or name where the blood will be drawn
dry_runNoPrice only; do not create a session

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
linksYes
orderNo
statusYes
totalsYes
dry_runNo
currencyYes
messagesYes
line_itemsYes
pay_online_urlNoPrefilled cart for browser payment when the platform has no payment token
fulfillment_optionsYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the minimal annotations, the description reveals key side effects and behavioral details: it creates a session, supports a dry_run that avoids creation, returns blocking messages, prices line items in cents, includes a $6 lab fee, and emits pay_online_url only when there is no payment token. This is rich, non-obvious context that substantially helps an agent predict outcomes.

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 focused sentences carry all essential information: action and inputs, output behavior, and the dry_run exception. There is no filler, and the most decision-relevant information is front-loaded.

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?

For a complex tool with nested objects and conditional behavior, the description covers inputs, outputs, pricing, blocking messages, the conditional pay URL, and dry_run. Minor gaps remain around quantity semantics and whether buyer/state are truly required given the schema, but the description gives an agent enough to invoke the tool confidently.

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?

With only 50% schema description coverage, the description compensates by explaining buyer name/email/phone, items as tests/panels, state as the US lab location, and dry_run as a preview mode. It does not explain the quantity field, and the statement that state is 'required' is slightly stronger than the schema's required list, but overall it adds meaningful semantics beyond the schema.

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 description opens with a specific action, 'Start a TestWell order,' and clearly enumerates the inputs: tests/panels, state, and buyer information. It also distinguishes this creation tool from sibling completion/update tools by framing it as the start of a checkout session rather than an update or quote-only operation.

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?

It explicitly explains when to use dry_run ('preview without creating a session') and why state is needed ('required for pricing and lab routing'). However, it does not name alternatives like quote_order, complete_checkout, or update_checkout, so routing between siblings is mostly implied rather than explicit.

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

find_draw_sitesFind draw sites near a ZIPA
Read-onlyIdempotent
Inspect

Find Quest Diagnostics, Labcorp and BioReference patient service centers near a US ZIP code, with address, distance, phone and hours. Walk-ins are accepted at most sites; the requisition arrives by email after physician authorization.

ParametersJSON Schema
NameRequiredDescriptionDefault
labNoLimit to one lab
zipYes5-digit US ZIP code
limitNoMax sites (default 10)
radiusMilesNoSearch radius in miles (snapped to 10/20/25/50/100; default 25)

Output Schema

ParametersJSON Schema
NameRequiredDescription
zipNo
countNo
sitesNo
mapUrlNoAbsolute https URL on test-well.com
radiusMilesNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive, and the description adds meaningful behavioral context: walk-ins are accepted at most sites and the requisition arrives by email after physician authorization. This goes beyond what the annotations or schema provide.

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 compact: two sentences with no filler. The first sentence front-loads the core purpose and expected outputs, and the second adds high-value behavioral caveats. 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?

Given the fully described schema, clear annotations, and presence of an output schema, the description is complete. It covers the main purpose, expected result fields, and important real-world workflow constraints without leaving critical gaps.

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?

The input schema already fully documents all four parameters with descriptions, defaults, and constraints, so the description does not need to repeat parameter details. It restates the ZIP concept in plain language but does not add meaningful semantic information beyond the schema.

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 description uses a specific verb ('Find'), names the exact resource ('Quest Diagnostics, Labcorp and BioReference patient service centers'), and scopes the search to US ZIP codes with concrete output fields (address, distance, phone, hours). This clearly differentiates it from the unrelated sibling tools.

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 clearly implies when to use the tool: when locating patient service centers near a ZIP code. It also adds useful workflow context about walk-ins and physician authorization. However, it does not explicitly state exclusions or compare itself to an alternative tool, though no sibling tool appears to overlap.

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

get_checkoutRead a checkout sessionA
Read-onlyIdempotent
Inspect

Current state of a checkout session (status, line items, totals, messages, order once paid). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkout_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
totalsYes
messagesYes
line_itemsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's 'Read-only' adds little. However, 'order once paid' reveals a meaningful behavioral nuance: the order field appears conditionally after payment. This goes beyond the annotations and helps set expectations.

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 a single, tight sentence with the core concept front-loaded ('Current state of a checkout session') and a concise parenthetical list of contents. No filler words; every element earns its place.

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?

For a simple read-by-id tool, the description combined with annotations and an output schema is largely complete. It covers the return content and a conditional behavior. The main gaps are the lack of parameter guidance and any mention of alternative tools, but these are minor given the tool's low complexity.

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

Parameters2/5

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

The schema has zero description coverage and the tool description does not mention checkout_session_id at all. While the parameter name is self-explanatory, the description fails to explain how to obtain it, what format it follows, or any relationship to the checkout lifecycle. The description adds no value beyond the schema's type and length constraints.

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 title and description clearly state the tool reads a checkout session, enumerating specific content (status, line items, totals, messages, order once paid) and explicitly marking it read-only. This distinguishes it from sibling mutations like create_checkout, update_checkout, cancel_checkout, and complete_checkout.

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?

The description implies usage when the current state of a checkout session is needed, but it does not explicitly compare with alternatives or state when not to use it. There is no direct routing to a sibling for write operations, though the read-only label provides basic context.

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

get_guideGet a guide, condition or answer page as MarkdownA
Read-onlyIdempotent
Inspect

Return one of TestWell's educational pages as Markdown: guides (/guides/), condition workups (/conditions/), biomarker pages (/biomarkers/), state pages (/lab-locations/) or comparisons (/compare/). Call with no path to list the available guides and conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSpanish version when one exists (default en)
pathNoSite path, e.g. '/guides/annual-blood-work' or 'conditions/anemia'

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoAbsolute https URL on test-well.com
pathNo
foundNo
titleNo
guidesNoIndex, returned when no path was given
answersNo
markdownNoFull page as Markdown
conditionsNo

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral detail beyond annotations: it returns Markdown and, when called without a path, lists available guides and conditions. No contradiction with annotations is present.

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?

Two sentences carry all essential information with no filler. The core purpose is front-loaded, and the path catalog is compactly organized, making the definition easy to scan and apply.

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?

For a read-only tool with two optional, well-documented parameters and a rich output schema, the description is complete. It covers what the tool returns, the accepted path forms, and the no-path behavior, leaving no critical gap for an agent to call it correctly.

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?

The input schema already documents both parameters and the lang enum, with 100% description coverage. The description adds value by enumerating accepted path prefixes (guides, conditions, biomarkers, lab-locations, compare) and by specifying that omitting the path lists available content, which helps an agent construct valid calls.

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 description names a specific verb ('Return') and a clear resource type ('TestWell's educational pages'), and enumerates the exact path families it serves. It is easy to distinguish from siblings like get_test or search_tests because it is explicitly scoped to educational content such as guides, conditions, biomarkers, lab locations, and comparisons.

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 gives concrete usage context: pass a site path to retrieve a page and call with no path to list available guides and conditions. It does not explicitly name sibling alternatives or state when not to use this tool, but the path-family enumeration makes the appropriate use case clear.

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

get_testGet a test or panelA
Read-onlyIdempotent
Inspect

Full public detail for one TestWell test or panel by slug or id: description, biomarkers, CPT, per-lab prices, labs, fasting/prep, turnaround, included tests (panels), FAQ, related conditions, order URL and a Markdown page URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSpanish prose where a translation exists (default en)
slugYesCatalog slug (from search_tests) or id, e.g. 'tsh', 'general-wellness-panel'

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemNo
foundNo
suggestionsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive, so the description only needs to add contextual behavior. It does so by emphasizing 'full public detail', which signals no authentication or private data, and by listing the specific response fields. No contradiction with annotations.

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?

A single well-structured sentence front-loads the core action and resource, then efficiently lists the full set of returned data. There is no filler or repetition of annotation details.

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?

Given the rich annotations, complete parameter schema, and presence of an output schema, the description provides all essential context: what is returned, how the resource is identified, and the public nature of the data. No critical gaps remain for an agent to call this tool correctly.

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 schema already documents both parameters with examples and enum values. The description's 'by slug or id' phrasing slightly reinforces the slug parameter but does not add meaningful new semantics beyond the schema.

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 description clearly states the verb ('Get full public detail'), the resource ('one TestWell test or panel'), and the lookup mechanism ('by slug or id'). It enumerates the returned contents, making it easy to distinguish from sibling tools like search_tests or list_panels.

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?

The description implies this is the tool to use when a complete detail view of one test or panel is needed, and the slug schema description points to search_tests as the source. However, it does not explicitly state when not to use it or name alternative tools, so usage guidance is left somewhat to inference.

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

interpret_resultsExplain lab results against reviewed reference rangesA
Read-onlyIdempotent
Inspect

Flag each pasted lab value as low / normal / high against TestWell's physician-reviewed reference catalog (130+ markers; sex- and age-specific bands where they exist), with the reviewed 'what high/low suggests' copy, retest guidance, cited sources and links to the marker's page and, where one exists, its high/low interpretation page. Stateless — values are not stored or logged. Educational, not a diagnosis; the user's own report range takes precedence.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo
sexNo
valuesYesResults to explain, e.g. [{marker:'TSH', value:5.2, unit:'mIU/L'}, {marker:'ferritin', value:12}]
pregnancyNo
postmenopausalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsNo
summaryNo
reviewedNo
disclaimerNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description adds genuine value beyond them: 'Stateless — values are not stored or logged' is a concrete privacy/behavioral commitment, 'Educational, not a diagnosis' is a scope limitation, and the precedence rule clarifies interpretation authority. The listed output composition (reviewed copy, retest guidance, cited sources, links) further sets expectations. No contradiction with annotations.

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?

Three sentences, each with a distinct job: core action plus output composition, statelessness, and the educational disclaimer with precedence rule. The first sentence is dense but every clause commits to a concrete deliverable (130+ markers, sex/age bands, copy, retest guidance, sources, links), and the most decision-relevant action is front-loaded. Slightly heavy, but nothing is filler.

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

Completeness3/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 cover the safety profile, so the description does not need to detail return values or read-only behavior. The core action and output contents are well covered. The real gaps are the unexplained pregnancy/postmenopausal parameters, the unstated behavior when a pasted marker is absent from the 130+ marker catalog, and the fact that age/sex are optional despite being central to band selection — for a tool this complex, that keeps it from being fully complete.

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

Parameters2/5

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

Schema description coverage is only 20% — only the 'values' array carries an example. The description partially compensates by mentioning 'sex- and age-specific bands,' which gives meaning to the age and sex parameters. However, pregnancy and postmenopausal are never explained in either the schema or the description; an agent cannot tell how these booleans affect band selection or interact with age/sex, which is a consequential gap for a lab-interpretation tool where reference ranges shift significantly with physiological state.

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 description opens with a specific verb and outcome — 'Flag each pasted lab value as low / normal / high' — against a concrete resource: TestWell's physician-reviewed reference catalog. It is unambiguous against siblings: lookup_reference_range retrieves ranges rather than flagging values, convert_units converts, and recommend_tests recommends rather than interprets. The detailed output commitments (interpretation copy, retest guidance, cited sources, marker-page links) leave no doubt about the tool's function.

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 gives clear usage context: an agent should reach for this when a user has pasted lab values from a report and wants them flagged and explained with sources and retest guidance. It adds usable boundaries — 'Educational, not a diagnosis' and 'the user's own report range takes precedence' — that shape how the output should be framed. It does not explicitly name alternatives or state when not to use it, but the context is specific enough to route correctly.

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

list_panelsList panelsA
Read-onlyIdempotent
Inspect

List TestWell's bundled panels (multi-test packages priced below the sum of their tests), optionally filtered by category or maximum price. Sorted by price.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 25)
categoryNoCatalog category, e.g. 'Hormones', 'General Health'
maxPriceNoOnly panels at or under this sticker price (USD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
labFeeNoUSD
panelsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond that: panels are bundled and priced below the sum of their tests, results are sorted by price, and filters are optional. No contradiction with annotations.

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?

One well-structured sentence that front-loads the core purpose, defines the resource, lists the available filters, and states the sort order. Every part earns its place and there is no redundant wording.

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?

This is a simple list operation with three optional parameters, full schema documentation, and an output schema. The description covers purpose, filtering options, sorting, and pricing semantics. Nothing essential is missing for an agent to invoke it correctly.

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%, so the schema already documents all three parameters clearly. The description adds the 'sorted by price' behavior and pricing semantics but doesn't add parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate.

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 description uses a specific verb ('List') and identifies a distinct resource: TestWell's bundled panels. It clarifies what a panel is (multi-test packages priced below the sum of their tests), which differentiates it from sibling tools like search_tests or get_test.

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 provides clear context: use this when the user wants panels, optionally filtered by category or price. It does not explicitly name alternative tools or state when not to use it, but the scope is specific enough that an agent can infer the right situation.

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

lookup_reference_rangeReference range for a biomarkerA
Read-onlyIdempotent
Inspect

Physician-reviewed reference range for a blood test marker (130+ markers), filtered by sex and age when they matter, with what high and low values suggest, retest cadence, how to get tested, cited sources and the review date. Educational; the user's own report range takes precedence.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo
sexNo
markerYesMarker name or alias, e.g. 'TSH', 'ferritin', 'HbA1c', 'LDL'
pregnancyNo
postmenopausalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundNo
unitsNo
browseNo
markerNo
rangesNo
retestNo
aliasesNo
categoryNo
measuresNo
citationsNo
howToTestNo
lowSuggestsNo
suggestionsNo
highSuggestsNo
filteredToQueryNo

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior, so the description adds substantial value by disclosing that ranges are physician-reviewed, filtered by sex/age when relevant, and enriched with interpretation guidance, retest cadence, sources, and review date. It also states the educational boundary and precedence rule, going well beyond the structured annotations.

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 a single, dense sentence that front-loads the core purpose and then lists the included content without repetition or filler. Every clause contributes useful information, making it easy for an agent to scan.

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?

Given the output schema exists, the description does not need to explain return values, and it covers the tool's content, filters, and educational precedence well. However, it omits guidance on the pregnancy and postmenopausal parameters and does not mention alternative sibling tools, leaving slight gaps for a fully self-sufficient description.

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 low (20%); only marker has schema documentation. The description adds meaning for sex and age filters, but it does not explain the pregnancy or postmenopausal boolean parameters, which are left undocumented in both the schema and description. This is a meaningful gap given that those parameters exist and their effect on reference ranges is not obvious.

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?

The description clearly states the tool looks up a physician-reviewed reference range for a blood test marker, covering 130+ markers and listing the key content delivered (high/low values, retest cadence, sources). It does not explicitly differentiate from sibling tools like search_tests or get_test, though the "reference range" focus makes the purpose reasonably distinct.

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 gives clear usage context: it is educational, and the user's own reported range takes precedence over the tool's output. It does not explicitly describe when to prefer this tool over its siblings, but the educational scope and precedence rule provide practical guidance for invocation.

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

quote_orderAll-in order quoteA
Read-onlyIdempotent
Inspect

Price a set of tests/panels exactly as TestWell's checkout would: per-lab prices for the user's state (New York and New Jersey route to BioReference; Rhode Island is not served), the single $6 lab processing fee, the total, items that can't be ordered and why, and a prefilled cart URL. Use this before quoting any total to a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
labNoPreferred lab outside NY/NJ (default quest)
itemsYesCatalog slugs or ids, e.g. ['tsh', 'vitamin-d']
stateNoUS state code or name where the user will be drawn, e.g. 'FL' or 'Florida'

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
labNo
errorNoPresent when ok=false, e.g. state not served
linesNo
notesNo
stateNo
totalNoAll-in total: subtotal + the single lab processing fee
labFeeNoUSD
labNameNo
currencyNo
subtotalNoUSD
checkoutUrlNoPrefilled cart on test-well.com — purchases complete there; null when nothing is orderable
unavailableNoRequested items the routed lab cannot run in this state

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses important runtime behavior: NY/NJ route to BioReference, Rhode Island is not served, a single $6 processing fee, and the response includes blocked items with reasons and a cart URL. These details are substantive and consistent with the annotations.

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?

Two sentences contain dense, essential information with no filler. The main purpose and output contents are front-loaded, followed by a single high-value usage directive.

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?

For a read-only quoting tool with an output schema, the description covers pricing logic, state special cases, fee, blocked items, and the cart URL. Nothing needed to correctly invoke and interpret the tool 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?

The schema already documents all three parameters, so the baseline is 3, but the description adds meaning by explaining that state influences lab routing (with specific NY/NJ/RI behavior) and that items are tests/panels for pricing. This exceeds what the schema descriptions alone state.

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 description opens with a specific verb and resource: 'Price a set of tests/panels exactly as TestWell's checkout would.' It enumerates concrete outputs (per-lab prices, $6 fee, total, unorderable items with reasons, prefilled cart URL), which clearly separates it from siblings like compare_prices.

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 closing directive 'Use this before quoting any total to a user' is an explicit trigger for when to invoke the tool. It does not explicitly name sibling alternatives or give when-not conditions, so it falls just short of full guidance.

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

recommend_testsRecommend tests for goals or symptomsA
Read-onlyIdempotent
Inspect

Suggest TestWell panels and tests for stated health goals (e.g. 'annual checkup', 'heart health', 'TRT monitoring') and/or symptoms (e.g. 'fatigue', 'hair loss'). Prefers a curated pre-built panel when one fits; otherwise assembles individual tests within a budget. Educational matching, not a diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalsNoHealth goals, e.g. ['energy', 'thyroid']
budgetNoBudget band: low ≈ $80, medium ≈ $200, high ≈ $400
symptomsNoSymptoms, e.g. ['always cold', 'weight gain']

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoSuggested next tool call
goalsNo
byGoalNoRecommended panel and alternatives for the stated goals
labFeeNoUSD
symptomsNo
bySymptomNoPanels, individual tests and explanations for the stated symptoms
disclaimerNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat safety traits. The description adds valuable behavioral context beyond annotations: it prefers curated pre-built panels when one fits and otherwise assembles individual tests within a budget, plus the educational-non-diagnostic caveat.

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 with no filler: the first states purpose, the second explains selection behavior, and the third provides an essential limitation. Every sentence earns its place, and the most decision-relevant information is front-loaded.

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?

The description is complete for a read-only recommendation tool: it covers inputs, selection strategy, and the non-diagnostic boundary, while annotations cover safety and the output schema covers return structure. It does not specify behavior when neither goals nor symptoms are provided, but that is a minor gap given the optional parameters.

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 the input schema already documents goals, symptoms, and budget with examples and budget approximations. The description reinforces the panel-vs-individual behavior and budget relevance, but it does not add substantial parameter-level meaning beyond the schema.

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 description clearly states a specific action ('Suggest'), resource ('TestWell panels and tests'), and input context ('health goals... and/or symptoms'), with concrete examples. It also differentiates from siblings like search_tests or list_panels by emphasizing recommendation behavior rather than catalog lookup.

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 defines when to use the tool: when users state goals or symptoms and need panel/test suggestions. It also adds an exclusion ('Educational matching, not a diagnosis') that helps an agent decide not to use it for diagnostic claims. It does not explicitly name sibling alternatives, but the purpose and scope are clear enough.

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

search_testsSearch the TestWell catalogA
Read-onlyIdempotent
Inspect

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).

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
langNo
countNo
itemsNo
queryNo
labFeeNoUSD

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond those: the catalog is public, prices are 'stickers,' and each order incurs a $6 processing fee. It also states the output includes specific fields, complementing rather than contradicting the annotations.

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 with no filler. The core search purpose is front-loaded, the return fields are summarized in one clause, and the pricing caveat plus pointer to quote_order earns its place as essential usage context. Every sentence contributes.

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?

For a 6-parameter search tool with rich annotations and an output schema, the description is complete enough. It explains searchable content, output fields, pricing semantics, and where to go for final totals. The schema handles parameter-level details, so nothing critical is missing.

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%, so the schema fully documents all six parameters. The description adds some semantic color by mapping query to 'keyword, biomarker, CPT code, or health goal' and mentions category search, but it does not substantially extend what the schema already provides. Baseline 3 is appropriate.

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 description opens with a specific verb and resource: 'Search TestWell's public catalog of cash-pay lab tests and panels.' It lists concrete search dimensions (keyword, biomarker, CPT code, category) and the return fields, making it unmistakable what this tool does and how it differs from nearby siblings like list_panels or get_test.

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?

It clearly establishes when to use the tool: when searching the public catalog by query-like terms. It also points to quote_order for all-in totals, providing one explicit routing cue. It does not enumerate exclusions versus every sibling, but the context is strong enough for correct selection.

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

update_checkoutUpdate a checkout sessionAInspect

Change items, state or buyer details on an open checkout session and get it re-priced. Returns the same session object as create_checkout.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNo
itemsNo
stateNo
checkout_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
totalsYes
messagesYes
line_itemsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish this is a mutating, non-idempotent, non-destructive operation. The description adds meaningful context: updating triggers re-pricing and returns the same session object as create_checkout. It does not contradict the annotations.

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?

Two tight sentences with no filler; the mutating action and key consequences, re-pricing and same return shape, are front-loaded. Every clause adds information.

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

Completeness3/5

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

The description covers the core scenario and return behavior, with the output schema filling in return details. Missing pieces include partial-update semantics, the required session ID, and when to use sibling checkout tools, so it is adequate but not complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only restates the top-level fields (items, state, buyer) and never explains checkout_session_id or parameter semantics. It offers little help beyond property names, only clarifying that 'buyer' refers to buyer details.

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?

Description uses a specific verb ('Change') with a clear resource ('open checkout session') and enumerates the mutable parts: items, state, and buyer details. It also adds re-pricing behavior and distinguishes itself from create_checkout by noting the returned object is the same session.

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?

It implies an existing, open session is the target, but it never names create_checkout for new sessions or complete_checkout for finalizing one. The only sibling mention is about return shape, not routing, so the agent must infer when to use this over alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Addedcancel_checkout
    • Changedcomplete_checkout5 fields changed
      • removedInput schema / properties / action
        Removed value: -{
        -  "description": "Default complete",
        -  "enum": [
        -    "complete",
        -    "get",
        -    "cancel"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / buyer
        Added value: +{
        +  "anyOf": [
        +    {
        +      "properties": {
        +        "email": {
        +          "anyOf": [
        +            {
        +              "format": "email",
        +              "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "first_name": {
        +          "anyOf": [
        +            {
        +              "maxLength": 80,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "last_name": {
        +          "anyOf": [
        +            {
        +              "maxLength": 80,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "name": {
        +          "anyOf": [
        +            {
        +              "maxLength": 160,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "phone_number": {
        +          "anyOf": [
        +            {
        +              "maxLength": 20,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedInput schema / properties / payment_data
        Added value: +{
        +  "properties": {
        +    "billing_address": {
        +      "anyOf": [
        +        {
        +          "properties": {
        +            "city": {
        +              "type": "string"
        +            },
        +            "country": {
        +              "type": "string"
        +            },
        +            "line_one": {
        +              "type": "string"
        +            },
        +            "line_two": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "postal_code": {
        +              "type": "string"
        +            },
        +            "state": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "provider": {
        +      "description": "'stripe'",
        +      "maxLength": 40,
        +      "type": "string"
        +    },
        +    "token": {
        +      "maxLength": 400,
        +      "minLength": 4,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "token"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / payment_token
        Removed value: -{
        -  "description": "Stripe shared payment token (required for complete)",
        -  "maxLength": 200,
        -  "minLength": 4,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "checkout_session_id"
        -]New value: +[
        +  "checkout_session_id",
        +  "payment_data"
        +]
    • Addedget_checkout
  2. 3 tool updates
    • Addedcomplete_checkout
    • Addedcreate_checkout
    • Addedupdate_checkout
  3. 2 tool updates
    • Changedget_test1 field changed
      • addedOutput schema / properties / item / 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"
        +}
    • Changedsearch_tests1 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. 13 tool updates
    • Changedcalculate_free_testosterone1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "bioavailableTestosterone": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "ngdL": {
        +          "type": "number"
        +        },
        +        "nmolL": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "freePercent": {
        +      "type": "number"
        +    },
        +    "freeTestosterone": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "ngdL": {
        +          "type": "number"
        +        },
        +        "nmolL": {
        +          "type": "number"
        +        },
        +        "pgmL": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "albuminGdL": {
        +          "type": "number"
        +        },
        +        "shbg": {
        +          "type": "number"
        +        },
        +        "totalT": {
        +          "type": "number"
        +        },
        +        "totalTUnit": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "method": {
        +      "type": "string"
        +    },
        +    "tests": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "toolUrl": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_prices1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "caveats": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "cheapestSingleTestAllIn": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "allIn": {
        +          "description": "Sticker + that provider's per-order fees, one test ordered alone",
        +          "type": "number"
        +        },
        +        "note": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "perOrderFees": {
        +          "description": "USD",
        +          "type": "number"
        +        },
        +        "pricedAt": {
        +          "description": "Date the price was verified (YYYY-MM-DD)",
        +          "type": "string"
        +        },
        +        "provider": {
        +          "type": "string"
        +        },
        +        "providerName": {
        +          "type": "string"
        +        },
        +        "sticker": {
        +          "description": "USD",
        +          "type": "number"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "dataset": {
        +      "description": "Absolute https URL on test-well.com",
        +      "type": "string"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "license": {
        +      "type": "string"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "providers": {
        +      "description": "Sorted by all-in price, TestWell included",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "allIn": {
        +            "description": "Sticker + that provider's per-order fees, one test ordered alone",
        +            "type": "number"
        +          },
        +          "note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "perOrderFees": {
        +            "description": "USD",
        +            "type": "number"
        +          },
        +          "pricedAt": {
        +            "description": "Date the price was verified (YYYY-MM-DD)",
        +            "type": "string"
        +          },
        +          "provider": {
        +            "type": "string"
        +          },
        +          "providerName": {
        +            "type": "string"
        +          },
        +          "sticker": {
        +            "description": "USD",
        +            "type": "number"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "reference": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "hospitalTypical": {
        +          "anyOf": [
        +            {
        +              "description": "USD",
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "questDirect": {
        +          "anyOf": [
        +            {
        +              "description": "USD",
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "test": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "category": {
        +          "type": "string"
        +        },
        +        "cpt": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_provider1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "competitor": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "labPartners": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "perOrderFees": {},
        +        "pricingModel": {
        +          "type": "string"
        +        },
        +        "statesServed": {
        +          "type": "number"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "competitorWinsAt": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "providers": {
        +      "description": "Returned when no provider was named",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "spotPrices": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "competitor": {},
        +          "note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "test": {
        +            "type": "string"
        +          },
        +          "testwell": {}
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "testWellNotFor": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "testWellWinsAt": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "testwell": {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Absolute https URL on test-well.com",
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "type": "string"
        +    },
        +    "verified": {
        +      "description": "Date the competitor's prices were verified",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedconvert_units1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "analyte": {
        +      "type": "string"
        +    },
        +    "biomarkerUrl": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "error": {
        +      "type": "string"
        +    },
        +    "estimatedAverageGlucose": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "unit": {
        +          "type": "string"
        +        },
        +        "value": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "factor": {
        +      "type": "number"
        +    },
        +    "input": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "unit": {
        +          "type": "string"
        +        },
        +        "value": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "method": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "output": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "unit": {
        +          "type": "string"
        +        },
        +        "value": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_draw_sites1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "mapUrl": {
        +      "description": "Absolute https URL on test-well.com",
        +      "type": "string"
        +    },
        +    "radiusMiles": {
        +      "type": "number"
        +    },
        +    "sites": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "address": {
        +            "type": "string"
        +          },
        +          "city": {
        +            "type": "string"
        +          },
        +          "distance": {
        +            "description": "Miles from the ZIP centroid",
        +            "type": "number"
        +          },
        +          "hours": {},
        +          "lab": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "phone": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "zip": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "zip": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_guide1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "answers": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "path": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "conditions": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "path": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "guides": {
        +      "description": "Index, returned when no path was given",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "path": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "markdown": {
        +      "description": "Full page as Markdown",
        +      "type": "string"
        +    },
        +    "path": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "description": "Absolute https URL on test-well.com",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_test1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "item": {
        +      "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"
        +    },
        +    "suggestions": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinterpret_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "disclaimer": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "label": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "deviationPct": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Distance outside the band as % of band width"
        +          },
        +          "flag": {
        +            "enum": [
        +              "low",
        +              "normal",
        +              "high",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          },
        +          "found": {
        +            "type": "boolean"
        +          },
        +          "input": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "marker": {
        +                "type": "string"
        +              },
        +              "unit": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "value": {
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "links": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "biomarker": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "interpretation": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "orderTest": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "marker": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "range": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "max": {
        +                    "type": "number"
        +                  },
        +                  "min": {
        +                    "type": "number"
        +                  },
        +                  "qualifier": {
        +                    "type": "string"
        +                  },
        +                  "text": {
        +                    "type": "string"
        +                  },
        +                  "unit": {
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "retest": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "slug": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "suggestions": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "suggests": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Reviewed copy for this direction"
        +          },
        +          "unitMismatch": {
        +            "type": "boolean"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reviewed": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "catalog": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "reviewer": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "summary": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "high": {
        +          "type": "number"
        +        },
        +        "low": {
        +          "type": "number"
        +        },
        +        "matched": {
        +          "type": "number"
        +        },
        +        "normal": {
        +          "type": "number"
        +        },
        +        "total": {
        +          "type": "number"
        +        },
        +        "unknown": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_panels1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "labFee": {
        +      "description": "USD",
        +      "type": "number"
        +    },
        +    "panels": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "biomarkers": {
        +            "description": "Number of biomarkers reported",
        +            "type": "number"
        +          },
        +          "category": {
        +            "type": "string"
        +          },
        +          "labs": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "orderUrl": {
        +            "description": "Absolute https URL on test-well.com",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "USD",
        +            "type": "number"
        +          },
        +          "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"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "tests": {
        +            "description": "Number of tests in the panel",
        +            "type": "number"
        +          },
        +          "url": {
        +            "description": "Absolute https URL on test-well.com",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlookup_reference_range1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "aliases": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "browse": {
        +      "type": "string"
        +    },
        +    "category": {
        +      "type": "string"
        +    },
        +    "citations": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "filteredToQuery": {
        +      "type": "boolean"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "highSuggests": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "howToTest": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "kind": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "USD",
        +            "type": "number"
        +          },
        +          "url": {
        +            "description": "Absolute https URL on test-well.com",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "lowSuggests": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "marker": {
        +      "type": "string"
        +    },
        +    "measures": {
        +      "type": "string"
        +    },
        +    "ranges": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "max": {
        +            "type": "number"
        +          },
        +          "min": {
        +            "type": "number"
        +          },
        +          "qualifier": {
        +            "description": "Who the band applies to, e.g. 'Female, age 18+'",
        +            "type": "string"
        +          },
        +          "range": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "retest": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestions": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "units": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedquote_order1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "checkoutUrl": {
        +      "anyOf": [
        +        {
        +          "description": "Absolute https URL on test-well.com",
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Prefilled cart on test-well.com — purchases complete there; null when nothing is orderable"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present when ok=false, e.g. state not served",
        +      "type": "string"
        +    },
        +    "lab": {
        +      "type": "string"
        +    },
        +    "labFee": {
        +      "description": "USD",
        +      "type": "number"
        +    },
        +    "labName": {
        +      "type": "string"
        +    },
        +    "lines": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "lab": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "USD",
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "description": "Absolute https URL on test-well.com",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    },
        +    "state": {
        +      "type": "string"
        +    },
        +    "subtotal": {
        +      "description": "USD",
        +      "type": "number"
        +    },
        +    "total": {
        +      "description": "All-in total: subtotal + the single lab processing fee",
        +      "type": "number"
        +    },
        +    "unavailable": {
        +      "description": "Requested items the routed lab cannot run in this state",
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrecommend_tests1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "byGoal": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {},
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Recommended panel and alternatives for the stated goals"
        +    },
        +    "bySymptom": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {},
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Panels, individual tests and explanations for the stated symptoms"
        +    },
        +    "disclaimer": {
        +      "type": "string"
        +    },
        +    "goals": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "labFee": {
        +      "description": "USD",
        +      "type": "number"
        +    },
        +    "next": {
        +      "description": "Suggested next tool call",
        +      "type": "string"
        +    },
        +    "symptoms": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_tests1 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. 13 tool updates
    • First observedcalculate_free_testosterone
    • First observedcompare_prices
    • First observedcompare_provider
    • First observedconvert_units
    • First observedfind_draw_sites
    • First observedget_guide
    • First observedget_test
    • First observedinterpret_results
    • First observedlist_panels
    • First observedlookup_reference_range
    • First observedquote_order
    • First observedrecommend_tests
    • First observedsearch_tests

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides live US healthcare cost data including procedure cost estimates, provider pricing, insurance coverage rules, and medical bill analysis using real hospital transparency and CMS data.
    12
    49 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Medicare payment amounts for physician services, lab tests, and DMEPOS items, plus daily unit limits and NCCI code-pair billing edits, with vintage- and locality-aware answers.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Real US & Canada dental price data for AI assistants: average costs by procedure, state and city, insurance acceptance, and cheapest-state lookups — backed by open datasets (CC BY 4.0, permanent DOIs).
    4
    26 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources