Spoon Scout - Food Contaminant Lookup

Lab results, FDA recalls and additive rules for US packaged foods, with sources; never a grade.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,948Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.52% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "spoon-scout": {
      "url": "https://food.agentlookups.ai/mcp"
    }
  }
}

Remote endpoints

https://food.agentlookups.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_product(barcode, id, query)

Looks up one US packaged food by barcode (UPC/EAN/GTIN), id, or name, and returns what is known about it: lab results by chemical (with kind of evidence, sample counts, median and highest values in ppb, lots, dates and sources), FDA recalls naming its barcode, restricted additives in its ingredients with each jurisdiction's rule, FDA's typical levels for its kind of food, same-brand products that were tested, and the chemical families never tested in it. result_type is match (one product), candidates (a name fit several; call again with id), or no_match.

Input Schema

{
  "type": "object",
  "properties": {
    "barcode": {
      "description": "UPC, EAN or GTIN digits, e.g. 070852000121",
      "type": "string"
    },
    "id": {
      "description": "A product id from an earlier candidates result",
      "type": "string"
    },
    "query": {
      "description": "Product name with brand, e.g. \"clover organic whole milk\"",
      "type": "string"
    }
  }
}
🟢chemical_sources(chemical)

For one contaminant (lead, cadmium, mercury, arsenic-total, arsenic-inorganic, perchlorate, a phthalate such as dehp or dbp, a substitute such as deht, or a bisphenol such as bpa), returns the everyday foods where FDA's Total Diet Study found the highest typical levels (with samples, detections, averages and years), named products with lab results (highest median first), recent FDA recalls naming it, and a note on drinking water where it matters.

Input Schema

{
  "type": "object",
  "properties": {
    "chemical": {
      "description": "Chemical name or slug, e.g. \"perchlorate\" or \"lead\"",
      "type": "string"
    }
  },
  "required": [
    "chemical"
  ]
}
🟢compare_products(ids)

Lines up two to five products (by id) chemical by chemical, using each product's own lab results where they exist and FDA's typical level for its kind of food otherwise (marked as typical), plus restricted additives and recall counts.

Input Schema

{
  "type": "object",
  "properties": {
    "ids": {
      "description": "Comma-separated product ids from check_product",
      "type": "string"
    }
  },
  "required": [
    "ids"
  ]
}
🟢food_category(all, category, order, sort)

For a kind of food (a category slug such as milk, rice, baby-infant-foods-beverages, cereal, water), returns FDA's typical levels of metals and perchlorate, whether FDA's foods are a close or rough stand-in, and the products in that category with lab results: the 50 lowest in the most-tested chemical by default (products below the lab's limit first), with tested_total giving the full count. Pass sort to rank by another chemical, order=high for highest first, and all=true for every tested product.

Input Schema

{
  "type": "object",
  "properties": {
    "all": {
      "description": "Optional: true returns every tested product instead of the first 50",
      "type": "boolean"
    },
    "category": {
      "description": "Category slug, e.g. \"milk\"",
      "type": "string"
    },
    "order": {
      "description": "Optional: \"high\" for highest first (default lowest first)",
      "type": "string"
    },
    "sort": {
      "description": "Optional chemical slug to rank by, e.g. \"lead\" (default: the chemical tested in the most products)",
      "type": "string"
    }
  },
  "required": [
    "category"
  ]
}
🟢additive_status(additive)

Returns where an additive is allowed, restricted, banned or requires a warning (US FDA, EU, and US states such as California, West Virginia, Texas and Louisiana), each with its law and effective date, plus how many products list it and examples.

Input Schema

{
  "type": "object",
  "properties": {
    "additive": {
      "description": "Additive name or slug, e.g. \"titanium dioxide\" or \"red-3\"",
      "type": "string"
    }
  },
  "required": [
    "additive"
  ]
}
🟢interpret_test_result(age, chemical, unit, value)

Places a person's urine or blood test result among CDC NHANES population percentiles (newest survey cycle loaded), for everyone or one age group, and says in words how high it is. tier.level is below_median, median_to_95th, top_5_percent or far_above (at least twice the 95th percentile; CDC's tables stop at the 95th, so times_95th_percentile gives the multiple); a far_above result carries clear_line, e.g. "This is far above typical. Talk to your clinician soon." ("right away" for blood lead at CDC's 45 ug/dL children's step, or OSHA's 50 for adults). unit_check is set when the value is more than 10 times the highest 95th percentile in CDC's tables, which can mean a unit mix-up (ug/L typed as ug/dL); show it to the person. For blood lead, official_guidance gives CDC's follow-up steps for children (2025) and, for adults (no CDC schedule), what NIOSH lists from agencies and medical groups (2024), each with its source; age 20+ returns only the adult guidance, under 12 only the children's. official_limits includes CDC's 3.5 ug/dL blood lead reference value. context gives cited lines on what the test shows, e.g. urine perchlorate reflects about the last day of food and water. Pass unit as printed on the report: ug/L (same as ng/mL), ug/dL, or ug/g creatinine for creatinine-adjusted urine results (CDC's creatinine tables); ug/L and ug/dL are converted into the table's unit and entered shows what was typed. Context only, not a diagnosis.

Input Schema

{
  "type": "object",
  "properties": {
    "age": {
      "description": "Who to compare with: all (default), young (under 6), 6-11, 12-19, 20+, or an age in years",
      "type": "string"
    },
    "chemical": {
      "description": "Analyte key: a chemical slug for its first analyte, or chemical:NHANES code. Loaded keys: lead or lead:LBXBPB (Lead, µg/dL); mercury or mercury:LBXTHG (Total Mercury, µg/L); arsenic-total or arsenic-total:URXUAS (Total Arsenic, µg/L or ug/g creatinine); perchlorate or perchlorate:URXUP8 (Perchlorate, µg/L or ug/g creatinine); dehp or dehp:URXMHH (Mono-(2-ethyl-5-hydroxyhexyl) phthalate (MEHHP), µg/L or ug/g creatinine); dehp:URXECP (Mono-(2-ethyl-5-carboxypentyl) phthalate (MECPP), µg/L or ug/g creatinine); dehp:URXMOH (Mono-(2-ethyl-5-oxohexyl) phthalate (MEOHP), µg/L or ug/g creatinine); dehp:URXMHP (Mono-2-ethylhexyl phthalate (MEHP), µg/L or ug/g creatinine); dbp or dbp:URXMBP (Mono-n-butyl phthalate (MnBP), µg/L or ug/g creatinine); dibp or dibp:URXMIB (Mono-isobutyl phthalate (MiBP), µg/L or ug/g creatinine); bbp or bbp:URXMZP (Mono-benzyl phthalate (MBzP), µg/L or ug/g creatinine); dep or dep:URXMEP (Mono-ethyl phthalate (MEP), µg/L or ug/g creatinine); bpa or bpa:URXBPH (Bisphenol A, µg/L or ug/g creatinine)",
      "type": "string"
    },
    "unit": {
      "description": "Unit printed on the report: ug/L (or ng/mL), ug/dL, or ug/g creatinine (urine only). Omit to use the unit listed for the key.",
      "type": "string"
    },
    "value": {
      "description": "The result as printed on the report (a number; a numeric string also works)",
      "type": "number"
    }
  },
  "required": [
    "chemical",
    "value"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools