# TestWell Lab Tests (remote · www.test-well.com)

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

- Trust score: 82/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-22

## Components

- remote · `www.test-well.com`: 82/100 (this document), [markdown](https://verifymcp.io/servers/com-test-well-testwell/www.md), [page](https://verifymcp.io/servers/com-test-well-testwell/www)

## Channel facts

- Endpoint: `https://www.test-well.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-22.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2384 tokens (~119/item across 20 items; 18 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 53/100
  - Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 90/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 64% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the TestWell Lab Tests MCP server?

TestWell Lab Tests is a hosted endpoint at https://www.test-well.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-test-well-testwell 'https://www.test-well.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-test-well-testwell": {
      "url": "https://www.test-well.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-test-well-testwell": {
      "type": "http",
      "url": "https://www.test-well.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-test-well-testwell]
url = "https://www.test-well.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-test-well-testwell": {
      "type": "remote",
      "url": "https://www.test-well.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-test-well-testwell --url 'https://www.test-well.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-test-well-testwell:
    url: "https://www.test-well.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-test-well-testwell": {
      "Transport": "http",
      "Url": "https://www.test-well.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-test-well-testwell -t streamable-http -u 'https://www.test-well.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-test-well-testwell": {
      "type": "http",
      "url": "https://www.test-well.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-22 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-20 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-11 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-09 (score 76, 0)

- [security] Tool “get_guide” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 1946 → 2384
- [functional regression] Tool coverage: 81% → 64%
- [functional] Schema quality: excellent → good
- [functional] Destructive annotations: pass → 100
- [functional] New tool “cancel_checkout”
- [functional] New tool “complete_checkout”
- [functional] New tool “create_checkout”
- [functional] New tool “get_checkout”
- [functional] New tool “update_checkout”

### 2026-09-08 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (18)

### `search_tests` (~198 tokens)

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

Input parameters:

- `category` (string): Catalog category, e.g. 'Thyroid', 'Heart Health'
- `lang` (string): Return Spanish names/descriptions where a translation exists (default en)
- `limit` (integer): Max results (default 10)
- `orderableOnly` (boolean): Exclude items listed as coming soon (default true)
- `query` (string, required): Keyword, biomarker, CPT code or health goal, e.g. 'vitamin d', 'TSH', '80053', 'cholesterol'
- `type` (string): Restrict to individual tests or bundled panels

Output parameters:

- `count` (number)
- `items` (array)
- `labFee` (number): USD
- `lang` (string)
- `query` (string)

### `get_test` (~107 tokens)

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.

Input parameters:

- `lang` (string): Spanish prose where a translation exists (default en)
- `slug` (string, required): Catalog slug (from search_tests) or id, e.g. 'tsh', 'general-wellness-panel'

Output parameters:

- `found` (boolean)
- `item` (object)
- `suggestions` (array)

### `list_panels` (~90 tokens)

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.

Input parameters:

- `category` (string): Catalog category, e.g. 'Hormones', 'General Health'
- `limit` (integer): Max results (default 25)
- `maxPrice` (number): Only panels at or under this sticker price (USD)

Output parameters:

- `count` (number)
- `labFee` (number): USD
- `panels` (array)

### `recommend_tests` (~143 tokens)

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.

Input parameters:

- `budget` (string): Budget band: low ≈ $80, medium ≈ $200, high ≈ $400
- `goals` (array): Health goals, e.g. ['energy', 'thyroid']
- `symptoms` (array): Symptoms, e.g. ['always cold', 'weight gain']

Output parameters:

- `byGoal`: Recommended panel and alternatives for the stated goals
- `bySymptom`: Panels, individual tests and explanations for the stated symptoms
- `disclaimer` (string)
- `goals` (array)
- `labFee` (number): USD
- `next` (string): Suggested next tool call
- `symptoms` (array)

### `quote_order` (~153 tokens)

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.

Input parameters:

- `items` (array, required): Catalog slugs or ids, e.g. ['tsh', 'vitamin-d']
- `lab` (string): Preferred lab outside NY/NJ (default quest)
- `state` (string): US state code or name where the user will be drawn, e.g. 'FL' or 'Florida'

Output parameters:

- `checkoutUrl`: Prefilled cart on test-well.com — purchases complete there; null when nothing is orderable
- `currency` (string)
- `error` (string): Present when ok=false, e.g. state not served
- `lab` (string)
- `labFee` (number): USD
- `labName` (string)
- `lines` (array)
- `notes` (array)
- `ok` (boolean)
- `state` (string)
- `subtotal` (number): USD
- `total` (number): All-in total: subtotal + the single lab processing fee
- `unavailable` (array): Requested items the routed lab cannot run in this state

### `create_checkout` (~152 tokens)

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.

Input parameters:

- `buyer` (object)
- `dry_run` (boolean): Price only; do not create a session
- `items` (array, required)
- `state` (string): US state code or name where the blood will be drawn

Output parameters:

- `currency` (string)
- `dry_run` (boolean)
- `fulfillment_options` (array)
- `id` (string)
- `line_items` (array)
- `links` (array)
- `messages` (array)
- `order` (object)
- `pay_online_url`: Prefilled cart for browser payment when the platform has no payment token
- `status` (string)
- `totals` (array)

### `update_checkout` (~65 tokens)

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.

Input parameters:

- `buyer` (object)
- `checkout_session_id` (string, required)
- `items` (array)
- `state` (string)

Output parameters:

- `id` (string)
- `line_items` (array)
- `messages` (array)
- `status` (string)
- `totals` (array)

### `get_checkout` (~40 tokens)

Read a checkout session

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

Input parameters:

- `checkout_session_id` (string, required)

Output parameters:

- `id` (string)
- `line_items` (array)
- `messages` (array)
- `status` (string)
- `totals` (array)

### `cancel_checkout` (~42 tokens)

Cancel a checkout session

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

Input parameters:

- `checkout_session_id` (string, required)

Output parameters:

- `id` (string)
- `status` (string)

### `complete_checkout` (~148 tokens)

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.

Input parameters:

- `buyer`
- `checkout_session_id` (string, required)
- `idempotency_key` (string)
- `payment_data` (object, required)

Output parameters:

- `id` (string)
- `messages` (array)
- `order` (object)
- `status` (string)
- `totals` (array)

### `find_draw_sites` (~121 tokens)

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.

Input parameters:

- `lab` (string): Limit to one lab
- `limit` (integer): Max sites (default 10)
- `radiusMiles` (integer): Search radius in miles (snapped to 10/20/25/50/100; default 25)
- `zip` (string, required): 5-digit US ZIP code

Output parameters:

- `count` (number)
- `mapUrl` (string): Absolute https URL on test-well.com
- `radiusMiles` (number)
- `sites` (array)
- `zip` (string)

### `lookup_reference_range` (~130 tokens)

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.

Input parameters:

- `age` (integer)
- `marker` (string, required): Marker name or alias, e.g. 'TSH', 'ferritin', 'HbA1c', 'LDL'
- `postmenopausal` (boolean)
- `pregnancy` (boolean)
- `sex` (string)

Output parameters:

- `aliases` (array)
- `browse` (string)
- `category` (string)
- `citations` (array)
- `filteredToQuery` (boolean)
- `found` (boolean)
- `highSuggests`
- `howToTest` (array)
- `lowSuggests`
- `marker` (string)
- `measures` (string)
- `ranges` (array)
- `retest`
- `suggestions` (array)
- `units` (array)

### `compare_prices` (~146 tokens)

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

Input parameters:

- `test` (string, required): Test slug or name, e.g. 'tsh', 'lipid panel', 'vitamin-d'

Output parameters:

- `caveats` (array)
- `cheapestSingleTestAllIn` (object)
- `dataset` (string): Absolute https URL on test-well.com
- `found` (boolean)
- `hint` (string)
- `license` (string)
- `methodology` (string)
- `providers` (array): Sorted by all-in price, TestWell included
- `query` (string)
- `reference` (object)
- `test` (object)

### `interpret_results` (~176 tokens)

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.

Input parameters:

- `age` (integer)
- `postmenopausal` (boolean)
- `pregnancy` (boolean)
- `sex` (string)
- `values` (array, required): Results to explain, e.g. [{marker:'TSH', value:5.2, unit:'mIU/L'}, {marker:'ferritin', value:12}]

Output parameters:

- `disclaimer` (string)
- `results` (array)
- `reviewed` (object)
- `summary` (object)

### `convert_units` (~130 tokens)

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.

Input parameters:

- `analyte` (string, required): Analyte slug or name, e.g. 'glucose', 'total-cholesterol', 'testosterone', 'vitamin-d', 'a1c'
- `direction` (string): Default toSI (US → SI)
- `value` (number, required): The numeric value to convert

Output parameters:

- `analyte` (string)
- `biomarkerUrl`
- `error` (string)
- `estimatedAverageGlucose` (object)
- `factor` (number)
- `input` (object)
- `method` (string)
- `note`
- `output` (object)

### `calculate_free_testosterone` (~116 tokens)

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.

Input parameters:

- `albuminGdL` (number): Albumin in g/dL (default 4.3)
- `shbg` (number, required): SHBG in nmol/L
- `totalT` (number, required): Total testosterone
- `totalTUnit` (string): Default ng/dL

Output parameters:

- `bioavailableTestosterone` (object)
- `freePercent` (number)
- `freeTestosterone` (object)
- `inputs` (object)
- `method` (string)
- `tests` (array)
- `toolUrl` (string)

### `compare_provider` (~114 tokens)

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.

Input parameters:

- `provider` (string): Competitor slug or name, e.g. 'quest-direct', 'Function Health', 'justlabs'

Output parameters:

- `competitor` (object)
- `competitorWinsAt` (array)
- `found` (boolean)
- `providers` (array): Returned when no provider was named
- `sources` (array)
- `spotPrices` (array)
- `testWellNotFor` (array)
- `testWellWinsAt` (array)
- `testwell` (object)
- `url` (string): Absolute https URL on test-well.com
- `verdict` (string)
- `verified` (string): Date the competitor's prices were verified

### `get_guide` (~118 tokens)

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.

Input parameters:

- `lang` (string): Spanish version when one exists (default en)
- `path` (string): Site path, e.g. '/guides/annual-blood-work' or 'conditions/anemia'

Output parameters:

- `answers` (array)
- `conditions` (array)
- `found` (boolean)
- `guides` (array): Index, returned when no path was given
- `markdown` (string): Full page as Markdown
- `path` (string)
- `title` (string)
- `url` (string): Absolute https URL on test-well.com

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-test-well-testwell/www#diagnostics

## Score history

- 2026-09-22: 82
- 2026-09-21: 81
- 2026-09-20: 81
- 2026-09-19: 80
- 2026-09-18: 80
- 2026-09-17: 79
- 2026-09-16: 79
- 2026-09-15: 78
- 2026-09-14: 78
- 2026-09-13: 77
- 2026-09-12: 77
- 2026-09-11: 77
- 2026-09-10: 76
- 2026-09-09: 76
- 2026-09-08: 76
- 2026-09-07: 75
- 2026-09-06: 75

## Common questions

### What is the TestWell Lab Tests MCP server?

TestWell Lab Tests is an MCP server listed in the public MCP registry as com.test-well/testwell. Cash-pay lab tests: catalog search, all-in quotes by state, draw sites by ZIP, reviewed ranges. This page covers its hosted endpoint (https://www.test-well.com/mcp).

### Is the TestWell Lab Tests MCP server safe to use?

TestWell Lab Tests scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the TestWell Lab Tests MCP server expose?

TestWell Lab Tests exposes 18 tools: search_tests, get_test, list_panels, recommend_tests, quote_order, and 13 more. Their descriptions and schemas cost roughly 2,189 tokens of context every time the server is loaded.

### Does the TestWell Lab Tests MCP server require authentication?

No. We connected to TestWell Lab Tests without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the TestWell Lab Tests MCP server still maintained?

TestWell Lab Tests is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://www.test-well.com/mcp
- Website: https://www.test-well.com/developers
- Changelog RSS feed: https://verifymcp.io/servers/com-test-well-testwell/www.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-test-well-testwell/www.json
- HTML version of this page: https://verifymcp.io/servers/com-test-well-testwell/www
