Aviado Health BioIntelligence
Server Details
Evidence-based supplement research for AI assistants. Query 4,794 clinical effect edges across 290 supplements and 502 biomarkers, 765 supplement-supplement interactions, 1,634 FDA drug interactions, and 22,570 product quality scores with AviScore ratings. 8 tools: supplement and biomarker lookup, drug and supplement interactions, brand quality rankings, condition-based supplement recommendations, fuzzy search for supplements and health conditions.
- Status
- Healthy
- Uptime
- 40.7% over 62 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Most tools have clearly distinct purposes, and the descriptions explicitly cross-reference boundaries (e.g. get_supplements_for_biomarker vs get_interventions_for_biomarker, check_interaction vs get_supplement_interactions). A few pairs are near-mirror images (forward/reverse biomarker-supplement lookups), but the descriptions largely disambiguate them.
Consistent snake_case verb-first naming throughout: search_*, get_*_for_*, get_supplement_*, build_*, check_*. The only mild deviation is the get_X_for_Y pattern mixed with plain get_noun, but it stays readable and predictable.
11 tools is well-scoped for a supplement/biomarker evidence server, with each tool covering a distinct facet (search, info, interactions, biomarkers, conditions, brands, stack-building). No filler or redundant tools.
Strong coverage of the supplement research lifecycle: identity search, info, biomarker effects both directions, conditions, interactions, brands, and a stack builder. Minor gaps like no dedicated biomarker-info tool or food_substance lookup, but agents can work around these via get_interventions_for_biomarker.
Available Tools
11 toolsbuild_starter_stackBuild a starter stackAInspect
Starter stack (default 3, max 5) of recommendable supplements for a goal (e.g. 'insomnia', 'LDL cholesterol'), best-replicated app-visible evidence first; never Rx or research; biomarker-proxy rows are hypotheses. Not offered for cancer or other serious disease (no_match). One item per ingredient family, checked for supplement interactions with each other and with exclude, which also takes medications by generic name (checked against FDA labels: major picks dropped, moderate flagged; unlisted medications are NOT checked, so ask, then use get_supplement_interactions with drug). Each item: why, grade, study dose (context), PMIDs, cited cautions (an avoid-level caution leads as cautions_summary and in data.important_cautions: state those first), same-mechanism and interaction flags. include_claim_link is opt-in (default false): true stores a small claim record and returns data.claim.claim_url for saving the stack in a free Aviado account.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Goal, condition or biomarker (e.g. 'insomnia', 'LDL cholesterol') | |
| exclude | No | Supplements the user takes or avoids, and medications by generic name (e.g. 'sertraline'): supplements are never suggested; medications are checked against every pick | |
| max_items | No | Stack size (default 3, max 5) | |
| include_claim_link | No | Opt in (default false): create a claim link, which stores a small record for 30 days (only when enabled) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing what is actually written and when: include_claim_link 'stores a small record for 30 days (only when enabled)'. It also exposes domain behavior an agent could not infer: FDA-label checking with 'major picks dropped, moderate flagged,' the warning that 'unlisted medications are NOT checked,' avoid-level cautions leading as cautions_summary, and the serious-disease no_match path. No contradiction with the annotation profile.
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-loading is good — stack size and scope come first — and nearly every clause carries actionable information. However the whole definition is a single semicolon-and-parenthesis-choked run-on, making it hard to scan; the interaction, caution, and claim-link rules would parse far better as separate structured sentences.
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, yet the description enumerates the return shape precisely: 'Each item: why, grade, study dose (context), PMIDs, cited cautions... same-mechanism and interaction flags,' plus data.important_cautions and data.claim.claim_url. For a composite, non-idempotent tool this covers purpose, inputs, outputs, failure modes, and follow-up routing.
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%, so the baseline is 3, but the description genuinely extends the schema: `exclude` 'also takes medications by generic name (checked against FDA labels)' and unlisted meds are explicitly NOT checked, and `include_claim_link` is explained as storing a 30-day record and returning data.claim.claim_url. It adds interaction semantics and side-effect meaning the schema does not carry.
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+scope: builds a 'starter stack (default 3, max 5) of recommendable supplements for a goal,' with concrete examples ('insomnia', 'LDL cholesterol'). It distinguishes itself from the list-style siblings by framing output as curated, interaction-checked picks ('never Rx or research', 'hypotheses' for biomarker-proxy rows), though it never names get_supplements_for_condition/get_supplements_for_biomarker as the alternatives it supersedes.
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?
Provides real routing guidance: excludes serious disease ('not offered for cancer or other serious disease (no_match)') and tells the agent to 'ask, then use get_supplement_interactions with `drug`' when a medication is unlisted. Clear context and a named fallback, but it does not contrast against the other recommendation-style siblings (get_supplements_for_condition / get_supplements_for_biomarker), so the when-to-choose-this branch is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_interactionCheck an interactionARead-onlyIdempotentInspect
Point check of one pair, about 1-3 KB: a and b are each a supplement (name or canonical_id) or a medication (generic name; salt forms merged, brand names not matched). Supplement + supplement uses curated interactions (components and classes included); supplement + medication uses FDA drug-label rows only; two medications are not covered (no_match). Returns verdict {found, severity, direction, summary, recommendation, recorded_for, evidence_level, sources} and coverage (level none/sparse/moderate/broad). found:false is NOT a safety answer: absence of a record is not evidence of safety, so read coverage and say so. Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First supplement (name or canonical id) or medication (generic name) | |
| b | Yes | Second supplement (name or canonical id) or medication (generic name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, destructive=false), yet the description adds substantial context beyond them: input normalization rules (salt forms merged, brand names not matched), the coverage level scale, and the crucial caveat that found:false is NOT a safety answer. This is exactly the extra behavioral context an agent needs.
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?
Dense but front-loaded: the core action and input rules come first, coverage matrix and the found:false caveat follow. Every sentence earns its place, though the single ~130-word block is slightly cramped and would benefit from light structuring.
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 carries the return burden and does so fully, enumerating the verdict fields (found, severity, direction, summary, recommendation, recorded_for, evidence_level, sources) and the coverage scale. For a 2-param pairwise lookup, 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?
Schema coverage is 100% so the baseline is 3, but the description adds real meaning: it clarifies that each param is a supplement (name or canonical_id) OR a medication (generic name), and notes that salt forms are merged while brand names are not matched. That disambiguation is present in neither schema field.
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+resource ('Point check of one pair') and scopes it precisely with input types and a size estimate (~1-3 KB). The 'one pair' framing implicitly distinguishes it from the listing sibling get_supplement_interactions, but it never names that sibling, so the differentiation is left to inference.
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 gives clear when-to-use boundaries: supplement+supplement uses curated data, supplement+medication uses FDA labels only, and medication+medication is explicitly not covered (no_match). It also directs 'Check status first' and explains what needs_confirmation/no_match mean for retry. It does not name the alternative tool for bulk interaction listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_biomarkers_for_supplementBiomarkers a supplement affectsARead-onlyIdempotentInspect
Biomarkers a supplement moves in the Aviado app's evidence graph, one entry per biomarker (strongest edge), ordered by prior_weight (graph evidence weight 0-1, not a calibrated probability or effect size). Each entry has direction (up/down/bidirectional), goal/subgoal, has_verified_support / mixed_evidence, up to 3 PubMed IDs (pmids; URL template in coverage) with n_studies / rct_count, and dose (mean study dose {value, unit}: evidence context, not a dosing recommendation; see coverage.dose_note); null fields are omitted. Partial and non-exhaustive: a missing biomarker is not evidence of no effect. The supplement may be a name or an Aviado canonical_id (from search_supplements or a candidates list). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 100) | |
| supplement | Yes | Supplement name (e.g., 'fish oil', 'curcumin', 'vitamin D3') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds a lot beyond them: ordering by prior_weight with the explicit caveat that it is graph evidence weight, not a calibrated probability or effect size; that dose is evidence context and not a dosing recommendation; that null fields are omitted; and that results are partial/non-exhaustive so absence is not evidence of no effect. These are exactly the non-obvious traits an agent needs.
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 dense paragraph with no filler sentences, and it front-loads the core purpose before the field-by-field detail and the status-handling note. The heavy parenthetical nesting makes it harder to scan than it needs to be, but nothing is wasted.
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 carries the full burden of explaining return shape, and it does: per-entry fields (direction, goal/subgoal, verification flags, pmids with n_studies/rct_count, dose), omission of nulls, ordering, and failure states. An agent can interpret a response without further documentation.
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%, so the baseline is 3, but the description adds meaning the schema lacks: the supplement parameter accepts either a plain name or an Aviado canonical_id, and where to obtain one. The limit parameter is left to the schema, which documents it fully.
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 and direction: 'Biomarkers a supplement moves in the Aviado app's evidence graph, one entry per biomarker (strongest edge).' This is unambiguously the supplement→biomarker direction, distinct from the inverse sibling get_supplements_for_biomarker and from the broader get_interventions_for_biomarker.
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 invocation guidance: the supplement argument may be a name or canonical_id sourced from search_supplements/candidates, and it instructs the agent to 'check status first' with named status values (needs_confirmation/no_match) and what to do on failure. It stops short of naming an alternative tool or an explicit when-not-to-use condition, so it is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interventions_for_biomarkerAll interventions for a biomarkerARead-onlyIdempotentInspect
All mixed interventions in Aviado's evidence graph that move a biomarker, each labelled with intervention_type: supplement, food_substance, prescription_drug, research_compound, research_nootropic, medical_compound, form_dependent, not_recommendable or unknown (omitted on plain recommendable supplement rows; see coverage.row_defaults). Rows that are not supplements are context, never a recommendation, and carry no dose or pathway details. Rows carry up to 3 PubMed IDs (pmids; URL template in coverage); optional direction (up/down) filters. graph_status (proven/suspected) is an internal eligibility label, not clinical validation; pathway_tags are raw graph metadata, not validated mechanisms. Coverage is partial and non-exhaustive; absence is not evidence of no effect (see coverage). The biomarker may be a name, an abbreviation, an Aviado id or a LOINC code (e.g. '4548-4'). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 100) | |
| biomarker | Yes | Biomarker name, abbreviation, or LOINC code | |
| direction | No | Only rows whose strongest edge moves the biomarker this way ('down' lowers it, 'up' raises it); bidirectional rows match neither |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, non-open-world); the description adds substantive behavior: partial/non-exhaustive coverage, graph_status as an internal eligibility label rather than clinical validation, pathway_tags as raw unvalidated metadata, up to 3 PubMed IDs per row, and how unresolved inputs surface via status. This is exactly the extra context annotations cannot carry.
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 core purpose is front-loaded, but the rest is one long semicolon-chained paragraph mixing caveats, field semantics and error handling. Most sentences carry real information, yet the density and run-on structure make it harder to scan than it needs to be.
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 returns — and it does: intervention_type taxonomy, direction, pmids with URL template reference, graph_status, pathway_tags, and the status/next_step failure path. An agent has what it needs to call and interpret results.
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 baseline is 3. The description adds only a little beyond the schema: it confirms the biomarker may be an Aviado id (schema says name/abbreviation/LOINC) and repeats that direction is optional, without new syntax or format rules.
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 with scope: 'All mixed interventions in Aviado's evidence graph that move a biomarker'. The word 'mixed' plus the note that non-supplement rows are context implicitly separates it from get_supplements_for_biomarker, but no sibling is named outright, so differentiation is inferred rather than explicit.
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 usable operating conditions: optional direction filter for up/down, 'check status first' with needs_confirmation/no_match meaning and next_step, and a warning that absence is not evidence of no effect. It stops short of explicitly telling the agent when to prefer this over get_supplements_for_biomarker or get_biomarkers_for_supplement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplement_infoSupplement overview and safetyARead-onlyIdempotentInspect
Overview of one supplement: description, typical uses, its top 5 biomarkers (with up to 3 PubMed citations each), goals, mechanism tags and cited safety contraindications. Contraindications include those recorded for what it contains (e.g. turmeric shows curcumin's), labelled with recorded_for; only cited rows are shown, so an empty list is not proof of safety. For all biomarkers use get_biomarkers_for_supplement; for drug interactions use get_supplement_interactions. The supplement may be a name or an Aviado canonical_id (from search_supplements or a candidates list). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| supplement | Yes | Supplement name |
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), and the description adds genuinely new behavior: contraindications are rolled up from contained compounds and tagged with recorded_for, only cited rows appear so an empty list is not proof of safety, and needs_confirmation/no_match produces null data plus a next_step.
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 payload summary, then routing, then edge-case semantics — logical ordering with no filler. It is dense and reads as one long block, which slightly taxes scanning, but every sentence carries operational 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?
There is no output schema, so the description must describe the return payload, and it does thoroughly (what fields come back, citation counts, the 'top 5' cap, the recorded_for labelling). Combined with the failure-mode behavior, an agent has everything needed to call and interpret this 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 coverage is 100% so the single string parameter is already documented, but the description adds real meaning by clarifying the value may be a supplement name or an Aviado canonical_id and pointing to search_supplements or a candidates list as its source. The 512-char limit and format constraints remain schema-only, which is fine.
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 ('Overview of one supplement') and enumerates exactly what the payload contains: description, uses, top 5 biomarkers with citations, goals, mechanism tags and contraindications. It also explicitly distinguishes itself from the two nearest siblings by name.
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 explicit routing rules ('For all biomarkers use get_biomarkers_for_supplement; for drug interactions use get_supplement_interactions') and states the accepted input forms and their provenance. The status-check guidance tells the agent what to do when the input fails to resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplement_interactionsSupplement interactions (drugs and supplements)ARead-onlyIdempotentInspect
Drug interactions come only from FDA drug labels: thorough for supplements labels name often (St. John's wort, grapefruit, magnesium, ginkgo) and sparse or missing for most others (e.g. fish oil, vitamin K, berberine, ashwagandha); read coverage.drug, and never treat an empty or short list as proof of safety. To check one medication pass drug (generic name; salt forms merged, so 'warfarin' matches 'warfarin sodium'; brand names are not matched). Also returns curated supplement-supplement interactions (synergies, antagonisms, absorption conflicts, timing), except on a drug check unless include_supplement_interactions is true. Interactions recorded for what the supplement contains are included and labelled: fish oil returns EPA, DHA and omega-3 interactions, turmeric returns curcumin's (interaction_sources, recorded_for). Drug entries are one per drug, most severe first, paged with drug_limit/drug_offset (drug_page.total, next_offset); label_artifact_suspected marks an entry whose drug name contains the supplement only as a salt (e.g. esomeprazole magnesium) and whose text does not mention it. Data-source failures return an error, never an empty list. The supplement may be a name or an Aviado canonical_id (from search_supplements or a candidates list). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | Only return drug interactions for this drug: its generic name (e.g. 'warfarin', 'sertraline'), matched exactly with salt forms merged ('warfarin' matches 'warfarin sodium'); brand names are not matched. Supplement-supplement interactions are then omitted unless include_supplement_interactions is true | |
| drug_limit | No | Max drug interactions to return (default 20, max 200) | |
| supplement | Yes | Supplement name | |
| drug_offset | No | Drug interactions to skip, for paging (use drug_page.next_offset) | |
| include_drug_interactions | No | Include FDA drug-supplement interactions | |
| include_supplement_interactions | No | Include supplement-supplement interactions (default: true without drug, false when drug is given) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the read-only annotations: coverage caveats ('sparse or missing for most others', 'never treat an empty or short list as proof of safety'), error-not-empty-list behavior on data-source failure, status/null semantics on unresolved input, and the label_artifact_suspected flag for salt-only drug-name matches. This is unusual behavioral depth.
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?
Dense but front-loaded with the highest-value caveat (coverage quality and the safety warning) before parameter mechanics. The heavy semicolon-chained sentences and stacked parentheticals push it toward over-packing, though nearly 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 carry return-value semantics, and it does: interaction_sources/recorded_for labelling, one-entry-per-drug ordering, paging fields, the artifact flag, and status/next_step. Nothing necessary for a correct call appears 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 coverage is 100%, so the baseline is 3, but the description adds interpretation the schema does not fully carry: salt-form merging vs unmatched brand names, the canonical_id alternative for supplement, and the derived drug_page.total/next_offset paging loop. It reinforces rather than merely repeats 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?
Names a specific verb+resource (get supplement interactions) and immediately scopes it: FDA-label drug interactions plus curated supplement-supplement interactions, with the inclusion rules for each. An agent can distinguish this from the sibling check_interaction because the description spells out the two interaction classes and how they are gated by the drug parameter.
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 triggering conditions: 'To check one medication pass drug', and explains that supplement-supplement interactions are omitted on a drug check unless include_supplement_interactions is true. It also instructs to 'Check status first' for needs_confirmation/no_match. It stops short of naming when to prefer a sibling tool, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplements_for_biomarkerSupplements for a biomarkerARead-onlyIdempotentInspect
Supplements in Aviado's evidence graph that move a biomarker (e.g. 'LDL cholesterol', 'HbA1c'). Lists only registry-classified supplements: entities Aviado's identity vocabulary types as supplement, class or combination and marks recommendable; prescription drugs, research compounds, foods and unknown ids are excluded (use get_interventions_for_biomarker for all of them). Each hit has direction (up/down/bidirectional), prior_weight (evidence confidence 0-1, not effect size), graph_status (proven/suspected: internal eligibility labels, not clinical verification), has_verified_support / mixed_evidence, and dose (mean study dose {value, unit}: evidence context, not a dosing recommendation; see coverage.dose_note). Rows carry up to 3 PubMed IDs (pmids; URL template in coverage) with n_studies / rct_count; optional direction (up/down) filters. Null fields and default typing (coverage.row_defaults) are omitted per row. Results are partial and non-exhaustive; pathway_tags are raw graph metadata, not validated mechanisms. The biomarker may be a name, an abbreviation, an Aviado id or a LOINC code (e.g. '4548-4'). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 100) | |
| biomarker | Yes | Biomarker name, abbreviation, or LOINC code | |
| direction | No | Only rows whose strongest edge moves the biomarker this way ('down' lowers it, 'up' raises it); bidirectional rows match neither |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial context beyond them: null fields and default typing are omitted per row, results are partial and non-exhaustive, prior_weight is confidence not effect size, graph_status is an internal eligibility label not clinical verification, dose is evidence context not a dosing recommendation, and pathway_tags are unvalidated raw metadata. This is exactly the caveat layer an agent needs for safe interpretation.
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 purpose is front-loaded in the first sentence and every clause carries information, but the body is a dense run-on paragraph that mixes field semantics, status handling and caveats, making it harder to scan than it needs to be. No filler sentences, though.
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 full burden of explaining the return shape, and it does so field by field (direction, prior_weight, graph_status, has_verified_support/mixed_evidence, dose, pmids, n_studies/rct_count) plus failure handling via the status field. Nothing needed to call or interpret 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 coverage is 100%, so the baseline is 3, and the direction enum semantics are already spelled out in the schema. The description does add meaning beyond it by noting the biomarker may also be an Aviado id (the schema only lists name, abbreviation, or LOINC code) and by illustrating the LOINC format with '4548-4', which reduces failed lookups.
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+resource (supplements that move a biomarker) and immediately scopes it to Aviado's registry-classified entities, explicitly distinguishing it from get_interventions_for_biomarker which covers drugs, research compounds and foods. An agent can route between the two siblings 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?
It gives explicit when-to-use (supplements only, registry-classified and recommendable), when-not (prescription drugs, research compounds, foods, unknown ids), the named alternative to use in that case, and even a pre-call step ('Check status first: needs_confirmation / no_match means the input did not resolve'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplements_for_conditionSupplements for a conditionARead-onlyIdempotentInspect
Supplements associated with a health condition or goal (e.g. 'insomnia', 'anxiety', 'joint pain'), strongest evidence first. evidence_basis direct rows come from studies of the condition; biomarker_proxy rows are inferred from the supplement's effect on the named proxy_biomarkers (each backed by an effect the Aviado app shows), are hypotheses, and are graded at most D. Only recommendable supplements are listed by default (rows carry intervention_type, entity_type, regulatory_status and recommendable only where they differ from coverage.row_defaults; null fields are omitted); include_non_supplements lists prescription drugs and research compounds too, labelled, as context only. dose is a typical study dose {value, unit}: evidence context, not a dosing recommendation (coverage.dose_note). Partial: absence is not evidence a supplement does not help. A weak or ambiguous condition name returns needs_confirmation with candidate conditions; confirm one and pass its id. Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max supplements to return, ranked by evidence (default: 25, max: 50) | |
| condition | Yes | Health condition, symptom, or goal (e.g., 'insomnia', 'anxiety', 'brain fog', 'joint pain') | |
| min_grade | No | Minimum evidence grade to include (default: D = all) | D |
| include_non_supplements | No | Also list prescription drugs, research compounds and other non-recommendable entities, labelled (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial semantics beyond them: biomarker_proxy rows are hypotheses graded at most D, only recommendable supplements appear by default, null fields are omitted, dose is evidence context rather than a dosing recommendation, and partial results do not imply absence of effect. This is exactly the extra behavioral context annotations cannot carry.
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 ranking rule are front-loaded, and nearly every clause carries non-redundant semantics. It is, however, a dense run-on paragraph with nested parentheticals that could be broken into shorter statements without losing content.
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 full burden and delivers: it names the row fields (intervention_type, entity_type, regulatory_status, recommendable, coverage.row_defaults), the dose shape {value, unit}, the evidence_basis categories, and the error/confirmation envelope. 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 coverage is 100%, so the baseline is 3, but the description adds real meaning: include_non_supplements is described as surfacing labelled prescription drugs and research compounds 'as context only', and condition resolution behavior (ambiguous input -> needs_confirmation with candidate ids) is documented beyond the schema's simple string definition.
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 ('Supplements associated with a health condition or goal') plus the ranking rule ('strongest evidence first') and the evidence_basis split that separates direct rows from biomarker_proxy rows. This lets an agent distinguish it from the sibling get_supplements_for_biomarker 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 clear operational context: check status first, needs_confirmation/no_match means the input did not resolve and next_step tells you how to retry, and confirm a candidate condition then pass its id. It also explains when to set include_non_supplements. It stops short of naming sibling alternatives (e.g. search_conditions) explicitly, so it is clear context rather than a full when/when-not routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_brandsTop brands by ProofMarkARead-onlyIdempotentInspect
Highest-quality brands for a supplement: one product per brand (its best), ranked by ProofMark, Aviado's product quality score (testing, ingredients, transparency, manufacturing, certifications). proofmark_100 is the 0-100 score (proofmark = proofmark_100/100) with a letter grade; proofmark_status is graded, below_coverage_floor (assessed but too little evidence to score; not a low score) or not_scored, and only graded products carry a score. Retired catalog products are excluded. match_basis says whether products matched the supplement identity or a text search (less precise; may include multi-ingredient products). price, retailer and product_url come from scraped listings and may be missing or stale. The supplement may be a name or an Aviado canonical_id (from search_supplements or a candidates list). Check status first: needs_confirmation / no_match means the input did not resolve, data is null and next_step says how to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (max 20) | |
| supplement | Yes | Supplement name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substantial behavioral context: retired catalog products are excluded, price/retailer/product_url come from scraped listings and may be missing or stale, and unresolved inputs return null data with a next_step. This is exactly the value-add beyond structured fields.
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-loads the core purpose then moves into field semantics; dense but essentially every sentence carries needed information given there is no output schema. Slightly run-on with multiple clauses packed into single sentences, but not padded.
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, so the description takes on the burden of explaining the returned fields (proofmark_100, proofmark_status states, match_basis, price/retailer staleness) and the error path, and it does so thoroughly for a 2-parameter 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 coverage is 100% (baseline 3), and the description still extends the schema by clarifying that 'supplement' accepts either a plain name or an Aviado canonical_id, which the schema only calls 'Supplement name'. That extra accepted-input semantics justifies a 4.
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?
Opens with a specific verb+resource ('Highest-quality brands for a supplement'), states the dedup rule (one product per brand, its best) and the ranking basis (ProofMark). An agent can distinguish this from search_supplements or get_supplement_info without opening any 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?
Explains when to prefer this and how to feed it ('supplement may be a name or an Aviado canonical_id (from search_supplements or a candidates list)') and gives a conditional workflow ('Check status first: needs_confirmation / no_match means the input did not resolve... next_step says how to retry'). It does not explicitly name a competing sibling for the same task, so no explicit when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_conditionsFind a health conditionARead-onlyIdempotentInspect
Find the condition id for a health condition, symptom or goal. Answers when the name matches one condition clearly (data.conditions lists it first, with up to 4 related suggestions); a weak or ambiguous name (e.g. 'blood pressure': high vs low) returns needs_confirmation with the suggestions in candidates. Ask the user which one they mean and pass its id as condition to get_supplements_for_condition.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., 'sleep', 'anxiety', 'brain fog', 'joint pain') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail: the response shape for clear matches (data.conditions first, up to 4 suggestions) and for ambiguous queries (needs_confirmation with candidates). It also prescribes how to resolve ambiguity, which is valuable beyond the structured safety hints.
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 three sentences, front-loads the purpose, then efficiently covers two response modes and the follow-up action. Every sentence adds distinct information without 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?
With no output schema, the description compensates by explaining the two possible return shapes and the ambiguity-resolution workflow. Combined with the annotations covering safety, this is sufficient for an agent to invoke and handle the tool 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 coverage is 100% and the query parameter already has a descriptive example list. The description adds that the query can also be a symptom or goal, which is a minor semantic expansion over the schema, so the baseline of 3 is 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?
The description states a specific verb and resource: 'Find the condition id for a health condition, symptom or goal.' This clearly distinguishes it from sibling tools like get_supplements_for_condition or search_supplements, and an agent can identify its role without opening the 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?
The description gives clear usage context: it explains that clear matches return data.conditions and ambiguous names return needs_confirmation, and it directs the agent to pass the resulting id to get_supplements_for_condition. It does not explicitly state when not to use this tool or name alternative search tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_supplementsFind a supplementARead-onlyIdempotentInspect
Find the Aviado id for a supplement name, exactly (no fuzzy matching). Answers with matches[0] = the identity: vocabulary_exact, or user_intent for salt/form names ('magnesium citrate' -> magnesium, with a form note). A name Aviado does not hold may be answered with a naming-model suggestion (match_type naming_slm_suggestion, identity false); confirm it with the user before using its id. Family names ('lithium') and confirm-only names return needs_confirmation with the members or candidates in candidates. Each match carries entity_type, regulatory_status and recommendable. Use mode='supplement_retail' only for raw retail product titles. Pass the confirmed canonical_id to the other supplement tools.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Explicit routing mode; retail titles require supplement_retail | identity |
| query | Yes | Supplement identity or raw retail product title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/idempotent/openWorld, and the description goes well beyond them: exact-only matching, the three match_type outcomes (vocabulary_exact, user_intent, naming_slm_suggestion with identity=false), that family/confirm-only names return needs_confirmation with candidates, and which fields each match carries. It discloses failure and ambiguity behavior, which is exactly what an agent needs before trusting an id.
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?
Information-dense and front-loaded: the matching semantics come first, then the alternative outcomes, then the mode rule and hand-off. The parenthetical examples ('magnesium citrate' -> magnesium) earn their space, though the run of match_type tokens makes it feel packed rather than clean.
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 full return-value burden and does so: matches[0] identity, match_type values, identity=false for suggestions, candidates for family names, and per-match fields (entity_type, regulatory_status, recommendable). Nothing needed to consume the response 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 coverage is 100%, so the baseline is 3, but the description adds real semantics: 'query' accepts salt/form names, family names, and retail product titles (not just 'identity'), and it pins down when mode must flip to supplement_retail. It does not add syntax constraints such as the 512-char limit, which the schema already carries.
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 ('find the Aviado id for a supplement name') and immediately constrains scope ('exactly, no fuzzy matching'), which distinguishes it from the get_* siblings that consume a canonical_id. An agent can tell what this tool returns (an identity, not supplement data) without opening the 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 explicit routing rules: mode='supplement_retail' only for raw retail titles, and 'pass the confirmed canonical_id to the other supplement tools', plus the instruction to confirm naming_slm_suggestion ids with the user. It also names the situations that yield needs_confirmation. This is when/when-not guidance with the consumer tools identified.
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
build_starter_stack4 fields changed- changed
Input schema / properties / exclude / descriptionPrevious value: -"Supplements the user takes or avoids: never suggested, interaction-checked"New value: +"Supplements the user takes or avoids, and medications by generic name (e.g. 'sertraline'): supplements are never suggested; medications are checked against every pick" - changed
Input schema / properties / goal / descriptionPrevious value: -"Goal, condition or biomarker (e.g. 'sleep', 'LDL cholesterol')"New value: +"Goal, condition or biomarker (e.g. 'insomnia', 'LDL cholesterol')" - changed
Input schema / properties / include_claim_link / defaultPrevious value: -trueNew value: +false - changed
Input schema / properties / include_claim_link / descriptionPrevious value: -"Create a claim link (default true; only when enabled)"New value: +"Opt in (default false): create a claim link, which stores a small record for 30 days (only when enabled)"
4 tool updates
- Added
build_starter_stack - Added
check_interaction - Changed
get_interventions_for_biomarker1 field changed- added
Input schema / properties / directionAdded value: +{ + "description": "Only rows whose strongest edge moves the biomarker this way ('down' lowers it, 'up' raises it); bidirectional rows match neither", + "enum": [ + "up", + "down" + ], + "type": "string" +}
- Changed
get_supplements_for_biomarker1 field changed- added
Input schema / properties / directionAdded value: +{ + "description": "Only rows whose strongest edge moves the biomarker this way ('down' lowers it, 'up' raises it); bidirectional rows match neither", + "enum": [ + "up", + "down" + ], + "type": "string" +}
2 tool updates
- Changed
get_supplement_interactions4 fields changed- added
Input schema / properties / drugAdded value: +{ + "description": "Only return drug interactions for this drug: its generic name (e.g. 'warfarin', 'sertraline'), matched exactly with salt forms merged ('warfarin' matches 'warfarin sodium'); brand names are not matched. Supplement-supplement interactions are then omitted unless include_supplement_interactions is true", + "maxLength": 512, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / drug_limitAdded value: +{ + "default": 20, + "description": "Max drug interactions to return (default 20, max 200)", + "maximum": 200, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / drug_offsetAdded value: +{ + "default": 0, + "description": "Drug interactions to skip, for paging (use drug_page.next_offset)", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / include_supplement_interactionsAdded value: +{ + "description": "Include supplement-supplement interactions (default: true without drug, false when drug is given)", + "type": "boolean" +}
- Changed
get_supplements_for_condition1 field changed- added
Input schema / properties / include_non_supplementsAdded value: +{ + "default": false, + "description": "Also list prescription drugs, research compounds and other non-recommendable entities, labelled (default false)", + "type": "boolean" +}
1 tool update
- Changed
search_supplements2 fields changed- added
Input schema / properties / modeAdded value: +{ + "default": "identity", + "description": "Explicit routing mode; retail titles require supplement_retail", + "enum": [ + "identity", + "supplement_retail" + ], + "type": "string" +} - changed
Input schema / properties / query / descriptionPrevious value: -"Search query (e.g., 'fish oil', 'CoQ10', 'NAC')"New value: +"Supplement identity or raw retail product title"
9 tool updates
- Changed
get_biomarkers_for_supplement2 fields changed- added
Input schema / properties / supplement / maxLengthAdded value: +512 - added
Input schema / properties / supplement / minLengthAdded value: +1
- Added
get_interventions_for_biomarker - Changed
get_supplement_info2 fields changed- added
Input schema / properties / supplement / maxLengthAdded value: +512 - added
Input schema / properties / supplement / minLengthAdded value: +1
- Changed
get_supplement_interactions2 fields changed- added
Input schema / properties / supplement / maxLengthAdded value: +512 - added
Input schema / properties / supplement / minLengthAdded value: +1
- Changed
get_supplements_for_biomarker2 fields changed- added
Input schema / properties / biomarker / maxLengthAdded value: +512 - added
Input schema / properties / biomarker / minLengthAdded value: +1
- Changed
get_supplements_for_condition2 fields changed- added
Input schema / properties / condition / maxLengthAdded value: +512 - added
Input schema / properties / condition / minLengthAdded value: +1
- Changed
get_top_brands2 fields changed- added
Input schema / properties / supplement / maxLengthAdded value: +512 - added
Input schema / properties / supplement / minLengthAdded value: +1
- Changed
search_conditions2 fields changed- added
Input schema / properties / query / maxLengthAdded value: +512 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
search_supplements2 fields changed- added
Input schema / properties / query / maxLengthAdded value: +512 - added
Input schema / properties / query / minLengthAdded value: +1
4 tool updates
- Changed
get_biomarkers_for_supplement1 field changed- added
Input schema / properties / limitAdded value: +{ + "default": 25, + "description": "Max results (default 25, max 100)", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
- Changed
get_supplements_for_biomarker1 field changed- added
Input schema / properties / limitAdded value: +{ + "default": 25, + "description": "Max results (default 25, max 100)", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
- Changed
get_supplements_for_condition3 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
get_top_brands3 fields changed- added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
1 tool update
- Changed
get_supplements_for_condition1 field changed- added
Input schema / properties / limitAdded value: +{ + "default": 25, + "description": "Max supplements to return, ranked by evidence (default: 25, max: 50)", + "type": "number" +}
2 tool updates
- Added
get_supplements_for_condition - Added
search_conditions
6 tool updates
- First observed
get_biomarkers_for_supplement - First observed
get_supplement_info - First observed
get_supplement_interactions - First observed
get_supplements_for_biomarker - First observed
get_top_brands - First observed
search_supplements
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.