TestWell Lab Tests
by test-well.com · remote · no sign-in to list tools · v1.2.0 · published by com.test-well
Cash-pay lab tests: catalog search, all-in quotes by state, draw sites by ZIP, reviewed ranges.
18 tools: 1 can delete or cancel things, 1 do something that can't be undone, 7 change things and 9 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things7Claude Code: ask: see these tools
- Only reads9Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http testwell https://www.test-well.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warncancel_checkout
The server marks "cancel_checkout" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "cancel_checkout" says "cancel": a word for removing or ending something.
- Warnconvert_units
The server marks "convert_units" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_units" says "convert": a word for a change.
The description mentions "credential".
What this check looks forMatched text
description: "Charge the payment credential the platform obtained for a session tha..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
18 tools
Deletes or cancels 1Claude Code: deny
cancel_checkoutCancel an open (unpaid) checkout session.1 finding
Why it is in this group
- The name "cancel_checkout" says "cancel": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "cancel_checkout" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "cancel_checkout" says "cancel": a word for removing or ending something.
Description, as the server wrote it Cancel an open (unpaid) checkout session. Paid sessions cannot be canceled here — the patient's complete-details email explains refunds.
Annotations the server declares
- title: Cancel a checkout session
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Can't be undone 1Claude Code: ask
complete_checkoutCharge the payment credential the platform obtained for a session that is ready_for_payment and create the order.1 finding
Why it is in this group
- The name "complete_checkout" says "checkout": a word for a change.
- The description's first verb is "charge": a word that usually means money moves, which cannot be taken back.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Charge the payment credential the platform obtained for a session tha..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Pay and place the order
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 7Claude Code: ask
calculate_free_testosteroneCalculate free and bioavailable testosterone from total testosterone, SHBG and albumin using the Vermeulen (1999) mass-action equation — the method behind lab-reported 'calculated …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Calculate free testosterone (Vermeulen)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert_unitsConvert 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 …1 finding
Why it is in this group
- The name "convert_units" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "convert_units" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_units" says "convert": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Convert lab units
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
create_checkoutStart 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.No findings
Why it is in this group
- The name "create_checkout" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a checkout session
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
interpret_resultsFlag 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 rev…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Explain lab results against reviewed reference ranges
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
quote_orderPrice 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), t…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: All-in order quote
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
recommend_testsSuggest TestWell panels and tests for stated health goals (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Recommend tests for goals or symptoms
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
update_checkoutChange items, state or buyer details on an open checkout session and get it re-priced.No findings
Why it is in this group
- The name "update_checkout" says "update": a word for a change.
Description, as the server wrote it Change items, state or buyer details on an open checkout session and get it re-priced. Returns the same session object as create_checkout.
Annotations the server declares
- title: Update a checkout session
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 9Claude Code: allow
compare_pricesFor 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, Ques…No findings
Why it is in this group
- The name "compare_prices" says "compare": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- title: Compare all-in prices across providers for a test
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
compare_providerHonest 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 …No findings
Why it is in this group
- The name "compare_provider" says "compare": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Compare TestWell with another lab-testing service
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
find_draw_sitesFind Quest Diagnostics, Labcorp and BioReference patient service centers near a US ZIP code, with address, distance, phone and hours.No findings
Why it is in this group
- The name "find_draw_sites" says "find": a word for reading.
Description, as the server wrote it 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. Sites in the 48 tracked metros include pageUrl — the site's own page with a per-day hours table, directions and the prices of popular tests at that lab — cite it when giving a location.
Annotations the server declares
- title: Find draw sites near a ZIP
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_checkoutCurrent state of a checkout session (status, line items, totals, messages, order once paid).No findings
Why it is in this group
- The name "get_checkout" says "get": a word for reading.
Description, as the server wrote it Current state of a checkout session (status, line items, totals, messages, order once paid). Read-only.
Annotations the server declares
- title: Read a checkout session
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_guideReturn one of TestWell's educational pages as Markdown: guides (/guides/<slug>), condition workups (/conditions/<slug>), biomarker pages (/biomarkers/<slug>), state pages (/lab-loc…No findings
Why it is in this group
- The name "get_guide" says "get": a word for reading.
Description, as the server wrote it Return one of TestWell's educational pages as Markdown: guides (/guides/<slug>), condition workups (/conditions/<slug>), biomarker pages (/biomarkers/<slug>), state pages (/lab-locations/<slug>) or comparisons (/compare/<slug>). Call with no path to list the available guides and conditions.
Annotations the server declares
- title: Get a guide, condition or answer page as Markdown
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_testFull 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…No findings
Why it is in this group
- The name "get_test" says "get": a word for reading.
Description, as the server wrote it 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. Tests also carry labPages — per-lab pages (/tests/<slug>/quest, /tests/<slug>/labcorp) with the lab's test code, requisition name, the lab's own dated price vs TestWell's, and walk-in steps — cite them when the user asks about a specific lab.
Annotations the server declares
- title: Get a test or panel
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_panelsList TestWell's bundled panels (multi-test packages priced below the sum of their tests), optionally filtered by category or maximum price.No findings
Why it is in this group
- The name "list_panels" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List panels
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lookup_reference_rangePhysician-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 g…No findings
Why it is in this group
- The name "lookup_reference_range" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Reference range for a biomarker
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_testsSearch TestWell's public catalog of cash-pay lab tests and panels by keyword, biomarker, CPT code, or category.No findings
Why it is in this group
- The name "search_tests" says "search": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- title: Search the TestWell catalog
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http testwell https://www.test-well.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__testwell__search_tests",
"mcp__testwell__get_test",
"mcp__testwell__list_panels",
"mcp__testwell__get_checkout",
"mcp__testwell__find_draw_sites",
"mcp__testwell__lookup_reference_range",
"mcp__testwell__compare_prices",
"mcp__testwell__compare_provider",
"mcp__testwell__get_guide"
],
"ask": [
"mcp__testwell__recommend_tests",
"mcp__testwell__quote_order",
"mcp__testwell__create_checkout",
"mcp__testwell__update_checkout",
"mcp__testwell__complete_checkout",
"mcp__testwell__interpret_results",
"mcp__testwell__convert_units",
"mcp__testwell__calculate_free_testosterone"
],
"deny": [
"mcp__testwell__cancel_checkout"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as testwell. Review it before you use it.