Robotics Adoption (share of plants using robots, workers exposed, robotics capex) API v1
Generated from
core.contract.describe_robotics_adoption_v1()and checked fixture-backed examples. Do not hand-edit the example JSON files.
Capability
- Capability:
robotics.adoption - Primitive:
query_robotics_adoption_v1 - Status:
available - Current source:
robotics.census.robotic_equipment - Source publisher: U.S. Census Bureau
- Snapshot behavior:
as_of = latestresolves to an exact snapshot date in every response.
What It Can Answer
- The share of US manufacturing plants using industrial robots — nationally, by state, by industry, by plant size — the only official installed-base adoption series.
- The share of manufacturing employees working at plants with robots, at the same grains.
- Robotics capital expenditures ($1000) by industry, state, and plant size.
- Each edition on its own basis (ASM 2018-2021 sample; 2022 Economic Census) — the coverage break named, never spliced.
- Row-level detail records when
include_recordsis true (incl. suppression codes and (s) flags). - Raw Census workbook-cell evidence for any returned row-level citation.
Represented Facts
The Census Industrial Robotic Equipment product (experimental — the first official federal robotics-adoption statistics) reports the percent of manufacturing plants with industrial robots, the percent of manufacturing employees at plants with robots, and robotics capital expenditures ($1000) by NAICS industry, state, and plant size, in two editions (ASM 2018-2021 and the 2022 Economic Census), served verbatim and cited to the exact workbook cell-groupThe two editions measure different coverage universes (the 2022 Economic Census reaches small plants the ASM sample does not — US plants-with-robots 12.1% ASM-2021 vs 6.4% EC-2022), so editions are compared, never spliced into one series (PD-066)
Data Point Contract
- Data point:
robotics.adoption - Product spec:
blocks/robotics_adoption/card.md - Grain:
table_cell_year - Source basis:
robotics.census.robotic_equipment - Represented fact: The U.S. Census Bureau's Industrial Robotic Equipment product — the FIRST official federal statistics on robotics ADOPTION, an experimental data product (Census's own label, carried verbatim) — served as-reported from its two edition workbooks: the 2018-2021 Annual Survey of Manufactures edition and the 2022 Economic Census edition. One atom per (edition, table, axis row, data year): the percent of manufacturing plants WITH industrial robots and the percent of manufacturing employees working at plants with robots (published as FRACTIONS of 1, e.g. 0.121 = 12.1% — served exactly as published), Census's demeaned (industry-mix-adjusted) variants and the without-robots complement, and capital expenditures for industrial robotic equipment in thousands of dollars — each by manufacturing industry (NAICS 2/3-digit, the edition's OWN vintage: 2017 NAICS in the ASM edition, 2022 NAICS in the EC edition, declared by each file's own header and never recoded, PD-049), by state (a real
stateanchor derived from the published state names), and by plant-size band (verbatim). Standard errors ride as detail fields. Suppression is three-state (PD-048): aD/S/Acell is a null value carrying its verbatim letter (decoded by the file's own footnote codebook), and an(s)-flagged estimate (standard error over 40% of the value) is served WITH its flag, never silently. THE ENGRAVED BOUNDARY (PD-066): the two editions are NEVER spliced into one time series — the 2022 Economic Census reaches the small-plant universe the ASM sample does not (US plants-with-robots reads 12.1% in ASM-2021 vs 6.4% in EC-2022 — a COVERAGE change, not a collapse), soeditionis a served dimension and a scope spanning both editions without grouping by edition carries an edition_scope note. Percents are intensive (averaged / min'd / max'd over a scope, never summed); capex sums undershoot below the published totals wherever suppression bites (the published United States / all-manufacturing rows are the totals). Adoption is the INSTALLED-BASE reading; the import flow is robotics.trade.
Does not answer:
a single spliced 2018-2022 trend (the EC-2022 edition reaches the small-plant universe the ASM sample does not — 12.1% vs 6.4% is a coverage change; cross-edition scopes carry an edition_scope note and editions are compared, never chained) — PD-066robot COUNTS or the number of robots installed (the product measures plant adoption shares and capex, not units; the import unit-count series is robotics.trade)robot imports or the border flow (robotics.trade)non-manufacturing robot use (the product surveys manufacturing plants only)a sum of adoption percents (intensive shares — averaged/min'd/max'd over a scope, never summed)capex totals rebuilt from parts (suppression makes partial sums undershoot; the published United States / all-manufacturing rows are the totals)post-2022 adoption (no later edition exists; a new edition is a WATCH item, never extrapolated)official-statistics certainty (an EXPERIMENTAL Census product — its own quality caveat is carried verbatim)
REST Surface
GET /v1/healthGET /v1/capabilitiesGET /v1/robotics/adoption/schemaPOST /v1/robotics/adoption/queryPOST /v1/evidence/source-row
MCP Surface
list_capabilities_v1describe_robotics_adoption_v1query_robotics_adoption_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_ofeditiontablenaics_codenaics_vintagegeo_area_namestateplant_sizedata_yearreport_period
Input field semantics:
| Field | Answer Label | Source Field | Semantics | Definition | Counting Definition |
|---|---|---|---|---|---|
edition |
product edition | edition |
census_robotic_equipment_edition | asm_2018_2021 (Annual Survey of Manufactures sample, annual 2018-2021) or ec_2022 (2022 Economic Census — reaches the small-plant universe the ASM sample does not). The editions are compared, never chained into one trend (PD-066). | A coverage-universe label — the load-bearing scope dimension; cross-edition scopes carry an edition_scope note. |
naics_vintage |
NAICS codebook vintage | naics_vintage |
naics_vintage_pin | Declared by each edition's own axis header (2017 NAICS in the ASM edition, 2022 NAICS in the EC edition) and served as-is — never recoded across vintages (PD-049). | A codebook label, not a number. |
Group by:
editiontablenaics_codenaics_titlestateplant_sizedata_year
Date range parameters:
report_period_fromreport_period_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": [
"avg_pct_plants_with_robots",
"min_pct_plants_with_robots",
"max_pct_plants_with_robots",
"avg_pct_employees_exposed",
"min_pct_employees_exposed",
"max_pct_employees_exposed",
"capex_thousand_usd",
"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:
avg_pct_plants_with_robotsmin_pct_plants_with_robotsmax_pct_plants_with_robotsavg_pct_employees_exposedmin_pct_employees_exposedmax_pct_employees_exposedcapex_thousand_usdsource_record_count
Metric groups:
{
"capex": [
"capex_thousand_usd"
],
"pct_employees_exposed": [
"avg_pct_employees_exposed",
"min_pct_employees_exposed",
"max_pct_employees_exposed"
],
"pct_plants_with_robots": [
"avg_pct_plants_with_robots",
"min_pct_plants_with_robots",
"max_pct_plants_with_robots"
],
"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 |
|---|---|---|---|---|---|---|
avg_pct_plants_with_robots |
pct_plants_with_robots | percent | avg | false | summary.totals.avg_pct_plants_with_robots |
The share of manufacturing plants with industrial robots (a fraction of 1), exactly as the Census Industrial Robotic Equipment product publishes it, aggregated over the scope. |
min_pct_plants_with_robots |
pct_plants_with_robots | percent | min | false | summary.totals.min_pct_plants_with_robots |
The share of manufacturing plants with industrial robots (a fraction of 1), exactly as the Census Industrial Robotic Equipment product publishes it, aggregated over the scope. |
max_pct_plants_with_robots |
pct_plants_with_robots | percent | max | false | summary.totals.max_pct_plants_with_robots |
The share of manufacturing plants with industrial robots (a fraction of 1), exactly as the Census Industrial Robotic Equipment product publishes it, aggregated over the scope. |
avg_pct_employees_exposed |
pct_employees_exposed | percent | avg | false | summary.totals.avg_pct_employees_exposed |
The share of manufacturing employees working at plants with industrial robots (a fraction of 1), exactly as published, aggregated over the scope. |
min_pct_employees_exposed |
pct_employees_exposed | percent | min | false | summary.totals.min_pct_employees_exposed |
The share of manufacturing employees working at plants with industrial robots (a fraction of 1), exactly as published, aggregated over the scope. |
max_pct_employees_exposed |
pct_employees_exposed | percent | max | false | summary.totals.max_pct_employees_exposed |
The share of manufacturing employees working at plants with industrial robots (a fraction of 1), exactly as published, aggregated over the scope. |
capex_thousand_usd |
capex | thousand USD | sum | false | summary.totals.capex_thousand_usd |
Capital expenditures for industrial robotic equipment, in thousands of dollars, exactly as published, summed over the scope. |
source_record_count |
records | count | count source records | true | summary.totals.source_record_count |
Count of normalized observations (edition × table × axis row × year) 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:
avg_pct_plants_with_robots,min_pct_plants_with_robots,max_pct_plants_with_robots,avg_pct_employees_exposed,min_pct_employees_exposed,max_pct_employees_exposed,capex_thousand_usd.
Detail record fields returned when include_records is true:
source_ideditionedition_sourcetablenaics_codenaics_titlenaics_vintagegeo_area_namestateplant_sizesource_record_keypct_plants_with_robotspct_plants_with_robots_codepct_plants_with_robots_flagged_spct_employees_exposedpct_employees_exposed_codepct_employees_exposed_flagged_spct_plants_without_robotspct_plants_without_robots_codepct_plants_without_robots_flagged_sdemeaned_pct_plants_with_robotsdemeaned_pct_plants_with_robots_codedemeaned_pct_plants_with_robots_flagged_sdemeaned_pct_employees_exposeddemeaned_pct_employees_exposed_codedemeaned_pct_employees_exposed_flagged_scapex_thousand_usdcapex_thousand_usd_codecapex_thousand_usd_flagged_sse_pct_plantsse_pct_plants_codese_pct_plants_flagged_sse_pct_employeesse_pct_employees_codese_pct_employees_flagged_srse_capex_pctrse_capex_pct_coderse_capex_pct_flagged_sdata_yearreport_periodsource_row_numberas_ofraw_file_sha256citation
Row-level citation fields:
source_idsource_urlsource_filesheetsource_rowdata_yearraw_file_sha256as_of
Aggregate citation fields:
source_idpublishersource_urlsource_fileraw_file_sha256as_ofsource_rows_countsource_rows_sampleverifylineage_filter
Codebooks
| Field | Coverage | Codes | Examples | Note |
|---|---|---|---|---|
edition |
every served observation carries exactly one edition | 2 | asm_2018_2021 = Annual Survey of Manufactures edition — annual 2018-2021, sample of larger plants; 2017 NAICS, ec_2022 = 2022 Economic Census edition — census-scope incl. small plants; 2022 NAICS; released 2025-08 |
The load-bearing scope dimension: the two editions measure DIFFERENT coverage universes and are compared, never chained into one trend (PD-066). A scope spanning both without grouping by edition carries an edition_scope note. |
suppression |
any published cell can carry one | 4 | D = Withheld to avoid disclosing data of individual companies, S = Withheld because estimate did not meet publication standards, A = Not available / not applicable (file footnote), (s) = Estimate published; standard error exceeds 40% of the value (flag, not a withholding) |
A lettered cell is a null VALUE carrying its verbatim letter (PD-048 three-state — never a zero); an (s)-flagged estimate is published but its standard error exceeds 40% of the value (served with the flag, never silently). |
The complete machine-readable codebooks are included in capability-schema.json.
Checked Examples
| Agent question | Request params | Checked output |
|---|---|---|
| Which states have the highest share of manufacturing plants using robots (2022 census)? | {"edition": "ec_2022", "group_by": ["state"], "order_by": "avg_pct_plants_with_robots", "table": "Percent of... Geo", "top_n": 10} |
most-automated-states.json |
| How does robot adoption differ by plant size? | {"edition": "ec_2022", "group_by": ["plant_size"], "table": "Robot adoption and plant size"} |
adoption-by-plant-size.json |
| Show the national robot-adoption row with its full record and citation. | {"data_year": 2022, "geo_area_name": "United States", "include_records": true, "limit": 1, "table": "Percent of... Geo"} |
adoption-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.adoption. - Call
describe_robotics_adoption_v1to inspect valid filters, groupings, metrics, and citation fields. - Call
query_robotics_adoption_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.