Developers
Put the right panel in the conversation
Help an agent find the right Vitals Vault panel, build a checkout-validated custom panel under an exact budget, resolve current prices, research biomarkers, or hand a person to Build Your Own Panel through a public, read-only MCP server.
More than a lab transaction
Order your labs. Build your baseline. Know what to do next.
Vitals Vault combines direct-access lab ordering with the interpretation layer that makes results useful after the blood draw. Essential starts at $99, Advanced is $199, and Max is $399—one-time purchases with no required subscription.
Built for the moment of intent
I have a concern
Use controlled educational inputs to compare Essential, Advanced, and Max—or exclude all three and optimize a custom panel under an exact budget against the complete checkout-eligible catalog.
I know the test
Search the live public catalog, verify the exact handle, and return the current customer-safe price.
I want to measure change
Find a baseline or targeted retest path, then use the included report and trend experience after results return.
The proof loop
Act. Retest. Prove what changed.
- Step 1
Order a panel or build a custom set of tests
- Step 2
Establish a baseline from the completed results
- Step 3
Use the report and educational guidance to choose practical next steps
- Step 4
Retest when appropriate and compare the new result with the baseline
One-minute quickstart
- Add the product server URL to a ChatGPT/OpenAI, Claude, or other Streamable HTTP MCP client.
- Confirm the client can initialize and list tools without authentication.
- Start with: “I am 44, female, feeling tired, do not want a package, and have a hard budget of $150. Give me the best Vitals Vault custom panel.”
{
"mcpServers": {
"vitalsVault": {
"url": "https://mcp.vitalsvault.com/mcp",
"transport": "streamable-http"
}
}
}Client setup screens change over time. Use the current custom-connector or remote-MCP flow in your runtime and provide only the canonical server URL above; Phase A uses no OAuth or API key.
The client should translate that request into controlled fields, call recommend_panel with custom_only, and return an exact within-budget set with current prices and a human checkout URL. It must not send the free-text symptom sentence to Vitals Vault or claim that it created a cart.
Endpoints
- Product tools:
POST https://mcp.vitalsvault.com/mcp - Documentation tools:
POST https://mcp.vitalsvault.com/mcp/docs - Protocol revision: 2025-06-18
- Response formats: JSON and Server-Sent Events
Capability boundary
The server reads public educational biomarker and currently orderable catalog information, compares published blood-testing services, and returns public pages as markdown. Its recommendation tool accepts only controlled concern, goal, broad age-band, sex-context, package-preference, and budget fields. It is anonymous, stateless, and read-only. It cannot diagnose, create a cart or order, create or access an account, read lab results, accept identity information, or take payment.
Educational information only. Vitals Vault does not diagnose, prescribe, or replace a licensed clinician, and urgent symptoms require prompt medical care rather than a lab-shopping flow.
Discovery
Complete tool reference
Each block is self-contained: purpose, exact input contract, examples, error behavior, provenance, rate limit, and privacy boundary come from the same code-owned tool catalog used by tools/list.
Browse biomarker categories list_biomarker_categories
Returns public educational biomarker category slugs and marker counts for collection browsing. The content excludes diagnosis, private lab results, and other protected data.
Input schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"required": []
}Example arguments
{}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Get a biomarker category get_biomarker_category
Returns the biomarkers in one exact public category slug. Unknown slugs produce a stable not-found result, and the educational response excludes diagnosis and private data.
Input schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Exact public category slug, such as heart-cardiovascular or energy-metabolism."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Example arguments
{
"slug": "heart-cardiovascular"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Search biomarkers search_biomarkers
Searches public educational biomarkers by name, alias, LOINC, or keyword and explains Vitals Vault coverage. Private lab results are outside this tool’s data boundary.
Input schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text such as ApoB or vitamin D."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Maximum results to return (default 10, max 25)."
}
},
"required": [
"query"
],
"additionalProperties": false
}Example arguments
{
"query": "ApoB",
"limit": 10
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Get biomarker details get_biomarker
Returns public educational units and existing content for one exact biomarker slug. Standard and optimal range arrays remain present for compatibility but may be empty without a reviewed public range source. This is not medical advice.
Input schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Biomarker slug such as apolipoprotein-b."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Example arguments
{
"slug": "apolipoprotein-b"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Browse What We Test browse_biomarkers
Returns the public What We Test collection with stable cursor pagination and optional category or sex-applicability filters. The response excludes diagnosis and private lab results.
Input schema
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Opaque pagination cursor from a prior response."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Maximum biomarkers to return (default 20, max 50)."
},
"category": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Optional public category slug."
},
"gender": {
"type": "string",
"enum": [
"all",
"male",
"female"
],
"description": "Optional applicability filter; defaults to all."
}
},
"required": [],
"additionalProperties": false
}Example arguments
{
"category": "heart-cardiovascular",
"limit": 20
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Compare exact biomarkers get_biomarkers
Resolves known public biomarker slugs in request order for factual comparison and reports missing slugs without substitution. Private lab results are outside this tool’s data boundary.
Input schema
{
"type": "object",
"properties": {
"slugs": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"description": "One to 20 exact public biomarker slugs."
}
},
"required": [
"slugs"
],
"additionalProperties": false
}Example arguments
{
"slugs": [
"apolipoprotein-b",
"vitamin-d"
]
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public educational biomarker catalog.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Compare Essential, Advanced, and Max list_lab_packages
Compares Essential, Advanced, and Max using current public prices, biomarker counts, included reporting value, and individual-test availability. The tool never creates a cart.
Input schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"required": []
}Example arguments
{}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Get a Vitals Vault panel get_lab_package
Resolves the exact Essential, Advanced, or Max legacy package slug to its current public panel price, biomarker count, features, and human URL. The tool never creates an order.
Input schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"enum": [
"essential",
"advanced",
"max"
],
"maxLength": 32,
"description": "Package slug: essential, advanced, or max."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Example arguments
{
"slug": "advanced"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Search orderable tests and panels search_lab_catalog
Searches currently orderable Vitals Vault tests and panels with customer-safe prices and stable pagination. Results come from a versioned public search document with match provenance and are revalidated against website checkout eligibility. Identity, account data, private results, and PHI are outside the input contract.
Input schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Optional customer-facing test or panel name, such as ApoB or thyroid."
},
"category": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Optional public checkout category slug."
},
"itemType": {
"type": "string",
"enum": [
"all",
"panel",
"individual_test"
],
"description": "Catalog item filter for panels, individual tests, or both; defaults to all."
},
"gender": {
"type": "string",
"enum": [
"all",
"male",
"female"
],
"description": "Public catalog applicability filter; defaults to all."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"description": "One-based public catalog page; defaults to 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Maximum results per page; defaults to 20."
}
},
"required": [],
"additionalProperties": false
}Example arguments
{
"query": "thyroid",
"itemType": "all",
"page": 1,
"limit": 20
}Not for: Do not infer that a provider/Junction identifier makes a row orderable; only returned public results are eligible.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: Returns customer-safe items plus one-based pagination metadata (total, hasMore, nextPage). Continue until hasMore is false to enumerate the same eligible public catalog the website exposes. Upstream failures become a stable server error without internal details.
Data provenance: Current Vitals Vault public checkout browse policy, including curation, environment, Galleri, applicability, price, pagination, and orderability decisions; projected to customer-safe fields.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Get an orderable catalog item get_lab_catalog_item
Revalidates one exact public catalog handle for current price and orderability under the website checkout policy. It never fuzzy-substitutes and returns a safe not-found result for ineligible items.
Input schema
{
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Exact public catalog handle."
}
},
"required": [
"handle"
],
"additionalProperties": false
}Example arguments
{
"handle": "apolipoprotein-b"
}Not for: Do not fuzzy substitute another item when an exact public handle is missing.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: Returns one exact customer-safe orderable item. A missing, ineligible, inactive, or non-public handle returns catalog_item_not_found; the tool never fuzzy-substitutes another test.
Data provenance: Current Vitals Vault public checkout exact-lookup and shared browse-eligibility policy; Junction identity alone is never treated as orderability.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Recommend a Vitals Vault panel recommend_panel
Returns a controlled educational Essential, Advanced, Max, or exact-budget Build Your Own Panel starting point. A custom_only request with maxBudgetUsd excludes standard panels. Every selection is revalidated against the complete eligible catalog. Inputs exclude free-text symptoms, identity, private results, and PHI; the tool never diagnoses, stores a health record, or creates a cart.
Input schema
{
"type": "object",
"properties": {
"concern": {
"type": "string",
"enum": [
"general_baseline",
"fatigue_energy",
"thyroid",
"hormone_balance",
"heart_risk",
"metabolic_health",
"vitamin_nutrient",
"inflammation",
"healthy_aging",
"athletic_performance",
"sleep_stress",
"specific_tests",
"urgent_symptoms"
],
"description": "Controlled high-level concern; urgent_symptoms returns a safety-suppressed response."
},
"goal": {
"type": "string",
"enum": [
"build_baseline",
"investigate_concern",
"monitor_progress",
"retest",
"find_specific_test"
],
"description": "What the person is trying to accomplish."
},
"budget": {
"type": "string",
"enum": [
"under_100",
"under_200",
"under_400",
"flexible"
],
"description": "Legacy package price bucket. Exact hard ceilings are represented by maxBudgetUsd."
},
"maxBudgetUsd": {
"type": "number",
"minimum": 2,
"maximum": 2000,
"description": "Exact hard ceiling in US dollars. Required when packagePreference is custom_only; the returned total never exceeds it."
},
"packagePreference": {
"type": "string",
"enum": [
"allow_packages",
"custom_only"
],
"description": "allow_packages compares the standard panels; custom_only excludes Essential, Advanced, and Max and builds only from checkout-eligible BYOP items."
},
"ageBand": {
"type": "string",
"enum": [
"18_29",
"30_39",
"40_49",
"50_59",
"60_plus",
"not_specified"
],
"description": "Reserved broad age-band context that is not currently used to select tests. Birth dates and exact ages are outside the input contract; the value is not persisted or logged."
},
"sex": {
"type": "string",
"enum": [
"female",
"male",
"not_specified"
],
"description": "Optional controlled biological-sex context for public catalog applicability; not_specified represents an omitted value."
},
"biomarkerSlugs": {
"type": "array",
"minItems": 1,
"maxItems": 5,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"description": "Optional exact public slugs for find_specific_test or retest goals."
}
},
"required": [
"concern",
"goal"
],
"additionalProperties": false
}Example arguments
{
"concern": "fatigue_energy",
"goal": "investigate_concern",
"maxBudgetUsd": 150,
"packagePreference": "custom_only",
"ageBand": "40_49",
"sex": "female"
}Not for: Do not send names, dates of birth, medications, raw lab results, free-text symptoms, account identifiers, or a diagnosis request.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: For a standard panel, returns the recommended panel, transparent alternatives, rationale, and human builder link. For custom_only, returns the exact budget, validated total, remaining budget, customer-safe selected tests with educational reasons, limited omissions, catalog-completeness evidence, and a human Build Your Own Panel URL. It never claims that a cart or order exists. Urgent-symptom input suppresses shopping. Stable safety fallbacks return the clean human builder.
Data provenance: Standard panels use code-owned package facts. Custom-only recommendations intersect a controlled educational intent profile with every page of the website checkout-eligible catalog, optimize within the exact price ceiling, then exact-revalidate every selected handle immediately before handoff. The private consultation runtime is not called.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Open the guided panel builder start_guided_panel_builder
Returns the canonical entry for the full human-controlled Vitals Vault consultation, with no health answers in the URL. It creates no session, cart, account, order, or payment.
Input schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Example arguments
{}Not for: Do not append health answers to the returned URL or treat the handoff as a created cart or order.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Compare blood testing services compare_blood_testing_services
Returns a factual side-by-side comparison of Vitals Vault and a supported blood-testing service using public master-table facts and methodology. It excludes medical advice and unsupported superiority claims.
Input schema
{
"type": "object",
"properties": {
"competitor": {
"type": "string",
"enum": [
"superpower",
"lab-marketplaces",
"function-health",
"insidetracker",
"hims"
],
"maxLength": 80,
"description": "Optional competitor slug from the public comparison registry."
}
},
"required": [],
"additionalProperties": false
}Example arguments
{
"competitor": "function-health"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Read a public Vitals Vault page get_page_as_markdown
Returns a markdown representation of an allowlisted public Vitals Vault page under the protected-route policy. Checkout, account, result, and other private pages are unavailable.
Input schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Site path beginning with / such as /developers or /biomarkers."
}
},
"required": [
"path"
],
"additionalProperties": false
}Example arguments
{
"path": "/biomarkers"
}Not for: Do not request checkout, account, payment, lab-result, or other protected pages.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Search Vitals Vault search
Provides broad connector discovery across public Vitals Vault biomarkers, panels, developer documentation, and comparisons. Results contain stable identifiers for exact public retrieval.
Input schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text such as ApoB, OAuth, Advanced, or Function Health."
}
},
"required": [
"query"
],
"additionalProperties": false
}Example arguments
{
"query": "Advanced panel"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.
Fetch a Vitals Vault result fetch
Fetches one public biomarker, panel, document, or comparison result by stable connector identifier. The response contains public data only and does not access private records.
Input schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Stable public identifier such as biomarker:apolipoprotein-b or doc:developers."
}
},
"required": [
"id"
],
"additionalProperties": false
}Example arguments
{
"id": "package:advanced"
}Not for: Do not send PHI, customer/session data, credentials, internal identifiers, or payment information.
Authentication: None for this anonymous public tool.
Rate limit: Shared public MCP limit: 100 requests per 15 minutes per client by default.
Output and errors: A successful call returns MCP text content plus structuredContent. Tool-level not-found or safety outcomes set isError when appropriate. Server failures use a stable JSON-RPC internal error without stack traces or upstream details.
Data provenance: Vitals Vault public code-owned product and documentation facts.
Privacy: Read-only and customer-safe. No PHI, customer/session/account/order/payment data, credentials, provider secrets, raw logs, or internal/Junction identifiers are accepted or returned.