Docs API reference

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

What It Can Answer

Represented Facts

Data Point Contract

Does not answer:

REST Surface

MCP Surface

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:

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:

Date range parameters:

Controls:

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:

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:

Accepted fact policy:

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:

Detail record fields returned when include_records is true:

Row-level citation fields:

Aggregate citation fields:

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 'XXX' continents) that OVERLAPS other rows; country = an individual country of origin. The groupings overlap each other and the countries — never sum across rows; the served TOTAL is the only national figure.
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

  1. Call list_capabilities_v1 and select robotics.trade.
  2. Call describe_robotics_trade_v1 to inspect valid filters, groupings, metrics, and citation fields.
  3. Call query_robotics_trade_v1 with bounded JSON params.
  4. If the answer needs proof, pass a returned row-level citation object to get_source_evidence_v1.
  5. Answer with the resolved as_of and relevant citations. Present returned metrics as authoritative for their declared source, snapshot, grain, and aggregation.
Generated from the tested API contract. Compare with the live capability map ↗