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?

No annotations exist, so description alone must convey behavior. It discloses the tool returns download URLs and metadata and explicitly states non-streaming behavior. However, it lacks details on permissions, side effects, or error conditions.

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?

Two sentences with no redundant information. Every part serves a purpose: stating the function, returned data, and a key behavioral constraint.

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?

For a simple tool with one parameter, the description covers the essential purpose and return value. It lacks details on authentication or response format but is adequate given the low complexity and no output schema.

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% for the single parameter (job_id), and the description adds minimal extra meaning beyond 'batch job identifier'. Baseline 3 is appropriate as schema does most of the work.

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 download information for a completed batch job, using specific verb 'Get' and resource 'download information'. It effectively distinguishes from sibling tools like batch_list_jobs and batch_submit_job.

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 explicitly mentions the tool does NOT stream file content, providing a key usage constraint. However, it does not explicitly state when to use it vs alternatives, though 'completed batch job' implies a prerequisite.

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

batch_list_jobsB

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

B3.2/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 does not state whether this operation is read-only, whether it requires authentication, any rate limits, or whether it returns all jobs or paginated results. The minimal description lacks critical 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?

The description is a single concise sentence that efficiently conveys the tool's purpose and optional filtering. No redundant information, though it could be slightly more structured.

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 (two optional parameters, no output schema), the description covers the basic purpose and filtering. However, it omits details like pagination, read-only nature, and default behavior (e.g., lists all jobs if no filter). This is adequate but not fully complete.

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 for its two parameters. The description restates the filtering capability without adding meaning beyond the schema. Baseline 3 is appropriate since schema already documents parameters.

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 'List' and resource 'batch jobs', and mentions the output includes current status. It does not differentiate from siblings like batch_submit_job or batch_download, but the purpose is specific and understandable.

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 filtering by state or time range, implying usage context. However, it does not provide guidance on when to use this tool versus alternatives (e.g., batch_download for retrieving files), nor does it state exclusions.

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

batch_submit_jobB

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

B3.4/5.0
Behavior2/5

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

With no annotations, the description only notes asynchronous processing and return of job ID and status. It fails to disclose other critical behaviors such as how to check job completion, limits on concurrent jobs, or what happens on failure.

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?

Three concise sentences, no wasted words, front-loaded with the core purpose and key behaviors.

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 13 parameters, no output schema, and many sibling tools, the description lacks details on how results are retrieved, format of job ID/status, or any reference to batch_list_jobs. It feels incomplete for a complex submission 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?

All 13 parameters have descriptions in the schema (100% coverage), so the description adds no additional parameter meaning beyond the schema. Baseline of 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 it submits a batch data download job for large historical datasets, returns job ID and status, and is asynchronous. This distinguishes it from sibling tools like batch_list_jobs and batch_download.

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 'large historical datasets' implying scale, but does not explicitly state when to use this over alternatives like batch_download, nor does it mention any prerequisites or exclusions.

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

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 must carry the full burden. It fails to disclose behavioral traits such as data freshness, rate limits, authentication needs, or error behavior, leaving the agent without crucial 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?

The description is a single sentence that is front-loaded with the verb and resource, containing no extraneous information. Every word serves a 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 the tool is simple with one parameter and no output schema, the description is minimally adequate but lacks information about the return format or data structure, which the agent would need to interpret the result.

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 schema already documents the single parameter 'symbol' with enum and description. The description adds no additional meaning beyond restating the symbols, 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 'current price quote' for specific futures symbols (ES, NQ), making the purpose unmistakable and distinguishing it from sibling tools like '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 usage for current quotes via 'current price quote', but does not explicitly state when to use it versus alternatives (e.g., historical data) or mention any prerequisites or exclusions.

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 for behavioral disclosure. It does not mention whether the operation is read-only, any rate limits, data recency, or other behavioral traits critical for an agent.

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, concise sentence with no wasteful words. However, it is somewhat under-specified, lacking details that could improve utility without significant expansion.

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 absence of an output schema and the tool's specific purpose, the description omits crucial details such as the output format (e.g., array of OHLCV objects), ordering, and any limitations (e.g., only for ES and NQ symbols). It is insufficient for an agent to fully understand the tool's capabilities.

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 three parameters (symbol, timeframe, count). The description adds no additional meaning beyond what the schema already provides, so it meets the baseline without enhancing parameter understanding.

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 tool retrieves historical OHLCV bars for futures contracts, specifying the resource and data type. However, it does not explicitly differentiate from sibling tools like get_futures_quote (which returns a single quote) or timeseries_get_range, though the context implies distinction.

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, no prerequisites, or conditions. It simply states what it does, leaving the agent without decision-making context.

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

get_session_infoB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
timestampNoOptional ISO timestamp (defaults to now)

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 bears full responsibility for behavioral disclosure. It only states a read operation without mentioning error handling, authentication requirements, rate limits, or return value format. The minimal description adds little beyond the tool name.

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 concise sentence that front-loads the tool's purpose. It is appropriately sized with no redundant information, earning its place efficiently.

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 (one optional parameter, no output schema), the description is minimal but adequate. However, it fails to clarify what 'session information' includes, leaving ambiguity about the return structure. With many sibling tools, slightly more detail could improve completeness.

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% for the single optional timestamp parameter, which already includes a clear description and default behavior. The description does not add any additional meaning beyond what the schema provides, meeting the baseline for high coverage.

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 current trading session information, specifying the sessions (Asian/London/NY). It uses a specific verb ('Get') and resource ('trading session information') and distinguishes itself from sibling tools like get_futures_quote and 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 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 contexts where this tool is appropriate or inappropriate, nor does it suggest any sibling tools for comparison.

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

metadata_get_costA

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

A3.9/5.0
Behavior4/5

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

With no annotations, the description must fully disclose behavior. It states the tool calculates cost before downloading, implying it is a safe, read-only operation. However, it does not explicitly state idempotency or lack of side effects, but the name 'metadata_get_cost' and description suggest no state changes. This is adequate for a simple cost estimation 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?

The description is a single, concise sentence that directly conveys the tool's purpose. There is no fluff or redundant information. Every word is necessary.

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 lack of an output schema and the moderate complexity of 8 parameters, the description is minimal. It does not explain the return format, units, or any error conditions. While the parameter schema covers inputs, the agent would benefit from knowing that the result is a numeric cost value. The description is adequate but not fully complete.

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, meaning it already documents all 8 parameters with their meanings. The description does not add any additional semantic information beyond what the schema provides. Therefore, a score of 3 is appropriate as the description adds no value beyond 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 clearly states the tool's purpose: 'calculate the cost in USD for a historical data query before downloading'. The verb 'calculate' and resource 'cost' are specific, and it distinguishes itself from sibling tools like 'get_historical_bars' which retrieve data, and 'batch_submit_job' which submits downloads.

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 does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, it lacks information about prerequisites, exclusions, or scenarios where other tools would be more appropriate. The agent must infer usage context.

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.1/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing behavioral traits such as the output format (single date range vs list), whether it performs any validation, or if there are side effects like caching.

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?

A single sentence that is concise and front-loaded with the core action. However, it could be slightly expanded to include key details without being 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?

For a simple tool with one parameter and no output schema, the description is minimal. It fails to explain what 'available date range' means (e.g., start/end date, format) or the context of use.

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% (the single parameter 'dataset' is described). The description does not add extra meaning beyond the schema, but the schema itself is clear. Baseline score of 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 specific resource 'available date range for a dataset', distinguishing it from sibling tools like metadata_list_datasets (which lists datasets) and timeseries_get_range (which likely returns time series data).

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 vs alternatives. For example, it doesn't explain whether this tool is preferred over querying the dataset itself or using timeseries_get_range for similar date ranges.

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

metadata_list_datasetsA

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

A3.7/5.0
Behavior3/5

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

Without annotations, the description indicates a read-only listing operation. Lacks detail on pagination, limits, or side effects, but the tool is inherently simple.

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, action verb first, clear and efficient.

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?

No output schema, so description should elaborate on return format. It does not, leaving a gap. However, the tool is simple and context from name implies a list of dataset identifiers.

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 a high-level summary ('date range filtering') but no additional meaning beyond what the schema provides for the two parameters.

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?

Clearly states the action (List), the resource (all available Databento datasets), and optional date range filtering. Distinguishes from sibling tools like metadata_list_fields or metadata_list_publishers by specifying datasets.

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?

Mentions optional date range filtering, giving a usage condition. However, does not provide when not to use or explicitly compare with alternative siblings like metadata_get_dataset_range.

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.6/5.0
Behavior3/5

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

No annotations are present, so the description bears full burden. It truthfully implies a read-only operation but does not disclose potential errors, authentication needs, or 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 concise sentence (12 words) that clearly conveys the tool's purpose without any superfluous details.

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 no output schema, the description includes useful info about the return (types and descriptions). It is adequate for a simple list tool, though no pagination or error details are 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?

The schema covers both parameters with descriptions, achieving 100% coverage. The description adds no extra meaning beyond what the schema already 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 'List' and the resource 'fields available for a specific schema'. It distinguishes itself from sibling tools like metadata_list_datasets and metadata_list_schemas by focusing on fields within a schema.

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, nor any prerequisites or contrasted with other list tools.

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.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It lists publishers with details but does not disclose any behavioral traits such as read-only nature, performance characteristics, or response size. It is minimally adequate.

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 wasted words. Front-loaded verb and resource. Highly concise and clear.

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?

For a simple listing tool with one optional parameter and no output schema, the description is mostly complete. However, it does not specify what 'details' are returned, which could aid the agent in understanding the output shape.

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 parameter 'dataset' is fully described in the schema (100% coverage). The description echoes that it is optional for filtering but adds no additional meaning, format, or examples. 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?

The description clearly states the action (list), resource (publishers), and optional filter by dataset. It distinguishes from siblings like metadata_list_datasets which lists datasets instead.

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 vs alternatives like metadata_list_datasets or metadata_list_fields. The description only states what it does, not when it's appropriate.

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

metadata_list_schemasC

List available data schemas for a specific dataset

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

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 the full burden of behavioral disclosure. It does not state that the tool is read-only, whether authentication is required, or what happens if the dataset does not exist. The behavior is minimally implied but not explicitly described.

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, front-loaded sentence with no wasted words. However, it is so brief that it sacrifices useful context, preventing a higher score.

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 lack of an output schema, the description should explain what is returned (e.g., schema names or IDs). It does not, leaving the agent to guess the structure. The tool is simple but the description is incomplete.

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 one required parameter 'dataset' described in the schema. The description adds no additional semantic information beyond what the schema already provides, meeting the baseline expectation.

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 'List available data schemas for a specific dataset', identifying the action (list) and resource (schemas) with a specific condition (for a dataset). It distinguishes itself from sibling metadata tools like metadata_list_datasets and metadata_list_fields, which operate on different entities.

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. The description implies the need for a dataset code but does not mention prerequisites, such as first obtaining dataset codes from metadata_list_datasets, or when to prefer this over metadata_list_fields.

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

reference_get_adjustmentsC

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

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility. It describes a read-like operation but does not explicitly state it is read-only, safe, or idempotent. No behavioral traits (e.g., cost, rate limits, side effects) are disclosed.

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, clear sentence with no filler. It is front-loaded and efficient, though slightly under-specified.

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 absence of an output schema and annotations, the description should provide more context about return data format, error conditions, or behavior for missing dates. The current text leaves significant 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?

The input schema has 100% coverage with descriptions for all parameters. The description adds no additional meaning beyond the schema, so it meets the baseline of 3.

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 action 'Get' and the resource 'price adjustment factors for backadjusted prices', making it distinct from sibling tools like reference_get_corporate_actions or timeseries_get_range. However, it could be more precise about the types of adjustments (e.g., dividends, splits).

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. There is no mention of scenarios, prerequisites, or typical use cases, leaving the agent to infer usage solely from the name.

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.8/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. Only states it 'gets' data; no mention of read-only nature, required permissions, or side effects. Lacks transparency.

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?

Single sentence is concise, but under-specified. Could benefit from a second sentence on return format or usage hints 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?

No output schema, no annotations, and 5 parameters with 3 required. Description does not cover what is returned or how to interpret results, leaving agents 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?

100% schema coverage means each parameter is described. Description adds minimal extra meaning (e.g., 'dividends, splits' as examples), but does not clarify relationships or constraints beyond schema.

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?

Clearly states the tool retrieves corporate actions for symbols, with examples. Distinguishes from sibling 'reference_get_adjustments' by specifying corporate actions specifically.

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 vs. sibling tools like 'reference_get_adjustments' or 'timeseries_get_range'. Lacks context on prerequisites or typical use cases.

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

reference_search_securitiesB

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

B3.1/5.0
Behavior2/5

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

With no annotations, the description bears full burden but only states the basic action. Fails to disclose read-only nature, authentication needs, pagination behavior, or what happens on empty results.

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 is very concise and front-loaded with verb and resource. However, it may be too brief at the cost of missing important details.

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, 3 required, no output schema, and many sibling tools, the description is insufficient. Lacks details on return format, result interpretation, or special 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?

Input schema covers 100% of parameter descriptions, so the tool description adds no additional meaning beyond the schema. Baseline score of 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?

Description clearly states the verb 'search', the resource 'security master database', and the outcome 'instrument metadata'. It effectively distinguishes from sibling tools like reference_get_adjustments or symbology_resolve.

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 such as reference_get_adjustments or reference_get_corporate_actions. Missing context about prerequisites, filters, or preferred use cases.

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
Behavior2/5

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

Given no annotations are provided, the description carries the full burden of behavioral transparency. It only states the core function without disclosing important traits such as rate limits, authentication requirements, error handling for unresolved symbols, or the nature of the output. This 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.

Conciseness4/5

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

The description is a single concise sentence that wastes no words, and it front-loads the primary action. While it could benefit from structured bullets or parameter hints, it is efficient for a simple statement.

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?

The tool has 6 parameters (5 required) and no output schema or annotations. The description does not explain return values, error behavior, or the role of 'dataset'. This leaves significant gaps 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 all parameters are documented in the schema. The description adds no extra meaning beyond 'across a date range', which is already implied by the schema's required start_date. Thus, baseline score of 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 'resolve' and the resource 'symbols', specifying the outcome 'to instrument IDs or other symbol types' with a temporal scope 'across a date range'. This effectively distinguishes it from sibling tools like batch_download or metadata_list_datasets, which are unrelated to 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 Guidelines3/5

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

The description provides basic context for when the tool is applicable (resolving symbols across dates) but lacks explicit guidance on when not to use it or alternatives. Since sibling tools are diverse and no direct competitor exists, the usage is implied but not fully elaborated.

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

timeseries_get_rangeC

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

C2.9/5.0
Behavior2/5

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

With no annotations, description carries full burden but fails to disclose behavioral traits such as rate limits, data volume limits, authentication requirements, or return format. Only mentions schema flexibility, which is already in the input schema enum.

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?

Two sentences, front-loaded with purpose, no redundancy. Every word earns its place.

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 8 parameters, 4 required, no output schema, and no annotations, the description is insufficient. It does not explain return format, pagination behavior, error handling, or data constraints, leaving gaps for tool selection and invocation.

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. Description adds context by listing example schemas, but does not add significant meaning beyond the schema descriptions. Parameters are well-documented in the schema, so description offers marginal value.

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?

Description clearly states 'Get historical market data' with specific verb and resource. It mentions 'flexible schemas' and lists examples, distinguishing it from sibling tools like batch_download and metadata tools. However, it could better differentiate from similar historical data tools like 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 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. Does not mention when to prefer this over batch_download or get_historical_bars, nor provide exclusions or context for selection.

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. Dates show when Glama detected each change.

  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
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Real-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nice-Wolf-Studio/databento-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server