Skip to main content
Glama

get_cftc_cot_reports

Read-only

Returns CFTC Commitments of Traders (COT) report rows — weekly aggregated futures + options-on-futures positioning by trader class. The COT report is the macro positioning dataset for U.S. futures markets. Released every Friday 3:30 PM ET for the prior Tuesday close. Trader classes (the CFTC's Legacy report, futures and options combined): - Non-commercial (large speculators — hedge funds, CTAs) - Commercial (hedgers — producers, swap dealers) - Non-reportable (small speculators) Every row carries report='legacy' and variant='combined' (futures and options together). Killer query patterns: - Macro positioning snapshot this week: latest_only=true (gives the latest report row for every contract in one query) - Large-spec extremes in S&P: commodity_name='S&P 500 STOCK INDEX' + sort_by='noncomm_net' + sort_order='desc' - Gold positioning history: commodity_name='GOLD' + since='2026-01-01' - Currency COT: contract_market_name substring 'YEN' / 'EURO' Source: publicreporting.cftc.gov/resource/jun7-fc8e.json, the CFTC's Legacy Futures-and-Options Combined report (Socrata API, free, unauthenticated); each row's source_url is that row's own query on it. Covers EVERY regulated U.S. futures + options- on-futures contract — agricultural commodities, metals, energy, financials, FX, crypto. Pure-publisher posture: raw positioning numbers, no derived sentiment scores. Key derived fields (computed from raw): noncomm_net (large-spec net), comm_net (hedger net), nonrept_net (small-spec net). Concentration fields show top-4 / top-8 trader net long/short concentration.

Input Schema

NameRequiredDescriptionDefault
idNoDirect doc lookup ({contract_code}-{YYYY-MM-DD}). Fastest path.
limitNoMax records. Default 50, max 500.
sinceNoInclusive lower bound on report_date (YYYY-MM-DD).
untilNoInclusive upper bound on report_date (YYYY-MM-DD).
sort_byNoSort key. Default: report_date. report_date, open_interest, noncomm_net, comm_net.
sort_orderNoDefault: desc.
latest_onlyNoWhen true, returns only the most recent report row per contract (one row per contract instead of weekly history).
commodity_nameNoExact commodity name from CFTC's catalog (e.g., 'S&P 500 STOCK INDEX', 'GOLD', 'CRUDE OIL', 'EURO FX').
contract_market_nameNoCase-insensitive substring on contract_market_name (e.g., 'S&P 500', 'GOLD', 'CRUDE OIL', 'JAPANESE YEN'); a needle of 3 characters or fewer matches WHOLE WORDS ('GAS' finds 'NAT GAS', not 'GASOLINE'). Applied client-side, within a bounded window.
cftc_contract_market_codeNoExact CFTC contract code (e.g., '13874A' = E-mini S&P 500, '088691' = Gold, '067651' = Crude Oil WTI).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / contract_market_name / description
      Previous value: -"Case-insensitive substring on contract_market_name (e.g., 'S&P 500', 'GOLD', 'CRUDE OIL', 'JAPANESE YEN'). Client-side filter."New value: +"Case-insensitive substring on contract_market_name (e.g., 'S&P 500', 'GOLD', 'CRUDE OIL', 'JAPANESE YEN'); a needle of 3 characters or fewer matches WHOLE WORDS ('GAS' finds 'NAT GAS', not 'GASOLINE'). Applied client-side, within a bounded window."
    • changedInput schema / properties / sort_by / description
      Previous value: -"Sort key. Default: report_date."New value: +"Sort key. Default: report_date. report_date, open_interest, noncomm_net, comm_net."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, open-world behavior, and the description adds substantial context beyond them: publication cadence (Friday 3:30 PM ET for the prior Tuesday close), the Socrata source endpoint and its free/unauthenticated access, the 'pure-publisher posture' (raw numbers, no derived sentiment), and the guaranteed report/variant values on every row.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with the core purpose in the first sentence, then organized into trader classes, query patterns, and source/field notes. It is on the verbose side — the source URL and publisher-posture sentences could be trimmed — but each block remains useful and skimmable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of characterizing return values, and it does: row shape (report='legacy', variant='combined'), the trader classes present, and the derived fields it computes. Combined with the source and cadence details, an agent has everything needed to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter syntax is already handled and the baseline is 3. The description goes further by explaining how parameters combine meaningfully (query patterns) and by decoding derived fields like noncomm_net/comm_net/nonrept_net and the concentration top-4/top-8 fields, adding semantic value the schema lacks. It stops short of documenting parameter edge cases itself, relying on the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — returns CFTC Commitments of Traders report rows — and pins down scope precisely: weekly futures + options-on-futures positioning by trader class. It distinguishes itself from siblings by naming the actual dataset (Legacy report, combined variant) and the covered universe (every regulated U.S. futures/options contract), so an agent can tell it apart from generic tools like unified_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'killer query patterns' section gives concrete, actionable invocation recipes (latest_only=true for a snapshot, commodity_name + sort_by for extremes, since= for history), which is strong when-to-use guidance. It does not, however, name when to prefer a sibling (e.g. unified_search) or when this tool is the wrong choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources