Skip to main content
Glama

Drillr — The financial MCP for AI agents

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Little-Grebe-Inc/drillr-mcp-server
GitHub Stars
6
Server Listing
drillr-mcp-server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 9 of 9 tools scored. Lowest: 4/5.

Server CoherenceA
Disambiguation5/5

Each of the 9 tools has a clearly distinct purpose: company search, fiscal conversion, schema exploration, table listing, news search, SQL querying, SEC filing discovery, SEC content search, and ticker lookup. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern, using descriptive verb_noun or noun_verb combinations (e.g., company_search, list_tables, ticker_lookup). No mixed conventions or abbreviations.

Tool Count5/5

With 9 tools, the server is well-scoped for its financial domain. Each tool serves a necessary function without being excessive or sparse.

Completeness4/5

The tool set covers core workflows: company discovery, financial data querying, news, SEC filings, and schema exploration. Minor gaps such as lack of a dedicated analyst ratings tool are addressable via SQL, making the surface mostly complete.

Available Tools

9 tools
fiscal_utilityA
Read-only
Inspect

Use to convert between fiscal year/quarter and calendar months for a ticker before filtering period_end columns.

Coverage warning: fiscal-year configuration is primarily US, with sparse JP/HK entries and no China A-share coverage in the verified dataset. Do not assume this tool supports a ticker merely because the core equity tables do.

Forward: ticker + fiscal_year + fiscal_quarter → period_start/period_end. Reverse: ticker + yyyy_mm → fiscal_year/fiscal_quarter.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker. Coverage is primarily US; sparse JP/HK; no China A-share configuration.
yyyy_mmNoCalendar month yyyy-mm (required for reverse conversion)
fiscal_yearNoFiscal year (required for forward conversion)
fiscal_quarterNoQuarter 1-4, or 0 for full fiscal year (required for forward conversion)
Behavior5/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, so the description's addition of coverage limitations and conversion mode details adds value without contradiction. The tool is fully transparent about its behavior and constraints.

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?

Four sentences with no waste: first states purpose, second gives coverage warning, third and fourth explain dual usage modes. Front-loaded with key purpose and action.

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?

The description adequately covers the tool's functionality and limitations. With no output schema, it could briefly mention the expected output format (e.g., period dates), but the dual-mode explanation is sufficient for an agent to use it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description adds value by explaining which parameters are used for forward vs reverse conversion, and the yyyy_mm pattern. This slightly exceeds 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 tool converts between fiscal year/quarter and calendar months for a ticker, specifically for filtering period_end columns. It distinguishes itself from sibling tools by focusing on this unique conversion functionality.

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

Usage Guidelines5/5

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

Explicitly says when to use ('before filtering period_end columns') and provides coverage warnings (primarily US, sparse JP/HK, no China A-shares). It also explains the forward and reverse directions with required parameters, guiding correct invocation.

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

get_table_schemaA
Read-only
Inspect

Use BEFORE run_sql when you're unsure which columns a table has.

Look up column definitions (name, type, description) for a data table.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYes
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's addition of 'Look up column definitions' adds minor behavioral context. It does not elaborate on access restrictions, rate limits, or error behavior, which is acceptable given the annotation coverage.

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: the first gives a usage guideline, the second states the output. No wasted words, front-loaded with key information. Highly efficient.

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 the simple tool (one enum param, annotations present, no output schema), the description covers purpose, usage context, and output. It does not mention error handling or the sibling 'list_tables' for discovering available tables, but this is minor for a straightforward lookup 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 0%, but the single parameter 'table_name' is self-explanatory through its enum list. The description adds context by mentioning 'data table', but it does not detail parameter format or constraints beyond what the schema provides. Adequate but not exceptional.

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 looks up column definitions (name, type, description) for a data table, with a specific verb and resource. It also distinguishes from the sibling 'run_sql' by recommending use before executing SQL when unsure of columns.

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?

Explicitly guides when to use: 'Use BEFORE run_sql when you're unsure which columns a table has.' This provides clear context and links to a sibling tool. However, it does not mention when not to use or other alternatives.

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

list_tablesA
Read-only
Inspect

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; omit categories, or pass ["all"], to get the category index instead.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriesNoAltdata category names (see tool description for the list). Omit, or pass "all", for the category index.
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds batching limit (up to 5 categories), behavior when omitted or 'all', and what is returned (name, purpose, column names). No contradiction.

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

Conciseness4/5

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

Well-structured with purpose first, then details, usage guidance, and categories. Slightly long but every sentence serves a purpose. Could be slightly more concise but effective.

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?

No output schema, but description covers what is returned (name, purpose, column names) and directs to get_table_schema for types. Includes batching and categories. Complete for a listing tool.

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

Parameters4/5

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

Schema coverage is 100% with enum list and description. Description reinforces the categories list and adds batching instructions and behavior when omitted. Adds value beyond schema, so slightly above baseline 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?

Clearly states 'List alternative-data tables under the given categories' with specific verb and resource. Distinguishes from siblings like get_table_schema and run_sql by explaining what each returns and when to use them.

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

Usage Guidelines5/5

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

Explicitly says 'Use this BEFORE run_sql when you want to explore alt-data' and mentions get_table_schema for more details. Provides clear when-to-use and alternatives.

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

run_sqlA
Read-only
Inspect

PostgreSQL SELECT over financial / market / alt-data tables — returns structured rows.

Hard rules (query fails otherwise):

  • SELECT only, no CTE (WITH ... AS) — use subqueries.

  • Period columns are TEXT, not dates — period_end is 'YYYY-MM'. Compare as strings (period_end >= '2024-01'); a ::date cast on it fails.

  • Filter structured tables by ticker (WHERE ticker IN ('AAPL','MSFT'); screening: add ticker NOT LIKE '%-%' to drop preferred stock).

Core equity coverage: US, Japan, Hong Kong, and China A-shares. Tickers are US bare (AAPL), Japan .T (6758.T), Hong Kong .HK (00700.HK), and A-shares .SH/.SZ (600519.SH, 300750.SZ). financial_statements, company_snapshot, and price_volume_history span all four. Specialized tables vary — call get_table_schema before treating an empty result as a finding.

Tables by domain (call get_table_schema for detail):

  • Market: price_volume_history (OHLCV history; MUST filter ticker + time_frame), index_price, equity_extended_rt (pre/after/overnight quotes)

  • Fundamentals: financial_statements (GAAP income/balance/cashflow), company_snapshot (ratios, per-share, growth)

  • Earnings: earning_call_summary, earning_call_calendar

  • Analyst: analyst_ratings, analyst_ratings_consensus

  • Ownership: insider_and_institution_activities

  • 8-K events: executive_change, company_deal_events, debt_issuance, securities_offering

  • Executives: executive_profile, executive_compensation

  • Alt-data: macro / industry / trade / AI-supply-chain — call list_tables(categories=[...])

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesPostgreSQL SELECT query
Behavior5/5

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

Beyond the readOnlyHint=true and destructiveHint=false annotations, the description discloses key behavioral constraints: SELECT-only (no CTEs), period columns as TEXT requiring string comparison, mandatory ticker filtering for structured tables, and coverage limitations across markets. It also warns that empty results may be due to schema variation, telling agents to call get_table_schema first. This adds substantial context beyond the annotations.

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?

Despite its length, the description is tightly structured and front-loaded: purpose first, then hard rules, then coverage, then table domains. Every sentence conveys necessary information—no filler. The strategic organization makes the volume of details easily scannable and actionable.

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?

Given the tool accepts arbitrary SQL over a large schema, the description is remarkably complete. It covers syntax restrictions, data types, ticker conventions, market coverage, table partitioning by domain, and explicitly defers schema details to get_table_schema and list_tables. Without an output schema, it still clarifies that results are structured rows, which is sufficient for an agent to understand expected behavior.

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

Parameters5/5

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

The sole parameter 'sql' is described in the schema as 'PostgreSQL SELECT query', but the description greatly expands this by providing hard syntax rules, examples of valid ticker formats, and domain-specific table guidance. This goes far beyond the schema's minimal description, offering essential semantic context for writing correct queries.

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 opening line clearly states the tool executes PostgreSQL SELECT queries over specific financial/market/alt-data tables and returns structured rows. This specific verb+resource combination distinguishes it from sibling tools like news_search or sec_report_search, which handle unstructured or document data.

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

Usage Guidelines5/5

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

The description provides detailed usage context: hard rules for query construction, required filters for certain tables, and explicit pointers to sibling tools (get_table_schema, list_tables) for schema exploration and discovery of specialized tables. This effectively guides when to use run_sql vs. when to use alternatives for schema discovery.

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

sec_report_listA
Read-only
Inspect

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 (US 10-K/10-Q/20-F/S-1/DEF 14A

  • /A amendments; JP 120/140/160; HK/A-share annual_report / quarterly_report / q1_report; excludes ad-hoc 8-K/6-K); pass [] for all indexed types; pass explicit allowlist to override.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker, e.g. NVDA, 6758.T, 00700.HK, 600519.SH
filing_typesNoFilter by filing type. Omit for default (periodic reports + IPO/shelf registrations + amendments; excludes ad-hoc disclosures). Pass [] for all indexed types. Pass an explicit allowlist to override — use values from the `filing_type` column of a prior unfiltered call.
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds detailed behavioral context: returns a summary with period coverage and per-type counts, plus a table of up to 50 filings with specific columns. It explains the default filtering logic for filing_types, which goes well beyond annotations.

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 well-structured: first sentence states purpose and usage guidance, then enumerates return structure, finally explains parameter behavior. Every sentence adds value with no redundancy or filler.

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 read-only list tool with 2 parameters and no output schema, the description covers return format, parameter behavior, and inter-tool guidance. It provides all necessary information for correct invocation, including edge cases for filing_types.

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

Parameters5/5

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

Schema description coverage is 100%, but the description adds significant meaning: it explains the default behavior of filing_types (omit for main reports, pass [] for all, pass allowlist to override), and how to obtain valid values from a prior unfiltered call. This enriches the schema significantly.

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: 'List indexed SEC filings for a given ticker with a summary header.' It distinguishes itself from the sibling sec_report_search by specifying its use for discovery before content retrieval.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool ('discover which SEC filings exist for a ticker before searching content') and when to use the alternative ('For the actual content use sec_report_search instead'). It also explains how to use the filing_types parameter with three distinct options.

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

ticker_lookupA
Read-only
Inspect

Resolve a company name, brand, or ticker substring to canonical ticker(s). Use this FIRST when the user mentions a company by name/brand/nickname before running any ticker-keyed tool.

Input:

  • query (required): company name, brand, or ticker substring, e.g. "Apple", "苹果", "AAPL", "OpenAI"

  • market (optional): "us" | "jp" | "hk" | "cn" — omit to search all markets

Returns up to 5 matches ranked by prefix-hit first, then name length. Returned symbols carry their market suffix: US bare (AAPL), Japan .T, Hong Kong 5-digit .HK (00700.HK), A-share .SH/.SZ (600519.SH).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCompany name or ticker substring (case-insensitive). Matches historical names + tickers too.
marketNoOptional market filter: 'us' | 'jp' | 'hk' | 'cn'. Omit to search all markets.
Behavior5/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description additionally explains ranking logic (prefix-hit first, name length) and market suffix conventions, which are beyond annotation scope.

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: two short paragraphs. The first sentence front-loads the purpose, then provides usage context, then parameter details. No unnecessary words.

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?

Despite no output schema, the description fully explains the return value: up to 5 matches, ranking method, and market suffix formats. All input parameters are covered with examples and behavior. No gaps.

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

Parameters5/5

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

Schema description coverage is 100%, yet the description adds valuable examples for the query parameter (e.g., 'Apple', 'AAPL') and explains the market parameter's effect when omitted. This meaningfully extends schema information.

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

Purpose5/5

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

The description states the tool resolves a company name, brand, or ticker substring to canonical ticker(s). It clearly indicates the verb and resource, and distinguishes this from sibling tools by advising to use it first before ticker-keyed tools.

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

Usage Guidelines5/5

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

Explicitly says 'Use this FIRST when the user mentions a company by name/brand/nickname before running any ticker-keyed tool.' This provides clear when-to-use context and implies when not to use (when ticker is already known).

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    Wall Street data feed for AI agents, providing access to 100M+ source-traced SEC records, institutional holdings, insider trades, congress trading, and more via MCP tools.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides live financial data for any LLM agent, including stock quotes, crypto prices, SEC filings, XBRL financials, FX rates, and macro indicators, through ten MCP tools.
    11
    659
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Provides AI agents with clean, normalized access to financial data including company fundamentals, insider trades, SEC filings, macro series from FRED, real-time quotes, and ETF holdings.
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.