Current Tools
What's exposed
MCP (Model Context Protocol) is the open standard for connecting a model to external tools and data. These five tools are the current surface — query-shaped, not a SQL dump.
meta
Call this first. Category slugs, the spec keys actually observed per category (with units and five-language labels), and live totals — not documentation that drifts from reality. Guessing category and key names blind, before this tool existed, got 4 of 13 slugs and 7 of 14 keys right. This is why you don't have to.
meta()
// live response, abbreviated — full payload covers all 99 categories
{
"vocab_version": "0.17.0",
"generated_at": "2026-09-04T22:33:21Z",
"totals": { "products": 808223, "facts": 4869544,
"manufacturers": 229, "categories_with_data": 99 },
"categories": [
{ "slug": "power_contactors",
"labels": { "en": "Power contactors", "zh-TW": "功率接觸器",
"es": "Contactores de potencia", "fr": "...", "th": "..." },
"products": 12566,
"typed_products": 11610,
"spec_keys": [
{ "key": "rated_current_ac3_a", "unit": "A", "type": "number" }
] }
]
}
find_equivalents
Cross-brand alternates for a given part number — deterministic matching (rating floors met, coil voltage within tolerance, poles exact), a per-spec diff, and a link back to each manufacturer's page.
find_equivalents(mpn="3RT20262AL24")
// live response, abbreviated
{
"target": { "mpn": "3RT20262AL24", "brand": "Siemens",
"manufacturer_page_verified": true },
"tolerance": 0.25,
"brands_found": 2,
"equivalents": {
"schneider_electric": [{ "mpn": "LC1D25P7",
"spec_comparison": {
"rated_current_ac3_a": { "target": 25, "candidate": 25, "delta_pct": 0.0 },
"coil_voltage_v": { "target": 230, "candidate": 230, "delta_pct": 0.0 }
},
"manufacturer_page_verified": false }],
"abb": [{ "mpn": "AFC26-30-00-34",
"spec_comparison": {
"rated_current_ac3_a": { "target": 25, "candidate": 26, "delta_pct": 4.0 },
"coil_voltage_v": { "target": 230, "candidate": 208, "delta_pct": -9.6 }
},
"manufacturer_page_verified": true }]
}
}
Note the Schneider match shows manufacturer_page_verified: false — that's the real, current state for this record, not smoothed over. See Coverage.
get_product
Full typed spec sheet for one MPN — headline specs plus the fully qualified fact table (voltage/temperature derating rows distributors don't show), canonical keys, units, confidence, and source.
get_product(mpn="3RT20262AL24")
// live response, headline_specs abbreviated (all_facts carries the full derating table)
{
"mpn": "3RT20262AL24",
"manufacturer": "Siemens",
"family": "SIRIUS 3RT contactors, 3-pole, up to 250 kW",
"category": "power_contactors",
"lifecycle_status": "Active",
"manufacturer_page": "https://sieportal.siemens.com/en-us/products-services/detail/3RT20262AL24",
"manufacturer_page_verified": true,
"headline_specs": {
"rated_current_ac3_a": { "value": 25, "unit": "A", "qualifiers": { "at_voltage_v": 400 },
"source": "siemens_sieportal", "confidence": 0.95 },
"coil_voltage_v": { "value": 230, "unit": "V", "source": "digikey", "confidence": 0.85 },
"mechanical_life_cycles": { "value": 10000000, "source": "siemens_sieportal", "confidence": 0.95 }
},
"vocabulary": "canonical_keys.yaml v0.8.0"
}
search_products
Query by category and spec constraints — min / max / eq objects evaluated on headline facts, not free-text search.
search_products(
category="power_contactors",
constraints={
"rated_current_ac3_a": {"min": 25},
"coil_voltage_v": {"eq": 230}
},
limit=5
)
// count: 5 real results, e.g.
{ "mpn": "3RT20471AP001AA0", "brand": "Siemens",
"specs": { "rated_current_ac3_a": 110, "coil_voltage_v": 230 } }
get_datasheet
Document pointers for a part — manufacturer asset URLs, plus locally archived PDFs where we've kept a copy. 2.8M+ documents archived across datasheets, installation guides, and operating manuals.
get_datasheet(mpn="3RT20262AL24")
// live response
{
"mpn": "3RT20262AL24",
"manufacturer_page_verified": true,
"documents": [
{ "type": "datasheet",
"url": "https://mall.industry.siemens.com/
teddatasheet/?format=PDF&mlfbs=
3RT2026-2AL24&caller=SiePortal" }
],
"local_pdfs": []
}
Why It's Hard
Why teams don't just scrape it themselves
- 33+ manufacturers means 33+ different site structures, 33+ different vocabularies for the same physical spec, and at least one JavaScript-rendered SPA that breaks plain scrapers.
- Normalization is the actual cost. Getting to a shared schema across brands means building and maintaining a reviewed mapping dictionary per source — not a one-time script.
- Cross-brand equivalence is a standalone hard problem. Knowing that a Schneider contactor and a Siemens contactor are real substitutes, with per-spec justification, is expertise-gated work today.
- Provenance has to be structural, not promised. Every fact here is tagged with its source and a confidence score at write time, not asserted after the fact.
Four more tools, built on what already exists
Not speculative additions — each one sits on infrastructure the database already has (versioning, cross-referenced identifiers, category taxonomy). Scoped, not shipped.
list_categories()
All 75 canonical categories with product counts, so an agent can find the right slug instead of guessing it before it can call search_products.
get_history(mpn)
Every fact is already versioned — this returns the actual diff: old value, new value, manufacturer link, timestamp. The engine behind the spec-change monitoring on our distributor roadmap.
resolve_identifier()
Go from a barcode scan (gtin=) or a distributor's internal SKU (distributor_sku=) straight to the canonical MPN. Built on 985K+ identifiers already cross-referenced in the database.
batch_get_products(mpns=[…])
Full spec sheets for a whole BOM in one call instead of one get_product request per line item.
Workflows
What these look like chained together
Current tools and roadmap tools (marked) combined into actual workflows.
Three calls, not a support ticket
get_product shows a lifecycle_status that's moved off Active. get_history (roadmap) pulls the actual change — old status, new status, manufacturer notice, date. find_equivalents immediately proposes verified substitutes.
"15HP compressor, 380V, needs a contactor"
search_products turns the constraint into real candidates. batch_get_products (roadmap) pulls full spec sheets for the shortlist in one call. get_datasheet attaches the manufacturer PDF for sign-off.
A customer's parts list, mixed brands
resolve_identifier (roadmap) turns barcodes scanned off installed equipment into canonical MPNs. find_equivalents checks each one against what a distributor actually stocks, brand by brand.
Get Access
Request early access
We're onboarding a small number of teams directly before opening broader access. Tell us what you're building and we'll follow up.