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
Available Tools
10 toolsai_adoptionARead-onlyInspect
Search concrete enterprise AI applications disclosed in US company earnings calls from September 2023 to the present. Filter by ticker, partially match a company name, search for an application or workflow by name, or use since in YYYY-MM-DD format to include only observations updated on or after that date. Returns a data array ordered by update_date descending. Each result contains ticker, company_name, application_name, first_report_date, update_date, summary (an AI application summary), evolution_summary, business_position, deployment_stage, deployment_scope, value_type, metrics (application-related metrics), and evidence (supporting management quotes, with speaker and section when available). Use this tool to identify where and how a company applies AI, assess deployment maturity, scope, and disclosed value, and inspect the supporting evidence. Use no filters to browse the most recently updated observations. No matches return an empty data array.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based page number. Default 1. | |
| limit | No | Results per page. Default 10, max 10. | |
| since | No | Only return observations with update_date on or after this date. Use YYYY-MM-DD. | |
| ticker | No | Optional US ticker filter, up to 10 symbols. Accepts one symbol or a list. Company names are not resolved. | |
| company_name | No | Case-insensitive partial company-name match. Empty means no filter. | |
| application_name | No | Case-insensitive partial application-name match. Empty means no filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds meaningful behavioral detail beyond that: results are ordered by update_date descending, no matches return an empty data array, only observations from September 2023 onward are included, and the response shape is fully enumerated. This gives an agent strong expectations without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose, filters, return behavior, field list, use cases, and edge-case behavior. The enumeration of every returned field is somewhat long, but it is justified because no output schema exists. Every sentence earns its place, though it could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description fully compensates by naming every result field, describing ordering, specifying the date range, explaining empty results, and stating usage intent. Pagination and parameter constraints are covered by the schema, so the description is complete for an agent to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already explains each parameter and its constraints. The description adds a helpful grouping of filter capabilities and the 'no filters' browsing pattern, but it does not materially add meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Search'), a specific resource ('concrete enterprise AI applications disclosed in US company earnings calls'), and a clear date window (September 2023 to present). It also lists the fields returned, making the tool's scope unmistakable against its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: identify where/how a company applies AI, assess deployment maturity/scope/value, and inspect evidence. It also explains that no filters browses recent observations. It does not explicitly contrast with sibling search tools, but the use cases are clear enough for an agent to select this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_searchARead-onlyInspect
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 graph — searchable across industry classification, product offerings, business model, segment structure, competitive landscape, supply chain, management background, and customer profile.
Coverage: US, Japan, Hong Kong, China A-shares, and Korea. market accepts one lowercase value or a list from us | jp | hk | cn | kr; omit it or pass [] for all five. List order does not set priority.
Pass a natural-language description (for example, "Hong Kong and China EV battery suppliers"). Returns a structured list of matching companies with context snippets.
ONLY for finding a LIST of companies by description.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language company description | |
| market | No | Optional market filter. Pass one lowercase value or a list from 'us' | 'jp' | 'hk' | 'cn' | 'kr'. Omit or pass [] for all five; list order does not set priority. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive; the description adds meaningful behavior: returns a structured list with context snippets, accepts natural-language queries, covers exactly five markets, and clarifies that list order carries no priority. This complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded with the most important usage distinction first, and each paragraph has a clear role. Some redundancy exists between the first and second paragraphs' lists of qualitative dimensions, but the structure is still easy to scan and not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by specifying the return shape as a structured list with context snippets. It covers input format, market enumeration, coverage, and scope, which is sufficient for a two-parameter discovery tool; only minor output-field detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds a concrete query example and expands the meaning of the market filter with coverage context and the 'omit or [] for all five' rule. Most market details repeat the schema, but the example and qualitative framing provide extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: qualitative company discovery across named dimensions, and closes with a constraint that it is ONLY for finding a list of companies by description. It also distinguishes itself from run_sql's numerical screening, making the tool's identity unambiguous even without an explicit title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool (qualitative discovery) and when not to (numerical screening), naming run_sql on company_snapshot as the alternative. The final line 'ONLY for finding a LIST of companies by description' provides a hard boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filing_listARead-onlyInspect
Use to discover which SEC filings exist for a ticker before searching content. For the actual content use filing_search instead.
List indexed SEC filings for a given ticker with a summary header.
Coverage: US, Japan, and China A-shares. US bare (NVDA), Japan .T (6758.T),
A-shares .SH/.SZ (600519.SH).
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; 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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, e.g. NVDA, 6758.T, 00700.HK, 600519.SH | |
| filing_types | No | Filter 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavior beyond that: market coverage limits (US, Japan, China A-shares only), the default filter that excludes ad-hoc 8-K/6-K, the 50-filing table cap, and the summary-plus-table return shape. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the directive and sibling routing before diving into supporting details. Each block (coverage, returns, filter semantics) carries non-redundant information the agent cannot infer from the schema, and the line breaks organize it cleanly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Exceptionally complete for a tool with no output schema: the return shape is spelled out, filter modes are fully specified, and coverage is delimited. The one notable gap is the 50-filing cap — the description discloses the limit but doesn't say whether summary counts reflect all indexed filings or how to reach filings beyond the 50-row window.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds genuine meaning beyond it: it spells out the three modes of filing_types with per-market filing-type codes (10-K/10-Q/20-F/S-1/DEF 14A for US, 120/140/160 for JP, annual_report/quarterly_report for A-shares) and instructs the agent to source allowlist values from a prior unfiltered call's filing_type column. This is operational guidance the schema alone does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('discover which SEC filings exist for a ticker') with a clear scope. It also names the sibling it is not ('For the actual content use filing_search instead'), so an agent can distinguish it from filing_search, news_search, and company_search without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('before searching content') and names the alternative (filing_search) with the differentiating condition (discovery vs. content). The coverage and ticker-format guidance further constrain correct usage per market, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filing_searchARead-onlyInspect
Search one company's SEC filings. Returns ## Facts (exact as-reported and restated financial values) and ## Passages (matching filing text) — both come back in one call.
ticker is REQUIRED; resolve company names with ticker_lookup first. Coverage: US, Japan, and China A-shares. When ## Facts is empty, read ## Passages.
period_start/period_end match by interval overlap; fiscal_period sets granularity (Q1..Q4/H/9M/FY). Pass an explicit period window for the most recent figure.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Publication cutoff date YYYY-MM-DD. Rows with missing published_at still appear; not a strict point-in-time snapshot | |
| query | Yes | Natural-language financial metric query | |
| top_k | No | Max results; 1-30, default 10 | |
| ticker | Yes | Required. Canonical or historical ticker; one only. Resolve company names with ticker_lookup first | |
| period_end | No | Calendar end date YYYY-MM-DD (calendar, not fiscal) | |
| period_type | No | instant or duration | |
| period_start | No | Calendar start date YYYY-MM-DD (calendar, not fiscal; resolve fiscal periods via financial_statements period_start/period_end) | |
| fiscal_period | No | Q1 | Q2 | Q3 | Q4 | H | 9M | FY, or a list of those |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive, and the description adds meaningful behavioral context: both Facts and Passages return in one call, interval-overlap matching for date ranges, and an empty-Facts fallback. It also notes coverage for US, Japan, and China A-shares, a real constraint on expected results. No contradiction with annotations; a couple of edge behaviors (e.g., both sections empty) are left unspecified, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short blocks with every sentence earning its place: purpose, output structure, required ticker resolution, coverage, fallback, and date semantics. It front-loads the core verb and object and avoids filler, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by defining the return sections and the empty-Facts fallback. It covers coverage, required ticker, resolution route, and date/fiscal-period matching. The main structural parameters (as_of, top_k, period_type) are left to a fully-described schema, which is acceptable at 100% coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already gives 100% description coverage, so the baseline is 3. The description adds value by explaining the period semantics — `period_start`/`period_end` match by interval overlap and `fiscal_period` sets granularity — and by stressing ticker as required with ticker_lookup resolution. It does not detail every parameter, but it clarifies the non-obvious ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search one company's SEC filings', a specific verb+object that immediately distinguishes it from broader tools like news_search or run_sql and from ticker_lookup. It further specifies the dual return structure (`## Facts` and `## Passages`), making the tool's purpose concrete. It does not name a sibling like filing_list, but the singular 'one company's' plus the specific output types is enough to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to resolve company names with ticker_lookup first, giving a clear prerequisite and routing decision. It also provides coverage limitations and a fallback rule ('When `## Facts` is empty, read `## Passages`') and advises to pass an explicit period window for the most recent figure. It does not explicitly contrast with filing_list for list-style queries, so it stops short of a complete when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_schemaARead-onlyInspect
Use BEFORE run_sql when you're unsure which columns a table has.
Look up column definitions (name, type, description) for a data table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context by clarifying the output content (column definitions with name, type, description) and its role as a prerequisite to run_sql. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The usage recommendation comes first, followed by a precise statement of what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only schema lookup with one parameter and a complete enum of tables, the description adequately covers return fields and timing. It could mention error or edge-case behavior, but those are not essential given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate, but it only vaguely refers to 'a data table.' The enum in the schema lists the valid table names, but the description adds little meaning beyond what the parameter name already implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') with a clear resource ('column definitions') and even states what is returned ('name, type, description'). The 'Use BEFORE run_sql' clause helps distinguish this tool from the primary query sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool ('BEFORE run_sql' when unsure which columns a table has) and names run_sql as the alternative. It does not fully discuss when not to use it or contrast it with list_tables, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_inflectionsARead-onlyInspect
Search industry inflections identified through structured research of earnings calls held by US-listed companies after July 2026, including the change mechanism, impact scope, market attention and affected companies.
All filters are optional and combine with AND. With no filters, returns the newest first page. Results are ordered by quarter descending. If nothing matches, returns the text No relevant industry inflections found.
Returns JSON as { "data": [...] }. Every result contains quarter, name (English title), regime_type (change mechanism), impact_scope, impact_degree (limited | significant | structural), attention_verdict (market-absorption judgment), change_summary (currently Chinese), first_seen (YYYY-MM-DD), and source_tickers (companies whose calls are primary evidence). When impact_companies is true, company_impacts contains items with ticker, relation, direction, magnitude, impact_stage, evidence_status, affected_business, and impact. A successful call costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based page number. Default 1. | |
| limit | No | Results per page. Default 10, max 10. | |
| ticker | No | Optional company filter, up to 10 US ticker symbols. Returns themes where any supplied ticker is a source company or an affected company. Use symbols such as AAPL, not company names. | |
| keyword | No | Optional case-insensitive text contained in the theme name or research summary, up to 200 characters. | |
| impact_companies | No | Include the per-company company_impacts list. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing ordering, empty-result behavior, exact JSON shape, field details, and credit cost. It even notes that change_summary is currently Chinese. This gives the agent a complete behavioral model of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries meaningful information: purpose, filtering semantics, ordering, output format, field definitions, conditional behavior, and cost. It is front-loaded with the core purpose and structured in a logical flow from behavior to return schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully documents the return structure, including all top-level fields and the conditional company_impacts subfields. It also covers pagination, ordering, empty results, data source time range, and credit cost, making it complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining that filters combine with AND, describing the no-filter default behavior, and specifying what happens when impact_companies is true. This raises it above baseline but does not substantially deepen individual parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search industry inflections identified through structured research of earnings calls held by US-listed companies after July 2026.' It also lists the semantic fields returned, making the tool's function unambiguous and easy to distinguish from siblings like news_search or filing_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: all filters are optional, combine with AND, no filters returns the newest first page, and results are ordered by quarter descending. It does not explicitly name alternatives or state when not to use this tool, but the context is strong enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| categories | No | Altdata category names (see tool description for the list). Omit, or pass "all", for the category index. |
TDQS
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.
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.
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.
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.
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.
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.
news_searchARead-onlyInspect
Use for any news, event, development, or statement question about a company, theme, or the market.
Covers US, Japan, Hong Kong and A-share markets; The ticker filter takes
exchange-suffixed symbols: US bare (AAPL), Japan .T (7203.T), Hong Kong
.HK (00700.HK), A-share .SH/.SZ (600519.SH).
Returns Markdown: a ## Stories numbered list (each storyline once), then flat
## Events and ## Claims tables (claims = attributed statements: analyst
actions, corporate guidance, central-bank remarks). The Events story column
refers back to the Stories number. sources counts corroborating reports;
first_reported/last_reported give the reporting span. Lowest-ranked stories
are dropped to fit length; the meta line flags how many were omitted.
At least one of query/theme/ticker/since/until is required. Per-parameter detail is on the input schema — search_type=claims needs query/ticker/a time window, not theme.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Semantic query (English). One of query/theme/ticker/since/until required. | |
| since | No | ISO8601; filter time_event >= since. | |
| theme | No | Theme word, resolved to the nearest canonical theme. Not valid with search_type=claims. | |
| top_k | No | Story count. Default 10, max 50. | |
| until | No | ISO8601; filter time_event < until. | |
| ticker | No | Exact ticker symbol(s) — a single symbol, an array, or a comma-separated string; multiple tickers are an OR/overlap filter. US symbols bare (AAPL); other markets carry their exchange suffix — 7203.T, 00700.HK, 600519.SH. Company names/brands are NOT resolved here; resolve a name via ticker_lookup/company_search first. | |
| order_by | No | Result ordering. relevance (default) | event_time (newest event time first) | create_time (most recently ingested first). | |
| search_type | No | all (default) | events | claims (opinions/statements only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true), the description details the output format (Markdown with Stories, Events, Claims tables), explains how stories are truncated, and describes columns like sources and time spans. It fully discloses behavioral traits without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a front-loaded purpose, followed by filter details, output explanation, and parameter constraints. It is slightly verbose but every sentence adds useful information; could be more terse without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema), the description is complete: covers input requirements, market coverage, ticker formats, output structure, and edge cases (e.g., dropped stories). It adequately compensates for the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3, but the description adds extra value by explaining ticker exchange suffixes, OR behavior for multiple tickers, and restrictions on search_type=claims. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for news, events, and statements about companies/themes/markets. It is specific about the resource (news) and the action (search), but does not explicitly differentiate from sibling tools like company_search or ticker_lookup, though the context implies a distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context, including required parameter combinations (e.g., at least one of query/theme/ticker/since/until) and when search_type=claims is invalid with theme. However, it does not explicitly state when not to use this tool or recommend alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_sqlARead-onlyInspect
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_endis 'YYYY-MM'. Compare as strings (period_end >= '2024-01'); a::datecast on it fails.Filter structured tables by ticker (
WHERE ticker IN ('AAPL','MSFT'); screening: addticker NOT LIKE '%-%'to drop preferred stock).
Core equity coverage: US, Japan, Hong Kong, China A-shares, and Korea. Tickers are US bare (AAPL), Japan .T (6758.T), Hong Kong .HK (00700.HK), A-shares .SH/.SZ (600519.SH), and Korea .KS/.KQ (005930.KS). financial_statements, company_snapshot, and price_volume_history span all five. Specialized tables may be narrower — 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=[...])
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | PostgreSQL SELECT query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond the annotations: SELECT-only restriction, no CTE support, period column type constraints (TEXT, not date, with specific comparison syntax), and ticker filtering requirements. It aligns with readOnlyHint=true and destructiveHint=false, and adds the nuance that empty results may not be findings without schema verification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear sections: hard rules, coverage, tables by domain. It front-loads the most critical constraints (hard rules) before listing tables. Each section earns its place; the table listing is verbose but necessary for a query tool with heterogeneous tables. Slightly excessive length for a description, but effective organization prevents wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is thorough for a tool with one parameter and no output schema: it explains coverage (US, Japan, HK, China, Korea), table categories, and query constraints. It references sibling tools (get_table_schema, list_tables) to fill gaps. However, it lacks details on return format (e.g., row limits, pagination, error handling for invalid SQL), which would be useful for a raw SQL tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the 'sql' parameter 100% with a description 'PostgreSQL SELECT query'. The description adds value by providing example query patterns (ticker IN ('AAPL','MSFT'), ticker NOT LIKE '%-%' for screening) and table-specific usage notes, which are not in the schema. However, since the schema already adequately describes the parameter, the baseline is 3, with the description's examples lifting it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'PostgreSQL SELECT over financial / market / alt-data tables — returns structured rows', giving a clear verb (SELECT), resource (PostgreSQL tables), and scope (financial/market/alt-data). It distinguishes itself from sibling tools like get_table_schema, list_tables, and search tools by explicitly focusing on direct SQL querying over the database tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: it tells the agent to call get_table_schema before treating empty results as findings, lists tables by domain, and specifies hard rules for query construction (e.g., no CTEs, period columns as TEXT, filter by ticker). This clearly signals when to use this tool versus alternatives like list_tables or get_table_schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ticker_lookupARead-onlyInspect
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" | "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 (6758.T),
A-share .SH/.SZ (600519.SH).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name or ticker substring (case-insensitive). Matches historical names + tickers too. | |
| market | No | Optional market filter: 'us' | 'jp' | 'cn'. Omit to search all markets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds valuable behavioral context beyond that: it returns up to 5 matches, ranks by prefix-hit first then name length, and explains market suffixes for returned symbols. This is exactly the kind of extra behavioral detail agents need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loads purpose and usage guidance. The bullet list restates parameter information already covered by the schema, and the market line is both redundant and incomplete, so it is not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining result count, ranking, and symbol suffix formatting. However, it omits the valid 'hk' and 'kr' market values and does not mention historical-name matching (which appears only in the schema). Mostly complete but with meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description actively conflicts with the schema: it lists market options as 'us' | 'jp' | 'cn' while the schema enum also includes 'hk' and 'kr'. This omission is misleading for parameter selection. The query examples are useful but do not compensate for the inaccurate market enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Resolve') plus resource ('company name, brand, or ticker substring to canonical ticker(s)'), making the core purpose clear. It does not explicitly distinguish itself from the sibling company_search, so it stops short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use this FIRST when the user mentions a company by name/brand/nickname before running any ticker-keyed tool.' It does not mention the sibling company_search or state when not to use it, so it lacks exclusions or a named alternative.
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.
7 tool updates
- Added
ai_adoption - Added
filing_list - Added
filing_search - Added
industry_inflections - Removed
sec_report_list - Removed
sec_report_search - Changed
ticker_lookup1 field changed- changed
Input schema / properties / market / descriptionPrevious value: -"Optional market filter: 'us' | 'jp' | 'hk' | 'cn' | 'kr'. Omit to search all markets."New value: +"Optional market filter: 'us' | 'jp' | 'cn'. Omit to search all markets."
1 tool update
- Removed
fiscal_utility
1 tool update
- Removed
search_data_catalog
1 tool update
- Added
search_data_catalog
1 tool update
- Removed
search_data_catalog
1 tool update
- Added
search_data_catalog
2 tool updates
- Changed
company_search2 fields changed- changed
Input schema / properties / market / anyOfPrevious value: -[ - { - "enum": [ - "us", - "jp", - "hk", - "cn" - ], - "type": "string" - }, - { - "items": { - "$ref": "#/properties/market/anyOf/0" - }, - "maxItems": 4, - "type": "array" - } -]New value: +[ + { + "enum": [ + "us", + "jp", + "hk", + "cn", + "kr" + ], + "type": "string" + }, + { + "items": { + "$ref": "#/properties/market/anyOf/0" + }, + "maxItems": 5, + "type": "array" + } +] - changed
Input schema / properties / market / descriptionPrevious value: -"Optional market filter. Pass one lowercase value or a list from 'us' | 'jp' | 'hk' | 'cn'. Omit or pass [] for all four; list order does not set priority."New value: +"Optional market filter. Pass one lowercase value or a list from 'us' | 'jp' | 'hk' | 'cn' | 'kr'. Omit or pass [] for all five; list order does not set priority."
- Changed
ticker_lookup2 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"Optional market filter: 'us' | 'jp' | 'hk' | 'cn'. Omit to search all markets."New value: +"Optional market filter: 'us' | 'jp' | 'hk' | 'cn' | 'kr'. Omit to search all markets." - changed
Input schema / properties / market / enumPrevious value: -[ - "us", - "jp", - "hk", - "cn" -]New value: +[ + "us", + "jp", + "hk", + "cn", + "kr" +]
1 tool update
- Changed
list_tables4 fields changed- changed
Input schema / properties / categories / descriptionPrevious value: -"Altdata category names (see tool description for the list)"New value: +"Altdata category names (see tool description for the list). Omit, or pass \"all\", for the category index." - changed
Input schema / properties / categories / items / enumPrevious value: -[ - "Energy & Power", - "Data Centers", - "Semiconductors", - "Compute Pricing", - "Model Development", - "Inference Economics", - "Macro & Trade", - "Prediction Markets", - "Critical Minerals" -]New value: +[ + "Energy & Power", + "Data Centers", + "Semiconductors", + "Compute Pricing", + "Model Development", + "Inference Economics", + "Macro & Trade", + "Prediction Markets", + "Critical Minerals", + "all" +] - removed
Input schema / properties / categories / minItemsRemoved value: -1 - removed
Input schema / requiredRemoved value: -[ - "categories" -]
2 tool updates
- Changed
company_search6 fields changed- added
Input schema / properties / market / anyOfAdded value: +[ + { + "enum": [ + "us", + "jp", + "hk", + "cn" + ], + "type": "string" + }, + { + "items": { + "$ref": "#/properties/market/anyOf/0" + }, + "maxItems": 4, + "type": "array" + } +] - changed
Input schema / properties / market / descriptionPrevious value: -"Optional market filter: 'us' | 'jp' — the knowledge base covers US + Japan companies only. Omit to search both."New value: +"Optional market filter. Pass one lowercase value or a list from 'us' | 'jp' | 'hk' | 'cn'. Omit or pass [] for all four; list order does not set priority." - removed
Input schema / properties / market / enumRemoved value: -[ - "us", - "jp" -] - removed
Input schema / properties / market / typeRemoved value: -"string" - changed
Input schema / properties / query / descriptionPrevious value: -"natural language query"New value: +"Natural-language company description" - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
fiscal_utility1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker (e.g. AAPL, MSFT, NVDA)"New value: +"Stock ticker. Coverage is primarily US; sparse JP/HK; no China A-share configuration."
5 tool updates
- Changed
company_search1 field changed- added
Input schema / properties / marketAdded value: +{ + "description": "Optional market filter: 'us' | 'jp' — the knowledge base covers US + Japan companies only. Omit to search both.", + "enum": [ + "us", + "jp" + ], + "type": "string" +}
- Changed
news_search1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Exact ticker symbol(s) — a single symbol, an array, or a comma-separated string; multiple tickers are an OR/overlap filter. Bare symbols only, no exchange suffix. Company names/brands are NOT resolved here; resolve a name via ticker_lookup/company_search first."New value: +"Exact ticker symbol(s) — a single symbol, an array, or a comma-separated string; multiple tickers are an OR/overlap filter. US symbols bare (AAPL); other markets carry their exchange suffix — 7203.T, 00700.HK, 600519.SH. Company names/brands are NOT resolved here; resolve a name via ticker_lookup/company_search first."
- Changed
sec_report_list1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker, e.g. NVDA, AAPL"New value: +"Stock ticker, e.g. NVDA, 6758.T, 00700.HK, 600519.SH"
- Changed
sec_report_search1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker, e.g. NVDA, AAPL"New value: +"Stock ticker, e.g. NVDA, 6758.T, 00700.HK, 600519.SH"
- Changed
ticker_lookup2 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"Optional market filter: 'us' | 'jp'. Omit to search both."New value: +"Optional market filter: 'us' | 'jp' | 'hk' | 'cn'. Omit to search all markets." - changed
Input schema / properties / market / enumPrevious value: -[ - "us", - "jp" -]New value: +[ + "us", + "jp", + "hk", + "cn" +]
4 tool updates
- Added
news_search - Removed
signal_list - Added
ticker_lookup - Removed
ticker_resolve
1 tool update
- Added
ticker_resolve
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
Point-in-time, survivorship-free SEC EDGAR fundamentals + smart-money signals for AI agents.
US stock market data for AI agents: SEC filings, financials, insider trades, 13F, options, macro.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceWall 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
- AlicenseAqualityAmaintenanceProvides 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.111501MIT
- AlicenseNot gradedqualityDmaintenanceProvides 10 financial data tools (market data, economic indicators, news, insider trades, and calendars) via a single MCP layer, enabling any MCP-compatible LLM to access diverse financial data through a unified interface.MIT
- AlicenseNot gradedqualityCmaintenanceProvides 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
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct retrieval task: company discovery, ticker resolution, filing metadata/content, SQL metadata/execution, news, AI adoption, and industry inflections. The only mild overlap is between ai_adoption and industry_inflections, both earnings-call derived, but their descriptions differentiate application-level insights from structural inflection analysis.
All names are lowercase snake_case and readable, but the conventions are mixed: noun_verb forms like company_search and news_search, verb_noun forms like run_sql and list_tables, and bare noun phrases like ai_adoption and industry_inflections. A uniform verb_noun pattern would make the toolset more predictable.
Ten tools is well-scoped for a financial data platform: search/discovery tools, filing tools, SQL metadata/execution tools, and a ticker resolver. Each tool earns its place, and there is no obvious redundancy or padding.
The toolset forms coherent workflows: ticker_lookup resolves entities, filing_list/filing_search handle SEC filings, list_tables/get_table_schema enable SQL discovery, and run_sql provides broad query coverage across market, fundamental, and alt-data domains. Cross-references between tools explicitly direct agents to the correct next step, leaving no critical dead ends.