Skip to main content
Glama

MetricDuck — Financial Analysis

Screen Filing Signals

screen_filing_signals
Read-only

Use this when the user asks which companies show a red flag or event across filings, earnings releases or earnings calls — "which companies lowered guidance?", "who has covenant risk or debt coming due?", "which tech companies sound cautious?", "who announced M&A or a partnership?" — or what has flagged for one company recently (ticker). Not metric screening (P/E, ROIC: use screen_companies). Most signals are LLM-classified, not computed facts.

Signals come from 10-K/10-Q filings, 8-K/6-K earnings releases, earnings-call transcripts, 8-K M&A / partnership announcements and DEF 14A proxies. Ids and labels: see the signals parameter.

Use Cases:

  • "Which tech companies have cautious management?" -> signals=["tone_cautious"], sectors=["TECH"]

  • "Who lowered guidance in an earnings release this month?" -> signals=["earnings_guidance_lowered_8k"], recency_days=30

  • "Any filing red flags for NVDA lately?" -> ticker="NVDA", signals=["tone_cautious", "covenant_risk", "debt_maturity_near"], match_mode="any"

  • "Companies that gave specific guidance on calls?" -> signals=["transcript_has_guidance"]

  • "Which companies announced strategic partnerships or M&A deals?" -> signals=["ir_partnership"]

M&A / partnership rows: an ir_partnership match on an 8-K Item 1.01 may carry companion_accessions — same-day 8-Ks (7.01 / 8.01, Ex 99 press release) holding the deal terms and CEO quotes. Read them with get_filing_section(ticker, section_id="item_1_01_material_agreement", accession_number=<the row's accession>, include_companions=true, companion_accessions=[...]). An empty list means none was found; the anchor alone still reads.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
tickerNoFilter to a single ticker (e.g. 'NVDA'). Use for per-ticker cross-source signal inventory. Omit to screen across all companies.
sectorsNoSector codes: TECH, HEALTH, FIN, RE, CONS_DISC, CONS_STAPLES, IND, MAT, ENERGY, UTIL, TRANSPORT, COMM, OTHER
signalsYesSignal filters to match. Pass one or more ids EXACTLY as listed below (only these are screenable). Omit `ticker` to screen the whole universe for a signal (the common case); pass `ticker` only to check ONE company — don't loop company-by-company. **Filing signals (10-K/10-Q):** - `tone_cautious` — Management tone is cautious/defensive - `customer_concentration_high` — Customer concentration > 20% or elevated risk - `covenant_risk` — Covenant tight, waiver obtained, or violation - `debt_maturity_near` — Significant debt maturing within 12 months - `dividend_coverage_weak` — Dividend coverage below operating cash flow - `sbc_unhedged` — Stock comp exceeds buybacks (net dilution) - `has_fuel_sensitivity` — Fuel cost sensitivity quantified in MD&A - `mda_has_scale_claims` — ≥3 quantified operational scale claims extracted from MD&A narrative (e.g. renewal rates, member counts, comp sales) **Earnings releases (8-K Item 2.02 + 6-K Ex 99.1):** - `earnings_revenue_grew` — Revenue grew year-over-year - `earnings_revenue_declined` — Revenue declined year-over-year - `earnings_margin_expanded` — Operating or gross margin expanded vs prior year - `earnings_margin_contracted` — Operating or gross margin contracted vs prior year - `earnings_guidance_raised_8k` — Forward guidance raised in earnings release - `earnings_guidance_lowered_8k` — Forward guidance lowered in earnings release - `earnings_has_special_items` — Non-recurring charges or special items disclosed - `earnings_accrual_concerning` — Accrual quality weak or concerning (cash vs earnings divergence) - `earnings_has_capital_return` — Shareholder capital returned (buybacks and/or dividends) **Earnings call transcript:** - `transcript_has_guidance` — Specific guidance given on earnings call - `transcript_has_prepared_remarks` — Prepared remarks available (true for all transcript sources) - `transcript_has_analyst_questions` — Analyst Q&A captured with topics + firms - `transcript_guidance_raised` — ≥1 guidance item raised vs prior quarter (from transcript) - `transcript_guidance_lowered` — ≥1 guidance item lowered vs prior quarter (from transcript) - `transcript_has_revenue_decompositions` — Segment-level revenue decomposed into quantified drivers (volume / price / mix / FX / M&A) on call - `transcript_qa_concerns_retained` — ≥2 analysts left with concerns retained after Q&A - `transcript_qa_forward_committed` — ≥2 executive responses with forward-looking commitments on call (count-based; transcript_has_forward_commits exposes the underlying instances) **IR events:** - `ir_partnership` — Strategic partnerships announced **DEF 14A proxy:** - `def14a_peer_group` — Compensation peer group disclosed (with company names) - `def14a_ceo_pay_ratio` — CEO pay ratio disclosed
order_byNoResult ordering. 'recency' (default) = event_date/filing_date DESC; 'market_cap' = market-cap DESC NULLS LAST with a recency tiebreak — use it so high-impact filings aren't pushed past the limit by fresher small-cap noise.recency
match_modeNoMatch semantics within a source type. 'all' (default) = every requested signal fires on the SAME row (targeted screening); 'any' = at least one fires (broadcast discovery / digest pools).all
since_dateNoLower bound (inclusive, YYYY-MM-DD) on event_date / filing_date. With until_date, defines an explicit range that OVERRIDES recency_days — use for historical windows, backfilling past digests, or comparing two windows to detect cross-period signal change.
until_dateNoUpper bound (inclusive, YYYY-MM-DD). With since_date, overrides recency_days.
recency_daysNoOnly filings from last N days (default: 90)
agreement_type_filterNoDiscriminator for `ir_partnership` signals — e.g. 'm_and_a_announcement' for fresh M&A deals, 'partnership_strategic' for alliances. Ignored for non-IR signals.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations give readOnlyHint/destructiveHint=false/openWorldHint, so the safety profile is covered. The description adds useful non-obvious behavior: 'Most signals are LLM-classified, not computed facts', the source corpus, and the companion_accessions workflow for IR rows. It stops short of describing pagination or return shape, but for a read-only screening tool this is above the bar.

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

Conciseness3/5

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

Front-loaded and organized under a Use Cases header, but the signal-id enumeration is long and largely duplicates the schema enum descriptions, and the M&A/companion paragraph could be tightened. Every sentence roughly earns its place, but the total is heavier than needed at 10 params / 100% schema coverage.

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 complex 10-param, 3-enum, no-output-schema screening tool, the definition covers corpus, signal taxonomy, match semantics, ordering rationale (why market_cap exists), date-window behavior, and the ir_partnership companion workflow. An agent can invoke this correctly from the description alone.

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%, so baseline is 3. The description still adds value by explaining match_mode semantics ('all' = same-row targeted screening vs 'any' = broadcast discovery), the ticker-vs-omit behavior for universe screening, and the companion_accessions follow-up on ir_partnership rows — meaning beyond the raw schema.

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

Purpose5/5

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

States a specific verb+resource (screen filing/call/earnings signals) and opens with concrete example queries that pin the scope. It explicitly names the sibling it is not — 'Not metric screening (P/E, ROIC: use screen_companies)' — so an agent can separate it from screen_companies without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (red-flag/event screening across filings, earnings releases, calls), when-not (metric screening), a named alternative (screen_companies), and per-scenario examples mapping natural-language questions to parameter combinations. It also warns against looping company-by-company and directs the agent to use `ticker` only for a single-company inventory.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources