MetricDuck
Answers about U.S. public companies grounded in primary SEC filings, with every figure linked back to its source on SEC EDGAR. Pull exact as-filed XBRL facts and multi-period financial statements, track a metric across fiscal periods, screen and rank 5,500+ companies by financials, compare peers, read filing sections (risk factors, MD&A, earnings), and full-text search SEC EDGAR. Coverage: 10-K/10-Q (and amendments), 8-K, 20-F/40-F/6-K (foreign issuers that file with the SEC), and DEF 14A proxy statements. Not covered: insider/ownership filings (Forms 3/4/5, 13D/G), institutional holdings (13F), or registration/offering prospectuses (S-1, 424B). Updated daily from SEC EDGAR; daily end-of-day prices from a market-data feed. Informational research tool, not investment advice. Free up to 500 queries/day.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Institutional Financial Data & Equity Research Platforms
- Secondary Subcategories
- None listed
- Brand
- MetricDuck
- Access
- Account required
- First tracked
- 2026-07-02
- Tool count
- 22
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is visible.
ChatGPT Plugin Discoverability Score
ChatGPT organic discovery is not live yet
MetricDuck is tracked in the ChatGPT Plugin registry. Public organic-discovery measurement is not live for ChatGPT yet, so there is no score to publish today.
Get notified when your score goes live
Enter your work email and we’ll notify you when ChatGPT Plugin organic discovery scoring launches.
No spam. Unsubscribe any time.
Competing in ChatGPT Institutional Financial Data & Equity Research Platforms
View CategoryHow the Discoverability Score works
Organic discovery scoring for MetricDuck on ChatGPT is not live yet. The score will use measured agent conversations when it launches.
Organic discovery scoring is pending. Your Plugin score will appear on this scale when measurement goes live.
FoundDiagnostic
Whether Claude found your Plugin in connector search. It must be Found before it can reach the picker, but the score counts picker appearances—not search results.
PickedMain score
How often your Plugin appeared in the picker, or Claude invoked it directly, across contested conversations. This percentage is the Discoverability Score; the headline number is rounded.
PositionedDiagnostic
What position your Plugin appeared in when it was shown in the picker. This shows prominence, but it does not affect the score.
22 tools agents can invoke
8-K earnings-RELEASE financials — headline income statement (revenue, net income, operating income, diluted EPS) PLUS the as-released cash-flow statement (operating cash flow, capex, free cash flow, +growth) — the figures management reports on release day, typically WEEKS before the audited 10-Q/10-K. On release day this is often the ONLY structured source for the fresh quarter's capex/OCF/FCF (the 8-K carries no XBRL, so get_financials/get_metric_history still show the prior quarter until the 10-Q lands). Distinct from get_financials (audited XBRL 10-K/10-Q statements — filed later, GAAP-consistent) and get_company_overview (single-period snapshot; its earnings section is prose only, no figures). Use this tool for the earliest-available as-reported release figures, each with a per-figure deep-link + verbatim quote into the source exhibit when the API has an attested receipt. Use Cases: - "What did NVDA report for its latest quarter's revenue?" -> get_earnings("NVDA") - "TSLA's last 8 quarters of earnings releases" -> get_earnings("TSLA", quarters=8) Release figures are management's own characterization and may be non-GAAP-adjacent — verify against the quote when precision matters. A figure without a receipt is still shown (often filled from a prior extraction pass or awaiting the producer's validation) but without a deep-link — absence of a receipt is not evidence the value is wrong. **NOT point-in-time.** This tool has no `vantage_date` and always serves the LATEST releases, walking back by `quarters` from today — never "as of" a past date. For as-of / backtest / "what was known on date X" work, use a tool that accepts `vantage_date`: `get_filing_section`, `get_filing_index`, `list_filings`, `get_financials`, `get_metric_history`, `get_company_overview`, `compare_earnings_calls`. Stated explicitly because an agent cannot otherwise tell an absent as-of capability from an ignored one — and silently substituting present-day figures into a point-in-time question is a look-ahead answer that nothing errors on. Adjacent tools: get_financials for audited XBRL statements across multiple periods; get_company_overview for a single-period snapshot; get_guidance_vs_actual to join this release's actuals against prior guidance.
get_earnings
Entity-axis navigation primitive — an orientation map for one company. Returns a single response containing identity (incl. CIK), filing inventory by form type, **signal availability inline**, indexed range, and ranked drill-down pointers — so one call tells you which signals fire for the company and which axis to descend next (signal-axis, source-axis, or metric-axis). Accepts a ticker, a company name, or a CIK, so it also resolves the entity. Compared with `search_companies`: that one is the resolver — it matches a name or partial name across companies and carries the SEC EDGAR entity link, filer_type, fiscal year-end and former names. Use it to pick between candidates; use this when you already know the company and want its inventory. **When to use:** - Starting a research thread on a single company - Confirming what data MetricDuck has indexed before deep-diving - Discovering which signals fire (M&A, partnerships, guidance shifts, accounting flags) without needing to fetch a filing first **When NOT to use:** - Cross-company screening → use `screen_companies` (metrics) or `screen_filing_signals` (signals) - Concept/theme discovery → use `search_sec_filings` **Drill-down map (the response will recommend specific calls based on what's available):** - `get_filing_index(ticker)` — full signal map for the latest filing - `get_xbrl_facts(ticker, search="...")` — dimensional financial drill-down _(atom v1: revisit response shape after first 5 q001/q012/q003 traces)_
browse_company
Get comprehensive financial overview for a company in a single call. Includes: current price, valuation (P/E, P/B, EV multiples, PEG), profitability (revenue, margins, returns), cash flow (OCF, FCF, yields), balance sheet (debt, equity, ratios), capital allocation (buybacks, shares outstanding, shareholder yield), business segment + geographic revenue mix (latest 10-K, with YoY change), latest earnings insights, filing intelligence highlights, and company flags. Depth presets: - depth="snapshot" — headline facts only (~2K chars): title, key signals, filing signals summary, flags, latest filing pointers. Best for multi-ticker sequencing or quick health checks. - depth="core" (default) — full overview with valuation, profitability, segments, cash flow, balance sheet, capital allocation, and earnings. - depth="full" — core + all tags (no 7-tag truncation), all earnings highlights/concerns (no 3-item truncation), plus 5Y historical distribution (median/p25/p75/p90) for P/E, EV/EBITDA, EV/FCF. Latest snapshot only — use get_financials for multi-year trends, get_xbrl_facts for multi-period segment history, get_filing_index for a signal map of the latest filing, compare_companies for peer benchmarking, get_stock_price for a historical/as-of-a-date close or a return between two dates (the price here is current only). POINT-IN-TIME / AS-OF: this overview does NOT take an as-of date — every figure is the latest snapshot. For a backtest or "as of <past date>" analysis (avoiding look-ahead), do NOT read the as-of state off this tool; route to the as-of-capable tools instead: get_financials(vantage_date="YYYY-MM-DD") for the statements filed on/before that date, get_filing_section/get_filing_index(vantage_date=…) for the then-current filing text/signals, get_xbrl_facts for point-in-time facts, and get_stock_price for the close on/after a date. Use search_companies first if unsure of the exact ticker.
get_company_overview
Compare a company against peers across ~70 curated fundamental metrics (TTM), with percentile rankings and relative strengths/weaknesses. Returns a side-by-side table covering valuation (P/E, P/B, EV/EBITDA, EV/Sales, FCF yield), profitability (gross/operating/net/EBITDA margins, ROE, ROA, ROIC), leverage & liquidity (debt/equity, net debt/EBITDA, interest coverage, current ratio), efficiency (asset/inventory turnover, DSO, cash conversion cycle), and capital returns (dividend yield, dividend payout ratio, buyback yield, shareholder yield). Sector-inapplicable metrics are omitted (e.g. gross margin / FCF leverage for banks). Pass 'metrics' to focus the table on specific metric_ids. This is a TTM cross-sectional snapshot — for a single company's value in a specific fiscal year/quarter use get_metric_history. Valuation multiples here use the current/TTM price; for a multiple AS OF a specific past date, or a CUSTOM definition (e.g. lease-adjusted EV), assemble it from get_stock_price (price leg) + get_metric_history primitives. peer_mode controls peer selection: - 'sector' (default): auto-selected from same sector + similar market cap - 'tags': auto-selected by business model similarity (tag Jaccard) — better for cross-sector comparisons Override with custom_peers for specific matchups. The number of custom_peers is capped by plan (Free: 3, Pro: 10); exceeding it returns the limit and the count you asked for, so retry with that many. Data sourced from SEC EDGAR, updated with each quarterly/annual filing. Use Cases: - "Compare AAPL vs MSFT" -> compare_companies("AAPL", custom_peers="MSFT") - "How does NVDA stack up in its sector?" -> compare_companies("NVDA") - "Dividend payout ratio: KO vs KDP/PEP/KHC" -> compare_companies("KO", custom_peers="KDP,PEP,KHC", metrics="dividend_payout_ratio,dividend_yield") - "COST vs WMT vs TGT" -> compare_companies("COST", custom_peers="WMT,TGT") Responses capped at ~20K chars. If truncated, use fewer custom_peers or a 'metrics' subset.
compare_companies
How has management's posture shifted across recent earnings calls? Cross-quarter trajectory view of transcript signals for a single ticker. This is MetricDuck's EARNINGS-CALL TRANSCRIPT tool (agents also look for this as get_earnings_call_transcript / get_earnings_transcript / get_earnings_call / search_earnings_calls). For ONE call's verbatim prepared remarks or Q&A, drill with get_filing_section(section_id="transcript_prepared_remarks" | "transcript_qa_session"); this tool gives the cross-quarter view. Different from get_filing_index (single-call triage map). This tool aligns earnings calls by event date and surfaces CROSS-QUARTER patterns: guidance deltas grouped by metric, scalar aggregates in a trajectory table, per-quarter strategic priorities, coverage gaps. For per-call depth, drill with get_filing_index. Output sections (all optional depending on coverage + dimensions): - Coverage table: event date, fiscal period, accession, coverage status, and transcript Source provenance (SEC-filed vs Issuer-published vs Machine-transcribed) per quarter — surfaces NO_TRANSCRIPT / WAITING gaps. Earnings-call transcripts are management commentary, not SEC-filed XBRL facts. - Aggregate trajectory: Q&A Deflection / Concerns Retained / Forward Commits — one row per scalar, one column per quarter. - Guidance trajectory: grouped by metric name with the existing delta_vs_prior flag from each call. - Strategic priorities by quarter. - Macro responses by quarter (factor + stance + iter033 drift tag), competitive mentions by quarter (competitor + context_type + iter033 drift tag). - Scale claims, revenue decompositions, KPI disclosures, capital-allocation postures, scenario sensitivities, forward commitments, and customer-cohort metrics by quarter — qualitative arrays surfaced side-by-side; agent reads parallel arrays to detect drift / cross-quarter framing. - Drill hints pinned to accessions for per-quarter deep-dives via get_filing_section. Use Cases: - "Deflection trend?" -> compare_earnings_calls("RDDT", n_quarters=8, dimensions=["hedges", "qa"]) - "Guidance discipline shifting?" -> compare_earnings_calls("NVDA", dimensions=["guidance"]) - "Macro stance flip?" -> compare_earnings_calls("DOW", dimensions=["macro"]) - "Strategic priorities + KPIs drift" -> compare_earnings_calls("PG", dimensions=["priorities", "kpi"]) Sister Sources: - Single-call deep read → `get_filing_section` with section_id="transcript_prepared_remarks" / "transcript_qa_session" - Cross-period signal changes (vs other Sources) → `screen_filing_signals` with since_date/until_date - IR press releases / events → `screen_filing_signals` with signal_type="ir_press_release"
compare_earnings_calls
Per-fiscal-period earnings DOCUMENT INDEX — one row per quarter/year gathering the documents for that reporting period: the 8-K press release, the earnings-call transcript (with prepared-remarks / Q&A deep-links), the 10-Q/10-K, the IR presentation deck(s), and the webcast event. Each artifact is present or honestly absent, so this is the "what can I pull for this quarter, and how do I reach it" map. Reach for this to answer "what's available / where do I read it" per period: - "What documents does {ticker} have for its last earnings?" → the newest row's artifacts (press release, transcript, deck, webcast, 10-Q) - "Give me {ticker}'s earnings transcripts / decks by quarter" → the per-period transcript + deck links - "Is there a webcast / presentation deck for {ticker}'s Q2?" → that row's webcast + deck cells (honest-absent when not harvested) This is a NAVIGATION index, not figures. For the release NUMBERS (revenue / EPS / net income) use get_earnings; for audited XBRL statements get_financials; for the IR event CALENDAR (upcoming + past) get_company_events; for a deck's slide TEXT get_ir_documents; for what management SAID on the call (guidance/tone by quarter) compare_earnings_calls. Coverage is honest per cell: a transcript reads present/pending/none; a deck join is exact (fiscal-period tuple, never a date); a webcast is a single-candidate ±1d match — and when the IR calendar isn't harvested that is stated (a missing webcast is NOT "no webcast held"). The response's `claimed` set is the deck/event ids this surface owns (so an IR-card consumer subtracts them cleanly).
get_earnings_reports
Get a navigable signal index for a company's latest SEC filing. Returns typed facts extracted from the filing, each with evidence and a section pointer for drill-down. This is the "table of contents" for what's in the filing — use it to decide WHAT to read. The index is agnostic to your intent — all facts presented neutrally. Pick the facts relevant to YOUR analysis, then drill with get_filing_section(). Facts from LLM analysis are labeled as such. Optional lens parameter filters to a specific analytical view: - earnings_quality: SBC, accounting flags, material weaknesses - debt_stress: debt profile, covenant compliance, near-term maturities - risk_trajectory: risk factors, escalations, key uncertainties - competitive_position: segments, customer/channel/geographic concentration - management_outlook: tone, guidance, guidance accuracy Use this as the lightweight first-look map of what's in a filing before drilling into the text with get_filing_section. IMPORTANT — indexes only the LATEST filing. For a PRIOR quarter's operating KPIs (same-store / comparable sales, ARPU, take-rate, bookings), forward GUIDANCE, or a BEAT/MISS-vs-guidance question (e.g. "FND same-store sales in Q4 2024", "did MU beat its Q3 gross-margin guidance"), do NOT page through the latest 10-Q/10-K — those metrics live in that quarter's EARNINGS-RELEASE 8-K, which MetricDuck extracts (comparable sales, KPIs, guidance, beat/miss) per quarter. Route: list_filings(ticker, form_subtype="8-K-earnings") to find that quarter's accession, then get_filing_section(ticker, "earnings_press_release" | "earnings_income_statement" | "earnings_segment_data", accession_number=<that 8-K>). The release NARRATIVE — highlights, forward GUIDANCE/outlook, CEO commentary — lives in "earnings_press_release" (target it with query="outlook"); "earnings_document_map" is now a compact TOC (headline metrics + table/section index — call get_filing_section with accession_number and NO section_id for the outline). (compare_earnings_calls(ticker) gives the cross-quarter KPI/guidance trajectory.) Use Cases: - "What should I look at in AAPL's 10-K?" -> get_filing_index("AAPL") - "Any accounting red flags for ENPH?" -> get_filing_index("ENPH", lens="earnings_quality") - "Debt situation for BA?" -> get_filing_index("BA", lens="debt_stress") - "How is TSLA management framing things?" -> get_filing_index("TSLA", lens="management_outlook") - "FND same-store sales in Q4 2024?" (prior-quarter KPI) -> list_filings("FND", form_subtype="8-K-earnings") -> get_filing_section("FND", "earnings_press_release", accession_number=<Q4 2024 8-K>) (the narrative/guidance prose; "earnings_document_map" is the compact TOC) Sister Sources (non-SEC): - Earnings call transcripts → `compare_earnings_calls` (cross-quarter view) - IR press releases / events → `screen_filing_signals` with signal_type="ir_press_release"
get_filing_index
Get multi-period financial statements: income statement, balance sheet, and cash flow in one call. Returns quantitative historical data with key metrics and trends. Default: all 3 statements, quarterly, 2 years. For qualitative analysis (risks, accounting quality, management tone), use get_filing_index (signal map) then get_filing_section to read the text. Use Cases: - "Show me AAPL's financials" -> all statements - "MSFT revenue trend 5 years" -> period="annual", years=5 - "Is Tesla's debt increasing?" -> statements=["balance"] - "As of a past date / point-in-time" -> get_financials("MSFT", vantage_date="2024-04-30") (values as known from filings published on/before that date) Each period cites its original disclosing SEC filing (accession + filed date in a footnote; resolvable `mdck` + EDGAR index handles in the `<raw_data>` block), so every figure is traceable to its source filing. Responses capped at ~20K chars. If truncated, whole statements are dropped (not sliced) with a note — request fewer statements or reduce years.
get_financials
Search the full text of every SEC filing since 2001 to find companies related to any concept — a product, technology, regulation, event, or company. Returns filing-level results with aggregated statistics (company count, form type breakdown, industry distribution). For 10-K/10-Q filings processed by MetricDuck, also shows WHICH SECTIONS contain the term with drill-in pointers. **Searchable form types** (all SEC forms since 2001): - 10-K, 10-Q — Annual/quarterly reports (section-level drill-down available) - 8-K — Material events, earnings announcements, leadership changes - DEF 14A, DEFM14A, PRE 14A — Proxy statements: executive compensation, board proposals, merger votes - S-1, F-1 — IPO registration statements (new market entrants, competitive landscape) - S-3, S-4 — Shelf registrations, M&A registration statements - 424B series — Prospectus supplements (debt/equity offerings) - N-CSR, N-CSRS — Fund annual/semi-annual reports (institutional positioning) - SD — Conflict minerals disclosure (physical supply chain mapping) - SC 13D, SC 13G — Beneficial ownership (activist investors, large holders) - 20-F, 40-F, 6-K — Foreign private issuer reports - Any other SEC form type — omit form_type to search all **The FORM TYPE reveals the context:** - 10-K risk factors → dependency, competition, or regulatory exposure - 10-K revenue footnote / business description → customer/supplier/partner - 8-K → material event reaction or announcement - S-1 → new market entrant (IPO in your space) - DEF 14A → executive compensation tied to a metric or initiative - SD → physical supply chain (minerals, manufacturing) - SC 13D → activist investor targeting a company **Section-level enrichment** (10-K/10-Q only): For MetricDuck-processed filings, results include which sections contain the term (risk factors, MD&A, revenue footnote, etc.) with chunk pointers for immediate drill-in via get_filing_section. Non-standard forms (S-1, DEF 14A, etc.) return filing metadata and accession numbers but no section-level detail. Use cases: - "Who supplies Apple?" → ticker_lookup="AAPL" → companies listing Apple in revenue footnotes - "Recent data breaches?" → query="cybersecurity incident", form_type="8-K" - "Tariff-exposed companies?" → query="tariff", form_type="10-K" → risk factor disclosures - "Activist campaigns?" → query="board representation", form_type="DEF 14A,SC 13D" When to use other tools instead: - You already know the company → `get_filing_index` (signal triage) or `list_filings` (filing inventory) - You want financial metrics → `screen_companies` (numeric filters) - You want earnings call cross-quarter view → `compare_earnings_calls` Key limitation: keyword matching only, not semantic. "No material weakness" matches "material weakness found." Verify hits with `get_filing_section` for context. Search tips: quoted exact phrases ("material weakness"); proximity `NEAR(5)`; `OR` / `NOT`; trailing wildcards (`restructur*`). **Historical event queries** (M&A announcements, lawsuits, restructurings, leadership changes): the default 1-year `date_from` and `rank_by="date"` ordering bury historical anchors under mutual-fund NPORT-P holdings. For specific events, prefer `form_type="8-K"` + widen `date_from` to before the event + `rank_by="relevance"` — this surfaces the anchor 8-K in the top results instead of fund noise.
search_sec_filings
Did management deliver what they guided? Joins forward guidance from earnings-call transcripts to reported actuals from 10-K/10-Q + 8-K earnings for the same ticker + fiscal period. Returns both sides verbatim with quotes and locators — agents synthesize the delivered-vs-guided narrative. This is a cross-feed temporal join; no single feed answers this question. Use Cases: - "Did NVDA deliver on Q2 FY2026 guidance?" -> get_guidance_vs_actual("NVDA", fiscal_period="Q2 FY2026") - "How disciplined has MSFT been against its own guidance?" -> get_guidance_vs_actual("MSFT") then compare across periods - "Latest period's guidance-vs-actual" -> get_guidance_vs_actual("TSLA") (period defaults to most recent) Returns everything a beat/miss verdict needs — never the verdict. The comparison is basis-matched, as-reported-only arithmetic; the CALLER applies valence (whether "above guidance" is good is the caller's judgment, not MetricDuck's). Use Cases: - "Did NVDA deliver on Q2 FY2026 guidance?" -> get_guidance_vs_actual("NVDA", fiscal_period="Q2 FY2026") — read range_position (above/within/below) + delta and decide yourself. Output: - Guidance: forward items targeting the period — from earnings-call transcripts AND 8-K earnings releases (metric, value/range, basis, period, verbatim quote, source). - Actuals: SEC 10-Q/K metric + narrative signals for that period, plus 8-K earnings signals when present. - Comparison: for each guidance item, when it can be recomputed from the receipts on its OWN basis (GAAP vs non-GAAP matched, units aligned, period settled) — a neutral `range_position` (above | within | below the guided band) + signed `delta`. Otherwise a typed `status` says why NOT (no_actual_on_basis / not_yet_settled / value_unparsed / period_unresolved / value_incongruent) — never a false or guessed verdict. A non-GAAP guide is never compared to a GAAP actual. - Notes: counts of calls/filings covered + comparison statuses so agents know coverage depth before interpreting.
get_guidance_vs_actual
Retrieve IR earnings-PRESENTATION-DECK text — forward guidance, operational KPIs, and segment outlook that are ONLY in the company's investor-relations slide deck and NOT in the SEC 8-K/10-Q release text or XBRL. Reach for this when the answer is a forward-looking guidance range or an operational KPI that the structured tools miss: - get_metric_history / get_xbrl_facts return no series for a KPI or guidance figure - get_filing_section finds the 8-K earnings release but it lacks the guidance/KPI (decks are a separate exhibit/source) What lives here (not in XBRL/filing text): production or revenue guidance ranges, segment/division outlook, operational KPIs presented as slide charts (e.g., berth capacity %, Mboed production guidance, adjusted-EBITDA guidance). Use Cases: - "OXY Q3 2024 production guidance" -> get_ir_documents("OXY", fiscal_year=2024, fiscal_period="Q3", query="production guidance") - "NCLH berth capacity outlook" -> get_ir_documents("NCLH", fiscal_year=2021, fiscal_period="Q3", query="berth") - "KNTK adjusted EBITDA guidance range" -> get_ir_documents("KNTK", fiscal_year=2023, fiscal_period="Q3", query="EBITDA") Each deck returns its title, original IR url, a stable MetricDuck-hosted gcs_uri, and the matching slide text cited by page. Pass a `query` to land on the exact page; omit it for a bounded prefix of the latest deck. Resolve by ticker or cik; narrow with fiscal_year/fiscal_period.
get_ir_documents
Retrieve a company's IR event CALENDAR — UPCOMING and PAST investor-relations events (earnings calls, annual/shareholder meetings, broker conferences, investor days) with the materials attached to each (deck, webcast, press release, transcript). Reach for this to answer time/calendar questions the document catalog can't: - "When does {ticker} next report / hold its earnings call?" → the UPCOMING list (scheduled events) - "What IR events did {ticker} have this year?" / "was {ticker} at any conferences?" - "What materials are attached to {ticker}'s last earnings event?" Each event has: occurred_at (issuer-local datetime) + time_precision, event_type (verbatim/open vocab), the verbatim source title, and material chips — each material's `material_id` is the get_ir_documents doc_id (a POINTER; read the content with get_ir_documents, not here). Coverage is honest: if a company hasn't been harvested yet, that is stated — an empty result does NOT mean the company has no IR events. `last_checked_at` stamps the calendar's as-of time (events announced since are not shown). For a deck's slide TEXT → get_ir_documents. For what management SAID on an earnings call (guidance/tone by quarter) → compare_earnings_calls.
get_company_events
Browse Sources inventory and the section catalog for a single company. Covers SEC filings: 10-K, 10-Q, 8-K, DEF 14A, plus 20-F / 40-F / 6-K for foreign private issuers. **Scope:** filings-metadata utility. Returns filing list (form type, dates, accession numbers) plus per-section details (word count, chunk count, tables) for 10-K/10-Q/DEF 14A; 8-K returns filing metadata only. Default: last 2 years. Use `fiscal_year` + `fiscal_period` to pin a single historical filing in one call. **For signal triage and "what matters" in a filing, use `get_filing_index` instead.** Use `list_filings` only when: - You need an accession_number for a specific historical filing (before `get_xbrl_facts` or `get_filing_section`) - You need to pin a specific fiscal year/period (e.g., FY2020 Q3) - You need the full section inventory with sizes to plan pagination - You need to confirm whether a specific filing exists Sister Sources (non-SEC): - Earnings call transcripts → `compare_earnings_calls` (cross-quarter view) - IR press releases / events → `screen_filing_signals` with signal_type="ir_press_release" **Delisted / acquired issuers**: pass `cik` (10-digit, zero-padded) instead of (or alongside) `ticker` and set `include_delisted=true`. SEC's ticker registry excludes delisted issuers, so `ticker`-only calls 404 even when filings exist in MetricDuck. Examples: SAVE Spirit Airlines (`cik="0001498710"`), RDFN Redfin (`cik="0001382821"`), ATVI Activision (`cik="0000718877"`). Data horizon: 2013+. Responses capped at ~20K chars; narrow via `form_type`, `fiscal_year`, or reduce `years`.
list_filings
Time series for one metric across fiscal periods. Returns newest-first rows with fiscal_year + fiscal_period labels — AUTHORITATIVE for period-specific questions ("Q2 FY2025?"). The period_end calendar date is NOT the fiscal label, especially for non-December FYE companies (AAPL FY ends Sep; CRM FY ends Jan; ORCL FY ends May). Each row with an SEC accession is cited back to the source filing via the MetricDuck viewer. Use Cases: - "What was AAPL's Q2 FY2025 gross margin?" -> get_metric_history("AAPL", "gross_margin") - "ROE last 5 years for MSFT" -> get_metric_history("MSFT", "roe", period_type="FY", window=5) - "NVDA TTM revenue trend" -> get_metric_history("NVDA", "revenues", period_type="TTM") - "ABNB gross booking value trend" -> get_metric_history("ABNB", "gross_booking_value") (operating KPI; quarterly or FY) - "Net interest margin for a bank" -> get_metric_history("<bank>", "net_interest_margin") - "As of a past date / point-in-time" -> get_metric_history("MSFT", "revenues", vantage_date="2024-04-30") (series as known from filings published on/before that date) Common XBRL metric_ids: gross_margin, oper_margin, net_margin, ebitda_margin, roe, roa, roic, pe_ratio, ev_ebitda, ev_sales, fcf_yield, pb_ratio, current_ratio, debt_to_equity, interest_coverage, revenues, net_income, ebitda, fcf, net_cf_ops, capex, dividends_per_share, dividends_paid, dividend_yield, dividend_payout_ratio, fcf_payout_ratio, dividend_coverage. Also serves NON-XBRL operating KPIs (LLM-extracted from 10-K/10-Q MD&A + earnings releases), available QUARTERLY and ANNUAL (FY) — coverage varies by KPI. This set spans banking (net_interest_margin, common_equity_tier_1_capital_ratio, return_on_average_assets/equity), insurance (combined_ratio), SaaS (arr, remaining_performance_obligations), retail/marketplace (store_count, same_store_sales, gross_booking_value, take_rate), lodging/REIT (revpar, occupancy_rate, average_daily_rate), airlines (passenger_load_factor, prasm, casm), energy (oil_production), workforce (headcount), and more — full data-derived (non-exhaustive) list: net_interest_margin, return_on_average_assets, return_on_average_equity, nonperforming_assets_to_total_assets, nonperforming_loans_to_total_loans, allowance_for_credit_losses_to_total_loans, loan_to_deposit_ratio, net_charge_offs_to_average_loans, common_equity_tier_1_capital_ratio, tier_1_leverage_ratio, tier_1_capital_ratio, total_capital_ratio, return_on_average_tangible_common_equity, net_leverage_ratio, nonperforming_loan_ratio, liquidity_coverage_ratio, net_stable_funding_ratio, combined_ratio, loss_ratio, expense_ratio, policies_in_force, arr, recurring_revenue, remaining_performance_obligations, organic_revenue_growth, cancellation_rate, subscribers, arpu, store_count, same_store_sales, average_order_value, active_customers, customers, active_buyers, orders, bookings, backlog, gross_booking_value, nights_and_seats_booked, monthly_active_platform_consumers, trips, take_rate, occupancy_rate, average_daily_rate, revpar, weighted_average_remaining_lease_term, assets_under_management, passenger_load_factor, available_seat_miles, revenue_passenger_miles, passenger_mile_yield, prasm, trasm, casm, casm_ex, oil_production, natural_gas_production, book_to_bill_ratio, wafer_shipments, production_capacity, headcount, full_time_equivalent_employees, cash_runway. If a KPI you need isn't listed, just try its canonical name; only if it's truly absent does it live solely in filing text — then reach it via get_filing_section(ticker, "mda_results_operations", query=…) or compare_earnings_calls(ticker). Metric_id matching is strict (lowercase, exact spelling). Financial-sector tickers (banks, insurers) often NULL on COGS-based metrics (gross_margin, gross_profit) — use sector-appropriate alternatives (e.g. net_interest_margin, combined_ratio) where available. Price-derived multiples here (pe_ratio, ev_ebitda, pb_ratio…) use the PERIOD-END close; for a price on a SPECIFIC date use get_stock_price. To assemble a CUSTOM multiple (e.g. EV including operating leases) combine get_stock_price (price leg) with get_metric_history primitives: oper_lease_liabs, ttl_debt, cash_st_invs, ttl_equity, shares_basic. **Latest fiscal year during earnings season:** full-year results post in an earnings 8-K weeks before the 10-K, which is what populates this structured FY series. If you query the latest FY inside that gap, the series ends one year early — this tool then appends a pointer to the earnings 8-K; follow it (get_filing_section "earnings_income_statement") rather than concluding the year is unavailable. Adjacent tools: get_company_overview for a single-period snapshot across many metrics; get_financials for full statements (all line items) across multiple periods; get_stock_price for daily share prices and period returns.
get_metric_history
The DERIVATION of one COMPUTED metric — its human formula + immediate inputs (each value + source), one level at a time. The audit / verify affordance for derived figures (margins, ratios, ROIC, FCF, adj-EBITDA): call it ONLY when the query asks **how a metric is computed**, **which definition** MetricDuck used, or to **verify / audit** the derivation — NOT to get the value itself (use get_metric_history / get_company_overview for that). Drillable (lazy, one level per call): - a `derived` input points to its OWN derivation — call get_metric_lineage(ticker, that_symbol) to go deeper. - a `base` input is an as-filed XBRL fact — open its filing handle, or get_xbrl_facts(ticker, search="<symbol>") to land on the exact fact. Use Cases: - "How is AAPL's net_margin calculated?" -> get_metric_lineage("AAPL", "net_margin") - "Which ROIC definition does this use?" -> get_metric_lineage("AAPL", "roic") - "Audit / verify gross_margin for Q2 FY2025" -> get_metric_lineage("AAPL", "gross_margin", fiscal_year=2025, fiscal_period="Q2") Computed metrics only — a base as-filed figure has no derivation (the tool says so and points to get_xbrl_facts).
get_metric_lineage
Raw XBRL facts from SEC filings — use only when `get_financials` cannot answer the question. **Scope:** escape-hatch for dimensional / industry-specific / as-filed numbers. ~3,000 facts per filing with dimensional breakdowns (segment, geography, product line). Search by human-readable label (not XBRL concept names). **First try `get_financials`** — it covers the 323+ standard metrics (revenue, margins, EPS, FCF, ROIC, leverage, etc.) across TTM/FY/Q + YOY/CAGR dimensions for all 5,500+ companies. It is faster, cheaper, and more portable across tickers. **Use `get_xbrl_facts` only when:** - You need a segment / geographic / product-line breakdown that `get_financials` aggregates away — available only for concepts the filer XBRL-tags dimensionally (usually revenue + segment profit / Adjusted EBITDA). Segment-level **costs / operating expenses** are frequently NOT tagged — but a single segment's total operating expense = its **Revenue − Adjusted EBITDA** (both usually ARE tagged dimensionally), so search both members and subtract. Finer per-segment cost DETAIL (e.g. programming vs other) lives only in the MD&A — `get_filing_section(section_id="mda_results_operations", query="<segment> total costs and expenses adjusted ebitda")`. - You need **revenue concentration / share** by customer, channel, distributor, geography, or product — the as-filed `ConcentrationRiskPercentage` facts (e.g. "what % of revenue from channel partners / a distributor / a region"). Deterministic and present even when the filing prose only describes the relationship qualitatively. Search `concentration`. - You need an industry-specific metric not in the standard catalog (e.g., `medical cost ratio` for a health insurer, `reserve replacement ratio` for an oil & gas name) - You need to verify a specific number from filing text against the as-filed XBRL value - You need a historical fiscal year not returned by `get_financials` (pass `fiscal_year`) - You need a cash-flow / income **line across periods to de-cumulate a standalone quarter** — the as-filed cash-flow statement is cumulative YTD (a Q2 10-Q reports the 6-month figure). Set `period_history: true` to get the concept's full series (quarter / 6-mo / 9-mo / FY) across filings in one call, then subtract the prior YTD sharing the same start date (Q2 standalone = 6-month YTD − Q1 3-month). **Sign:** values are the as-filed positive MAGNITUDES. Facts the filing presents NEGATIVE — a cash OUTFLOW (`PaymentsTo…`, `IncreaseDecreaseIn…`, capex, inventory build, "Other, net") or a contra-asset (accumulated depreciation) — are flagged `(filed −)` in the table and carry `is_negated: true` in the `<raw_data>` envelope; apply that sign when interpreting direction. For ready-signed cash-flow / income lines, `get_financials` applies statement signs for you. **Exactness:** the markdown rounds for readability; the `<raw_data>` block carries each fact's EXACT value + `decimals` (the as-filed precision floor: −3 = thousands, −6 = millions) + a stable `mdck` handle + two ways to see the fact in its filing: `handle.edgar` (SEC EDGAR — the independent primary source) and `handle.viewer` (the MetricDuck viewer, which opens the filing with the fact highlighted; auto-falls back to EDGAR with a plain scroll when the filing isn't cached in MD). **Share counts (pick the right basis):** the **dei** `EntityCommonStockSharesOutstanding` (shown as "cover-page / current") is the most-current shares outstanding, as of the filing/cover date — use it for **market cap, equity value, and "shares outstanding from the cover page"**. The **us-gaap** `CommonStockSharesOutstanding` is the **balance-sheet period-end** count (an earlier date); `WeightedAverageNumberOf…SharesOutstanding` is the **per-period average for EPS**. These can differ a few % for buyback-heavy / recently-issuing filers — match the as-of date in the Period column to your task. Searching: comma-separated terms OR-match (e.g., `revenue,product`). Responses are capped at ~20K chars — over the cap, whole facts are paged out of BOTH the table and the `<raw_data>` block together (the JSON stays valid) with an explicit `facts_omitted` count; narrow the search or lower `limit` for the rest.
get_xbrl_facts
Read a specific section from an SEC Source (10-K, 10-Q, 8-K earnings, 8-K events, or DEF 14A proxy). **Two modes:** 1. **Section mode (default)** — pass section_id for full paginated text (up to 10 chunks per page). 2. **Outline mode** — OMIT section_id and pass accession_number to receive the filing's section TOC with ~120-char content previews per section. Use this when drilling into an unfamiliar Source (multi-exhibit 8-K, DEF 14A, FPI 6-K) to pick the right section by content rather than guessing from section_id. Use list_filings first to discover accession numbers. In section mode, omitting accession_number returns the latest filing's section. The section_id field description (below) enumerates valid IDs by category. Use Cases: - "Apple risk factors" -> get_filing_section("AAPL", "risk_factors") - "Customer concentration in NVDA" -> get_filing_section("NVDA", "risk_factors", query="customer concentration") - "Workforce / headcount / employees by geography" -> get_filing_section("MSFT", "business_description", query="human capital") (Human Capital Resources lives in Item 1, not a separate section) - "M&A terms" -> get_filing_section("CVX", "item_1_01_material_agreement", form_type="8-K") - "As of a past date / point-in-time" -> get_filing_section("MSFT", "business_description", vantage_date="2025-04-07") (serves the latest 10-K filed on/before that date — use this for time-anchored questions instead of assuming the newest filing; or pin an exact report via accession_number from list_filings) - "Multi-exhibit 8-K" -> get_filing_section(ticker, accession_number="...") (outline mode) → pick exhibit → get_filing_section(ticker, section_id="item_7_01_exhibit_99_02") Sister Sources (non-SEC): - Earnings call transcripts → `compare_earnings_calls` (cross-quarter view) or list_filings + section_id="transcript_prepared_remarks" - IR press releases / events → `screen_filing_signals` with signal_type="ir_press_release" - Forward guidance / operational KPIs / segment outlook in the earnings PRESENTATION DECK (not in the SEC filing or XBRL) → `get_ir_documents(ticker, fiscal_year, fiscal_period, query=…)` - Raw XBRL dimensional facts → `get_xbrl_facts` - Year-over-year risk-factor change detection ("what's new/changed vs last year's `risk_factors`") → `screen_filing_signals(signals=["has_new_risks"], ticker=…)` — a computed vs-prior-filing signal, cheaper and more reliable than reading two filings and diffing the prose yourself - A figure ABSENT from the section you expected → `search_sec_filings(company=<ticker/CIK>, query="exact phrase")` locates which section of which filing carries it (per-section drill-in pointers) — absence from one section does not mean the filing lacks it **Delisted / acquired issuers**: pass `cik` (10-digit, zero-padded) instead of `ticker` and set `include_delisted=true`. Examples: SAVE Spirit Airlines (`cik="0001498710"`), RDFN Redfin (`cik="0001382821"`). Responses capped at ~20K chars. Use offset for pagination or query to narrow results.
get_filing_section
Discover recent SEC filings landed since a watermark — single call, universe-wide, optional portfolio filter. **Use this when:** building event-driven agent workflows (Routines, alerts, daily portfolio checks). The right primitive when the question is "what new filings have landed?" rather than "what filings does this one company have?". **Returns:** flat list of {ticker, accession, filed_at, form_type, form_subtype}, newest filing date first and **largest issuers first within a date** — so `limit=15` during earnings week surfaces the banks and mega-caps that filed, not the alphabetically-first micro-caps. `form_subtype` is computed from the filing's section inventory: '8-K-earnings' (has any earnings_* section), '8-K-transcript' (has any transcript_* section), '8-K-event' (has any item_* section), '8-K-other' (8-K with none of the above), or null for non-8-K forms. **Cost:** ~one call regardless of portfolio size — vs O(N) calls if you fan out per-ticker via `list_filings`. **Composition:** for each row in the result, drill in via `get_filing_section(ticker, accession_number=...)` (omit `section_id` for the filing's section outline) to see what is in that specific filing, then `get_filing_section` with a `section_id` for narrative content. **Use `list_filings` instead when:** you need ALL filings for ONE company (paginate by year). `list_recent_filings` is the cross-company / event-discovery primitive; `list_filings` is the per-company catalog.
list_recent_filings
Screen 5,500+ US companies by financial metrics. Find stocks matching quantitative criteria. Metric IDs (canonical names from filing_metrics): - Valuation: pe_ratio, pb_ratio, ev_ebitda, fcf_yield, market_cap, ev - Profitability: gross_margin, oper_margin, net_margin, ebitda_margin, roe, roa, roic - Cash Flow: fcf, net_cf_ops, cash_conversion - Balance Sheet: debt_to_equity, current_ratio, ttl_debt, ttl_equity, cash_st_invs - Size: revenues, net_income, ebitda, gross_profit Growth screening: use period_type on any base metric: - Revenue growth YoY: metric_id="revenues", period_type="ttm.yoy" - 3-year revenue CAGR: metric_id="revenues", period_type="ttm.cagr3" - Earnings growth: metric_id="net_income", period_type="ttm.yoy" Period types: ttm (default), q, fy, ss (balance sheet snapshot), ttm.yoy, ttm.cagr3, ttm.cagr5 Sectors: TECH, FIN, HEALTH, CONS_STAPLES, CONS_DISC, IND, ENERGY, UTIL, RE, MAT, COMM Operators: gt (>), gte (>=), lt (<), lte (<=), eq (=), between Tag filtering (required_tags / excluded_tags): filter by business model classification. Requires companies to be classified — unclassified companies are excluded from tag-filtered results. Note: For P/E screening, negative P/E means losses. Add a gt(0) filter to exclude loss-making companies. Note: ROIC values are decimals (0.15 = 15%). Margins and returns are also decimals. Use Cases: - "High ROIC tech stocks" -> filters=[{metric_id:"roic", operator:"gt", value:0.15}], sectors=["TECH"] - "Undervalued profitable industrials" -> filters=[{metric_id:"pe_ratio", operator:"lt", value:15}, {metric_id:"pe_ratio", operator:"gt", value:0}], sectors=["IND"] - "Revenue growing >10% YoY" -> filters=[{metric_id:"revenues", operator:"gt", value:0.10, period_type:"ttm.yoy"}] - "AI infrastructure companies not exposed to China supply chain" -> required_tags=["ai_ml_infrastructure"], excluded_tags=["china_supply_chain_heavy"] - "Profitable subscription businesses" -> filters=[{metric_id:"net_margin", operator:"gt", value:0.10}], required_tags=["subscription_recurring"] To screen by filing SIGNALS (tone, covenant risk, material weakness, etc.), use screen_filing_signals — a universe-correct cross-company signal screen — then intersect with a metric screen here. Responses capped at ~20K chars. If truncated, reduce limit or add stricter filters.
screen_companies
Screen companies by signals across all source types — filings, earnings, transcripts, IR events. This is NOT metric screening (use screen_companies for P/E, ROIC, etc.). Screens by verifiable facts, not LLM-generated scores. Available signals: Filing intelligence (from 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 and 6-K Ex 99.1, from earnings press releases): - 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) Transcript (from earnings call Q&A): - 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 (from company press releases): - ir_partnership: Strategic partnerships announced DEF 14A proxy statements (from compensation disclosures): - def14a_peer_group: Compensation peer group disclosed (with company names) - def14a_ceo_pay_ratio: CEO pay ratio disclosed Use Cases: - "Which tech companies have cautious management?" -> signals=["tone_cautious"], sectors=["TECH"] - "Does NVDA have any tone_shifted recently?" -> ticker="NVDA", signals=["tone_shifted"], recency_days=30 - "Did AAPL disclose new risk factors vs last year's 10-K?" (year-over-year risk surveillance) -> ticker="AAPL", signals=["has_new_risks"] — prefer this over reading risk_factors for two periods via get_filing_section and diffing the prose by hand - "Companies that gave specific guidance on calls?" -> signals=["transcript_has_guidance"] - "Which companies announced strategic partnerships or M&A deals?" -> signals=["ir_partnership"] Cross-filing composition (Brief 35 — Pattern 4): `ir_partnership` matches on M&A / partnership 8-K anchors (Item 1.01) carry a `companion_accessions: string[]` field in their payload value when the announcement is split across an anchor + same-day companion 8-K (7.01 Reg FD + Ex 99 press release / 8.01 other events). To read the full announcement narrative — CEO quotes, deal terms, investor-presentation text living in the companion — pass those accession numbers to `get_filing_section({..., section_id:"item_1_01_material_agreement", include_companions:true, companion_accessions:[...]})`. Empty list means no companion exists or the producer hasn't backfilled it (acceptable; anchor-only flow still works).
screen_filing_signals
Resolve a company name or ticker to the exact ticker symbol via fuzzy name/ticker match. **Scope:** exact-entity lookup only. Handles partial names ("micro" -> MSFT), typos, and ticker variations. Returns ticker, full name, CIK, SIC, filer type (domestic / foreign private issuer / fund — i.e. which form family to expect), fiscal year-end, and a primary-source SEC EDGAR entity-page link (verify the resolution + see the company's full filing history) for each match. **Use this when:** you have a specific company name or ambiguous ticker and need to confirm the exact ticker before calling other tools. **Delisted / renamed / acquired companies** are resolvable by current OR former name (e.g. "American Software" → Logility, "Chase Manhattan" → JPM). They are returned ranked below active matches, flagged `[delisted]`, with their CIK. They have no current ticker — pass the returned `cik` to downstream tools (every company tool accepts a CIK in place of a ticker). **Input tip:** queries matching the pattern of 2-5 uppercase letters are auto-extracted as a ticker. If you pass an all-caps company name (e.g., "AMCOR") that is NOT a ticker, the lookup may miss — pass "Amcor" with normal casing to force name-search behavior. On miss, this tool returns suggested near-matches when possible. **Do NOT use this for concept/theme/industry discovery** (e.g., "gold miners", "LNG exposure", "companies mentioning tariffs"). This tool matches on company-name text only — it cannot surface companies by what they do. For concept discovery, use `search_sec_filings` (full-text search across filings) or `screen_companies` (metric + sector filters). **Coverage boundary:** MetricDuck is **SEC-EDGAR only**. This tool is the authoritative coverage check. A no-match on a **non-US local-exchange symbol** (e.g. `3087.T`, `LSE:HSBA`, `7203:JP`) is a coverage boundary, not a lookup miss — the tool says so explicitly and you should treat it as **terminal** (don't retry ticker variations). Foreign issuers that file a US 20-F/40-F (HSBC, Toyota, Novo Nordisk…) ARE covered — reach them by **company name**, not their local symbol.
search_companies
Daily end-of-day stock prices (open/high/low, close, split- & dividend-adjusted adj_close, volume) for US exchange-listed companies. Sourced from a market-data feed, not SEC filings. Markets are open only on business days, so rows exist ONLY for trading days — the data IS the trading calendar: - Price ON OR AFTER a date (e.g. an announcement landing on a weekend): pass start_date=<date>; the FIRST row is that date or the next open day. - Price ON OR BEFORE a date: pass end_date=<date>; the LAST row is that date or the prior open day. - A single specific date: pass start_date=<date> (omit end_date) — returns a short forward window whose first row is your on/after price. Use Cases: - "AAPL close on 2025-07-28" -> get_stock_price("AAPL", start_date="2025-07-28") (first row = that day or next open day) - "DKNG total return 2025-01-02 → 2026-02-27" -> TWO calls: get_stock_price("DKNG", start_date="2025-01-02") and get_stock_price("DKNG", end_date="2026-02-27"); take each first/last close and compute the return (cheaper than one 14-month window) - "SUI 1/14/30 calendar days after an 8-K date" -> get_stock_price("SUI", start_date="<announce>", end_date="<announce + ~32d>"), then pick the first row on/after announce, +1, +14, +30 - "Latest price" -> get_stock_price("AAPL") When the window spans ≥2 trading days, the response also reports the first/last close and the period return on BOTH close (literal point-to-point) and adj_close (split/dividend-adjusted — the true economic return; the two diverge across a split or dividend). Each response also includes the latest REPORTED period-end shares outstanding on/before your end date (period-end balance-sheet count; dei cover where absent) plus the implied market cap at the latest close — use these for market-cap / EV / P/B math instead of deriving share counts from NI/EPS (that yields weighted-average shares, a different basis). Coverage: ~8,400 US common-equity tickers, end-of-day only (no intraday/real-time, no options/FX). Recent history is dense; deep pre-2014 history may be sparse. For period-end valuation multiples (P/E, EV/EBITDA, P/B) use get_metric_history; to assemble a CUSTOM multiple (e.g. lease-adjusted EV) combine this price with get_metric_history("ticker","oper_lease_liabs" / "ttl_debt" / "cash_st_invs" / "ttl_equity" / "shares_basic").
get_stock_price
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are MetricDuck alternatives on ChatGPT?
As of 2026-08-14, MetricDuck competes with Aiera, AIR Credit Intelligence, Alpha Vantage, Bigdata.com, Clarity AI, CredCore - Tusk Liquid, Daloopa, FactorWeave, FactSet AI-Ready Data, Financial Datasets, Financial Summarizer Pro, FinancialFilings, FinRank Shiver, Fiscal.ai, FMP, LSEG, Mansa African Markets, Moody's Credit MCP, Moody’s, MSCI Connector, MT Newswires, Multiples.vc, Octus, Pinegap, Quartr, S&P Global, Theia Insights, Trata, WikiFx, Zacks Financial Data in ChatGPT Institutional Financial Data & Equity Research Platforms, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.