TestWell Lab Tests
Cash-pay lab tests: catalog search, all-in quotes by state, draw sites by ZIP, reviewed ranges.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- LOWin create_checkout
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"testwell": {
"url": "https://www.test-well.com/mcp"
}
}
}Remote endpoints
https://www.test-well.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (18)
🟢search_tests(query, type, category, orderableOnly, limit, ...)
Search TestWell's public catalog of cash-pay lab tests and panels by keyword, biomarker, CPT code, or category. Returns name, slug, per-lab prices, sample, fasting, turnaround and order URL. Prices are stickers; every order adds one $6 lab processing fee (see quote_order for all-in totals).
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Keyword, biomarker, CPT code or health goal, e.g. 'vitamin d', 'TSH', '80053', 'cholesterol'"
},
"type": {
"description": "Restrict to individual tests or bundled panels",
"type": "string",
"enum": [
"test",
"panel"
]
},
"category": {
"description": "Catalog category, e.g. 'Thyroid', 'Heart Health'",
"type": "string",
"maxLength": 60
},
"orderableOnly": {
"description": "Exclude items listed as coming soon (default true)",
"type": "boolean"
},
"limit": {
"description": "Max results (default 10)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"lang": {
"description": "Return Spanish names/descriptions where a translation exists (default en)",
"type": "string",
"enum": [
"en",
"es"
]
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"lang": {
"type": "string"
},
"count": {
"type": "number"
},
"labFee": {
"type": "number",
"description": "USD"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"test",
"panel"
]
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"description": {
"type": "string"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"cpt": {
"description": "CPT code when verified",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"biomarkers": {
"type": "array",
"items": {
"type": "string"
}
},
"biomarkerCount": {
"type": "number"
},
"sampleType": {
"type": "string"
},
"fastingRequired": {
"type": "boolean"
},
"resultsIn": {
"description": "Turnaround, e.g. '1-3 business days'",
"type": "string"
},
"measuredTurnaround": {
"description": "Measured medians from real orders (specimen at lab → results), per lab; published only when n ≥ 30. Empty until enough data exists.",
"type": "array",
"items": {
"type": "object",
"properties": {
"lab": {
"type": "string"
},
"n": {
"type": "number"
},
"medianDays": {
"type": "number"
},
"p90Days": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"asOf": {
"type": "string"
}
},
"required": [
"lab",
"n",
"medianDays",
"asOf"
],
"additionalProperties": false
}
},
"prepInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labs": {
"description": "Labs that run it: Quest, Labcorp, BioReference",
"type": "array",
"items": {
"type": "string"
}
},
"prices": {
"type": "object",
"properties": {
"quest": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"labcorp": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"bioreference": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {},
"description": "Sticker price per lab; null where the lab does not run the item"
},
"labFee": {
"description": "Flat per-order lab processing fee (charged once per order)",
"type": "number"
},
"currency": {
"type": "string"
},
"orderable": {
"type": "boolean"
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"markdownUrl": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"orderUrl": {
"description": "Prefilled cart link",
"type": "string"
},
"reviewedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"popular": {
"type": "boolean"
}
},
"additionalProperties": {}
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_test(slug, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Catalog slug (from search_tests) or id, e.g. 'tsh', 'general-wellness-panel'"
},
"lang": {
"description": "Spanish prose where a translation exists (default en)",
"type": "string",
"enum": [
"en",
"es"
]
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"item": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"test",
"panel"
]
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"description": {
"type": "string"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"cpt": {
"description": "CPT code when verified",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"biomarkers": {
"type": "array",
"items": {
"type": "string"
}
},
"biomarkerCount": {
"type": "number"
},
"sampleType": {
"type": "string"
},
"fastingRequired": {
"type": "boolean"
},
"resultsIn": {
"description": "Turnaround, e.g. '1-3 business days'",
"type": "string"
},
"measuredTurnaround": {
"description": "Measured medians from real orders (specimen at lab → results), per lab; published only when n ≥ 30. Empty until enough data exists.",
"type": "array",
"items": {
"type": "object",
"properties": {
"lab": {
"type": "string"
},
"n": {
"type": "number"
},
"medianDays": {
"type": "number"
},
"p90Days": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"asOf": {
"type": "string"
}
},
"required": [
"lab",
"n",
"medianDays",
"asOf"
],
"additionalProperties": false
}
},
"prepInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"labs": {
"description": "Labs that run it: Quest, Labcorp, BioReference",
"type": "array",
"items": {
"type": "string"
}
},
"prices": {
"type": "object",
"properties": {
"quest": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"labcorp": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"bioreference": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {},
"description": "Sticker price per lab; null where the lab does not run the item"
},
"labFee": {
"description": "Flat per-order lab processing fee (charged once per order)",
"type": "number"
},
"currency": {
"type": "string"
},
"orderable": {
"type": "boolean"
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"markdownUrl": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"orderUrl": {
"description": "Prefilled cart link",
"type": "string"
},
"reviewedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"popular": {
"type": "boolean"
}
},
"additionalProperties": {}
},
"suggestions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢list_panels(category, maxPrice, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"category": {
"description": "Catalog category, e.g. 'Hormones', 'General Health'",
"type": "string",
"maxLength": 60
},
"maxPrice": {
"description": "Only panels at or under this sticker price (USD)",
"type": "number",
"exclusiveMinimum": 0
},
"limit": {
"description": "Max results (default 25)",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"count": {
"type": "number"
},
"labFee": {
"type": "number",
"description": "USD"
},
"panels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {
"type": "number",
"description": "USD"
},
"prices": {
"type": "object",
"properties": {
"quest": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"labcorp": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"bioreference": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {},
"description": "Sticker price per lab; null where the lab does not run the item"
},
"tests": {
"description": "Number of tests in the panel",
"type": "number"
},
"biomarkers": {
"description": "Number of biomarkers reported",
"type": "number"
},
"category": {
"type": "string"
},
"labs": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"orderUrl": {
"type": "string",
"description": "Absolute https URL on test-well.com"
}
},
"additionalProperties": {}
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢recommend_tests(goals, symptoms, budget)
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.
Input Schema
{
"type": "object",
"properties": {
"goals": {
"description": "Health goals, e.g. ['energy', 'thyroid']",
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"maxLength": 60
}
},
"symptoms": {
"description": "Symptoms, e.g. ['always cold', 'weight gain']",
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"maxLength": 60
}
},
"budget": {
"description": "Budget band: low ≈ $80, medium ≈ $200, high ≈ $400",
"type": "string",
"enum": [
"low",
"medium",
"high",
"no_limit"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"symptoms": {
"type": "array",
"items": {
"type": "string"
}
},
"byGoal": {
"description": "Recommended panel and alternatives for the stated goals",
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"bySymptom": {
"description": "Panels, individual tests and explanations for the stated symptoms",
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"labFee": {
"type": "number",
"description": "USD"
},
"next": {
"description": "Suggested next tool call",
"type": "string"
},
"disclaimer": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢quote_order(items, state, lab)
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.
Input Schema
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 25,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": "Catalog slugs or ids, e.g. ['tsh', 'vitamin-d']"
},
"state": {
"description": "US state code or name where the user will be drawn, e.g. 'FL' or 'Florida'",
"type": "string",
"minLength": 2,
"maxLength": 40
},
"lab": {
"description": "Preferred lab outside NY/NJ (default quest)",
"type": "string",
"enum": [
"quest",
"labcorp",
"bioreference"
]
}
},
"required": [
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"error": {
"description": "Present when ok=false, e.g. state not served",
"type": "string"
},
"state": {
"type": "string"
},
"lab": {
"type": "string"
},
"labName": {
"type": "string"
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"lab": {
"type": "string"
},
"price": {
"type": "number",
"description": "USD"
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
}
},
"additionalProperties": {}
}
},
"unavailable": {
"description": "Requested items the routed lab cannot run in this state",
"type": "array",
"items": {}
},
"subtotal": {
"type": "number",
"description": "USD"
},
"labFee": {
"type": "number",
"description": "USD"
},
"total": {
"description": "All-in total: subtotal + the single lab processing fee",
"type": "number"
},
"currency": {
"type": "string"
},
"checkoutUrl": {
"description": "Prefilled cart on test-well.com — purchases complete there; null when nothing is orderable",
"anyOf": [
{
"type": "string",
"description": "Absolute https URL on test-well.com"
},
{
"type": "null"
}
]
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟡create_checkout(items, state, buyer, dry_run)
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.
Input Schema
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 25,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Test or panel slug/id"
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 1
}
},
"required": [
"id"
]
}
},
"state": {
"description": "US state code or name where the blood will be drawn",
"type": "string",
"minLength": 2,
"maxLength": 40
},
"buyer": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"maxLength": 80
},
"last_name": {
"type": "string",
"maxLength": 80
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone_number": {
"type": "string",
"maxLength": 20
}
}
},
"dry_run": {
"description": "Price only; do not create a session",
"type": "boolean"
}
},
"required": [
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"not_ready_for_payment",
"ready_for_payment",
"in_progress",
"completed",
"canceled"
]
},
"currency": {
"type": "string",
"const": "usd"
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"item": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"quantity": {
"type": "number"
}
},
"required": [
"id",
"quantity"
],
"additionalProperties": false
},
"base_amount": {
"type": "number"
},
"subtotal": {
"type": "number"
},
"total": {
"type": "number"
},
"name": {
"type": "string"
},
"lab": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"item",
"base_amount",
"subtotal",
"total"
],
"additionalProperties": {}
}
},
"totals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"display_text": {
"type": "string"
},
"amount": {
"type": "number"
}
},
"required": [
"type",
"display_text",
"amount"
],
"additionalProperties": false
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"info",
"error"
]
},
"content": {
"type": "string"
},
"param": {
"type": "string"
}
},
"required": [
"type",
"content"
],
"additionalProperties": {}
}
},
"fulfillment_options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "digital"
},
"id": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"type",
"id",
"title"
],
"additionalProperties": {}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"type",
"url"
],
"additionalProperties": false
}
},
"pay_online_url": {
"description": "Prefilled cart for browser payment when the platform has no payment token",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"order": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"checkout_session_id": {
"type": "string"
},
"permalink_url": {
"type": "string"
}
},
"required": [
"id",
"checkout_session_id",
"permalink_url"
],
"additionalProperties": false
},
"dry_run": {
"type": "boolean"
}
},
"required": [
"id",
"status",
"currency",
"line_items",
"totals",
"messages",
"fulfillment_options",
"links"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟡update_checkout(checkout_session_id, items, state, buyer)
Change items, state or buyer details on an open checkout session and get it re-priced. Returns the same session object as create_checkout.
Input Schema
{
"type": "object",
"properties": {
"checkout_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 80
},
"items": {
"minItems": 1,
"maxItems": 25,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 1
}
},
"required": [
"id"
]
}
},
"state": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"buyer": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"maxLength": 80
},
"last_name": {
"type": "string",
"maxLength": 80
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone_number": {
"type": "string",
"maxLength": 20
}
}
}
},
"required": [
"checkout_session_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"id",
"total"
],
"additionalProperties": {}
}
},
"totals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"display_text": {
"type": "string"
},
"amount": {
"type": "number"
}
},
"required": [
"type",
"display_text",
"amount"
],
"additionalProperties": false
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"info",
"error"
]
},
"content": {
"type": "string"
}
},
"required": [
"type",
"content"
],
"additionalProperties": {}
}
}
},
"required": [
"id",
"status",
"line_items",
"totals",
"messages"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_checkout(checkout_session_id)
Current state of a checkout session (status, line items, totals, messages, order once paid). Read-only.
Input Schema
{
"type": "object",
"properties": {
"checkout_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 80
}
},
"required": [
"checkout_session_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"id",
"total"
],
"additionalProperties": {}
}
},
"totals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"display_text": {
"type": "string"
},
"amount": {
"type": "number"
}
},
"required": [
"type",
"display_text",
"amount"
],
"additionalProperties": false
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"info",
"error"
]
},
"content": {
"type": "string"
}
},
"required": [
"type",
"content"
],
"additionalProperties": {}
}
}
},
"required": [
"id",
"status",
"line_items",
"totals",
"messages"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🔴cancel_checkout(checkout_session_id)
Cancel an open (unpaid) checkout session. Paid sessions cannot be canceled here — the patient's complete-details email explains refunds.
Input Schema
{
"type": "object",
"properties": {
"checkout_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 80
}
},
"required": [
"checkout_session_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"status"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟡complete_checkout(checkout_session_id, buyer, payment_data, idempotency_key)
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.
Input Schema
{
"type": "object",
"properties": {
"checkout_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 80
},
"buyer": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
]
},
"first_name": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"last_name": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"email": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
]
},
"phone_number": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
}
}
},
{
"type": "null"
}
]
},
"payment_data": {
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 4,
"maxLength": 400
},
"provider": {
"description": "'stripe'",
"type": "string",
"maxLength": 40
},
"billing_address": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"line_one": {
"type": "string"
},
"line_two": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"country": {
"type": "string"
},
"postal_code": {
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"required": [
"token"
]
},
"idempotency_key": {
"type": "string",
"maxLength": 128
}
},
"required": [
"checkout_session_id",
"payment_data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
},
"totals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"display_text": {
"type": "string"
},
"amount": {
"type": "number"
}
},
"required": [
"type",
"display_text",
"amount"
],
"additionalProperties": false
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"info",
"error"
]
},
"content": {
"type": "string"
}
},
"required": [
"type",
"content"
],
"additionalProperties": {}
}
},
"order": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"checkout_session_id": {
"type": "string"
},
"permalink_url": {
"type": "string"
}
},
"required": [
"id",
"checkout_session_id",
"permalink_url"
],
"additionalProperties": false
}
},
"required": [
"id",
"status",
"totals",
"messages"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢find_draw_sites(zip, radiusMiles, lab, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "5-digit US ZIP code"
},
"radiusMiles": {
"description": "Search radius in miles (snapped to 10/20/25/50/100; default 25)",
"type": "integer",
"minimum": 5,
"maximum": 100
},
"lab": {
"description": "Limit to one lab",
"type": "string",
"enum": [
"quest",
"labcorp",
"bioreference"
]
},
"limit": {
"description": "Max sites (default 10)",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"zip"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"radiusMiles": {
"type": "number"
},
"count": {
"type": "number"
},
"sites": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lab": {
"type": "string"
},
"distance": {
"description": "Miles from the ZIP centroid",
"type": "number"
},
"hours": {}
},
"additionalProperties": {}
}
},
"mapUrl": {
"type": "string",
"description": "Absolute https URL on test-well.com"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢lookup_reference_range(marker, sex, age, pregnancy, postmenopausal)
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.
Input Schema
{
"type": "object",
"properties": {
"marker": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Marker name or alias, e.g. 'TSH', 'ferritin', 'HbA1c', 'LDL'"
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
]
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 120
},
"pregnancy": {
"type": "boolean"
},
"postmenopausal": {
"type": "boolean"
}
},
"required": [
"marker"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"marker": {
"type": "string"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string"
},
"units": {
"type": "array",
"items": {
"type": "string"
}
},
"measures": {
"type": "string"
},
"filteredToQuery": {
"type": "boolean"
},
"ranges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qualifier": {
"description": "Who the band applies to, e.g. 'Female, age 18+'",
"type": "string"
},
"range": {
"type": "string"
},
"min": {
"type": "number"
},
"max": {
"type": "number"
},
"unit": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"highSuggests": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lowSuggests": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"retest": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"howToTest": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"kind": {
"type": "string"
},
"price": {
"type": "number",
"description": "USD"
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
}
},
"additionalProperties": {}
}
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"suggestions": {
"type": "array",
"items": {
"type": "string"
}
},
"browse": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢compare_prices(test)
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).
Input Schema
{
"type": "object",
"properties": {
"test": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Test slug or name, e.g. 'tsh', 'lipid panel', 'vitamin-d'"
}
},
"required": [
"test"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"test": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"cpt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"category": {
"type": "string"
}
},
"additionalProperties": {}
},
"cheapestSingleTestAllIn": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"providerName": {
"type": "string"
},
"sticker": {
"type": "number",
"description": "USD"
},
"perOrderFees": {
"type": "number",
"description": "USD"
},
"allIn": {
"description": "Sticker + that provider's per-order fees, one test ordered alone",
"type": "number"
},
"pricedAt": {
"description": "Date the price was verified (YYYY-MM-DD)",
"type": "string"
},
"url": {
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
},
"providers": {
"description": "Sorted by all-in price, TestWell included",
"type": "array",
"items": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"providerName": {
"type": "string"
},
"sticker": {
"type": "number",
"description": "USD"
},
"perOrderFees": {
"type": "number",
"description": "USD"
},
"allIn": {
"description": "Sticker + that provider's per-order fees, one test ordered alone",
"type": "number"
},
"pricedAt": {
"description": "Date the price was verified (YYYY-MM-DD)",
"type": "string"
},
"url": {
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
}
},
"reference": {
"type": "object",
"properties": {
"hospitalTypical": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
},
"questDirect": {
"anyOf": [
{
"type": "number",
"description": "USD"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
},
"caveats": {
"type": "array",
"items": {
"type": "string"
}
},
"dataset": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"methodology": {
"type": "string"
},
"license": {
"type": "string"
},
"query": {
"type": "string"
},
"hint": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢interpret_results(values, sex, age, pregnancy, postmenopausal)
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.
Input Schema
{
"type": "object",
"properties": {
"values": {
"minItems": 1,
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"marker": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"value": {
"type": "number"
},
"unit": {
"type": "string",
"maxLength": 20
}
},
"required": [
"marker",
"value"
]
},
"description": "Results to explain, e.g. [{marker:'TSH', value:5.2, unit:'mIU/L'}, {marker:'ferritin', value:12}]"
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
]
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 120
},
"pregnancy": {
"type": "boolean"
},
"postmenopausal": {
"type": "boolean"
}
},
"required": [
"values"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"input": {
"type": "object",
"properties": {
"marker": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
},
"found": {
"type": "boolean"
},
"marker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"flag": {
"type": "string",
"enum": [
"low",
"normal",
"high",
"unknown"
]
},
"range": {
"anyOf": [
{
"type": "object",
"properties": {
"qualifier": {
"type": "string"
},
"min": {
"type": "number"
},
"max": {
"type": "number"
},
"unit": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"deviationPct": {
"description": "Distance outside the band as % of band width",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"unitMismatch": {
"type": "boolean"
},
"suggests": {
"description": "Reviewed copy for this direction",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"retest": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"links": {
"type": "object",
"properties": {
"biomarker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"interpretation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"orderTest": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
},
"suggestions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": {}
}
},
"summary": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"matched": {
"type": "number"
},
"high": {
"type": "number"
},
"low": {
"type": "number"
},
"normal": {
"type": "number"
},
"unknown": {
"type": "number"
}
},
"additionalProperties": {}
},
"disclaimer": {
"type": "string"
},
"reviewed": {
"type": "object",
"properties": {
"catalog": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"reviewer": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢convert_units(analyte, value, direction)
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.
Input Schema
{
"type": "object",
"properties": {
"analyte": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Analyte slug or name, e.g. 'glucose', 'total-cholesterol', 'testosterone', 'vitamin-d', 'a1c'"
},
"value": {
"type": "number",
"description": "The numeric value to convert"
},
"direction": {
"description": "Default toSI (US → SI)",
"type": "string",
"enum": [
"toSI",
"toConventional"
]
}
},
"required": [
"analyte",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"analyte": {
"type": "string"
},
"input": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"unit": {
"type": "string"
}
},
"additionalProperties": {}
},
"output": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"unit": {
"type": "string"
}
},
"additionalProperties": {}
},
"factor": {
"type": "number"
},
"method": {
"type": "string"
},
"estimatedAverageGlucose": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"unit": {
"type": "string"
}
},
"additionalProperties": {}
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"biomarkerUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"error": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢calculate_free_testosterone(totalT, totalTUnit, shbg, albuminGdL)
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.
Input Schema
{
"type": "object",
"properties": {
"totalT": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Total testosterone"
},
"totalTUnit": {
"description": "Default ng/dL",
"type": "string",
"enum": [
"ng/dL",
"nmol/L"
]
},
"shbg": {
"type": "number",
"exclusiveMinimum": 0,
"description": "SHBG in nmol/L"
},
"albuminGdL": {
"description": "Albumin in g/dL (default 4.3)",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 6
}
},
"required": [
"totalT",
"shbg"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"inputs": {
"type": "object",
"properties": {
"totalT": {
"type": "number"
},
"totalTUnit": {
"type": "string"
},
"shbg": {
"type": "number"
},
"albuminGdL": {
"type": "number"
}
},
"additionalProperties": {}
},
"freeTestosterone": {
"type": "object",
"properties": {
"pgmL": {
"type": "number"
},
"ngdL": {
"type": "number"
},
"nmolL": {
"type": "number"
}
},
"additionalProperties": {}
},
"bioavailableTestosterone": {
"type": "object",
"properties": {
"ngdL": {
"type": "number"
},
"nmolL": {
"type": "number"
}
},
"additionalProperties": {}
},
"freePercent": {
"type": "number"
},
"method": {
"type": "string"
},
"tests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"toolUrl": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢compare_provider(provider)
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.
Input Schema
{
"type": "object",
"properties": {
"provider": {
"description": "Competitor slug or name, e.g. 'quest-direct', 'Function Health', 'justlabs'",
"type": "string",
"maxLength": 60
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"competitor": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"pricingModel": {
"type": "string"
},
"perOrderFees": {},
"labPartners": {
"type": "array",
"items": {
"type": "string"
}
},
"statesServed": {
"type": "number"
}
},
"additionalProperties": {}
},
"testwell": {
"type": "object",
"properties": {},
"additionalProperties": {}
},
"verdict": {
"type": "string"
},
"spotPrices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test": {
"type": "string"
},
"testwell": {},
"competitor": {},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {}
}
},
"testWellWinsAt": {
"type": "array",
"items": {
"type": "string"
}
},
"competitorWinsAt": {
"type": "array",
"items": {
"type": "string"
}
},
"testWellNotFor": {
"type": "array",
"items": {
"type": "string"
}
},
"verified": {
"description": "Date the competitor's prices were verified",
"type": "string"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"providers": {
"description": "Returned when no provider was named",
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": {}
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_guide(path, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"path": {
"description": "Site path, e.g. '/guides/annual-blood-work' or 'conditions/anemia'",
"type": "string",
"maxLength": 160
},
"lang": {
"description": "Spanish version when one exists (default en)",
"type": "string",
"enum": [
"en",
"es"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"path": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string",
"description": "Absolute https URL on test-well.com"
},
"markdown": {
"description": "Full page as Markdown",
"type": "string"
},
"guides": {
"description": "Index, returned when no path was given",
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": {}
}
},
"answers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"additionalProperties": {}
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}Community
Evidence