# Drillr — The financial MCP for AI agents MCP server

The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.

## Links
- Registry page: https://www.getdrio.com/mcp/ai-drillr-drillr
- Repository: https://github.com/Little-Grebe-Inc/drillr-mcp-server

## Install
- Endpoint: https://gateway.drillr.ai/mcp/data
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://gateway.drillr.ai/mcp/data
- Header: Authorization

## Tools
- sec_report_list - Use to discover which SEC filings exist for a ticker before searching content.
For the actual content use sec_report_search instead.

List indexed SEC filings for a given ticker with a summary header.

Returns: summary (period coverage, per-type counts) + table of up to 50 filings
(fiscal_year, fiscal_quarter, filing_type, filing_date, period_start, period_end).

filing_types filter: omit for main reports only (10-K, 10-Q, 20-F, S-1, DEF 14A
and /A amendments; excludes 8-K/6-K); pass [] for all indexed types; pass explicit
allowlist to override. Endpoint: https://gateway.drillr.ai/mcp/data
- sec_report_search - Use when you need narrative content (risk factors, MD&A, guidance language).
For consolidated financial numbers use run_sql on financial_statements instead.

SEC report semantic search. Search paragraph content in 10-K/10-Q/20-F/6-K filings.

Search Strategy:
- (1) Time-specific queries ("recent", "last year", "Q4 2025", etc.): Apply a time range
  filter upfront to narrow results to the relevant period.
- (2) Broad queries with no time requirement: Broad first, narrow later. First 1-2 searches:
  use MINIMAL filters. Do NOT set filing_types or period unless explicitly needed. This
  discovers what information exists in what filings. Later searches: add period/type filters
  to narrow down.

Filing types: 10-K (US annual), 10-Q (US quarterly), 8-K (US current/material events),
20-F (foreign annual), 6-K (foreign current), S-1 (US IPO registration), F-1 (foreign IPO registration).

SCOPE:
- (1) Indexes ONLY company-filed SEC reports. Does NOT index institutional filings (13F-HR, 13D, 13G). For institutional holdings, use insider_and_institution_activities with source='institution'.
- (2) For standardized consolidated financial numbers (revenue, margins, EPS, etc.), use financial_statements first — SEC filings contain narrative context, not structured data.

High-Value Search Scenarios (use proactively when relevant):
- Share dilution / SBC / buyback → search "Shareholders' Equity" or "Capital Stock" for share-level (not just dollar-level) breakdowns
- Facilities / properties → search "Properties" for owned vs leased status, lease terms, land use rights
- Interest rate sensitivity → search "Market Risk" or "Interest Rate Risk" for floating-rate debt exposure, swap arrangements
- Segment revenue breakdown → search "Segment Information" or "Revenue Disaggregation"
- Risk factors → search "Risk Factors" for specific risks
- Management guidance → search "Outlook" or "Guidance" in MD&A
- Accounting policies → search "Critical Accounting Policies"
- Stock split history → search "Stock Split" for split ratios and dates

Use for: segment revenue, risk factors, management discussion, guidance, accounting policies, operational metrics, related party transactions, property details, share structure. Endpoint: https://gateway.drillr.ai/mcp/data
- company_search - Use for qualitative company discovery (industry, business model, supply chain,
competitors, management background). For numerical screening (revenue, margins,
ratios, growth rates) use run_sql on company_snapshot instead.

Drillr's company knowledge base — searchable across industry classification,
product offerings, business model, segment structure, competitive landscape,
supply chain, management background, and customer profile.

Pass a natural language description (e.g. "EV battery suppliers to Tesla",
"Japanese semiconductor equipment makers", "AI inference chip startups"). Returns
a structured list of matching companies with context snippets.

ONLY for finding a LIST of companies by description. Endpoint: https://gateway.drillr.ai/mcp/data
- run_sql - Use when you need structured rows from financial/market/altdata tables.
For SEC filing narrative use sec_report_search instead. For company qualitative
discovery use company_search instead. For recent news + market events use
signal_list instead.

Execute a read-only PostgreSQL SELECT query on financial and alternative-data tables.
Call `get_table_schema` first to look up columns for a specific table. For alternative-data categories, call `list_tables(categories=[...])` to see tables + columns.

SQL constraints:
- No CTE (`WITH ... AS`) — use subqueries instead.
- Date columns are TEXT — use plain string comparison (`period_end >= '2024-01'`). Never use `::date` cast or `INTERVAL` arithmetic.
- No `ROUND(float8, int)` — use `CAST(value AS DECIMAL(10,2))` if rounding is needed.
- Structured-data queries: always filter by ticker (`WHERE ticker IN ('A','B','C')`; screening: `ticker NOT LIKE '%-%'` to exclude preferred stock). Alternative data is macro/industry/patent — no ticker filter required.

Structured data (tables grouped by domain):

## Market Data
- price_volume_history: Historical OHLCV price data, ~32M rows. MUST filter by ticker AND time_frame ('daily'|'weekly'|'monthly') to avoid timeout. Columns: ticker, period_end, time_frame, open, high, low, close, adj_close, volume, turnover, vwap, change, change_percent.
  Ticker conventions:
    * STOCK / ETF — bare 1–5 letters (AAPL, MSFT, SPY, QQQ, VOO, TLT). Foreign listings use exchange suffix: 1557.T (JP), 310960.KS (KR).
    * INDEX — leading "^" (^GSPC=S&P 500, ^DJI, ^IXIC=NASDAQ Composite, ^NDX=NASDAQ 100, ^RUT=Russell 2000, ^VIX). Foreign indices: ^FTSE, ^GDAXI, ^N225, 000001.SS (Shanghai Composite), FTSEMIB.MI.
    * COMMODITY — [code]+USD or +USX (CLUSD=WTI futures, BZUSD=Brent, NGUSD=natgas, GCUSD=gold, SIUSD=silver, HGUSD=copper, ZCUSX=corn, CTUSX=cotton). Suffix USX = priced in cents.
    * FOREX — 6 letters base+quote, no separator (EURUSD, USDJPY, GBPUSD, USDCNY).
    * CRYPTO — [token]+USD (BTCUSD, ETHUSD, SOLUSD, DOGEUSD, USDTUSD, USDCUSD).
  Pitfalls:
    1. Same asset, different tickers: NASDAQ 100 → index ^NDX (~26000) vs ETF QQQ (~640). Pick the one matching user intent.
    2. WTI spot ≠ futures. CLUSD here is NYMEX futures, NOT spot (FRED has spot via DCOILWTICO).
    3. Tickers with "." or "^" MUST be quoted in SQL: `WHERE ticker = '^NDX'`.
- index_price: Real-time price snapshot for 3 major US indices: S&P 500 (^GSPC), Dow Jones (^DJI), NASDAQ 100 (^NDX).
- index_composition: Index constituent membership for S&P 500 / Dow Jones / NASDAQ 100 / Nikkei 225 (^N225) / TOPIX (^TPX). Includes current and historical members (active rows have exit_date IS NULL).
- equity_extended_rt: Extended-hours snapshot, one row per ticker (~6.1K US equities; PK=ticker; refreshed every few minutes — see extended_updated_at). Use ONLY for pre-market / after-hours / overnight quotes. Columns: ticker, company_name, market, price_current (last regular-session close), then three parallel blocks pre_* / after_* / overnight_* (price, change_val, change_rate, high, low, volume, turnover), plus extended_updated_at. For regular-session OHLCV history use price_volume_history; for valuation / fundamentals use company_snapshot. Japan tickers are NOT in this view yet — extended-hours data is US-only.

## Fundamentals
- financial_statements: Quarterly and annual financial data covering income statement, balance sheet, and cash flow statement. Filter by ticker + fiscal_period ('FY' annual, 'Q1'..'Q4' quarterly).
- company_snapshot: Real-time company snapshot, one row per company. Pre-computed metrics (ratios, percentages, per-share figures, growth rates) only — NOT raw statement line items. For raw statements use financial_statements; for qualitative discovery use company_search.

## Earnings
- earning_call_summary: Earnings call data with AI-structured summaries (management_highlights, guidance, risks, segment_performance, q_and_a). Filter by ticker + period_end (yyyy-mm). NOT for structured financial numbers.
- earning_call_calendar: Earnings conference call schedule with EPS and revenue estimates vs actuals. `date` column is the scheduled earnings call datetime (UTC timestamptz) — NOT the press-release / 10-Q filing date (the filing typically lands the same day or shortly after). Use eps_actual IS NULL for upcoming calls, IS NOT NULL for reported.

## Analyst Coverage
- analyst_ratings: Individual analyst rating events — every re-rating is a separate row. ~565K rows, 519 firms. Filter by ticker; `date` is TEXT (string comparison, no ::date cast). importance >= 4 for high-impact calls.
- analyst_ratings_consensus: Per-ticker analyst consensus rollup — one row per ticker, refreshed daily. Columns: strong_buy/buy/hold/sell/strong_sell counts, total_analysts, consensus, pt_consensus/high/low.

## Ownership & Insider Activity
- insider_and_institution_activities: Insider trades (Form 3/4/5) and institutional holding changes (13D/G/F, 13F-HR) from SEC EDGAR. Filter by ticker + source ('insider' vs 'institution'). For institutions, filer_name is the holder; shares/market_value give position size.

## Corporate Events (8-K)
- executive_change: 8-K executive change events — appointments, departures, reasons, successors, effective dates. Filter by ticker + event_type.
- company_deal_events: Single source of truth for corporate deal activity (8-K 1.01/1.02/2.01, S-4, press releases). M&A, financing, material agreements as event-based rows (announced/signed/amended/closed/terminated/waived). Filter by ticker only — do NOT filter by deal_type. One deal may span multiple rows linked via deal_fingerprint.
- debt_issuance: 8-K debt issuance events — principal amount, interest rate, maturity, lender, use of proceeds. Use is_current = true for latest version when amendments exist.
- securities_offering: 8-K securities offering events — shares, price per share, total proceeds, investors, lock-up. Use is_current = true for latest version when amendments exist.

## Executive Profiles & Compensation
- executive_profile: Key executive profiles — name, title, compensation, gender, birth year. One row per executive per company.
- executive_compensation: Annual executive compensation breakdown — salary, bonus, stock awards, option awards, total. Filter by ticker + year.

## Alternative Data
For alternative-data tables, call list_tables(categories=[...]) first. Endpoint: https://gateway.drillr.ai/mcp/data
- get_table_schema - Use BEFORE run_sql when you're unsure which columns a table has.

Look up column definitions (name, type, description) for a data table. Endpoint: https://gateway.drillr.ai/mcp/data
- fiscal_utility - Use to convert between fiscal year/quarter and calendar months for a given ticker.
Companies have different fiscal year starts (Apple Sep, Nvidia Jan) — call this
before filtering on period_end columns.

Fiscal year ↔ calendar month bidirectional conversion. Forward: ticker + fiscal_year + fiscal_quarter → period_start/period_end. Reverse: ticker + yyyy_mm → fiscal_year/fiscal_quarter. Endpoint: https://gateway.drillr.ai/mcp/data
- list_tables - List alternative-data tables under the given categories. Returns each table's name,
one-line purpose, and column names (call get_table_schema if you need column
types/comments). Batch up to 5 categories in one call.

Use this BEFORE run_sql when you want to explore alt-data — run_sql alone won't
tell you which tables exist.

Available categories:
- Energy & Power — US power plants, electricity prices, regional hourly generation/demand
- Data Centers — facilities, GPU clusters, cooling
- Semiconductors — AI chip specs, sales, ownership, foundry revenue, customs trade
- Compute Pricing — GPU rental, cloud VM spot/on-demand, instance specs
- Model Development — model specs, benchmarks, AI companies, AI polling, LLM arena
- Inference Economics — LLM API pricing across providers
- Macro & Trade — UN Comtrade, US Census trade flows, FRED macro series
- Prediction Markets — Polymarket and Kalshi events, markets, trades, daily aggregates
- Critical Minerals — USGS mineral deposits, country supply, critical materials Endpoint: https://gateway.drillr.ai/mcp/data
- signal_list - Use when you need recent news, events, or market-moving signals for specific
tickers or sectors. For SEC filing narrative use sec_report_search instead.

Recent news + market events filtered by ticker / sector / time range. Each row
is one signal: id, headline, summary, suggested_tickers, sector, score,
trigger_sources, earliest_trigger_event_time, created_at, tags. Continuously
updating feed.

Coverage:
- ~6,900 tickers across US + ADRs of global companies
- Cross-asset: equities, macro, geopolitics, commodities, crypto
- Default sort by earliest_trigger_event_time DESC

Parameters:
- tickers (optional): array of tickers — returns signals
  whose suggested_tickers overlaps any of these
- sector (optional): array of sector strings — returns signals whose sector
  overlaps any of these
- from_date (optional): ISO 8601 timestamp; filter earliest_trigger_event_time >= from_date
- to_date (optional): ISO 8601 timestamp; filter earliest_trigger_event_time <= to_date
- order_by (optional, default earliest_trigger_event_time): 'created_at' | 'earliest_trigger_event_time'
- limit (optional, default 20, max 100): max results
- offset (optional, default 0): pagination offset Endpoint: https://gateway.drillr.ai/mcp/data

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: ai.drillr
- Version: 2.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 19, 2026
- Source: https://registry.modelcontextprotocol.io
