Skip to main content
Glama
Nice-Wolf-Studio

DataBento MCP Server

DataBento MCP Server & Skills

Professional market data access via DataBento API, available as both an MCP server and Claude Code skills.

What's New

Version 3.0 - Dual Deployment: MCP Server + Claude Code Skills

This project now supports two deployment modes:

  • MCP Server: For Claude Desktop and other MCP clients (18 tools)

  • Claude Code Skills: Native skills for Claude Code CLI (8 skill scripts)

Both modes share the same core functionality:

  • Complete Databento API coverage (Timeseries, Metadata, Batch, Symbology, Reference)

  • Full Historical API support with flexible schemas

  • Real-time futures quotes (ES, NQ)

  • Type-safe TypeScript implementation throughout

Choose the deployment that fits your workflow best!

Related MCP server: Interactive Brokers MCP Server

Features

  • šŸŽÆ Real-time Futures Quotes - Current prices for ES and NQ contracts

  • šŸ“Š Historical Timeseries - Stream any market data schema across date ranges

  • šŸ“ˆ Batch Downloads - Submit and manage large historical data jobs

  • šŸ” Symbol Resolution - Resolve symbols to instrument IDs across datasets

  • šŸ“š Metadata Discovery - Explore datasets, schemas, fields, and pricing

  • šŸ¢ Reference Data - Access security master, corporate actions, and adjustments

  • ā° Session Detection - Automatic Asian/London/NY session identification

  • šŸš€ Rate Limiting - Built-in request throttling and caching (30s TTL)

  • šŸ”’ Error Handling - Graceful failures with clear error messages

Installation

Prerequisites

  • Node.js v18+ or compatible runtime

  • DataBento API key (get one here)

  • For MCP: Claude Desktop or compatible MCP client

  • For Skills: Claude Code CLI

Setup

  1. Clone or download this repository:

cd ~/Dev
git clone <your-repo-url> databento-mcp-server
cd databento-mcp-server
  1. Install dependencies:

npm install
  1. Create .env file with your DataBento API key:

cp .env.example .env
# Edit .env and add your API key

Your .env should contain:

DATABENTO_API_KEY=db-your-api-key-here
DATABENTO_DATASET=GLBX.MDP3
  1. Choose your deployment mode below

Configuration

Option 1: MCP Server (for Claude Desktop)

Build the MCP server:

npm run build:mcp

Add to your Claude Desktop MCP configuration (~/.claude/mcp.json):

{
  "mcpServers": {
    "databento": {
      "command": "node",
      "args": ["/Users/yourusername/Dev/databento-mcp-server/dist/mcp/mcp/index.js"],
      "env": {
        "DATABENTO_API_KEY": "db-your-api-key-here"
      }
    }
  }
}

Or use npx directly (if published to npm):

{
  "mcpServers": {
    "databento": {
      "command": "npx",
      "args": ["-y", "databento-mcp-server"],
      "env": {
        "DATABENTO_API_KEY": "db-your-api-key-here"
      }
    }
  }
}

Option 2: Claude Code Skills

Build and install skills:

npm run install:skills

This will:

  • Compile the skills from TypeScript

  • Copy them to ~/.claude/skills/databento/

  • Make scripts executable

Set your API key environment variable:

export DATABENTO_API_KEY="db-your-api-key-here"
# Or add to your .bashrc/.zshrc for persistence

Verify installation:

node ~/.claude/skills/databento/scripts/get-quote.js ES

Environment Variables

Variable

Required

Default

Description

DATABENTO_API_KEY

āœ…

-

Your DataBento API key (starts with db-)

DATABENTO_DATASET

āŒ

GLBX.MDP3

CME dataset for futures data

Available Tools

The MCP server provides 18 tools organized into 6 categories:

Category

Tools

Description

Original

3 tools

ES/NQ futures quotes, session info, historical bars

Timeseries

1 tool

Historical market data streaming with flexible schemas

Symbology

1 tool

Symbol resolution and conversion

Metadata

6 tools

Dataset discovery, schema info, cost estimation

Batch

3 tools

Large-scale data download job management

Reference

3 tools

Security master, corporate actions, price adjustments

Original Tools (Futures & Session)

1. get_futures_quote

Get current price quote for ES or NQ futures.

Input:

{
  "symbol": "ES"
}

Output:

{
  "symbol": "ES",
  "price": 5845.25,
  "bid": 5845.00,
  "ask": 5845.50,
  "spread": 0.50,
  "timestamp": "2024-10-02T14:30:00.000Z",
  "dataAge": "15s ago",
  "source": "DataBento"
}

2. get_session_info

Get current trading session information.

Input:

{
  "timestamp": "2024-10-02T14:30:00Z"
}

Note: timestamp is optional, defaults to current time

Output:

{
  "currentSession": "NY",
  "sessionStart": "2024-10-02T14:00:00.000Z",
  "sessionEnd": "2024-10-02T22:00:00.000Z",
  "timestamp": "2024-10-02T14:30:00.000Z",
  "utcHour": 14
}

Sessions:

  • Asian: 00:00 - 07:00 UTC

  • London: 07:00 - 14:00 UTC

  • NY: 14:00 - 22:00 UTC

3. get_historical_bars

Get historical OHLCV bars for futures contracts.

Input:

{
  "symbol": "NQ",
  "timeframe": "H4",
  "count": 10
}

Output:

{
  "symbol": "NQ",
  "timeframe": "H4",
  "count": 10,
  "bars": [
    {
      "timestamp": "2024-10-02T00:00:00.000Z",
      "open": 20150.25,
      "high": 20175.50,
      "low": 20145.00,
      "close": 20160.75,
      "volume": 125000
    }
  ]
}

Supported Timeframes:

  • 1h - Hourly bars

  • H4 - 4-hour bars (aggregated from 1h)

  • 1d - Daily bars


Timeseries Tools

4. timeseries_get_range

Stream historical market data with flexible schemas and date ranges. Supports all Databento schemas.

Input:

{
  "dataset": "GLBX.MDP3",
  "symbols": "ES.c.0,NQ.c.0",
  "schema": "trades",
  "start": "2024-10-01",
  "end": "2024-10-02",
  "stype_in": "raw_symbol",
  "stype_out": "instrument_id",
  "limit": 1000
}

Supported Schemas:

  • mbp-1, mbp-10 - Market by price (1 or 10 levels)

  • mbo - Market by order

  • trades - Trade data

  • ohlcv-1s, ohlcv-1m, ohlcv-1h, ohlcv-1d, ohlcv-eod - OHLCV bars

  • statistics, definition, imbalance, status - Market metadata

Output:

{
  "dataset": "GLBX.MDP3",
  "schema": "trades",
  "symbols": ["ES.c.0"],
  "dateRange": {
    "start": "2024-10-01T00:00:00Z",
    "end": "2024-10-02T00:00:00Z"
  },
  "recordCount": 1000,
  "data": [
    {
      "ts_event": "2024-10-01T09:30:00.123456789Z",
      "price": 5845.25,
      "size": 10,
      "side": "B"
    }
  ]
}

Symbology Tools

5. symbology_resolve

Resolve symbols to instrument IDs or other symbol types across a date range.

Input:

{
  "dataset": "GLBX.MDP3",
  "symbols": ["ES", "NQ"],
  "stype_in": "continuous",
  "stype_out": "instrument_id",
  "start_date": "2024-10-01",
  "end_date": "2024-10-02"
}

Symbol Types:

  • raw_symbol - Native exchange symbol

  • instrument_id - Databento instrument ID

  • continuous - Continuous futures (c.0, c.1, etc.)

  • parent - Parent symbol

  • nasdaq, cms, bats, smart - Venue-specific symbology

Output:

{
  "dataset": "GLBX.MDP3",
  "stype_in": "continuous",
  "stype_out": "instrument_id",
  "date_range": {
    "start": "2024-10-01",
    "end": "2024-10-02"
  },
  "symbol_count": 2,
  "result": "partial",
  "mappings": [
    {
      "input_symbol": "ES.c.0",
      "output_symbol": "123456",
      "start_date": "2024-10-01",
      "end_date": "2024-10-02"
    }
  ]
}

Metadata Tools

6. metadata_list_datasets

List all available Databento datasets with optional date range filtering.

Input:

{
  "start_date": "2024-01-01",
  "end_date": "2024-12-31"
}

Output:

{
  "datasets": [
    {
      "dataset": "GLBX.MDP3",
      "description": "CME Globex MDP 3.0",
      "start_date": "2020-01-01",
      "end_date": null
    }
  ],
  "count": 1
}

7. metadata_list_schemas

List available data schemas for a specific dataset.

Input:

{
  "dataset": "GLBX.MDP3"
}

Output:

{
  "dataset": "GLBX.MDP3",
  "schemas": ["trades", "mbp-1", "mbp-10", "ohlcv-1h", "ohlcv-1d"],
  "count": 5
}

8. metadata_list_publishers

List publishers with their details, optionally filtered by dataset.

Input:

{
  "dataset": "GLBX.MDP3"
}

Output:

{
  "publishers": [
    {
      "publisher_id": 1,
      "dataset": "GLBX.MDP3",
      "venue": "CME",
      "description": "Chicago Mercantile Exchange"
    }
  ],
  "count": 1,
  "dataset_filter": "GLBX.MDP3"
}

9. metadata_list_fields

List fields available for a specific schema with their types and descriptions.

Input:

{
  "schema": "trades",
  "encoding": "json"
}

Output:

{
  "schema": "trades",
  "encoding": "json",
  "fields": [
    {
      "name": "ts_event",
      "type": "uint64",
      "description": "Event timestamp in nanoseconds"
    },
    {
      "name": "price",
      "type": "int64",
      "description": "Price in fixed-point notation"
    }
  ],
  "count": 2
}

10. metadata_get_cost

Calculate the cost in USD for a historical data query before downloading.

Input:

{
  "dataset": "GLBX.MDP3",
  "symbols": "ES.c.0",
  "schema": "trades",
  "start": "2024-10-01",
  "end": "2024-10-02",
  "stype_in": "raw_symbol"
}

Output:

{
  "dataset": "GLBX.MDP3",
  "symbols": ["ES.c.0"],
  "schema": "trades",
  "cost_usd": 15.50,
  "record_count_estimate": 1500000,
  "size_bytes_estimate": 45000000
}

11. metadata_get_dataset_range

Get the available date range for a dataset.

Input:

{
  "dataset": "GLBX.MDP3"
}

Output:

{
  "dataset": "GLBX.MDP3",
  "start_date": "2020-01-01",
  "end_date": null,
  "description": "Data available from 2020-01-01 to present"
}

Batch Tools

12. batch_submit_job

Submit a batch data download job for large historical datasets. Returns job ID and status.

Input:

{
  "dataset": "GLBX.MDP3",
  "symbols": ["ES.c.0", "NQ.c.0"],
  "schema": "trades",
  "start": "2024-10-01",
  "end": "2024-10-02",
  "encoding": "csv",
  "compression": "zstd",
  "stype_in": "raw_symbol",
  "split_duration": "day"
}

Output:

{
  "status": "submitted",
  "job_id": "abc123def456",
  "state": "received",
  "dataset": "GLBX.MDP3",
  "schema": "trades",
  "symbols_count": 2,
  "cost_usd": 25.00,
  "date_range": {
    "start": "2024-10-01",
    "end": "2024-10-02"
  },
  "encoding": "csv",
  "compression": "zstd",
  "ts_received": "2024-10-03T10:00:00Z",
  "message": "Job submitted successfully. Use batch_list_jobs or batch_download to check status and download files when ready."
}

13. batch_list_jobs

List all batch jobs with their current status. Optionally filter by job states or time range.

Input:

{
  "states": ["done", "processing"],
  "since": "2024-10-01T00:00:00Z"
}

Output:

{
  "total_jobs": 5,
  "jobs_by_state": {
    "done": 3,
    "processing": 2
  },
  "jobs": [
    {
      "id": "abc123def456",
      "state": "done",
      "dataset": "GLBX.MDP3",
      "schema": "trades",
      "symbols_count": 2,
      "cost_usd": 25.00,
      "date_range": {
        "start": "2024-10-01",
        "end": "2024-10-02"
      },
      "record_count": 1500000,
      "file_count": 2,
      "total_size_bytes": 45000000,
      "ts_received": "2024-10-03T10:00:00Z",
      "ts_process_done": "2024-10-03T10:15:00Z",
      "ts_expiration": "2024-10-10T10:00:00Z"
    }
  ]
}

14. batch_download

Get download information for a completed batch job. Returns download URLs and metadata.

Input:

{
  "job_id": "abc123def456"
}

Output:

{
  "job_id": "abc123def456",
  "state": "done",
  "files": [
    {
      "filename": "20241001.csv.zst",
      "size_bytes": 22500000,
      "hash": "sha256:abc123...",
      "download_url": "https://download.databento.com/..."
    }
  ],
  "total_size_bytes": 45000000,
  "expiration": "2024-10-10T10:00:00Z"
}

Reference Tools

15. reference_search_securities

Search security master database for instrument metadata.

Input:

{
  "dataset": "GLBX.MDP3",
  "symbols": "ES.c.0,NQ.c.0",
  "start_date": "2024-10-01",
  "end_date": "2024-10-02",
  "limit": 100
}

Output:

{
  "dataset": "GLBX.MDP3",
  "symbols": "ES.c.0,NQ.c.0",
  "date_range": {
    "start": "2024-10-01",
    "end": "2024-10-02"
  },
  "record_count": 2,
  "securities": [
    {
      "instrument_id": "123456",
      "raw_symbol": "ESZ4",
      "description": "E-mini S&P 500 Dec 2024",
      "asset_class": "futures",
      "exchange": "CME",
      "currency": "USD",
      "first_date": "2023-09-18",
      "last_date": "2024-12-20",
      "min_price_increment": 0.25,
      "display_factor": 1.0
    }
  ]
}

16. reference_get_corporate_actions

Get corporate actions (dividends, splits, etc.) for symbols.

Input:

{
  "dataset": "XNAS.ITCH",
  "symbols": "AAPL,MSFT",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "action_types": ["dividend", "split"]
}

Output:

{
  "dataset": "XNAS.ITCH",
  "symbols": "AAPL,MSFT",
  "date_range": {
    "start": "2024-01-01",
    "end": "2024-12-31"
  },
  "record_count": 5,
  "action_types_filter": ["dividend", "split"],
  "corporate_actions": [
    {
      "instrument_id": "789012",
      "raw_symbol": "AAPL",
      "action_type": "dividend",
      "ex_date": "2024-05-10",
      "record_date": "2024-05-13",
      "payment_date": "2024-05-16",
      "amount": 0.25,
      "currency": "USD"
    }
  ]
}

17. reference_get_adjustments

Get price adjustment factors for backadjusted prices.

Input:

{
  "dataset": "XNAS.ITCH",
  "symbols": "AAPL",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31"
}

Output:

{
  "dataset": "XNAS.ITCH",
  "symbols": "AAPL",
  "date_range": {
    "start": "2024-01-01",
    "end": "2024-12-31"
  },
  "record_count": 2,
  "adjustments": [
    {
      "instrument_id": "789012",
      "raw_symbol": "AAPL",
      "adjustment_date": "2024-05-10",
      "adjustment_type": "dividend",
      "price_factor": 0.998654,
      "volume_factor": 1.0
    }
  ]
}

Usage Examples

With Claude Desktop

Once configured, you can ask Claude:

Original Futures Tools:

"What's the current ES price?"

Claude will use the get_futures_quote tool to fetch real-time data.

"Get the last 10 H4 bars for NQ"

Claude will use the get_historical_bars tool.

"What session are we in right now?"

Claude will use the get_session_info tool.

New Databento API Tools:

"List all available Databento datasets"

Claude will use metadata_list_datasets to show all available datasets.

"Get trade data for ES on October 1st"

Claude will use timeseries_get_range to fetch historical trade data.

"Resolve the symbol ES.c.0 to instrument ID"

Claude will use symbology_resolve to convert symbol types.

"How much would it cost to download all trades for AAPL in September?"

Claude will use metadata_get_cost to calculate the query cost.

"Submit a batch job for NQ trade data from last week"

Claude will use batch_submit_job to create a batch download job.

"Get security details for ESZ4"

Claude will use reference_search_securities to fetch instrument metadata.

"Get dividend history for AAPL in 2024"

Claude will use reference_get_corporate_actions to fetch corporate actions.

Development Mode

Run the server in development mode with auto-reload:

npm run dev

Production Mode

Build and run:

npm run build
npm start

Technical Details

Data Provider

  • Source: DataBento CME futures data

  • Symbols: ES.c.0 (S&P 500), NQ.c.0 (Nasdaq-100)

  • Dataset: GLBX.MDP3 (CME Globex MDP 3.0)

  • Precision: Nanosecond timestamps, 1e9 price units

Caching Strategy

  • Quote Cache: 30-second TTL (reduces API calls)

  • Weekend Handling: 7-day lookback for off-hours data

  • Rate Limiting: Built-in request throttling

Error Handling

All tools return structured errors:

{
  "error": "No quote data available for ES"
}

Common errors:

  • Missing API key

  • Invalid symbol (only ES/NQ supported)

  • No data available (weekends, holidays)

  • API rate limit exceeded

Claude Code Skills Usage

Once installed, the skills can be invoked naturally in Claude Code:

Get real-time quote:

> Get the current ES futures quote

Historical data:

> Fetch 50 daily bars for NQ

Symbol resolution:

> Resolve ESM4 symbol to instrument ID in GLBX.MDP3

Metadata queries:

> List all available schemas for GLBX.MDP3 dataset

Batch operations:

> List my databento batch jobs

The skills are automatically detected based on context and keywords.

Project Structure

databento-mcp-server/
ā”œā”€ā”€ src/                      # Shared code (used by both MCP & Skills)
│   ā”œā”€ā”€ databento-client.ts   # Futures client (quotes, bars, sessions)
│   ā”œā”€ā”€ http/
│   │   └── databento-http.ts # Base HTTP client with auth, retry, caching
│   ā”œā”€ā”€ api/                  # API clients
│   │   ā”œā”€ā”€ metadata-client.ts
│   │   ā”œā”€ā”€ timeseries-client.ts
│   │   ā”œā”€ā”€ batch-client.ts
│   │   ā”œā”€ā”€ symbology-client.ts
│   │   └── reference-client.ts
│   └── types/                # TypeScript type definitions
│       ā”œā”€ā”€ metadata.ts
│       ā”œā”€ā”€ timeseries.ts
│       ā”œā”€ā”€ batch.ts
│       ā”œā”€ā”€ symbology.ts
│       └── reference.ts
ā”œā”€ā”€ mcp/                      # MCP Server specific code
│   └── index.ts              # MCP server entry point & 18 tool definitions
ā”œā”€ā”€ skills/                   # Claude Code Skills
│   ā”œā”€ā”€ databento/
│   │   ā”œā”€ā”€ skill.md          # Skill documentation
│   │   ā”œā”€ā”€ scripts/          # 8 executable skill scripts
│   │   │   ā”œā”€ā”€ get-quote.ts
│   │   │   ā”œā”€ā”€ get-historical.ts
│   │   │   ā”œā”€ā”€ get-session.ts
│   │   │   ā”œā”€ā”€ resolve-symbols.ts
│   │   │   ā”œā”€ā”€ timeseries.ts
│   │   │   ā”œā”€ā”€ metadata.ts
│   │   │   ā”œā”€ā”€ batch.ts
│   │   │   └── reference.ts
│   │   └── data/
│   └── manifest.json         # Skills manifest
ā”œā”€ā”€ scripts/
│   └── install-skills.sh     # Skill installation script
ā”œā”€ā”€ dist/                     # Compiled JavaScript (build output)
│   ā”œā”€ā”€ mcp/                  # MCP server build
│   ā”œā”€ā”€ skills/               # Skills build
│   └── src/                  # Shared code build
ā”œā”€ā”€ docs/
│   ā”œā”€ā”€ adrs/                 # Architecture Decision Records
│   └── journals/             # Implementation journals
ā”œā”€ā”€ tsconfig.json             # Base TypeScript config
ā”œā”€ā”€ tsconfig.mcp.json         # MCP build config
ā”œā”€ā”€ tsconfig.skills.json      # Skills build config
ā”œā”€ā”€ package.json
ā”œā”€ā”€ .env.example
└── README.md

Development

Building

Build everything:

npm run build

Build MCP server only:

npm run build:mcp

Build skills only:

npm run build:skills

Adding New Functionality

For MCP Server:

  1. Add tool definition to ListToolsRequestSchema handler in mcp/index.ts

  2. Implement handler in CallToolRequestSchema switch statement

  3. Add client method to appropriate API client in src/api/

  4. Rebuild: npm run build:mcp

For Skills:

  1. Create new script in skills/databento/scripts/

  2. Import and use shared clients from src/

  3. Update skills/manifest.json with new script

  4. Rebuild and install: npm run install:skills

For Shared Functionality:

  1. Add logic to appropriate client in src/api/

  2. Update both MCP and Skills to use it

  3. Rebuild both: npm run build

Testing Locally

# Set API key
export DATABENTO_API_KEY=db-your-key

# Run dev server
npm run dev

Limitations

  • Original Tools: get_futures_quote and get_historical_bars only support ES and NQ futures

  • New Tools: Support all Databento datasets and symbols (GLBX.MDP3, XNAS.ITCH, DBEQ.BASIC, etc.)

  • Data Delay: Historical API (not tick-by-tick real-time streaming)

  • Weekend Data: May show stale data on weekends/holidays

  • Rate Limits: Respects DataBento API limits (60 req/min)

  • Batch Downloads: Download URLs are returned but file content is not streamed through MCP

  • API Key Permissions: Access to datasets requires appropriate Databento subscriptions

Troubleshooting

"DATABENTO_API_KEY is required"

Ensure your .env file contains a valid API key starting with db-.

"No quote data available"

  • Check if markets are open (futures trade 23h/day on weekdays)

  • Verify your DataBento account has CME futures access

  • Check API key permissions

"HTTP 401" errors

Your API key is invalid or expired. Get a new one from databento.com.

License

MIT

Contributing

Contributions welcome! Please open issues or PRs on GitHub.


Built with ā¤ļø for the Wolf Agents ecosystem

Available Tools

17 tools
batch_downloadA

Get download information for a completed batch job. Returns download URLs and metadata. Does NOT stream file content through MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesBatch job identifier

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a key behavioral trait: 'Does NOT stream file content through MCP'. However, it does not mention required permissions, rate limits, or what happens if the job is not yet complete, leaving some gaps.

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

Conciseness5/5

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

The description is three sentences, each adding value: purpose, return info, and a clarifying limitation. Front-loaded with the main action. No wasted words.

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?

Given only one parameter, no output schema, and no annotations, the description covers essential aspects. It explains the tool's purpose and what it returns. However, it could be more complete by explicitly stating that the job must be complete before calling this tool.

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

Parameters3/5

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

Schema description coverage is 100% (job_id is described as 'Batch job identifier'). The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the verb 'Get', the resource 'download information for a completed batch job', and specifies return values 'download URLs and metadata'. It distinguishes from potential siblings by noting it does not stream content, which is unique among sibling tools like batch_submit_job and batch_list_jobs.

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 description implies usage after job completion by saying 'for a completed batch job'. While it doesn't explicitly state when not to use it or name alternatives, the context is clear given sibling tool names (e.g., batch_list_jobs for listing jobs). No exclusions are provided.

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

batch_list_jobsA

List all batch jobs with their current status. Optionally filter by job states or time range.

ParametersJSON Schema
NameRequiredDescriptionDefault
statesNoFilter by job states
sinceNoFilter jobs since timestamp (ISO 8601)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral traits. It states 'list', implying read-only, but does not disclose side effects, authorization needs, rate limits, or pagination behavior. The transparency is minimal.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the main purpose and optional parameters. Every word is necessary, with no redundancy or filler.

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

Completeness3/5

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

For a simple listing tool with two optional parameters and no output schema, the description covers the basic functionality. However, it lacks information about the response structure, which would be helpful since no output schema exists.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents both parameters well. The description mentions filtering by states or time range, which adds little beyond the schema descriptions. It does not provide examples or format details.

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 tool name 'batch_list_jobs' and the description 'List all batch jobs with their current status' clearly specify the verb and resource. The optional filtering adds specificity, and the sibling tools (batch_submit_job, batch_download) differentiate this as a read-only listing operation.

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

Usage Guidelines3/5

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

The description mentions optional filters ('by job states or time range'), giving some context for usage. However, it does not provide guidance on when to use this tool versus alternatives like batch_download, nor does it specify prerequisites or limits.

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

batch_submit_jobA

Submit a batch data download job for large historical datasets. Returns job ID and status. Job processing is asynchronous.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3, XNAS.ITCH)
symbolsYesArray of symbols (max 2000)
schemaYesData record schema
startYesStart date (YYYY-MM-DD or ISO 8601)
endNoOptional end date (YYYY-MM-DD or ISO 8601)
encodingNoOutput encoding (default: dbn)
compressionNoCompression type (default: zstd)
stype_inNoInput symbology type (default: raw_symbol)
stype_outNoOutput symbology type (default: instrument_id)
split_durationNoSplit files by duration (e.g., day, week, month)
split_sizeNoSplit files by size in bytes
split_symbolsNoSplit files by symbol (default: false)
limitNoLimit number of records

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that the job is asynchronous and returns a job ID and status, but lacks details on job lifecycle, error handling, rate limits, or prerequisites. This is adequate but not comprehensive.

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

Conciseness5/5

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

The description is very concise—three short sentences that front-load the key information: submission action, return values, and async nature. No wasted words.

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

Completeness2/5

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

For a complex tool with 13 parameters and no output schema, the description is too sparse. It doesn't explain the batch job concept, how to use the returned job ID (e.g., with batch_list_jobs), or example values. The lack of an output schema increases the need for descriptive context, which is not provided.

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

Parameters3/5

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

Schema coverage is 100%, so the description doesn't need to add parameter details. It provides no additional context beyond the schema, meeting the baseline expectation.

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 clearly states the tool's action: submitting a batch data download job for large historical datasets. It specifies the return values (job ID and status) and that processing is asynchronous, distinguishing it from sibling tools like batch_download (likely synchronous) and batch_list_jobs (listing jobs).

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

Usage Guidelines3/5

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

The description implies this tool is for large datasets and asynchronous processing, but it doesn't explicitly state when to use it over alternatives like batch_download or other data retrieval tools. No exclusions or specific context are provided, leaving the agent to infer usage.

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

get_futures_quoteA

Get current price quote for ES or NQ futures contracts

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesFutures symbol (ES = E-mini S&P 500, NQ = E-mini Nasdaq-100)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It indicates a read operation (current price quote), which is non-destructive. Could be improved by specifying real-time vs delayed, but adequate for a simple tool.

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

Conciseness5/5

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

Single, front-loaded sentence with zero waste. 10 words efficiently convey purpose and scope.

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?

For a simple tool with one parameter and no output schema, the description is complete. It specifies what it does and which symbols are supported, leaving no gaps.

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

Parameters3/5

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

Schema coverage is 100% with the symbol parameter described via enum. The description adds no extra parameter meaning beyond the schema, meeting baseline.

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 clearly states the verb 'Get', resource 'current price quote', and scope 'ES or NQ futures contracts'. It distinguishes from sibling tools like get_historical_bars by focusing on current quote.

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

Usage Guidelines3/5

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

The description implies usage for getting a quick quote but does not explicitly state when to use or when not, nor mention alternatives. However, the context of siblings makes the use case clear.

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

get_historical_barsC

Get historical OHLCV bars for futures contracts

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesFutures symbol
timeframeYesBar timeframe
countYesNumber of bars to retrieve

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It describes a read operation but omits critical details like data range (how far back), rate limits, pagination, or whether bars are intraday. This lack of information could lead to incorrect expectations.

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?

Single sentence, no wasted words, front-loaded with the core action. However, the extreme brevity risks under-specification; slightly more detail would improve without sacrificing conciseness.

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

Completeness2/5

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

Given 3 parameters, no output schema, and no annotations, the description is minimal. It fails to explain return format (e.g., OHLCV with timestamps), data availability, or behavior for missing data. More context is necessary for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters (symbol, timeframe, count) are already documented. The description adds 'OHLCV', which clarifies bar content, but does not elaborate on parameter constraints or usage beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'historical OHLCV bars for futures contracts', specifying the data type (OHLCV) and instrument class. It sufficiently distinguishes from siblings like get_futures_quote (single quote) and batch_download, but lacks explicit differentiation from timeseries_get_range.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., timeseries_get_range, get_futures_quote). With many sibling tools, the absence of context for selection criteria hinders an AI agent's decision-making.

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

get_session_infoA

Get current trading session information (Asian/London/NY)

ParametersJSON Schema
NameRequiredDescriptionDefault
timestampNoOptional ISO timestamp (defaults to now)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It does not mention that the tool is read-only, what session information includes (e.g., open/close times, status), or how the optional timestamp affects results. Lacks behavioral context.

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

Conciseness5/5

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

Single sentence with no extraneous information. Efficiently communicates the tool's purpose. Every word earns its place.

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

Completeness3/5

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

Given low complexity (1 optional param, no output schema), description is adequate but minimal. Does not specify return value format or what constitutes 'session information,' leaving some ambiguity. Could be more complete by listing typical fields.

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

Parameters3/5

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

Schema covers 100% parameter description (timestamp with optional ISO format). Description adds no additional meaning beyond schema, so baseline 3 applies.

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?

Description explicitly states it gets current trading session information and lists specific sessions (Asian/London/NY). Clearly distinguishes from sibling tools which deal with batch processing, metadata, or historical data, none of which provide session info.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or alternatives. However, the tool is unique among siblings, so usage context is implied. Could be improved by stating it's for checking current market session, but not needed for differentiation.

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

metadata_get_costB

Calculate the cost in USD for a historical data query before downloading

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3)
symbolsNoComma-separated list of symbols or single symbol
schemaNoSchema name (default: trades)
startYesInclusive start date/time (YYYY-MM-DD or ISO 8601)
endNoOptional exclusive end date/time (YYYY-MM-DD or ISO 8601)
modeNoQuery mode (default: historical-streaming)
stype_inNoInput symbology type (e.g., raw_symbol, continuous)
stype_outNoOutput symbology type (e.g., instrument_id, raw_symbol)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It only states a calculation, without disclosing whether it requires authentication, rate limits, or what the response format is. Minimal transparency.

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

Conciseness5/5

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

The description is a single efficient sentence that immediately conveys the purpose, with no wasted words.

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

Completeness2/5

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

With 8 parameters and no output schema, the description provides no information about the output format, units (beyond USD), or how cost is computed. This is insufficient for an agent to understand the tool's full behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3 is appropriate. The description does not add any extra meaning beyond the schema's parameter descriptions, which are comprehensive.

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 clearly states the tool calculates cost in USD for a historical data query before downloading, using a specific verb and resource, and distinguishes it from sibling tools like batch_download or get_historical_bars.

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

Usage Guidelines3/5

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

The description implies use for cost estimation before downloading, but lacks explicit guidance on when not to use or alternatives. Among siblings, batch_submit_job might involve similar cost, but no comparison is given.

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

metadata_get_dataset_rangeB

Get the available date range for a dataset

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3)

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only says 'Get the available date range'. It doesn't disclose what the return format is (e.g., start/end dates), whether authentication is needed, or any side effects. This is insufficient for a tool with no annotations.

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

Conciseness3/5

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

The description is short and to the point, but it is arguably under-specified. It conveys the core action without waste, but lacks structure or additional helpful sentences. It could benefit from mentioning the output.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It doesn't explain what the function returns, which is critical for an agent. For a simple tool with one param, it should at least mention that it returns a date range with start and end dates.

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

Parameters3/5

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

The input schema already describes the 'dataset' parameter fully (type, required, example). The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the verb 'Get' and the resource 'available date range for a dataset', making the purpose unambiguous. It distinguishes from sibling tools like metadata_get_cost and metadata_list_datasets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For instance, it doesn't mention that it's for checking date range before fetching data with timeseries_get_range. Lacks any context about prerequisites or exclusions.

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

metadata_list_datasetsB

List all available Databento datasets with optional date range filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoOptional inclusive start date (YYYY-MM-DD)
end_dateNoOptional exclusive end date (YYYY-MM-DD)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the basic purpose without disclosing that it is a read-only operation, response format, pagination, or any other behavioral traits.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple listing tool.

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

Completeness3/5

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

Given the tool's simplicity and lack of output schema or annotations, the description is adequate but could benefit from mentioning the return format or that it returns a list of dataset metadata. It provides the essential purpose but lacks complete context.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters having clear descriptions in the schema. The description adds no extra semantic meaning beyond what the schema already provides, so baseline 3 applies.

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?

Description clearly states the tool lists all available Databento datasets with optional date range filtering. Verb 'list' and resource 'Databento datasets' are specific, and it distinguishes from sibling tools like metadata_list_fields or metadata_list_publishers.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like dataset-specific metadata tools. The description implies usage for general dataset listing but lacks context about when not to use it or when a sibling is more appropriate.

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

metadata_list_fieldsA

List fields available for a specific schema with their types and descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesSchema name (e.g., trades, mbp-1, ohlcv-1d)
encodingNoOptional encoding type (e.g., json, csv, dbn)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It only states the basic function without disclosing read-only nature, error behavior, or side effects, which are important for safe invocation.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It efficiently conveys the core purpose.

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

Completeness3/5

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

Given low complexity and no output schema, the description is adequate but could be improved by indicating the return structure or effect of the encoding parameter.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes both parameters with examples. The tool description adds no further semantic meaning beyond what the schema provides.

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 clearly states it lists fields for a specific schema, including types and descriptions. This distinguishes it from sibling tools like metadata_list_datasets or metadata_list_schemas.

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

Usage Guidelines3/5

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

No explicit when or when-not guidance is provided. The context of sibling tool names implies usage for field metadata, but no alternatives or exclusions are mentioned.

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

metadata_list_publishersA

List publishers with their details, optionally filtered by dataset

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetNoOptional dataset code to filter publishers

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits, but it only states a basic listing behavior. There is no mention of read-only nature, potential pagination, or any side effects.

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

Conciseness5/5

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

The description is extremely concise with a single sentence that covers the core functionality. No unnecessary words.

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

Completeness3/5

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

For a simple list tool with one optional parameter and no output schema, the description is minimally adequate. It could benefit from mentioning what 'details' entail, but it covers the essential purpose.

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?

The schema coverage is 100% for the single parameter. The description adds value by stating it is optional and its purpose ('filtered by dataset'), going beyond the schema's description.

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 clearly states 'List publishers with their details' with a specific verb and resource. It differentiates from sibling tools like metadata_list_datasets and metadata_list_fields by focusing on publishers.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It fails to mention any context, prerequisites, or exclusions.

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

metadata_list_schemasB

List available data schemas for a specific dataset

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3, XNAS.ITCH)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose behavioral traits like read-only nature, authentication requirements, or return format. The description is too minimal to inform agent behavior beyond the obvious.

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?

The description is one short, front-loaded sentence. It is concise but could benefit from more detail without sacrificing brevity. Good structure.

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

Completeness2/5

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

Given simple parameters and no output schema, the description should explain what a schema is or what output to expect. It does not. The tool is straightforward but the description lacks sufficient context for an agent to fully understand its behavior.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no new meaning beyond the schema (which already includes an example). However, it does tie the parameter to the tool's purpose (for a specific dataset). No improvement.

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 uses a specific verb 'List' and resource 'available data schemas for a specific dataset'. It clearly distinguishes from sibling tools like metadata_list_datasets and metadata_list_fields by focusing on schemas. High purpose clarity.

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

Usage Guidelines3/5

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

The description implies use when needing schemas for a dataset, but it lacks explicit guidance on when to use this tool versus alternatives (e.g., metadata_list_fields). No exclusions or prerequisites mentioned. Adequate but not strong.

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

reference_get_adjustmentsB

Get price adjustment factors for backadjusted prices

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., XNAS.ITCH)
symbolsYesComma-separated list of symbols
start_dateYesStart date (YYYY-MM-DD)
end_dateNoOptional end date (YYYY-MM-DD)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description must carry the full behavioral burden. It only implies a read operation but does not disclose any safety info, data range limitations, or response structure. Minimal transparency.

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

Conciseness5/5

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

Single sentence, no wasted words, front-loaded with the action and resource. Perfectly concise for the purpose stated.

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

Completeness2/5

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

Tool has 4 parameters, no output schema, and no annotations. The description is too brief: does not explain what adjustment factors are, their importance, or what the response contains. Lacks completeness for a data retrieval tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all four parameters. The description does not add extra meaning beyond the schema, achieving the baseline of 3.

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 clearly states the verb 'Get' and the resource 'price adjustment factors for backadjusted prices'. It distinguishes itself from sibling tools like reference_get_corporate_actions by specifying the type of adjustment.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., reference_get_corporate_actions for corporate actions). No exclusions or prerequisites mentioned.

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

reference_get_corporate_actionsC

Get corporate actions (dividends, splits, etc.) for symbols

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., XNAS.ITCH)
symbolsYesComma-separated list of symbols
start_dateYesStart date (YYYY-MM-DD)
end_dateNoOptional end date (YYYY-MM-DD)
action_typesNoFilter by action types (e.g., ['dividend', 'split'])

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the tool 'gets' corporate actions, but does not disclose behavioral traits such as authentication needs, rate limits, mutability, or return format. Significant gaps in transparency.

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?

The description is a single short sentence, concise and front-loaded. However, it could be expanded slightly to include more helpful details without becoming verbose.

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

Completeness2/5

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

Given 5 parameters and no output schema, the description is incomplete. It does not explain output structure, date formats, or the need for a dataset code, leaving an agent without sufficient context to use the tool effectively.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description. The description adds some context by listing examples (dividends, splits) that align with the action_types parameter, but does not add meaning beyond what the schema already provides.

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

Purpose4/5

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

The description clearly states 'Get corporate actions (dividends, splits, etc.) for symbols'. It specifies the resource (corporate actions) and provides examples, making the purpose apparent. However, it could be more distinctive from sibling tools like 'reference_get_adjustments' by highlighting unique aspects.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., reference_get_adjustments, timeseries_get_range). There are no indications of prerequisites, contexts, or exclusions.

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

reference_search_securitiesC

Search security master database for instrument metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3, XNAS.ITCH)
symbolsYesComma-separated list of symbols
start_dateYesStart date (YYYY-MM-DD)
end_dateNoOptional end date (YYYY-MM-DD)
limitNoMaximum number of records to return

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states 'search the security master database' without mentioning whether it is read-only, result limits, pagination, or any side effects. This is insufficient for transparent tool usage.

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?

The description is a single sentence with no redundant information, achieving high conciseness. However, it sacrifices useful detail; a bit more structure could improve clarity without adding much length.

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

Completeness2/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description is too minimal. It does not explain the nature of 'instrument metadata', result ordering, or any constraints, leaving the agent underinformed.

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

Parameters3/5

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

The input schema has 100% description coverage, so the description adds no extra meaning beyond parameter names and types. The baseline score of 3 is appropriate; the description does not clarify how parameters interact (e.g., date range usage).

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

Purpose3/5

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

The description uses a specific verb and resource, 'search security master database for instrument metadata', but it is vague and does not differentiate from sibling tools like metadata_list_datasets or symbology_resolve. The purpose is clear at a high level but lacks specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With 16 sibling tools, including several reference and metadata tools, the lack of usage context makes it hard for an agent to select this tool appropriately.

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

symbology_resolveB

Resolve symbols to instrument IDs or other symbol types across a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., GLBX.MDP3, XNAS.ITCH)
symbolsYesArray of symbols to resolve (max 2000)
stype_inYesInput symbol typeraw_symbol
stype_outYesOutput symbol typeinstrument_id
start_dateYesInclusive start date (YYYY-MM-DD)
end_dateNoOptional exclusive end date (YYYY-MM-DD)

TDQS

B3.3/5.0
Behavior3/5

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

The description indicates the tool operates 'across a date range', implying historical resolution. However, it does not disclose whether the operation is read-only, error handling, or other important behaviors. Since no annotations are provided, the description carries the full burden but only partially addresses it.

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?

The description is a single sentence with no extraneous information. While it is concise, it could be slightly expanded to include more critical details without being verbose. It is well-structured and front-loaded.

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

Completeness2/5

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

Given the complexity (6 parameters, 5 required) and the absence of an output schema, the description should explain the return format or provide more behavioral context. It does not mention what the output looks like, leaving a significant gap for the agent to infer.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The description adds marginal value (e.g., 'across a date range' reinforces start_date/end_date usage) but does not provide significant additional meaning beyond the schema. Baseline 3 is appropriate.

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 clearly states the action (resolve) and what it acts upon (symbols to instrument IDs or other symbol types) across a date range. It uniquely identifies the tool's function among siblings, as no other tool in the list appears to perform symbol resolution.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or situations where another sibling tool might be more appropriate.

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

timeseries_get_rangeB

Get historical market data with flexible schemas and date ranges. Supports all Databento schemas (mbp-1, mbp-10, trades, ohlcv-1h, ohlcv-1d, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesDataset code (e.g., 'GLBX.MDP3' for CME, 'XNAS.ITCH' for Nasdaq)
symbolsYesComma-separated list of instrument symbols (up to 2000)
schemaYesData schema type
startYesStart date (ISO 8601 or YYYY-MM-DD format)
endNoEnd date (ISO 8601 or YYYY-MM-DD format), defaults to start date
stype_inNoInput symbology type, defaults to 'raw_symbol'
stype_outNoOutput symbology type, defaults to 'instrument_id'
limitNoMaximum number of records to return

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description only states basic functionality. Lacks details on side effects, rate limits, pagination, or read-only nature. Agent misses crucial behavioral context.

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?

Two concise sentences, first sentence states purpose, second provides example schemas. Efficient but could be slightly more front-loaded.

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

Completeness2/5

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

With 8 parameters (4 required) and no output schema, the description is too minimal. Fails to explain required inputs like dataset, symbols, start, or expected output format.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. Description adds little beyond listing schema examples, meeting the baseline but no extra value.

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 clearly states the tool retrieves historical market data and lists supported schemas, effectively distinguishing it from sibling tools like batch operations or metadata queries.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_historical_bars or batch_download. Does not specify prerequisites or exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv1.0.0
    • First observedbatch_download
    • First observedbatch_list_jobs
    • First observedbatch_submit_job
    • First observedget_futures_quote
    • First observedget_historical_bars
    • First observedget_session_info
    • First observedmetadata_get_cost
    • First observedmetadata_get_dataset_range
    • First observedmetadata_list_datasets
    • First observedmetadata_list_fields
    • First observedmetadata_list_publishers
    • First observedmetadata_list_schemas
    • First observedreference_get_adjustments
    • First observedreference_get_corporate_actions
    • First observedreference_search_securities
    • First observedsymbology_resolve
    • First observedtimeseries_get_range

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation5/5

Each tool has a distinct purpose, with clear separation between batch job management, metadata queries, reference data, symbology, and timeseries retrieval. No overlapping functions are evident.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern with domain prefixes (batch_, metadata_, reference_, symbology_, timeseries_). The verbs (get, list, search, resolve) are appropriate and uniform within their groups.

Tool Count5/5

With 17 tools, the server covers batch operations, metadata exploration, reference data, symbology, and timeseries queries—an appropriate scope for a data access server without being excessive or insufficient.

Completeness4/5

The tool set covers core workflows: batch job lifecycle (submit, list, download), metadata discovery, reference data, and data retrieval. Minor gaps include lack of a job cancellation tool and individual job status endpoint, but the overall surface is well-rounded.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables access to MetaTrader5 market data and trading functionality, including real-time quotes, historical OHLCV data, tick data, symbol information, and technical indicators for forex and other trading instruments.
    22
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables real-time stock and options market data retrieval from Interactive Brokers through IB Gateway. Provides stock quotes with price and volume information, plus options quotes with bid, ask, and last price data.
    -
  • A
    license
    B
    quality
    Not graded
    maintenance
    A Model Context Protocol server that provides access to Databento's historical and real-time market data, including trades, OHLCV bars, and order book depth. It enables AI assistants to perform financial data analysis, manage batch jobs, and convert market data between DBN and Parquet formats.
    30
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Real-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
    -