Robotics Trade (industrial-robot imports, value + robot counts) API v1
Generated from
core.contract.describe_robotics_trade_v1()and checked fixture-backed examples. Do not hand-edit the example JSON files.
Capability
- Capability:
robotics.trade - Primitive:
query_robotics_trade_v1 - Status:
available - Current source:
trade.census.intltrade_robotics_hs - Source publisher: U.S. Census Bureau
- Snapshot behavior:
as_of = latestresolves to an exact snapshot date in every response.
What It Can Answer
- Monthly U.S. imports of industrial robots in customs value (USD) AND unit counts (number of robots) — cited to the source row.
- Robot imports by country of origin (e.g. Japan, China, South Korea, Germany, Mexico) — supply concentration, by dollars or by units.
- The two robot categories separately — multipurpose robots (HS-10 8479500000) vs lifting/handling robots (8428700000, from 2022-01 only).
- General imports vs imports-for-consumption at the same grain, value and units.
- Row-level detail records when
include_recordsis true. - Raw Census response-row evidence for any returned row-level citation.
Represented Facts
Census International Trade reports the monthly customs value (USD) AND unit count (number of robots) of U.S. imports of industrial robots — HS-10 8479500000 'INDUSTRIAL ROBOTS, NESOI' (multipurpose) and 8428700000 'INDUSTRIAL ROBOTS FOR LIFTING, HANDLING, LOADING OR UNLOADING' (created by HS 2022; no data before 2022-01) — by country of origin, as general imports and imports-for-consumption, served verbatim and citedCensus reports these imports across overlapping country GROUPINGS (ASIA, APEC, EU, OECD, ASEAN, the continents) and an all-countries TOTAL; the groupings overlap each other and the countries, so they are never summed — the served TOTAL is the only national figure
Data Point Contract
- Data point:
robotics.trade - Product spec:
blocks/robotics_trade/card.md - Grain:
commodity_country_monthly - Source basis:
trade.census.intltrade_robotics_hs - Represented fact: Census International Trade reports the monthly customs value (USD) AND unit count (number of robots) of U.S. IMPORTS of industrial robots under the nomenclature's only two robot-specific codes — HS-10 8479500000 "INDUSTRIAL ROBOTS, NESOI" (multipurpose: welding/assembly arms, AMRs) and 8428700000 "INDUSTRIAL ROBOTS FOR LIFTING, HANDLING, LOADING OR UNLOADING, NESOI" (created by HS 2022, carved from ex-8428.90; NO data exists under it before 2022-01 — a structural absence, never a zero) — by country of origin and as Census's own published country GROUPINGS and TOTAL. Served as four series exactly as Census publishes: general imports and imports-for-consumption, each in value and units. Each row is served verbatim + cited; the country groupings overlap and are never summed; the two commodity codes are disjoint but a cross-code series changes composition at 2022-01.
Does not answer:
the installed base or operational stock of robots in US factories — this is the monthly import FLOW (the stock series is IFR World Robotics, proprietary; the official adoption series is the Census Industrial Robotic Equipment experimental product — the vertical's named block 2)robots by maker, model, or type beyond the two-code split — no vendor series, no humanoid breakout (customs-classified — AMRs fall under 8479.50 per CBP N335129; a humanoid DEMONSTRATION unit can classify under 9023 per CBP H050116, outside these codes)domestic robot production — imports only; there is no robotics NAICS industry (robot manufacturing hides inside NAICS 333998, a grab-bag we refuse to mislabel)summing across country rows — Census's groupings (ASIA, APEC, EU, OECD, ASEAN, the continents) OVERLAP each other and the individual countries; the served "TOTAL FOR ALL COUNTRIES" (country_level=total) is the only valid total, never a sum the agent computesa pre-2022 reading of 8428700000 — the code was created by HS 2022; earlier lifting/handling robots sat inside ex-8428.90 (not served here); a cross-code time series changes composition at 2022-01landed / CIF / duty-paid cost — general imports value is customs value; CIF, charges, and calculated duty are separate Census fields not served herewhich U.S. factory, state, county, or operator receives the robots — country is the country of ORIGIN (Census attribution), not a U.S. destination; this series carries no U.S. geographic anchorexports (this block serves IMPORTS only) or trade in non-robot goodsfinality (recent months are preliminary and revised in later Census releases)
REST Surface
GET /v1/healthGET /v1/capabilitiesGET /v1/robotics/trade/schemaPOST /v1/robotics/trade/queryPOST /v1/evidence/source-row
MCP Surface
list_capabilities_v1describe_robotics_trade_v1query_robotics_trade_v1get_source_evidence_v1
Local MCP Setup
Some MCP clients launch servers from the user's home directory or ignore a configured cwd. Use uv run --directory so the server always starts from the repository project.
{
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/OSINT",
"python",
"-m",
"core.mcp_server"
]
}
Leave EXASCALE_PARQUET_BASE / EXASCALE_RAW_BASE unset: the one server hosts every data point's tools, and with no override it resolves each block's promoted snapshots and raw archive from the repository layout. Setting either env var points ALL tools at one directory — a per-block path breaks every other block's tools. They exist only for single-source sandboxes and tests.
Request Schema
Filters:
as_ofcommoditycountrycty_codecountry_leveldata_monthdata_month_fromdata_month_toyear
Input field semantics:
| Field | Answer Label | Source Field | Semantics | Definition | Counting Definition |
|---|---|---|---|---|---|
quantity_unit |
quantity unit of measure | quantity_unit |
census_intltrade_unit_qy1 | Census's own UNIT_QY1 code on the cited row — pinned to 'NO' (number of units) by the gate's SA-UNIT check, so the quantity series always means a count of robots. Served on DETAIL records. | A unit label, not a number — it qualifies general_quantity_units / consumption_quantity_units; never aggregated. |
Group by:
commoditycountrycty_codecountry_leveldata_monthyear
Date range parameters:
data_month_fromdata_month_to
Controls:
include_recordsinclude_evidencelimitorder_bytop_norderrollup_other
Ranking (how order_by / top_n / order join — order_by ranks groups by a metric, never a group_by dimension; top_n needs both a group_by and an order_by):
{
"no_ranking": "Omit order_by and top_n to return all groups in group-key order.",
"order": {
"default": "desc",
"valid_values": [
"desc",
"asc"
]
},
"order_by": {
"accepts": "one of output.metrics",
"note": "Ranks the groups by a metric (a measure). Not a group_by dimension \u2014 rows already come back grouped by each group_by field.",
"requires": [
"group_by"
],
"valid_values": [
"general_value_usd",
"consumption_value_usd",
"general_quantity_units",
"consumption_quantity_units",
"source_record_count"
]
},
"top_n": {
"note": "Keeps the top N groups by order_by; the rest fold into one (other) remainder (additive metrics sum into it, non-additive ones are nulled) so the result still reconciles to summary.totals.",
"requires": [
"group_by",
"order_by"
],
"type": "positive integer"
}
}
Output Schema
Aggregate metrics:
general_value_usdconsumption_value_usdgeneral_quantity_unitsconsumption_quantity_unitssource_record_count
Metric groups:
{
"consumption_quantity_units": [
"consumption_quantity_units"
],
"consumption_value_usd": [
"consumption_value_usd"
],
"general_quantity_units": [
"general_quantity_units"
],
"general_value_usd": [
"general_value_usd"
],
"records": [
"source_record_count"
]
}
Response summary fields:
group_counttotals
Accepted fact policy:
- Query responses contain accepted, gate-passed facts only.
- Gate, monitor, and audit quality signals are internal controls, not agent-facing answer caveats.
- If a source snapshot is not fit to serve, the source must fail closed before it reaches this API.
Metric metadata:
| Metric | Category | Unit | Aggregation | Additive Across Groups | Authoritative Total | Definition |
|---|---|---|---|---|---|---|
general_value_usd |
general_value_usd | USD | sum | false | summary.totals.general_value_usd |
The total customs value (USD) of GENERAL imports of industrial robots (HS-10 8479500000 + 8428700000) for the country row in scope, exactly as the U.S. Census Bureau publishes it (GEN_VAL_MO). |
consumption_value_usd |
consumption_value_usd | USD | sum | false | summary.totals.consumption_value_usd |
The total customs value (USD) of imports FOR CONSUMPTION of industrial robots for the country row in scope, exactly as Census publishes it (CON_VAL_MO). |
general_quantity_units |
general_quantity_units | count | sum | false | summary.totals.general_quantity_units |
The number of industrial robots in GENERAL imports for the country row in scope, exactly as Census publishes it (GEN_QY1_MO; unit of measure 'NO' = number of units). |
consumption_quantity_units |
consumption_quantity_units | count | sum | false | summary.totals.consumption_quantity_units |
The number of industrial robots in imports FOR CONSUMPTION for the country row in scope, exactly as Census publishes it (CON_QY1_MO; unit of measure 'NO' = number of units). |
source_record_count |
records | count | count source records | true | summary.totals.source_record_count |
Count of normalized source records (commodity × country × month rows) contributing to the current result scope. |
Rollup rules:
summary.totals.<metric>is the authoritative total for the full matched query.- Grouped row metrics may be summed only when
additive_across_groupsistrue. - Do not sum grouped values for these non-additive metrics:
general_value_usd,consumption_value_usd,general_quantity_units,consumption_quantity_units.
Detail record fields returned when include_records is true:
source_idsheet_namesource_record_keyreport_periodcommoditycommodity_desccty_codecountrycountry_leveldata_monthyeargeneral_value_usdconsumption_value_usdgeneral_quantity_unitsconsumption_quantity_unitsquantity_unitsource_row_numberas_ofraw_file_sha256citation
Row-level citation fields:
source_idsource_urlsource_filesheetsource_rowraw_file_sha256as_of
Aggregate citation fields:
source_idpublishersource_urlsource_fileraw_file_sha256as_ofsource_rows_countsource_rows_sampleverifylineage_filter
Codebooks
| Field | Coverage | Codes | Examples | Note |
|---|---|---|---|---|
country_level |
every served row is exactly one level | 3 | total = All countries (the published U.S. total), grouping = A Census country grouping / continent (overlaps — never summed), country = An individual country of origin |
total = the all-countries TOTAL (CTY_CODE '-'); grouping = a Census bloc/continent (ASIA, APEC, EU, OECD, ASEAN, the ' |
commodity |
the nomenclature's two robot-specific codes, at HS-10 (where Census publishes quantity) | 2 | 8479500000 = Industrial robots, NESOI (multipurpose — welding/assembly arms, AMRs); continuous history, 8428700000 = Industrial robots for lifting, handling, loading or unloading; from 2022-01 only (HS 2022) |
The two codes are DISJOINT — adding them does not double-count — but 8428700000 was created by HS 2022 (carved from ex-8428.90) and has NO data before 2022-01, so a combined time series changes composition at that boundary (a commodity_scope note flags it). No maker, model, or humanoid breakdown exists at any HS level; AMRs classify under 8479500000 (CBP ruling N335129). |
The complete machine-readable codebooks are included in capability-schema.json.
Checked Examples
| Agent question | Request params | Checked output |
|---|---|---|
| Which countries did the US import the most multipurpose industrial robots from in 2026-04, by unit count? | {"commodity": "8479500000", "country_level": "country", "data_month": "2026-04-01", "group_by": ["country"], "order_by": "general_quantity_units", "top_n": 5} |
robot-imports-top-source-countries-by-count.json |
| How many industrial robots (and at what value) did the US import each month in early 2026, per robot category? | {"country_level": "total", "data_month_from": "2026-02-01", "data_month_to": "2026-04-01", "group_by": ["data_month", "commodity"]} |
robot-imports-national-total-monthly.json |
| How did US imports of lifting/handling industrial robots from Japan trend in early 2026? | {"commodity": "8428700000", "country": "JAPAN", "data_month_from": "2026-02-01", "data_month_to": "2026-04-01", "group_by": ["data_month"]} |
robot-imports-japan-monthly.json |
| Return one Japan robot-import record — value and robot count — with a row-level citation. | {"commodity": "8428700000", "country": "JAPAN", "data_month": "2026-04-01", "include_records": true, "limit": 1} |
robot-imports-detail-with-citation.json |
| Verify the raw workbook row behind a returned citation | citations[ref].verify (aggregate) or records[0].citation (detail) |
source-row-evidence.json |
| Dogfood the tool sequence as an agent | list -> describe -> query -> evidence |
agent-dogfood-transcript.json |
The checked schema output is capability-schema.json.
Agent Workflow
- Call
list_capabilities_v1and selectrobotics.trade. - Call
describe_robotics_trade_v1to inspect valid filters, groupings, metrics, and citation fields. - Call
query_robotics_trade_v1with bounded JSON params. - If the answer needs proof, pass a returned row-level
citationobject toget_source_evidence_v1. - Answer with the resolved
as_ofand relevant citations. Present returned metrics as authoritative for their declared source, snapshot, grain, and aggregation.