AI Infrastructure Production (semiconductor output and utilization) API v1
Generated from
core.contract.describe_ai_infrastructure_production_v1()and checked fixture-backed examples. Do not hand-edit the example JSON files.
Capability
- Capability:
ai_infrastructure.production - Primitive:
query_ai_infrastructure_production_v1 - Status:
available - Current source:
production.fed.g17 - Source publisher: Federal Reserve Board
- Snapshot behavior:
as_of = latestresolves to an exact snapshot date in every response.
What It Can Answer
- Monthly industrial-production index (2017=100) for semiconductor & other electronic component manufacturing (NAICS 3344), SA or NSA, cited to the Fed's SDMX observation.
- Monthly capacity utilization (percent, seasonally adjusted) — how hot the domestic fabs and component plants run.
- The capacity index (2017=100) behind the utilization rate.
- The production / utilization trend over any window since 1972 (averages — an index is intensive, never summed).
- Row-level detail records when
include_recordsis true. - Raw Fed SDMX-observation evidence for any returned row-level citation.
Represented Facts
Fed G.17 reports the monthly industrial-production index (2017=100, seasonally adjusted and not adjusted) for semiconductor and other electronic component manufacturing (NAICS 3344) — the finest split G.17 publishes for this family, served verbatim and cited to the Board's SDMX observationFed G.17 reports monthly capacity utilization (percent) and the capacity index (2017=100) for the same industry, seasonally adjusted only; an index or a rate is intensive — averaged over a window, never summed
Data Point Contract
- Data point:
ai_infrastructure.production - Product spec:
blocks/ai_infrastructure_production/card.md - Grain:
series_monthly - Source basis:
production.fed.g17 - Represented fact: Fed G.17 (Industrial Production and Capacity Utilization) — the Board's monthly industrial-production index (2017=100, seasonally adjusted and not adjusted), capacity index, and capacity utilization (percent, seasonally adjusted) for SEMICONDUCTOR AND OTHER ELECTRONIC COMPONENT manufacturing (NAICS 3344), served exactly as the Board publishes them. NAICS 3344 is the finest split G.17 publishes for this family — broader than semiconductors alone, and NOT the same slice as QCEW's 334413. Public domain; cited to the Board.
Does not answer:
semiconductors ALONE — NAICS 3344 includes other electronic components; the Fed publishes no finer split in G.17 (and it is NOT the same slice as QCEW's 334413)dollars, units shipped, or physical output volume (an index, 2017=100, is relative to the 2017 average — never a dollar or unit count)summing an index or a utilization rate across months or series (intensive readings; a multi-month figure is an average, and the Fed publishes its own quarterly/annual series we do not serve)not-seasonally-adjusted capacity or utilization (the Fed publishes capacity and utilization seasonally adjusted only — their NSA cells are structurally absent, not suppressed)any other G.17 industry, market group, or aggregate (total industry, computers NAICS 3341, the "semiconductors, printed circuit boards, and other" market group, …) — this block pins NAICS 3344which fab, company, or state is producing (a national industry aggregate with no place or operator anchor)WHY utilization moved (no editorializing; the block serves the Board's published readings)
REST Surface
GET /v1/healthGET /v1/capabilitiesGET /v1/ai-infrastructure/production/schemaPOST /v1/ai-infrastructure/production/queryPOST /v1/evidence/source-row
MCP Surface
list_capabilities_v1describe_ai_infrastructure_production_v1query_ai_infrastructure_production_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_ofseries_nameseries_kindbasisdata_monthdata_month_fromdata_month_toyear
Input field semantics:
| Field | Answer Label | Source Field | Semantics | Definition | Counting Definition |
|---|---|---|---|---|---|
unit_label |
series unit (verbatim) | unit_label |
fed_g17_sdmx_unit_attribute | The Fed's verbatim SDMX UNIT attribute for the record's series — 'Index:_2017_100' or 'Percentage'. | A per-series constant label — context only, never aggregated. |
obs_status |
observation status (verbatim) | obs_status |
fed_g17_sdmx_obs_status | The Fed's verbatim per-observation status flag; 'A' is the only code the Board has published on these series (the gate fails closed on any new code). | A per-observation flag — context only, never aggregated. |
time_period_label |
Fed time period (verbatim) | time_period_label |
fed_g17_sdmx_time_period | The Fed's verbatim TIME_PERIOD stamp — a month-END date (e.g. '2026-05-31'); data_month is the same month normalized to first-of-month. | A per-observation label — context only, never aggregated. |
Group by:
series_nameseries_kindbasisdata_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": [
"avg_ip_index",
"min_ip_index",
"max_ip_index",
"avg_capacity_index",
"min_capacity_index",
"max_capacity_index",
"avg_capacity_utilization_pct",
"min_capacity_utilization_pct",
"max_capacity_utilization_pct",
"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_ip_indexmin_ip_indexmax_ip_indexavg_capacity_indexmin_capacity_indexmax_capacity_indexavg_capacity_utilization_pctmin_capacity_utilization_pctmax_capacity_utilization_pctsource_record_count
Metric groups:
{
"capacity_index": [
"avg_capacity_index",
"min_capacity_index",
"max_capacity_index"
],
"capacity_utilization": [
"avg_capacity_utilization_pct",
"min_capacity_utilization_pct",
"max_capacity_utilization_pct"
],
"production_index": [
"avg_ip_index",
"min_ip_index",
"max_ip_index"
],
"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_ip_index |
production_index | index (2017=100) | average | false | summary.totals.avg_ip_index |
The average of the Fed's published monthly industrial-production index (NAICS 3344) over the result scope. |
min_ip_index |
production_index | index (2017=100) | minimum | false | summary.totals.min_ip_index |
The minimum of the Fed's published monthly industrial-production index (NAICS 3344) over the result scope. |
max_ip_index |
production_index | index (2017=100) | maximum | false | summary.totals.max_ip_index |
The maximum of the Fed's published monthly industrial-production index (NAICS 3344) over the result scope. |
avg_capacity_index |
capacity_index | index (2017=100) | average | false | summary.totals.avg_capacity_index |
The average of the Fed's published monthly capacity index (NAICS 3344) over the result scope. |
min_capacity_index |
capacity_index | index (2017=100) | minimum | false | summary.totals.min_capacity_index |
The minimum of the Fed's published monthly capacity index (NAICS 3344) over the result scope. |
max_capacity_index |
capacity_index | index (2017=100) | maximum | false | summary.totals.max_capacity_index |
The maximum of the Fed's published monthly capacity index (NAICS 3344) over the result scope. |
avg_capacity_utilization_pct |
capacity_utilization | percent | average | false | summary.totals.avg_capacity_utilization_pct |
The average of the Fed's published monthly capacity utilization (NAICS 3344) over the result scope. |
min_capacity_utilization_pct |
capacity_utilization | percent | minimum | false | summary.totals.min_capacity_utilization_pct |
The minimum of the Fed's published monthly capacity utilization (NAICS 3344) over the result scope. |
max_capacity_utilization_pct |
capacity_utilization | percent | maximum | false | summary.totals.max_capacity_utilization_pct |
The maximum of the Fed's published monthly capacity utilization (NAICS 3344) over the result scope. |
source_record_count |
records | count | count source records | true | summary.totals.source_record_count |
Count of normalized source observations (series × month) 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_ip_index,min_ip_index,max_ip_index,avg_capacity_index,min_capacity_index,max_capacity_index,avg_capacity_utilization_pct,min_capacity_utilization_pct,max_capacity_utilization_pct.
Detail record fields returned when include_records is true:
source_idseries_namesource_record_keyreport_periodseries_kindbasisdata_monthyeartime_period_labelobs_statusunit_labelip_indexcapacity_indexcapacity_utilization_pctsource_row_numberas_ofraw_file_sha256citation
Row-level citation fields:
source_idsource_urlsource_filesheetsource_rowtime_periodraw_file_sha256as_of
Aggregate citation fields:
source_idpublishersource_urlsource_fileraw_file_sha256as_ofsource_rows_countsource_rows_sampleverifylineage_filter
Codebooks
| Field | Coverage | Codes | Examples | Note |
|---|---|---|---|---|
series_name |
the four pinned NAICS-3344 series (the finest split G.17 publishes for this family) | 4 | IP.G3344.S = Industrial-production index, seasonally adjusted (2017=100), IP.G3344.N = Industrial-production index, not seasonally adjusted (2017=100), CAPUTL.G3344.S = Capacity utilization, seasonally adjusted (percent), CAP.G3344.S = Capacity index, seasonally adjusted (2017=100) |
IP. is the industrial-production index (2017=100); CAPUTL. is capacity utilization (percent); CAP.* is the capacity index. Suffix .S = seasonally adjusted, .N = not adjusted. The Fed publishes NO NSA capacity/utilization series. |
series_kind |
every served row is exactly one kind | 3 | ip = Industrial-production index (2017=100), capacity_utilization = Capacity utilization (percent, SA only), capacity = Capacity index (2017=100, SA only) |
ip = production index; capacity_utilization = percent of capacity in use; capacity = the capacity index behind the rate. |
basis |
IP on both bases; capacity/utilization seasonally adjusted only | 2 | seasonally_adjusted = Seasonally adjusted, not_seasonally_adjusted = Not seasonally adjusted (IP only) |
Two readings of the same industry — never blend them: a scope averaging the IP index across both bases without grouping by basis carries a production_aggregation note. |
The complete machine-readable codebooks are included in capability-schema.json.
Checked Examples
| Agent question | Request params | Checked output |
|---|---|---|
| How hot are US semiconductor & electronic-component plants running month by month? | {"data_month_from": "2025-06-01", "data_month_to": "2026-05-01", "group_by": ["data_month"], "series_kind": "capacity_utilization"} |
semiconductor-capacity-utilization-trend.json |
| What is the latest US semiconductor & electronic-component production index (seasonally adjusted)? | {"data_month": "2026-05-01", "group_by": ["data_month"], "series_name": "IP.G3344.S"} |
semiconductor-production-index-latest.json |
| How has the semiconductor production index averaged by year recently? | {"basis": "seasonally_adjusted", "data_month_from": "2024-01-01", "group_by": ["year"], "series_kind": "ip"} |
semiconductor-production-by-year.json |
| Return one capacity-utilization record with a row-level citation. | {"data_month": "2026-05-01", "include_records": true, "limit": 1, "series_kind": "capacity_utilization"} |
semiconductor-production-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 selectai_infrastructure.production. - Call
describe_ai_infrastructure_production_v1to inspect valid filters, groupings, metrics, and citation fields. - Call
query_ai_infrastructure_production_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.