Real US store prices at the buy step, official recalls, ENERGY STAR, travel advice and build plans.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Look up official US recalls. category 'product' searches CPSC consumer-product recalls by words in the product name (brand plus product type works best, e.g. 'Rowenta vacuum'); 'food_drug' searches FDA food and drug enforcement reports; 'vehicle' searches NHTSA by make, model and model year. Use this when someone asks if a product, food, medicine or car was recalled, is safe to buy or use, or before they buy something used. An empty result means none was found, not that the item is safe. Not for medical advice.
product (CPSC), food_drug (FDA) or vehicle (NHTSA)
Vehicle make, e.g. 'Honda' (vehicle only)
Vehicle model year (vehicle only)
Vehicle model, e.g. 'Civic' (vehicle only)
Product or food/drug words, for product and food_drug, e.g. 'stroller' or 'peanut butter'
Look up official US recalls. category 'product' searches CPSC consumer-product recalls by words in the product name (brand plus product type works best, e.g. 'Rowenta vacuum'); 'food_drug' searches FDA food and drug enforcement reports; 'vehicle' searches NHTSA by make, model and model year. Use this when someone asks if a product, food, medicine or car was recalled, is safe to buy or use, or before they buy something used. An empty result means none was found, not that the item is safe. Not for medical advice.
| Argument | Type | Description |
|---|---|---|
| make | string | Vehicle make, e.g. 'Honda' (vehicle only) |
| year | integer | Vehicle model year (vehicle only) |
| model | string | Vehicle model, e.g. 'Civic' (vehicle only) |
| query | string | Product or food/drug words, for product and food_drug, e.g. 'stroller' or 'peanut butter' |
| category* | string | product (CPSC), food_drug (FDA) or vehicle (NHTSA) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"category"
],
"properties": {
"make": {
"type": "string",
"maxLength": 40,
"description": "Vehicle make, e.g. 'Honda' (vehicle only)"
},
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 1950,
"description": "Vehicle model year (vehicle only)"
},
"model": {
"type": "string",
"maxLength": 40,
"description": "Vehicle model, e.g. 'Civic' (vehicle only)"
},
"query": {
"type": "string",
"maxLength": 80,
"description": "Product or food/drug words, for product and food_drug, e.g. 'stroller' or 'peanut butter'"
},
"category": {
"enum": [
"product",
"food_drug",
"vehicle"
],
"type": "string",
"description": "product (CPSC), food_drug (FDA) or vehicle (NHTSA)"
}
}
}Official travel advice for a country from the US State Department, UK FCDO and Canada side by side, active disaster alerts, a weather risk check for the days ahead, and an exchange rate. Use when someone is planning or about to take a trip. You plan the trip; send the country and, for weather, the place's latitude and longitude. Facts are dated and linked to each government's page.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude of the place being visited, for weather |
| lon | number | Longitude of the place being visited, for weather |
| country* | string | Country name in English or two-letter code, e.g. 'Japan' or 'JP' |
| end_date | string | Trip end, YYYY-MM-DD |
| start_date | string | Trip start, YYYY-MM-DD |
| home_currency | string | Traveler's currency, e.g. 'USD' |
| local_currency | string | Destination currency, e.g. 'JPY' |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"country"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the place being visited, for weather"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the place being visited, for weather"
},
"country": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Country name in English or two-letter code, e.g. 'Japan' or 'JP'"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trip end, YYYY-MM-DD"
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trip start, YYYY-MM-DD"
},
"home_currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Traveler's currency, e.g. 'USD'"
},
"local_currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Destination currency, e.g. 'JPY'"
}
}
}Compare current offers for one chosen product across US stores, ranked by price (item plus shipping where the store lists it, tax excluded). Use this at the buy step: the user asks where to buy it, what it costs at different stores, whether a price or sale is a good deal, if it's cheaper somewhere else, or for the link; pass a product_id from search_products. Returns the top 3 offers by default (detail=true for up to 8) and a status that says plainly when no offers exist, so never guess a price. Each offer links to its divux page, where the user picks a store. Do not use to buy or check out.
| Argument | Type | Description |
|---|---|---|
| detail | boolean | false: top 3 offers (default, best for chat and voice). true: up to 8. |
| condition | string | new (default) unless the user asks for used, open-box or refurbished; 'used' covers all of those; 'any' shows everything. |
| product_id* | string | Product id from search_products |
| include_out_of_stock | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_id"
],
"properties": {
"detail": {
"type": "boolean",
"default": false,
"description": "false: top 3 offers (default, best for chat and voice). true: up to 8."
},
"condition": {
"enum": [
"new",
"used",
"any"
],
"type": "string",
"default": "new",
"description": "new (default) unless the user asks for used, open-box or refurbished; 'used' covers all of those; 'any' shows everything."
},
"product_id": {
"type": "string",
"description": "Product id from search_products"
},
"include_out_of_stock": {
"type": "boolean",
"default": false
}
}
}Check whether an appliance model is ENERGY STAR certified, or list certified models (most efficient first), from the EPA's official data. Categories: heat pumps, heat pump water heaters, clothes washers, clothes dryers, refrigerators, dishwashers. Use this when someone asks if a model is ENERGY STAR, which models are most efficient, or about energy-efficient appliance choices. Heat pump answers include the fact that federal 25C/25D tax credits ended after Dec 31, 2025. Do not use for prices (use compare_prices) or recalls.
| Argument | Type | Description |
|---|---|---|
| brand | string | Brand to filter by, e.g. 'Rheem' |
| model | string | Model number or part of it, to check certification |
| category* | string | Appliance category |
| most_efficient_only | boolean | Only models meeting ENERGY STAR Most Efficient criteria (not available for water heaters) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"category"
],
"properties": {
"brand": {
"type": "string",
"maxLength": 40,
"description": "Brand to filter by, e.g. 'Rheem'"
},
"model": {
"type": "string",
"maxLength": 40,
"description": "Model number or part of it, to check certification"
},
"category": {
"enum": [
"heat_pump",
"heat_pump_water_heater",
"clothes_washer",
"clothes_dryer",
"refrigerator",
"dishwasher"
],
"type": "string",
"description": "Appliance category"
},
"most_efficient_only": {
"type": "boolean",
"default": false,
"description": "Only models meeting ENERGY STAR Most Efficient criteria (not available for water heaters)"
}
}
}Turn a project you designed (planter, shelf, desk, raised bed, fence, patio, painted room, pipe rack) into exact numbers and a blueprint page. Works for boards, pipe, tube, sheets, and materials bought by area, volume or count. You design it, choose materials and estimate prices yourself (search the web if you can); send every piece with its real size in inches and, for the drawing, where it sits. divux returns what to buy, where to cut each board or sheet (saw blade included), size mistakes to fix (a 2x4 is really 1.5 x 3.5 in), and a link to a page with the drawing, cut diagrams and buy list. It doesn't look up store prices; when the user wants to buy an item, use search_products and compare_prices for it.
| Argument | Type | Description |
|---|---|---|
| kerf | number | Saw blade width in inches |
| parts* | array | |
| steps | array | Assembly steps in order; pieces refer to them with 'step' |
| stock | array | Board lengths or sheets you'd buy, with your price estimates. Without it, divux uses common US store lengths and shows no prices. |
| title* | string | Project name, e.g. 'Cedar planter 24 x 12 in' |
| extras | array | Screws, nails, glue, finish, and tools needed |
| quantities | array | Materials bought by area, volume or count: paint, stain, tile, flooring, fabric, soil, mulch, gravel, concrete |
Find a product the user has already chosen, by exact name, model number or barcode (UPC/EAN), and get its id for compare_prices. Use this when the user is ready to buy: they ask where to buy it, for the best price now, whether a price is a good deal, or for a link. For a parts or shopping list, search each item. Not for researching what to buy (e.g. 'best headphones under $200'): decide that yourself, then search for the chosen model. Do not use for recall or safety questions (use check_recalls).
| Argument | Type | Description |
|---|---|---|
| brand | string | Only this brand, e.g. 'Dyson', when the user names one |
| limit | integer | |
| query* | string | The chosen product's name, model number or UPC/EAN, e.g. 'Sony WH-1000XM6' or '045496884963'; not a category |
| condition | string | new unless the user asks for used, open-box or refurbished; 'used' covers all of those |
| max_price | number | Highest price in USD, e.g. 100 for 'under $100' |
| min_price | number | Lowest price in USD, when the user gives a budget floor |
| in_stock_only | boolean | Only products with at least one in-stock offer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title",
"parts"
],
"properties": {
"kerf": {
"type": "number",
"default": 0.125,
"maximum": 0.5,
"minimum": 0,
"description": "Saw blade width in inches"
},
"parts": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"material",
"size"
],
"properties": {
"at": {
"type": "array",
"items": {
"type": "array",
"items": false,
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"type": "number",
"maximum": 600,
"minimum": -600
},
{
"type": "number",
"maximum": 600,
"minimum": -600
},
{
"type": "number",
"maximum": 600,
"minimum": -600
}
]
},
"maxItems": 200,
"description": "Corner position of each copy in inches, for the drawing; one entry per copy"
},
"qty": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Copies when 'at' isn't given"
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "e.g. 'Long side' or 'Leg'"
},
"size": {
"type": "array",
"items": false,
"maxItems": 3,
"minItems": 3,
"description": "Real size in inches along width (x), depth (y), height (z)",
"prefixItems": [
{
"type": "number",
"maximum": 600,
"exclusiveMinimum": 0
},
{
"type": "number",
"maximum": 600,
"exclusiveMinimum": 0
},
{
"type": "number",
"maximum": 600,
"exclusiveMinimum": 0
}
]
},
"step": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Assembly step (1-based) this piece goes on in, matching 'steps'"
},
"material": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "e.g. '2x4', '1x6 cedar', 'cedar fence picket', '3/4 plywood'"
}
}
},
"maxItems": 150,
"minItems": 1
},
"steps": {
"type": "array",
"items": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"maxItems": 50,
"description": "Assembly steps in order; pieces refer to them with 'step'"
},
"stock": {
"type": "array",
"items": {
"type": "object",
"required": [
"material",
"length"
],
"properties": {
"width": {
"type": "number",
"maximum": 120,
"description": "Sheet width in inches",
"exclusiveMinimum": 0
},
"length": {
"type": "number",
"maximum": 600,
"description": "Board length, or sheet length, in inches",
"exclusiveMinimum": 0
},
"material": {
"type": "string",
"maxLength": 60
},
"price_estimate": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Your estimate in USD for one"
}
}
},
"maxItems": 40,
"description": "Board lengths or sheets you'd buy, with your price estimates. Without it, divux uses common US store lengths and shows no prices."
},
"title": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Project name, e.g. 'Cedar planter 24 x 12 in'"
},
"extras": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"kind",
"qty"
],
"properties": {
"qty": {
"type": "integer",
"maximum": 10000,
"minimum": 1
},
"kind": {
"enum": [
"hardware",
"tool",
"supply"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"price_estimate": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Your estimate in USD for one (for a tool, the tool)"
}
}
},
"maxItems": 60,
"description": "Screws, nails, glue, finish, and tools needed"
},
"quantities": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"form",
"per_unit",
"unit"
],
"properties": {
"dims": {
"type": "array",
"items": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
},
"maxItems": 3,
"minItems": 2,
"description": "Inches: [length, width] for area, [length, width, depth] for volume"
},
"form": {
"enum": [
"area",
"volume",
"count"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "e.g. 'Exterior paint', 'Potting soil', 'Concrete mix', 'Floor tile'"
},
"unit": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "e.g. 'gallon', '80 lb bag', 'box'"
},
"times": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Repeat the dims, e.g. 2 coats or 4 walls"
},
"amount": {
"type": "number",
"maximum": 1000000,
"description": "Square feet, cubic feet or pieces, when dims don't fit",
"exclusiveMinimum": 0
},
"per_unit": {
"type": "number",
"maximum": 1000000,
"description": "What one unit covers (sq ft, cu ft or pieces), e.g. 350 for a gallon of paint, 0.6 for an 80 lb concrete bag",
"exclusiveMinimum": 0
},
"waste_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Extra to buy; default 10 for area, 5 for volume, 0 for count"
},
"price_estimate": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Your estimate in USD for one unit"
}
}
},
"maxItems": 40,
"description": "Materials bought by area, volume or count: paint, stain, tile, flooring, fabric, soil, mulch, gravel, concrete"
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"brand": {
"type": "string",
"maxLength": 60,
"description": "Only this brand, e.g. 'Dyson', when the user names one"
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1
},
"query": {
"type": "string",
"minLength": 1,
"description": "The chosen product's name, model number or UPC/EAN, e.g. 'Sony WH-1000XM6' or '045496884963'; not a category"
},
"condition": {
"enum": [
"new",
"used"
],
"type": "string",
"default": "new",
"description": "new unless the user asks for used, open-box or refurbished; 'used' covers all of those"
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Highest price in USD, e.g. 100 for 'under $100'"
},
"min_price": {
"type": "number",
"minimum": 0,
"description": "Lowest price in USD, when the user gives a budget floor"
},
"in_stock_only": {
"type": "boolean",
"default": false,
"description": "Only products with at least one in-stock offer"
}
}
}