Verateca
Server Details
Dietary supplement register: compositions, country upper limits, US prices, stack check vs limits.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool maps to a distinct task: search_products discovers products, get_product/get_ingredient retrieve single records, compare_products compares 2-6 products side by side, check_stack aggregates ingredients across up to 12 products, and get_selection_link handles paid-service order pages. Although compare_products and check_stack both use upper limits, their descriptions clearly separate side-by-side comparison from cumulative stack totals.
All six tools use a consistent snake_case verb_noun pattern: check_stack, compare_products, get_ingredient, get_product, get_selection_link, and search_products. The convention is predictable and readable throughout.
Six tools are well-scoped for a supplement register: discovery, single-product lookup, ingredient lookup, product comparison, cumulative stack checking, and paid-service linking. Each tool earns its place without redundant or filler operations.
The core read-only lifecycle is covered: search, product detail, ingredient detail, multi-product comparison, cumulative stack checking, and service order links. Minor gaps remain, such as no category browsing beyond the search result cap and no medicine-interaction check, but these are explicit limitations rather than dead ends.
Available Tools
6 toolscheck_stackCheck a set of supplementsARead-onlyIdempotentInspect
Adds up each ingredient across several products taken together (up to 12) and compares each daily total with the adult upper limit of the country, with the same rules engine as the Verateca site. For every ingredient: total per day, applicable limit, share of the limit, status ("within the upper limit", "over the upper limit", "no upper limit set" or "not compared"), the products that contribute, and duplicates across products. Limits of other countries follow. Interactions with medicines are not checked.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Products taken together. | |
| country | No | Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US. | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description then adds genuine value beyond that: the per-ingredient result fields, duplicate detection across products, the 'same rules engine as the Verateca site', the 12-item cap, and the explicit non-coverage of drug interactions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and packed with dense, useful detail without filler sentences. It runs long as a single block, but essentially every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe return values and it does so thoroughly — daily total, applicable limit, share of limit, status enumerations, contributing products, and duplicates. Combined with the stated cap and exclusions, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents product_id format, the label-dose default, and the ISO country code. The description adds only marginal meaning (up to 12 products, country limits ordered first), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb-plus-resource: it sums each ingredient across up to 12 products and compares daily totals against the adult upper limit. This is much richer than the title, though it never explicitly contrasts itself with the sibling compare_products, which an agent could reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use context is clear — checking a stack of products taken together, with the boundaries spelled out (up to 12, limits of the person's country come first). It even states a scope exclusion ('Interactions with medicines are not checked'), but gives no explicit routing guidance against sibling tools like compare_products or get_ingredient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_productsCompare productsARead-onlyIdempotentInspect
Puts 2 to 6 published products side by side: daily dose, price per day where published, and for each ingredient the daily amount and its share of the applicable upper limit of the country.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Product ids, e.g. ["US:302778", "US:217710"]. | |
| country | No | Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US. | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, so the bar is lower. The description adds meaningful context by explaining what the comparison returns: daily dose, price per day where published, and ingredient shares of the applicable country upper limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. The key comparison scope and output contents are presented immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a comparison tool with no output schema, the description does a good job naming the main returned values and clarifying that price per day is only included where published. It is nearly complete, though it does not specify the exact response structure or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both ids and country are already documented in the schema. The description reinforces the 2-to-6 product constraint and ties country to the applicable upper limit, but it does not add substantial syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: putting 2 to 6 published products side by side. It clearly distinguishes this comparison operation from single-product siblings like get_product or search_products by specifying multi-product comparison and the fields compared.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by saying it compares 2 to 6 published products, but it does not explicitly say when to choose it over get_product or search_products, nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ingredientGet ingredientARead-onlyIdempotentInspect
Returns one substance of the register: its forms with the share of the element where known, the upper limit of the country first, then the limits of other countries with type, source and the date checked, reference sources, and the number of published products that contain it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Substance id, e.g. "magnesium", "vit_d". | |
| name | No | Substance name, e.g. "Vitamin D", as an alternative to id. | |
| country | No | Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US. | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description goes further by disclosing the ordering behavior (the requested country's upper limit first, then other countries), the provenance metadata attached to limits (type, source, date checked), and the inclusion of a containing-product count — real behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the core action and then lists the returned fields. It is dense and slightly run-on, but nearly every clause carries distinct information about the response shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so substantively — forms, shares, limits with type/source/date, sources, product counts. Safety and idempotency are covered by annotations and all three params are documented, leaving little an agent still needs to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents id, name-as-alternative, and the country default with its "limits first" effect. The description's mention of country ordering repeats what the schema already states, so it adds no meaning beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Returns one substance of the register") and enumerates the payload: forms, element share, country limits, sources, product counts. This clearly separates it from the product-oriented siblings (get_product, search_products), though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is the lookup for a single substance by id or name, but there is no statement of when to prefer it over search_products or get_product, nor any prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet productARead-onlyIdempotentInspect
Returns one published product record: composition as the label states it, daily amounts, the applicable upper limit of the country for each ingredient with its share, limits of other countries, the status in the country, prices per day where published, and the dates of each part.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Verateca product id, e.g. "US:302778", as returned by search_products. | |
| url | No | Verateca product page address, as an alternative to id. | |
| country | No | Two-letter country for limits, status and published local prices. Defaults to the product URL country when supplied, otherwise the label market. Viewing a record does not confirm local sale or delivery. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, non-destructive, and closed-world. The description adds substantial value by disclosing the returned record contents in detail, including label composition, daily amounts, country limits, status, prices, and dates, which is especially important because no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the return purpose and then lists the record contents efficiently. It is a single dense sentence, so it is somewhat unwieldy, but every clause contributes useful output information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three schema-documented parameters and no output schema, the description is largely complete because it explains what the returned product record contains. It could be slightly stronger by clarifying that the record is selected via either id or url, but the schema covers that lookup logic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is already fully documented in the schema, including id as returned by search_products and url as an alternative. The description mentions country-related output but does not add syntax or fallback semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: returns one published product record. It also distinguishes the single-record scope from search/list siblings by emphasizing one record and enumerating the record's contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not state when to use this tool versus sibling tools such as search_products or compare_products, nor does it give prerequisites or exclusions. The intended use is only implied by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selection_linkGet the order page addressARead-onlyIdempotentInspect
Returns the address of the Verateca order page for one of its three paid services (quick, full, review), with the price and currency the site shows for the country and a one-line description. The tool takes no payment and creates no order; the order page asks its own questions and takes payment there.
| Name | Required | Description | Default |
|---|---|---|---|
| goals | No | Optional goals to preselect on the order page (quick: 1, full: up to 3; ignored for review). They travel sealed, not in plain words. | |
| country | No | Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US. | US |
| service | Yes | quick: up to three products for one goal; full: one set for up to three goals; review: a written review by a Verateca specialist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description adds real value: 'takes no payment and creates no order; the order page asks its own questions and takes payment there.' It also reveals the return content and that goals 'travel sealed, not in plain words' — a privacy behavior not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action, and the second sentence earns its place by dispelling the payment/order misconception. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing what is returned (address, price, currency, one-line description). Between the description and 100%-covered schema, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents service enum, country default, and goals limits. The description restates the three services but adds no syntax or format detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Returns the address of the Verateca order page for one of its three paid services (quick, full, review)'. It also enumerates the concrete return payload (address, price, currency, one-line description). No sibling (get_product, compare_products, check_stack) is about order links, so it is easily distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear (fetch the order-page address for a paid service) and it clarifies the boundary that no payment/order happens here. However, it never names when to prefer this over siblings or states any explicit condition/exclusion, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsARead-onlyIdempotentInspect
Searches the Verateca register of dietary supplements by product name, brand, ingredient or barcode. Returns up to 10 published products with id, brand, form, page address, lowest price per day where prices are published, number of offers and the date the record was checked. Results are ordered by match, never by payment.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results, 1–10. | |
| query | Yes | Product name, brand, ingredient or barcode (UPC/EAN). | |
| country | No | Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US. | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: a 10-result cap, the exact result fields returned, a 'lowest price per day where prices are published' caveat, and an explicit ranking-fairness guarantee that resolves a real trust question about paid placement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action and resource, then the return contract and ranking policy. No filler, duplication or hedging; every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating returned fields and the result cap, and the 100%-covered schema handles parameters. It stops short of explaining empty-result behavior or how the four query modes differ in matching, which would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, limit and country are already fully documented, establishing a baseline of 3. The description restates the searchable keys and the result cap but adds no syntax, format or edge-case detail (e.g. partial vs exact barcode matching) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches the Verateca register of dietary supplements') plus the search keys (name, brand, ingredient, barcode), so the agent knows exactly what this tool does. It never names or contrasts with siblings such as get_product or compare_products, so differentiation must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'search' and the list of accepted keys; there is no explicit statement of when to reach for this over get_product (id lookup) or get_ingredient. The 'ordered by match, never by payment' note hints at ranking intent but is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_product2 fields changed- removed
Input schema / properties / country / defaultRemoved value: -"US" - changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code (ISO 3166-1 alpha-2) of the person. Limits of this country come first. Default US."New value: +"Two-letter country for limits, status and published local prices. Defaults to the product URL country when supplied, otherwise the label market. Viewing a record does not confirm local sale or delivery."
6 tool updates
- First observed
check_stack - First observed
compare_products - First observed
get_ingredient - First observed
get_product - First observed
get_selection_link - First observed
search_products
Related MCP Connectors
Supplement labels, doses against official upper limits, and a whole-stack check for overlaps.
NIH supplement checks: upper limits, drug and herb interactions, FDA recalls, with citations.
Supplement safety for AI agents. 1,500+ rules, NIH+FDA data, quality grading A-D.
Evidence-ranked supplement data: search, compare, price history, goal recs. No API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceEvidence-based supplement recommendation MCP server covering 17 supplements and 40+ conditions with medication interaction checking and form quality classification.514 npmMIT
- AlicenseNot gradedqualityDmaintenanceEvidence-based supplement intelligence in your terminal, exposed as an MCP server for AI agents to research, compare, stack, and manage supplements.11 npmMIT
- AlicenseAqualityNot gradedmaintenanceSupplement safety MCP server for AI agents. FDA FAERS signals, CYP450 pathways, 584 compound aliases. Works with Claude Desktop, LangChain, CrewAI.51-
- AlicenseNot gradedqualityFmaintenanceEnables checking cosmetic ingredient safety and multi-jurisdiction compliance across 12 regulatory bodies, backed by a comprehensive dataset of safety opinions and studies.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.