MCP 服务器

Primary Source Commodities

io.github.sawftware-apps/commodities-sh
数据与分析 金融与投资 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Provides primary-source commodity prices, inventories, positioning, fundamentals, spreads, FX data, release calendars, and rule-based sector snapshots.

calendar.get
Release Calendar
List EIA, USDA, and CFTC release calendar entries with cadence, typical Eastern time, and next-hint notes. Free discovery tool — call before scheduling agents around inventory or WASDE prints.
只读 幂等
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['events'], 'properties': {'events': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'source', 'cadence', 'typical_time_et', 'next_hint', 'notes'], 'properties': {'id': {'type': 'string', 'description': 'Event id'}, 'name': {'type': 'string', 'description': 'Event name'}, 'notes': {'type': 'string', 'description': 'Additional notes'}, 'source': {'enum': ['EIA', 'USDA', 'CFTC'], 'type': 'string', 'description': 'Publishing agency'}, 'cadence': {'type': 'string', 'description': 'Release cadence'}, 'next_hint': {'type': 'string', 'description': 'Hint for the next expected release'}, 'typical_time_et': {'type': 'string', 'description': 'Typical release time in US/Eastern'}}}, 'description': 'Upcoming / recurring release events'}}}
catalog.list
List Instruments
List every commodity instrument in the catalog with sector, unit, primary source, and freshness metadata. Call this first to discover valid codes before price.latest or inventory.get. Free discovery tool — no payment required.
只读 幂等
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['instruments'], 'properties': {'instruments': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'name', 'sector', 'unit', 'primary_series_id', 'primary_source', 'freshness_class', 'license_tag'], 'properties': {'code': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'name': {'type': 'string', 'description': 'Display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'venue': {'type': 'string', 'description': 'Trading venue when known'}, 'sector': {'enum': ['energy', 'metals', 'ags', 'fx'], 'type': 'string', 'description': 'Sector grouping'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'primary_source': {'type': 'string', 'description': 'Primary source name, e.g. EIA or FRED'}, 'freshness_class': {'type': 'string', 'description': 'Expected freshness class'}, 'primary_series_id': {'type': 'string', 'description': 'Primary source series id'}, 'cot_commodity_hint': {'type': 'string', 'description': 'CFTC commodity hint when applicable'}}}, 'description': 'Instrument registry rows'}}}
decision.get
Decision Pack
Build a deterministic decision pack for energy, metals, ags, or all sectors. Returns method, signals with direction/rationale, an embedded snapshot, and a disclaimer — no ML model, rule-based only.
只读 幂等
输入模式
{'type': 'object', 'required': ['sector'], 'properties': {'sector': {'enum': ['energy', 'metals', 'ags', 'all'], 'type': 'string', 'description': 'Sector for the decision pack. Use all to bundle every sector.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['generated_at', 'method'], 'properties': {'method': {'type': 'string', 'description': 'Deterministic method identifier'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Present for single-sector packs'}, 'sectors': {'type': 'object', 'description': 'Present when sector=all'}, 'signals': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'direction', 'rationale'], 'properties': {'id': {'type': 'string'}, 'direction': {'type': 'string'}, 'rationale': {'type': 'string'}}}, 'description': 'Directional signals with rationale'}, 'snapshot': {'type': 'object', 'required': ['sector', 'as_of', 'prices', 'freshness_note'], 'properties': {'cot': {'type': 'array', 'items': {'type': 'object'}, 'description': 'COT positioning rows when relevant'}, 'as_of': {'type': 'string', 'description': 'Snapshot as-of timestamp'}, 'crush': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'wasde': {'type': 'object', 'description': 'WASDE payload when relevant'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Latest prices for the sector'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Sector covered by this snapshot'}, 'crack_321': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'inventory': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'Inventory points when relevant'}, 'export_sales': {'type': 'object', 'description': 'Export sales payload when relevant'}, 'crop_progress': {'type': 'object', 'description': 'Crop progress payload when relevant'}, 'freshness_note': {'type': 'string', 'description': 'Freshness summary note'}}}, 'disclaimer': {'type': 'string', 'description': 'Non-advice / methodology disclaimer'}, 'generated_at': {'type': 'string', 'description': 'ISO timestamp when the pack was generated'}, 'model_version': {'type': 'string', 'description': 'Always null for rule-based packs; reserved field'}}}
fundamentals.get
USDA/USGS Fundamentals
Fetch a fundamentals document: USDA WASDE, crop progress, export sales, or USGS mineral summaries. Choose kind based on the ags/metals question you are answering.
只读 幂等
输入模式
{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['wasde', 'crop_progress', 'export_sales', 'usgs'], 'type': 'string', 'description': 'Fundamentals report kind. Example: wasde for World Agricultural Supply and Demand Estimates.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['id', 'kind', 'as_of', 'observed_at', 'payload'], 'properties': {'id': {'type': 'string', 'description': 'Document id'}, 'kind': {'enum': ['wasde', 'crop_progress', 'export_sales', 'usgs'], 'type': 'string', 'description': 'Report kind echoed from the request'}, 'as_of': {'type': 'string', 'description': 'Report as-of date'}, 'payload': {'type': 'object', 'description': 'Kind-specific payload (quality, note, license_tag, freshness_class, and report fields)'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when retrieved'}}}
fx.latest
Latest FX Rate
Return the latest FX rate observation for a pair or FRED FX series. Useful alongside commodity prices when converting cash values across currencies.
只读 幂等
输入模式
{'type': 'object', 'required': ['pair'], 'properties': {'pair': {'type': 'string', 'description': 'FX pair or series id. Example: EURUSD, USDCNY, DTWEXBGS.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}
inventory.get
EIA Inventory
Fetch EIA weekly petroleum inventory levels. Omit series to list all latest inventory points, or pass a series key to get week-over-week change, vs-5y deviation, and a surprise label for that series.
只读 幂等
输入模式
{'type': 'object', 'properties': {'series': {'type': 'string', 'description': 'Optional EIA inventory series key. Omit to return all latest inventory rows. Example: crude_stocks.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'All latest inventory points when series is omitted'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average when series is provided'}, 'latest': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}, 'description': 'Latest point when a series key is provided'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change when series is provided'}, 'surprise_label': {'type': 'string', 'description': 'Surprise classification when series is provided'}}}
positioning.get
COT Positioning
Return the latest CFTC Commitments of Traders managed-money positioning for an instrument code. Includes long, short, net, and week-over-week net change with source URL.
只读 幂等
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Instrument code from catalog.list. Example: CL, NG, GC, ZC.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['id', 'instrument', 'report_date', 'commodity_name', 'mm_long', 'mm_short', 'mm_net', 'mm_net_change', 'source_url', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'COT row id'}, 'mm_net': {'type': 'number', 'description': 'Managed-money net contracts'}, 'mm_long': {'type': 'number', 'description': 'Managed-money long contracts'}, 'mm_short': {'type': 'number', 'description': 'Managed-money short contracts'}, 'instrument': {'type': 'string', 'description': 'Instrument code'}, 'source_url': {'type': 'string', 'description': 'CFTC source URL'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'report_date': {'type': 'string', 'description': 'CFTC report date'}, 'mm_net_change': {'type': 'number', 'description': 'Week-over-week change in managed-money net'}, 'commodity_name': {'type': 'string', 'description': 'CFTC commodity name'}}}
price.history
Price History
Return historical observations for an instrument code (up to 500 points). Use after price.latest when you need a short time series for the same code.
只读 幂等
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Instrument code from catalog.list. Example: CL, GC, ZC.'}, 'limit': {'type': 'number', 'description': 'Number of historical points to return. Max 500, default 60.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['instrument', 'series_id', 'count', 'data'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Historical observations, newest first or as stored'}, 'count': {'type': 'number', 'description': 'Number of points returned'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code'}}}
price.latest
Latest Price
Return the latest cash/fundies observation for one instrument code. Use catalog.list to discover codes such as CL, GC, or ZC. Response follows the shared observation contract with provenance and license tags.
只读 幂等
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Instrument code from catalog.list. Example: CL, GC, ZC.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}
snapshot.get
Sector Snapshot
Build a sector snapshot bundling prices, inventories, spreads, and related fundies for energy, metals, ags, or all sectors. Prefer this over calling many single-observation tools when you need a full sector picture.
只读 幂等
输入模式
{'type': 'object', 'required': ['sector'], 'properties': {'sector': {'enum': ['energy', 'metals', 'ags', 'all'], 'type': 'string', 'description': 'Sector to snapshot. Use all to receive energy, metals, and ags together.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['as_of'], 'properties': {'cot': {'type': 'array', 'items': {'type': 'object'}, 'description': 'COT rows when relevant'}, 'as_of': {'type': 'string', 'description': 'Snapshot as-of timestamp'}, 'crush': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'wasde': {'type': 'object', 'description': 'WASDE payload when relevant'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Latest prices for the sector'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Present for single-sector responses'}, 'sectors': {'type': 'object', 'properties': {'ags': {'type': 'object', 'required': ['sector', 'as_of', 'prices', 'freshness_note'], 'properties': {'cot': {'type': 'array', 'items': {'type': 'object'}, 'description': 'COT positioning rows when relevant'}, 'as_of': {'type': 'string', 'description': 'Snapshot as-of timestamp'}, 'crush': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'wasde': {'type': 'object', 'description': 'WASDE payload when relevant'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Latest prices for the sector'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Sector covered by this snapshot'}, 'crack_321': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'inventory': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'Inventory points when relevant'}, 'export_sales': {'type': 'object', 'description': 'Export sales payload when relevant'}, 'crop_progress': {'type': 'object', 'description': 'Crop progress payload when relevant'}, 'freshness_note': {'type': 'string', 'description': 'Freshness summary note'}}}, 'energy': {'type': 'object', 'required': ['sector', 'as_of', 'prices', 'freshness_note'], 'properties': {'cot': {'type': 'array', 'items': {'type': 'object'}, 'description': 'COT positioning rows when relevant'}, 'as_of': {'type': 'string', 'description': 'Snapshot as-of timestamp'}, 'crush': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'wasde': {'type': 'object', 'description': 'WASDE payload when relevant'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Latest prices for the sector'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Sector covered by this snapshot'}, 'crack_321': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'inventory': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'Inventory points when relevant'}, 'export_sales': {'type': 'object', 'description': 'Export sales payload when relevant'}, 'crop_progress': {'type': 'object', 'description': 'Crop progress payload when relevant'}, 'freshness_note': {'type': 'string', 'description': 'Freshness summary note'}}}, 'metals': {'type': 'object', 'required': ['sector', 'as_of', 'prices', 'freshness_note'], 'properties': {'cot': {'type': 'array', 'items': {'type': 'object'}, 'description': 'COT positioning rows when relevant'}, 'as_of': {'type': 'string', 'description': 'Snapshot as-of timestamp'}, 'crush': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'wasde': {'type': 'object', 'description': 'WASDE payload when relevant'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'description': 'Latest prices for the sector'}, 'sector': {'enum': ['energy', 'metals', 'ags'], 'type': 'string', 'description': 'Sector covered by this snapshot'}, 'crack_321': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'inventory': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'Inventory points when relevant'}, 'export_sales': {'type': 'object', 'description': 'Export sales payload when relevant'}, 'crop_progress': {'type': 'object', 'description': 'Crop progress payload when relevant'}, 'freshness_note': {'type': 'string', 'description': 'Freshness summary note'}}}}, 'description': 'Present when sector=all'}, 'crack_321': {'type': 'object', 'required': ['instrument', 'name', 'value', 'unit', 'as_of', 'observed_at', 'freshness_class', 'quality', 'derived', 'source', 'license_tag', 'provenance', 'series_id'], 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}, 'inventory': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'series_key', 'series_id', 'name', 'value', 'unit', 'as_of', 'observed_at'], 'properties': {'id': {'type': 'string', 'description': 'Inventory point id'}, 'name': {'type': 'string', 'description': 'Series display name'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'Report week as-of date'}, 'value': {'type': 'number', 'description': 'Latest inventory level'}, 'vs_5y': {'type': 'number', 'description': 'Deviation vs five-year average'}, 'avg_5y': {'type': 'number', 'description': 'Five-year average when known'}, 'series_id': {'type': 'string', 'description': 'EIA series id'}, 'prior_week': {'type': 'number', 'description': 'Prior-week level when known'}, 'series_key': {'type': 'string', 'description': 'Internal series key'}, 'wow_change': {'type': 'number', 'description': 'Week-over-week change'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}}}, 'description': 'Inventory rows when relevant'}, 'export_sales': {'type': 'object', 'description': 'Export sales when relevant'}, 'crop_progress': {'type': 'object', 'description': 'Crop progress when relevant'}, 'freshness_note': {'type': 'string', 'description': 'Freshness summary'}}}
spread.get
Derived Spread
Compute a derived spread observation: 3-2-1 crack, soybean crush, WTI-Brent basis, or calendar (calendar requires licensed curve data and may return available=false). Prefer crack/crush/basis for live derived values with formula and inputs.
只读 幂等
输入模式
{'type': 'object', 'required': ['type'], 'properties': {'root': {'type': 'string', 'description': 'Optional root symbol for calendar spreads. Example: CL. Ignored for crack/crush/basis.'}, 'type': {'enum': ['crack', 'crush', 'basis', 'calendar'], 'type': 'string', 'description': 'Spread type to compute. Example: crack for 3-2-1 gasoline/distillate crack.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Stable observation id'}, 'name': {'type': 'string', 'description': 'Human-readable instrument name'}, 'note': {'type': 'string', 'description': 'Explanation when unavailable or partially degraded'}, 'root': {'type': 'string', 'description': 'Calendar root when type=calendar'}, 'unit': {'type': 'string', 'description': 'Unit of measure'}, 'as_of': {'type': 'string', 'description': 'As-of date for the observation'}, 'value': {'type': 'number', 'description': 'Observed numeric value'}, 'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Input series ids when derived'}, 'source': {'type': 'object', 'required': ['name', 'series_id', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'series_id': {'type': 'string'}}, 'description': 'Primary source provenance'}, 'derived': {'type': 'boolean', 'description': 'True when value is derived'}, 'formula': {'type': 'string', 'description': 'Derivation formula when derived'}, 'quality': {'type': 'string', 'description': 'Data quality label'}, 'raw_hash': {'type': 'string', 'description': 'Hash of raw source payload'}, 'available': {'type': 'boolean', 'description': 'False when the spread cannot be computed'}, 'series_id': {'type': 'string', 'description': 'Underlying series id'}, 'instrument': {'type': 'string', 'description': 'Instrument code, e.g. CL'}, 'provenance': {'type': 'object', 'required': ['retrieved_at', 'cache_hit', 'cache_ttl_s'], 'properties': {'cache_hit': {'type': 'boolean'}, 'cache_ttl_s': {'type': 'number'}, 'retrieved_at': {'type': 'string'}}, 'description': 'Retrieval / cache provenance'}, 'license_tag': {'type': 'string', 'description': 'License / redistribution tag'}, 'observed_at': {'type': 'string', 'description': 'ISO timestamp when observed'}, 'legs_quality': {'type': 'array', 'items': {'type': 'object', 'required': ['instrument', 'quality'], 'properties': {'quality': {'type': 'string'}, 'instrument': {'type': 'string'}}}, 'description': 'Per-leg quality when inputs are mixed'}, 'freshness_class': {'type': 'string', 'description': 'Freshness class for the series'}}}
已添加
decision.get
2026年9月17日 12:52
已添加
calendar.get
2026年9月17日 12:52
已添加
snapshot.get
2026年9月17日 12:52
已添加
fundamentals.get
2026年9月17日 12:52
已添加
fx.latest
2026年9月17日 12:52
已添加
price.history
2026年9月17日 12:52
已添加
spread.get
2026年9月17日 12:52
已添加
positioning.get
2026年9月17日 12:52
已添加
inventory.get
2026年9月17日 12:52
已添加
price.latest
2026年9月17日 12:52
已添加
catalog.list
2026年9月17日 12:52