MCP 서버

TestWell Lab Tests

com.test-well/testwell
헬스케어 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches and compares cash-pay lab tests, provides reference-range and result explanations, locates draw sites, and supports test checkout.

calculate_free_testosterone
Calculate free testosterone (Vermeulen)
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['totalT', 'shbg'], 'properties': {'shbg': {'type': 'number', 'description': 'SHBG in nmol/L', 'exclusiveMinimum': 0}, 'totalT': {'type': 'number', 'description': 'Total testosterone', 'exclusiveMinimum': 0}, 'albuminGdL': {'type': 'number', 'maximum': 6, 'description': 'Albumin in g/dL (default 4.3)', 'exclusiveMinimum': 0}, 'totalTUnit': {'enum': ['ng/dL', 'nmol/L'], 'type': 'string', 'description': 'Default ng/dL'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'tests': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': {}}}, 'inputs': {'type': 'object', 'properties': {'shbg': {'type': 'number'}, 'totalT': {'type': 'number'}, 'albuminGdL': {'type': 'number'}, 'totalTUnit': {'type': 'string'}}, 'additionalProperties': {}}, 'method': {'type': 'string'}, 'toolUrl': {'type': 'string'}, 'freePercent': {'type': 'number'}, 'freeTestosterone': {'type': 'object', 'properties': {'ngdL': {'type': 'number'}, 'pgmL': {'type': 'number'}, 'nmolL': {'type': 'number'}}, 'additionalProperties': {}}, 'bioavailableTestosterone': {'type': 'object', 'properties': {'ngdL': {'type': 'number'}, 'nmolL': {'type': 'number'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
cancel_checkout
Cancel a checkout session
Cancel an open (unpaid) checkout session. Paid sessions cannot be canceled here — the patient's complete-details email explains refunds.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['checkout_session_id'], 'properties': {'checkout_session_id': {'type': 'string', 'maxLength': 80, 'minLength': 8}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'status'], 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}}, 'additionalProperties': {}}
compare_prices
Compare all-in prices across providers for a 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).
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['test'], 'properties': {'test': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': "Test slug or name, e.g. 'tsh', 'lipid panel', 'vitamin-d'"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string'}, 'test': {'type': 'object', 'properties': {'cpt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'category': {'type': 'string'}}, 'additionalProperties': {}}, 'found': {'type': 'boolean'}, 'query': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'dataset': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'license': {'type': 'string'}, 'providers': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'allIn': {'type': 'number', 'description': "Sticker + that provider's per-order fees, one test ordered alone"}, 'sticker': {'type': 'number', 'description': 'USD'}, 'pricedAt': {'type': 'string', 'description': 'Date the price was verified (YYYY-MM-DD)'}, 'provider': {'type': 'string'}, 'perOrderFees': {'type': 'number', 'description': 'USD'}, 'providerName': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Sorted by all-in price, TestWell included'}, 'reference': {'type': 'object', 'properties': {'questDirect': {'anyOf': [{'type': 'number', 'description': 'USD'}, {'type': 'null'}]}, 'hospitalTypical': {'anyOf': [{'type': 'number', 'description': 'USD'}, {'type': 'null'}]}}, 'additionalProperties': {}}, 'methodology': {'type': 'string'}, 'cheapestSingleTestAllIn': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'allIn': {'type': 'number', 'description': "Sticker + that provider's per-order fees, one test ordered alone"}, 'sticker': {'type': 'number', 'description': 'USD'}, 'pricedAt': {'type': 'string', 'description': 'Date the price was verified (YYYY-MM-DD)'}, 'provider': {'type': 'string'}, 'perOrderFees': {'type': 'number', 'description': 'USD'}, 'providerName': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
compare_provider
Compare TestWell with another lab-testing service
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'provider': {'type': 'string', 'maxLength': 60, 'description': "Competitor slug or name, e.g. 'quest-direct', 'Function Health', 'justlabs'"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'found': {'type': 'boolean'}, 'sources': {'type': 'array', 'items': {'type': 'string'}}, 'verdict': {'type': 'string'}, 'testwell': {'type': 'object', 'properties': {}, 'additionalProperties': {}}, 'verified': {'type': 'string', 'description': "Date the competitor's prices were verified"}, 'providers': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Returned when no provider was named'}, 'competitor': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'labPartners': {'type': 'array', 'items': {'type': 'string'}}, 'perOrderFees': {}, 'pricingModel': {'type': 'string'}, 'statesServed': {'type': 'number'}}, 'additionalProperties': {}}, 'spotPrices': {'type': 'array', 'items': {'type': 'object', 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'test': {'type': 'string'}, 'testwell': {}, 'competitor': {}}, 'additionalProperties': {}}}, 'testWellNotFor': {'type': 'array', 'items': {'type': 'string'}}, 'testWellWinsAt': {'type': 'array', 'items': {'type': 'string'}}, 'competitorWinsAt': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {}}
complete_checkout
Pay and place the order
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['checkout_session_id', 'payment_data'], 'properties': {'buyer': {'anyOf': [{'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'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'}]}, 'last_name': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}]}, 'first_name': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}]}, 'phone_number': {'anyOf': [{'type': 'string', 'maxLength': 20}, {'type': 'null'}]}}}, {'type': 'null'}]}, 'payment_data': {'type': 'object', 'required': ['token'], 'properties': {'token': {'type': 'string', 'maxLength': 400, 'minLength': 4}, 'provider': {'type': 'string', 'maxLength': 40, 'description': "'stripe'"}, 'billing_address': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'country': {'type': 'string'}, 'line_one': {'type': 'string'}, 'line_two': {'type': 'string'}, 'postal_code': {'type': 'string'}}}, {'type': 'null'}]}}}, 'idempotency_key': {'type': 'string', 'maxLength': 128}, 'checkout_session_id': {'type': 'string', 'maxLength': 80, 'minLength': 8}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'status', 'totals', 'messages'], 'properties': {'id': {'type': 'string'}, 'order': {'type': 'object', 'required': ['id', 'checkout_session_id', 'permalink_url'], 'properties': {'id': {'type': 'string'}, 'permalink_url': {'type': 'string'}, 'checkout_session_id': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string'}, 'totals': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'display_text', 'amount'], 'properties': {'type': {'type': 'string'}, 'amount': {'type': 'number'}, 'display_text': {'type': 'string'}}, 'additionalProperties': False}}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'content'], 'properties': {'type': {'enum': ['info', 'error'], 'type': 'string'}, 'content': {'type': 'string'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
convert_units
Convert lab units
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['analyte', 'value'], 'properties': {'value': {'type': 'number', 'description': 'The numeric value to convert'}, 'analyte': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': "Analyte slug or name, e.g. 'glucose', 'total-cholesterol', 'testosterone', 'vitamin-d', 'a1c'"}, 'direction': {'enum': ['toSI', 'toConventional'], 'type': 'string', 'description': 'Default toSI (US â\x86\x92 SI)'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error': {'type': 'string'}, 'input': {'type': 'object', 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'number'}}, 'additionalProperties': {}}, 'factor': {'type': 'number'}, 'method': {'type': 'string'}, 'output': {'type': 'object', 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'number'}}, 'additionalProperties': {}}, 'analyte': {'type': 'string'}, 'biomarkerUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'estimatedAverageGlucose': {'type': 'object', 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'number'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
create_checkout
Create a checkout session
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['items'], 'properties': {'buyer': {'type': 'object', 'properties': {'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,}$"}, 'last_name': {'type': 'string', 'maxLength': 80}, 'first_name': {'type': 'string', 'maxLength': 80}, 'phone_number': {'type': 'string', 'maxLength': 20}}}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Test or panel slug/id'}, 'quantity': {'type': 'integer', 'maximum': 1, 'minimum': 1}}}, 'maxItems': 25, 'minItems': 1}, 'state': {'type': 'string', 'maxLength': 40, 'minLength': 2, 'description': 'US state code or name where the blood will be drawn'}, 'dry_run': {'type': 'boolean', 'description': 'Price only; do not create a session'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'status', 'currency', 'line_items', 'totals', 'messages', 'fulfillment_options', 'links'], 'properties': {'id': {'type': 'string'}, 'links': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'url'], 'properties': {'url': {'type': 'string'}, 'type': {'type': 'string'}}, 'additionalProperties': False}}, 'order': {'type': 'object', 'required': ['id', 'checkout_session_id', 'permalink_url'], 'properties': {'id': {'type': 'string'}, 'permalink_url': {'type': 'string'}, 'checkout_session_id': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['not_ready_for_payment', 'ready_for_payment', 'in_progress', 'completed', 'canceled'], 'type': 'string'}, 'totals': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'display_text', 'amount'], 'properties': {'type': {'type': 'string'}, 'amount': {'type': 'number'}, 'display_text': {'type': 'string'}}, 'additionalProperties': False}}, 'dry_run': {'type': 'boolean'}, 'currency': {'type': 'string', 'const': 'usd'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'content'], 'properties': {'type': {'enum': ['info', 'error'], 'type': 'string'}, 'param': {'type': 'string'}, 'content': {'type': 'string'}}, 'additionalProperties': {}}}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'item', 'base_amount', 'subtotal', 'total'], 'properties': {'id': {'type': 'string'}, 'lab': {'type': 'string'}, 'url': {'type': 'string'}, 'item': {'type': 'object', 'required': ['id', 'quantity'], 'properties': {'id': {'type': 'string'}, 'quantity': {'type': 'number'}}, 'additionalProperties': False}, 'name': {'type': 'string'}, 'total': {'type': 'number'}, 'subtotal': {'type': 'number'}, 'base_amount': {'type': 'number'}}, 'additionalProperties': {}}}, 'pay_online_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Prefilled cart for browser payment when the platform has no payment token'}, 'fulfillment_options': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'title'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string', 'const': 'digital'}, 'title': {'type': 'string'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
find_draw_sites
Find draw sites near a ZIP
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zip'], 'properties': {'lab': {'enum': ['quest', 'labcorp', 'bioreference'], 'type': 'string', 'description': 'Limit to one lab'}, 'zip': {'type': 'string', 'pattern': '^\\d{5}$', 'description': '5-digit US ZIP code'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max sites (default 10)'}, 'radiusMiles': {'type': 'integer', 'maximum': 100, 'minimum': 5, 'description': 'Search radius in miles (snapped to 10/20/25/50/100; default 25)'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'zip': {'type': 'string'}, 'count': {'type': 'number'}, 'sites': {'type': 'array', 'items': {'type': 'object', 'properties': {'lab': {'type': 'string'}, 'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'name': {'type': 'string'}, 'hours': {}, 'phone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'state': {'type': 'string'}, 'address': {'type': 'string'}, 'distance': {'type': 'number', 'description': 'Miles from the ZIP centroid'}}, 'additionalProperties': {}}}, 'mapUrl': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'radiusMiles': {'type': 'number'}}, 'additionalProperties': {}}
get_checkout
Read a checkout session
Current state of a checkout session (status, line items, totals, messages, order once paid). Read-only.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['checkout_session_id'], 'properties': {'checkout_session_id': {'type': 'string', 'maxLength': 80, 'minLength': 8}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'status', 'line_items', 'totals', 'messages'], 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'totals': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'display_text', 'amount'], 'properties': {'type': {'type': 'string'}, 'amount': {'type': 'number'}, 'display_text': {'type': 'string'}}, 'additionalProperties': False}}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'content'], 'properties': {'type': {'enum': ['info', 'error'], 'type': 'string'}, 'content': {'type': 'string'}}, 'additionalProperties': {}}}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'total'], 'properties': {'id': {'type': 'string'}, 'total': {'type': 'number'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
get_guide
Get a guide, condition or answer page as Markdown
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lang': {'enum': ['en', 'es'], 'type': 'string', 'description': 'Spanish version when one exists (default en)'}, 'path': {'type': 'string', 'maxLength': 160, 'description': "Site path, e.g. '/guides/annual-blood-work' or 'conditions/anemia'"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'path': {'type': 'string'}, 'found': {'type': 'boolean'}, 'title': {'type': 'string'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'properties': {'path': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Index, returned when no path was given'}, 'answers': {'type': 'array', 'items': {'type': 'object', 'properties': {'path': {'type': 'string'}}, 'additionalProperties': {}}}, 'markdown': {'type': 'string', 'description': 'Full page as Markdown'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'properties': {'path': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
get_test
Get a test or panel
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'lang': {'enum': ['en', 'es'], 'type': 'string', 'description': 'Spanish prose where a translation exists (default en)'}, 'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Catalog slug (from search_tests) or id, e.g. 'tsh', 'general-wellness-panel'"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'item': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'cpt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'CPT code when verified'}, 'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'labs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labs that run it: Quest, Labcorp, BioReference'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'type': {'enum': ['test', 'panel'], 'type': 'string'}, 'labFee': {'type': 'number', 'description': 'Flat per-order lab processing fee (charged once per order)'}, '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'}]}}, 'description': 'Sticker price per lab; null where the lab does not run the item', 'additionalProperties': {}}, 'aliases': {'type': 'array', 'items': {'type': 'string'}}, 'popular': {'type': 'boolean'}, 'category': {'type': 'string'}, 'currency': {'type': 'string'}, 'orderUrl': {'type': 'string', 'description': 'Prefilled cart link'}, 'orderable': {'type': 'boolean'}, 'resultsIn': {'type': 'string', 'description': "Turnaround, e.g. '1-3 business days'"}, 'biomarkers': {'type': 'array', 'items': {'type': 'string'}}, 'reviewedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sampleType': {'type': 'string'}, 'description': {'type': 'string'}, 'markdownUrl': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'biomarkerCount': {'type': 'number'}, 'fastingRequired': {'type': 'boolean'}, 'prepInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'measuredTurnaround': {'type': 'array', 'items': {'type': 'object', 'required': ['lab', 'n', 'medianDays', 'asOf'], 'properties': {'n': {'type': 'number'}, 'lab': {'type': 'string'}, 'asOf': {'type': 'string'}, 'p90Days': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'medianDays': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Measured medians from real orders (specimen at lab â\x86\x92 results), per lab; published only when n â\x89¥ 30. Empty until enough data exists.'}}, 'additionalProperties': {}}, 'found': {'type': 'boolean'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': {}}
interpret_results
Explain lab results against reviewed reference ranges
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['values'], 'properties': {'age': {'type': 'integer', 'maximum': 120, 'minimum': 0}, 'sex': {'enum': ['male', 'female'], 'type': 'string'}, 'values': {'type': 'array', 'items': {'type': 'object', 'required': ['marker', 'value'], 'properties': {'unit': {'type': 'string', 'maxLength': 20}, 'value': {'type': 'number'}, 'marker': {'type': 'string', 'maxLength': 80, 'minLength': 1}}}, 'maxItems': 40, 'minItems': 1, 'description': "Results to explain, e.g. [{marker:'TSH', value:5.2, unit:'mIU/L'}, {marker:'ferritin', value:12}]"}, 'pregnancy': {'type': 'boolean'}, 'postmenopausal': {'type': 'boolean'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'flag': {'enum': ['low', 'normal', 'high', 'unknown'], 'type': 'string'}, 'slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'found': {'type': 'boolean'}, 'input': {'type': 'object', 'properties': {'unit': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'value': {'type': 'number'}, 'marker': {'type': 'string'}}, 'additionalProperties': {}}, 'links': {'type': 'object', 'properties': {'biomarker': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'orderTest': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'interpretation': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': {}}, 'range': {'anyOf': [{'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'text': {'type': 'string'}, 'unit': {'type': 'string'}, 'qualifier': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'null'}]}, 'marker': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'retest': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'suggests': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Reviewed copy for this direction'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': {}}}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}, 'deviationPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Distance outside the band as % of band width'}, 'unitMismatch': {'type': 'boolean'}}, 'additionalProperties': {}}}, 'summary': {'type': 'object', 'properties': {'low': {'type': 'number'}, 'high': {'type': 'number'}, 'total': {'type': 'number'}, 'normal': {'type': 'number'}, 'matched': {'type': 'number'}, 'unknown': {'type': 'number'}}, 'additionalProperties': {}}, 'reviewed': {'type': 'object', 'properties': {'catalog': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'reviewer': {'type': 'string'}}, 'additionalProperties': {}}, 'disclaimer': {'type': 'string'}}, 'additionalProperties': {}}
list_panels
List panels
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max results (default 25)'}, 'category': {'type': 'string', 'maxLength': 60, 'description': "Catalog category, e.g. 'Hormones', 'General Health'"}, 'maxPrice': {'type': 'number', 'description': 'Only panels at or under this sticker price (USD)', 'exclusiveMinimum': 0}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'count': {'type': 'number'}, 'labFee': {'type': 'number', 'description': 'USD'}, 'panels': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'labs': {'type': 'array', 'items': {'type': 'string'}}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'price': {'type': 'number', 'description': 'USD'}, 'tests': {'type': 'number', 'description': 'Number of tests in the panel'}, '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'}]}}, 'description': 'Sticker price per lab; null where the lab does not run the item', 'additionalProperties': {}}, 'category': {'type': 'string'}, 'orderUrl': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'biomarkers': {'type': 'number', 'description': 'Number of biomarkers reported'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
lookup_reference_range
Reference range for a biomarker
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['marker'], 'properties': {'age': {'type': 'integer', 'maximum': 120, 'minimum': 0}, 'sex': {'enum': ['male', 'female'], 'type': 'string'}, 'marker': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': "Marker name or alias, e.g. 'TSH', 'ferritin', 'HbA1c', 'LDL'"}, 'pregnancy': {'type': 'boolean'}, 'postmenopausal': {'type': 'boolean'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'found': {'type': 'boolean'}, 'units': {'type': 'array', 'items': {'type': 'string'}}, 'browse': {'type': 'string'}, 'marker': {'type': 'string'}, 'ranges': {'type': 'array', 'items': {'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'unit': {'type': 'string'}, 'range': {'type': 'string'}, 'qualifier': {'type': 'string', 'description': "Who the band applies to, e.g. 'Female, age 18+'"}}, 'additionalProperties': {}}}, 'retest': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'aliases': {'type': 'array', 'items': {'type': 'string'}}, 'category': {'type': 'string'}, 'measures': {'type': 'string'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': {}}}, 'howToTest': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'kind': {'type': 'string'}, 'name': {'type': 'string'}, 'price': {'type': 'number', 'description': 'USD'}}, 'additionalProperties': {}}}, 'lowSuggests': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}, 'highSuggests': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'filteredToQuery': {'type': 'boolean'}}, 'additionalProperties': {}}
quote_order
All-in order quote
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['items'], 'properties': {'lab': {'enum': ['quest', 'labcorp', 'bioreference'], 'type': 'string', 'description': 'Preferred lab outside NY/NJ (default quest)'}, 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 25, 'minItems': 1, 'description': "Catalog slugs or ids, e.g. ['tsh', 'vitamin-d']"}, 'state': {'type': 'string', 'maxLength': 40, 'minLength': 2, 'description': "US state code or name where the user will be drawn, e.g. 'FL' or 'Florida'"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'lab': {'type': 'string'}, 'error': {'type': 'string', 'description': 'Present when ok=false, e.g. state not served'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'lab': {'type': 'string'}, 'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'type': {'type': 'string'}, 'price': {'type': 'number', 'description': 'USD'}}, 'additionalProperties': {}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'state': {'type': 'string'}, 'total': {'type': 'number', 'description': 'All-in total: subtotal + the single lab processing fee'}, 'labFee': {'type': 'number', 'description': 'USD'}, 'labName': {'type': 'string'}, 'currency': {'type': 'string'}, 'subtotal': {'type': 'number', 'description': 'USD'}, 'checkoutUrl': {'anyOf': [{'type': 'string', 'description': 'Absolute https URL on test-well.com'}, {'type': 'null'}], 'description': 'Prefilled cart on test-well.com â\x80\x94 purchases complete there; null when nothing is orderable'}, 'unavailable': {'type': 'array', 'items': {}, 'description': 'Requested items the routed lab cannot run in this state'}}, 'additionalProperties': {}}
recommend_tests
Recommend tests for goals or symptoms
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'goals': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 8, 'description': "Health goals, e.g. ['energy', 'thyroid']"}, 'budget': {'enum': ['low', 'medium', 'high', 'no_limit'], 'type': 'string', 'description': 'Budget band: low â\x89\x88 $80, medium â\x89\x88 $200, high â\x89\x88 $400'}, 'symptoms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 8, 'description': "Symptoms, e.g. ['always cold', 'weight gain']"}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'next': {'type': 'string', 'description': 'Suggested next tool call'}, 'goals': {'type': 'array', 'items': {'type': 'string'}}, 'byGoal': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'Recommended panel and alternatives for the stated goals'}, 'labFee': {'type': 'number', 'description': 'USD'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'bySymptom': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'Panels, individual tests and explanations for the stated symptoms'}, 'disclaimer': {'type': 'string'}}, 'additionalProperties': {}}
search_tests
Search the TestWell catalog
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).
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'lang': {'enum': ['en', 'es'], 'type': 'string', 'description': 'Return Spanish names/descriptions where a translation exists (default en)'}, 'type': {'enum': ['test', 'panel'], 'type': 'string', 'description': 'Restrict to individual tests or bundled panels'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 10)'}, 'query': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Keyword, biomarker, CPT code or health goal, e.g. 'vitamin d', 'TSH', '80053', 'cholesterol'"}, 'category': {'type': 'string', 'maxLength': 60, 'description': "Catalog category, e.g. 'Thyroid', 'Heart Health'"}, 'orderableOnly': {'type': 'boolean', 'description': 'Exclude items listed as coming soon (default true)'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lang': {'type': 'string'}, 'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'cpt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'CPT code when verified'}, 'url': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'labs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labs that run it: Quest, Labcorp, BioReference'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'type': {'enum': ['test', 'panel'], 'type': 'string'}, 'labFee': {'type': 'number', 'description': 'Flat per-order lab processing fee (charged once per order)'}, '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'}]}}, 'description': 'Sticker price per lab; null where the lab does not run the item', 'additionalProperties': {}}, 'aliases': {'type': 'array', 'items': {'type': 'string'}}, 'popular': {'type': 'boolean'}, 'category': {'type': 'string'}, 'currency': {'type': 'string'}, 'orderUrl': {'type': 'string', 'description': 'Prefilled cart link'}, 'orderable': {'type': 'boolean'}, 'resultsIn': {'type': 'string', 'description': "Turnaround, e.g. '1-3 business days'"}, 'biomarkers': {'type': 'array', 'items': {'type': 'string'}}, 'reviewedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'sampleType': {'type': 'string'}, 'description': {'type': 'string'}, 'markdownUrl': {'type': 'string', 'description': 'Absolute https URL on test-well.com'}, 'biomarkerCount': {'type': 'number'}, 'fastingRequired': {'type': 'boolean'}, 'prepInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'measuredTurnaround': {'type': 'array', 'items': {'type': 'object', 'required': ['lab', 'n', 'medianDays', 'asOf'], 'properties': {'n': {'type': 'number'}, 'lab': {'type': 'string'}, 'asOf': {'type': 'string'}, 'p90Days': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'medianDays': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Measured medians from real orders (specimen at lab â\x86\x92 results), per lab; published only when n â\x89¥ 30. Empty until enough data exists.'}}, 'additionalProperties': {}}}, 'query': {'type': 'string'}, 'labFee': {'type': 'number', 'description': 'USD'}}, 'additionalProperties': {}}
update_checkout
Update a checkout session
Change items, state or buyer details on an open checkout session and get it re-priced. Returns the same session object as create_checkout.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['checkout_session_id'], 'properties': {'buyer': {'type': 'object', 'properties': {'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,}$"}, 'last_name': {'type': 'string', 'maxLength': 80}, 'first_name': {'type': 'string', 'maxLength': 80}, 'phone_number': {'type': 'string', 'maxLength': 20}}}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'quantity': {'type': 'integer', 'maximum': 1, 'minimum': 1}}}, 'maxItems': 25, 'minItems': 1}, 'state': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'checkout_session_id': {'type': 'string', 'maxLength': 80, 'minLength': 8}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'status', 'line_items', 'totals', 'messages'], 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'totals': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'display_text', 'amount'], 'properties': {'type': {'type': 'string'}, 'amount': {'type': 'number'}, 'display_text': {'type': 'string'}}, 'additionalProperties': False}}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'content'], 'properties': {'type': {'enum': ['info', 'error'], 'type': 'string'}, 'content': {'type': 'string'}}, 'additionalProperties': {}}}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'total'], 'properties': {'id': {'type': 'string'}, 'total': {'type': 'number'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
추가됨
get_guide
2026년 9월 17일 12:37 PM
추가됨
compare_provider
2026년 9월 17일 12:37 PM
추가됨
calculate_free_testosterone
2026년 9월 17일 12:37 PM
추가됨
convert_units
2026년 9월 17일 12:37 PM
추가됨
interpret_results
2026년 9월 17일 12:37 PM
추가됨
compare_prices
2026년 9월 17일 12:37 PM
추가됨
lookup_reference_range
2026년 9월 17일 12:37 PM
추가됨
find_draw_sites
2026년 9월 17일 12:37 PM
추가됨
complete_checkout
2026년 9월 17일 12:37 PM
추가됨
cancel_checkout
2026년 9월 17일 12:37 PM
추가됨
get_checkout
2026년 9월 17일 12:37 PM
추가됨
update_checkout
2026년 9월 17일 12:37 PM
추가됨
create_checkout
2026년 9월 17일 12:37 PM
추가됨
quote_order
2026년 9월 17일 12:37 PM
추가됨
recommend_tests
2026년 9월 17일 12:37 PM
추가됨
list_panels
2026년 9월 17일 12:37 PM
추가됨
get_test
2026년 9월 17일 12:37 PM
추가됨
search_tests
2026년 9월 17일 12:37 PM