Skip to main content
Glama

KeyVex

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 (legacy futures-only report): - Non-commercial (large speculators — hedge funds, CTAs) - Commercial (hedgers — producers, swap dealers) - Non-reportable (small speculators) 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 (Socrata API, free, unauthenticated). 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

TableJSON 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.
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'). Client-side filter.
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. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), and the description adds real context beyond them: Friday 3:30 PM ET release cadence for the prior Tuesday close, the public Socrata endpoint, free/unauthenticated access, and the 'pure-publisher posture' with no derived sentiment scores. It stops short of pagination or rate-limit behavior, so a 4 rather than a 5.

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?

Purpose is front-loaded in the first sentence, followed by release timing, trader classes, query patterns and provenance in a logical order. It is long and the trader-class/query-pattern blocks are somewhat list-heavy, but nearly every sentence carries decision-relevant information, so only mild trimming is warranted.

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

Completeness4/5

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

With 10 parameters, no required params, and no output schema, the description does the heavy lifting well: it explains the dataset, coverage, freshness, and the derived fields an agent will see in results. It omits pagination/return-shape details and the meaning of the concentration fields beyond a brief mention, leaving minor gaps.

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 the baseline is 3, but the description adds value the schema does not: it demonstrates how parameters combine (latest_only semantics, sort_by='noncomm_net' with sort_order='desc', commodity_name='GOLD' + since=) and names the derived fields (noncomm_net, comm_net, nonrept_net) that back the sort enum. That is meaningful enrichment over the structured fields.

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?

States a specific verb and resource ('Returns CFTC Commitments of Traders (COT) report rows') and immediately defines the payload: weekly aggregated futures + options-on-futures positioning by trader class. No sibling tool covers COT data, so an agent can place this unambiguously.

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, goal-oriented parameter recipes (latest_only=true for a weekly snapshot, commodity_name + sort_by='noncomm_net' for large-spec extremes, since= for history). It does not name a when-not-to-use condition or an alternative tool, which keeps it short of a 5, but the usage context is clear and actionable.

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