laboratory.love
Server Details
Lab results for phthalates and bisphenols in consumer products, plus crowdfunded testing.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct resource+action: two clearly separated checkout creators (contribution to crowdfunding vs buying a testing package), two status getters (payment checkout vs crowdfunding goal), and search vs get pairs for results. The create_contribution_checkout vs create_testing_checkout distinction is the only near-overlap, but the descriptions explicitly differentiate them and the flow is clear.
All names follow a consistent verb_noun snake_case pattern using a small set of verbs (create, get, list, search) paired with resource nouns (checkout, crowdfund, result, analytes, tiers). No casing or style deviations.
Nine tools is well-scoped for a domain that is essentially read-plus-purchase (search/get results, list analytes/tiers, browse/fund crowdfunding, start and check checkouts). Each tool earns its place with no filler.
The surface covers the core lifecycle: discover results and crowdfunds, fetch full records, list analytes and testing tiers, start both kinds of checkout, and poll payment status. Minor gaps exist around managing/cancelling an existing order or retrieving a person's own checkout history, but these are workable around.
Available Tools
9 toolscreate_contribution_checkoutCreate contribution checkout linkAInspect
Write (treat as a sensitive, purchase-starting action; confirm the product and amount with the person first). Creates a secure Stripe-hosted checkout link for a contribution toward testing one crowdfunding product. Nothing is charged by this call: the person must open checkout_url and pay. Returns the amount, currency, seller, refund terms, and expiry. Use get_checkout_status to see whether they paid.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Crowdfunding product id. | |
| amount | Yes | Whole US dollars; must be within the product’s contribution range (minimum $5, or less if less remains). | |
| idempotency_key | No | Optional key; repeating a call with the same key and arguments returns the same checkout instead of a new one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read/write and idempotency hints, the description still adds real operational context: nothing is charged by the call, the person must open checkout_url and pay, and it enumerates what is returned (amount, currency, seller, refund terms, expiry). It stops short of stating permission/auth requirements for creating a live Stripe link.
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 action verb and a parenthetical warning, then flows into effect, non-charging clarification, return values, and next step. Dense but every clause carries information; the parenthetical is slightly clunky but earns its place.
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?
No output schema exists, and the description compensates by listing the key return fields and explaining that a checkout URL is produced rather than a charge. For a purchase-starting mutation this is close to complete, with only auth/permission prerequisites unstated.
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 id, amount, and idempotency_key are already fully documented, including the idempotency semantics. The description adds no parameter-level syntax or constraints beyond the schema, 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?
States a specific verb and resource: 'Creates a secure Stripe-hosted checkout link for a contribution toward testing one crowdfunding product.' The word 'contribution' implicitly distinguishes it from the sibling create_testing_checkout, but the contrast is never made explicit, so an agent must infer the boundary.
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?
Gives clear context ('sensitive, purchase-starting action; confirm the product and amount with the person first') and routes follow-up to get_checkout_status. It does not, however, tell the agent when to pick this tool over create_testing_checkout, which is the most relevant alternative among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_testing_checkoutCreate testing order checkout linkAInspect
Write (treat as a sensitive, purchase-starting action; confirm the tier, price, and product links with the person first). Saves a pending testing order and creates a secure Stripe-hosted checkout link for it. Nothing is charged by this call: the person must open checkout_url and pay. Use get_checkout_status to see whether they paid.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes | Tier id from list_testing_tiers. | |
| products | Yes | Products to test (at most the tier’s product count), each a public http(s) product page. | |
| idempotency_key | No | Optional key; repeating a call with the same key and arguments returns the same checkout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely new behavioral context: nothing is charged by this call, the person must open checkout_url and pay, and the action should be treated as sensitive. It stops short of describing failure modes (e.g., expired links, tier/product-count mismatch).
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?
Three sentences, zero filler, and the write/sensitivity warning is front-loaded before the mechanics. Every sentence earns its place.
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 return-value burden and does name checkout_url and the follow-up tool. It does not mention what else comes back (order identifier, expiry) or the idempotency behavior the schema hints at, leaving a small gap.
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 tier, products, url/notes, and idempotency_key semantics. The description adds only the confirmation advice about tier, price, and product links, which is procedural rather than additional parameter meaning. 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 and resource: 'Saves a pending testing order and creates a secure Stripe-hosted checkout link.' The 'testing order' framing cleanly separates it from the sibling create_contribution_checkout without needing to open either schema.
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?
Gives real preconditions ('confirm the tier, price, and product links with the person first') and routes the agent to get_checkout_status for the follow-up payment check. It does not explicitly say when to choose this over create_contribution_checkout, but the testing/contribution distinction is carried by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_checkout_statusGet checkout statusARead-onlyInspect
Check whether a checkout created by this connector is awaiting payment, paid, processing, or expired. Report "paid" only when this returns paid. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| checkout_id | Yes | checkout_id returned by a checkout tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, non-destructive and non-idempotent, so the safety profile is covered; the trailing 'Read-only' is largely redundant. The description does add genuine behavioral value by enumerating the four possible outcome states, which is important context with no output schema. No contradiction with 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?
Three short sentences, front-loaded with the core action, then the interpretive rule, then the safety note. No padding and nothing that fails to earn its place.
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 single-parameter read tool with no output schema, the description usefully compensates by naming the returned states. It stops short of describing staleness, caching, or timing behavior, but nothing essential to invoking the tool correctly is missing.
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% for the single checkout_id parameter, including its pattern, so the schema carries the semantics. The description adds nothing about the id format or origin beyond what the schema's own description already states, making baseline 3 appropriate.
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 ('Check') and resource ('a checkout created by this connector'), and enumerates the exact states it can return (awaiting payment, paid, processing, expired). This cleanly separates it from sibling status tools like get_crowdfund_status and get_result without needing their schemas.
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 line 'Report "paid" only when this returns paid' is an explicit interpretive rule telling the agent not to infer payment from other signals. It gives clear usage direction but never names the alternative sibling tools or the conditions under which they would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crowdfund_statusGet crowdfunding statusARead-onlyInspect
Get live funding status for one crowdfunding product id: goal, funded, remaining, allowed contribution range, and the result link once tested. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Crowdfunding product id from search_crowdfund. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false; the trailing 'Read-only' largely restates that. The one genuinely additive detail is that the result link only appears 'once tested' and that the data is 'live', which hints at partial field population — but nothing about auth, rate limits, or the unusual idempotentHint=false.
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 verb and scoping, then lists the return fields, then closes with the safety note. No filler or redundancy.
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 one-parameter read tool with full schema coverage and safety annotations, the description covers purpose and notable return fields (useful since no output schema exists). It leaves minor gaps around freshness guarantees and what an untested product returns for the result link, but nothing an agent needs to call it correctly is missing.
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 the single id parameter is fully documented, including its source (search_crowdfund) and pattern. The description restates 'crowdfunding product id' without adding format or constraint meaning, so 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 ('Get live funding status') and enumerates exactly what comes back: goal, funded, remaining, contribution range, and result link. This clearly separates it from siblings like get_checkout_status and get_result, which share the 'status' framing.
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?
'For one crowdfunding product id' implies the tool is scoped to a single existing crowdfund, and the schema points at search_crowdfund for the id. However, there is no explicit when-to-use vs. when-not statement or named alternative (e.g., use get_checkout_status for contribution state), 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.
get_resultGet one test resultARead-onlyIdempotentInspect
Get the full public record for one result id from search_results: provenance, every sample with its lot and analyses, every analyte measurement with its status, LOQ where known, and Laboratory.love’s per-serving exposure ratings with their assumptions. When answering: name the source (commissioned vs PlasticList-derived), keep detected / below_limit_of_quantitation / not_detected / not_tested distinct, give sample counts, and do not call a product safe because values are low or not detected. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Result id such as "cf-116" or "pl-72". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, and the description redundantly restates 'Read-only.' However, it goes beyond the annotations by teaching how to interpret and communicate results: naming the source (commissioned vs PlasticList-derived), preserving the four distinct measurement statuses, reporting sample counts, and avoiding unwarranted safety claims. It doesn't cover error or not-found behavior.
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?
Purpose and payload contents are front-loaded in the first sentence, with the delivery guidance second. It is dense but each clause carries distinct information; the final one-word 'Read-only' is redundant with annotations and is the only real 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?
There is no output schema, so the description must describe the return shape — and it does thoroughly (provenance, samples with lot and analyses, per-analyte status/LOQ, exposure ratings). The main omission is behavior on invalid or unknown ids, which an agent would otherwise have to guess.
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 the single id parameter's pattern and examples are fully documented in the schema, so the baseline is 3. The description only adds the provenance of the value ('from search_results'), with no format or constraint 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?
States a specific verb+resource ('Get the full public record for one result id') and explicitly scopes it to ids coming from the sibling search_results, so the agent can tell it apart from that tool. It also enumerates exactly what the record contains (provenance, samples, analytes, LOQ, exposure ratings), removing any ambiguity about the payload.
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 phrase 'one result id from search_results' clearly implies the search-then-fetch workflow and enough context to know when to call it. It adds substantial interpretation guidance ('keep statuses distinct', 'do not call a product safe'), but never explicitly states exclusions or what to do if the id is invalid/not found.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analytesList analytesARead-onlyIdempotentInspect
List the chemicals Laboratory.love reports (abbreviations such as DEHP, DBP, BPA, BPS), their categories, lab panels, and how each feeds the exposure ratings. Use it to explain abbreviations or to pick an analyte filter. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the trailing 'Read-only' is largely redundant with structured data. The description does add content context (it exposes categories, panels, and rating mappings), but discloses nothing about pagination, result size, or ordering for a listing tool.
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 compact sentences, front-loaded with the resource and its contents, followed by concrete usage triggers. No filler and nothing that could be trimmed without losing information.
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 by naming the categories, panels, and rating linkage. It omits ordering/format specifics but is otherwise sufficient for an agent to invoke this zero-param, read-only lookup.
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?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to compensate for.
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 (List) and resource (chemicals/analytes), then enumerates the returned content — abbreviations like DEHP/DBP/BPA/BPS, categories, lab panels, and the mapping to exposure ratings. This is clearly distinguishable from every sibling (checkout, crowdfund, result, and tier tools).
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?
Explicitly names two use cases: explaining abbreviations and picking an analyte filter. It gives clear positive context but names no alternatives or exclusions, so it stops short of the 5-level when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_testing_tiersList testing tiersARead-onlyIdempotentInspect
List the direct testing packages a person can buy to have Laboratory.love test products they choose: price, number of products, samples, panels, turnaround, and refund terms. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the trailing 'Read-only.' adds nothing and is effectively a duplicate. However, the description does disclose the returned content (price, product count, samples, panels, turnaround, refund terms), which is genuine behavioral value given there is no output schema.
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 action and resource, and the enumerated attributes are efficiently packed into one sentence. The appended 'Read-only.' is redundant with the annotations and is the one piece of 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?
For a parameterless, read-only listing with no output schema, the description supplies everything an agent needs: what is listed, the scope ('direct' tiers a person can buy), and the fields returned. Nothing material is missing.
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?
The tool takes zero parameters, so the baseline is 4. The description correctly adds no parameter detail and instead spends its words on the result payload, which is the right choice for a no-arg list endpoint.
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 (List) and a precisely scoped resource (direct testing packages a person can buy, for products the buyer chooses), and enumerates what each tier contains: price, product count, samples, panels, turnaround, refund terms. That level of specificity separates it cleanly from siblings like search_results, list_analytes, and create_testing_checkout without needing to name them.
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 phrase 'packages a person can buy' implies a pre-purchase browsing step, which is useful context, but the description never states when to call this versus create_testing_checkout, get_checkout_status, or list_analytes, nor any exclusions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_crowdfundSearch crowdfunding productsARead-onlyInspect
List products the public can fund toward laboratory testing, with goal, amount funded, amount remaining, and status. Defaults to products currently accepting contributions. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in the product name or brand. | |
| limit | No | ||
| cursor | No | next_cursor from a previous call with the same filters. | |
| status | No | Defaults to accepting_contributions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, so the trailing 'Read-only.' sentence is largely redundant. The description does add useful context by stating the default status scope and the shape of returned fields, but says nothing about pagination behavior despite the cursor parameter.
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 with the resource scope front-loaded, then the default behavior. The closing 'Read-only.' is the one low-value fragment since annotations already assert it.
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 helpfully names the fields returned (goal, amount funded, amount remaining, status), and the default-scope statement covers the main ambiguity. Pagination behavior and the meaning of each status enum value remain unstated, which is a minor gap for a 4-parameter list tool.
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 75%, so the schema already documents q, cursor, and status. The description only restates the status default and lists result fields rather than adding syntax, matching, or format detail beyond the schema, so the baseline of 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 and resource ('List products the public can fund toward laboratory testing') and enumerates the returned fields, so an agent knows it retrieves a collection with funding progress. It is implicitly distinct from checkout-creation and single-status siblings, but does not name them explicitly, so it falls short of full sibling differentiation.
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?
Gives one behavioral default ('Defaults to products currently accepting contributions') which helps an agent pick the right filter, but offers no explicit when-to-use/when-not guidance and does not mention the sibling tools that handle funding or status lookup. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_resultsSearch published test resultsARead-onlyIdempotentInspect
Search Laboratory.love’s published product-test records. Use this before answering whether a product, brand, or category has been tested. Records are either Laboratory.love-commissioned tests or clearly labeled PlasticList-derived historical records; report which. Results describe the samples tested, not every unit of a product. Covers chemicals that come from plastics (phthalates, BPA and other bisphenols, and phthalate substitutes), the usual meaning of "plastic chemicals" in food; it does not measure microplastic particles, so say so if someone asks about microplastics. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in the product name, brand, category, or tags, e.g. "Coca-Cola Zero" or "tofu". | |
| tag | No | A PlasticList source tag such as "sodas" or "baby_food". | |
| sort | No | Defaults to relevance when q is given, otherwise tested_on_desc. | |
| brand | No | Brand words. PlasticList records have no separate brand field, so this also matches their product name. | |
| limit | No | ||
| cursor | No | next_cursor from a previous call with the same filters. | |
| source | No | Only commissioned (Laboratory.love-commissioned) or plasticlist_derived records. | |
| analyte | No | Analyte abbreviation or name from list_analytes, e.g. DEHP or BPA. Keeps only results where it was measured. | |
| category | No | Category slug. | |
| detected | No | With analyte: true keeps results where that analyte was detected in at least one sample; false keeps results where it was measured but never detected. Without analyte: any analyte. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so 'Read-only' is redundant. The description earns credit for going beyond them: it discloses data provenance (commissioned vs PlasticList-derived) and imposes a reporting duty ('report which'), plus the sample-vs-unit caveat. It stops short of describing result/pagination shape.
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 purpose followed by tightly packed caveats; nearly every clause adds decision-relevant information. Minor waste in restating 'Read-only' which annotations already assert.
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 10-parameter search with no output schema, the description covers scope, provenance, and analytical limitations well. It could say more about what a result row contains and how cursor pagination sequences, which is the remaining gap.
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 90%, so the schema already documents all 10 parameters including the analyte/detected interaction and cursor semantics. The description adds no parameter-level 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 ('Search ... published product-test records') and immediately scopes the corpus (commissioned vs PlasticList-derived). An agent can distinguish it from the singular get_result sibling without opening either schema.
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?
Gives an explicit usage trigger ('Use this before answering whether a product, brand, or category has been tested'), a scope exclusion for microplastics, and points to list_analytes as the source of analyte values. Both when-to-use and when-not-to-use are covered.
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.
9 tool updates
- First observed
create_contribution_checkout - First observed
create_testing_checkout - First observed
get_checkout_status - First observed
get_crowdfund_status - First observed
get_result - First observed
list_analytes - First observed
list_testing_tiers - First observed
search_crowdfund - First observed
search_results
Related MCP Connectors
Lab results, FDA recalls and additive rules for US packaged foods, with sources; never a grade.
Read-only tools over an independently vetted catalog of non-toxic home and baby products.
US consumer product recalls from the CPSC. Free product_recalls tool.
Score clothes by disclosed fiber content: fabric labels, products, brands, alternatives.
Related MCP Servers
- AlicenseAqualityCmaintenanceProduct evaluation MCP server for US packaged food. Health scores, ingredient safety, regulatory flags, recall history, corporate ownership.21MIT
- AlicenseAqualityBmaintenanceEnables environmental scientists to tidy PFAS lab files, screen results against two drinking-water guideline sets side by side, search public guidance with page-level citations, and check report text so every number traces back to its lab row or guideline page.9Apache 2.0
- AlicenseAqualityDmaintenanceSearch URDB's product integrity database — integrity scores, enshittification events, warranty cuts, and material downgrades across consumer products. Sourced and evidence-backed.417 npm2MIT
- 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.