Search earnings transcripts
search_earnings_transcriptsSearch earnings-call intelligence from live calls, decomposed into atomic, quote-anchored claims and Q&A pressure points — never a raw transcript dump.
Retrieval for "claims" and "pressure_points" is lexical, not semantic. A nonempty query uses an OR-of-tokens full-text candidate set; strict websearch_to_tsquery matches receive a fixed ranking boost, so strict matches rank ahead of loose partial-term matches. Lower-ranked rows may match only some query terms. If that filtered full-text search returns no rows, a trigram fallback handles typos and sub-word variants. Quoted phrases use websearch syntax, but synonyms are not inferred: try the company's own vocabulary ("capex" and "capital expenditure", segment names, abbreviations). Word forms are matched by their English stem, so "lock" also finds "locked" and "locking", and a hyphen counts as a space, so "lock-in" also finds "locked in" and "locked into". For a broad screen, prefer this tool over run_sql regular expressions, which match only the exact spelling. An empty or partial result is not proof that management did not discuss a topic; coverage and vocabulary both matter.
Target and filter semantics:
"claims" (default) searches or browses normalized management/analyst claim rows. ticker, quarter_filter, claim_family, section, detail, and limit apply. claim_family matches primary or secondary families; section is "prepared_remarks" or "qa". Base rows include direction/value/unit where checkable, assertion_status, canonical_statement, verbatim_quote, speaker, speaker_role, section, transcript_id, source_block_index, qa_turn_id, and a source_link object. detail=true rows also carry entity_refs: the companies, products and bodies the claim names, each with raw_name, ref_type (competitor, customer, supplier, partner, product, regulatory_body, other, none), is_implied, entity_name, and entity_ticker.
"pressure_points" searches or browses what analysts pressed for and whether management confirmed, declined, deflected, or partially answered. ticker, quarter_filter, claim_family (the linked family), detail, and limit apply. section is ignored because every pressure point is from Q&A. Base rows include specific_ask, response_quality, refused_number, linked_family, linked_claim_id, verbatim_quote, speakers, transcript_id, source_block_index, qa_turn_id, and a source_link object. speakers lists every transcript turn the quote draws on, in spoken order, each with block_index, speaker, role (analyst, ceo, cfo, ...) and firm as stored for that turn; one quote usually spans an analyst's question and a manager's answer, so attribute each part of the quote to its own speaker.
"disclosure_profile" is a direct company lookup, not text search. The ticker is the first ticker value, or query when ticker is empty. Profiles are curated separately from transcript coverage, so a covered company may not have one; availability is "available" or "unavailable" accordingly. quarter_filter, claim_family, section, detail, and limit do not narrow it.
"coverage" is corpus inventory, not text search. ticker and limit apply; query, quarter_filter, claim_family, section, and detail do not narrow it. Rows report calls_covered, earliest_period, latest_period, latest_call_date (the call date of latest_period), claims, pressure_points, and recent_calls (the newest stored calls, each as its fiscal_period and call date).
Fiscal period labels follow each company's own fiscal year, and they are not always the calendar year of the call: a retailer's March 2026 call can be FY2025Q4. Before you pin quarter_filter, read the fiscal_period of the call you want from recent_calls. When a quarter_filter matches no call of the requested tickers, the result note lists the periods and call dates that are stored for them.
An empty query is a capped browse, not a completeness guarantee. Rows are
ordered by newest fiscal period/call and then source-block (spoken) order
within one call. Every response is limited to at most 50 rows, and a browse
that reaches its limit may omit additional rows even if no truncation flag is
present. For a latest-call note: (1) call "coverage" with one ticker, (2) read
latest_period, (3) call "claims" with that ticker, quarter_filter=latest_period,
query="", detail=true, and a deliberate limit, then (4) call
"pressure_points" with the same ticker and quarter. Treat both browses as
capped evidence, not a complete transcript. Narrow large result sets with
ticker, quarter, target, claim_family, and (for claims) section. For media
quotes, run_sql can read transcripts.appearance_claims.verbatim_quote;
other transcript tables remain restricted.
Evidence rules: canonical_statement is normalized and must not be quoted as
verbatim. Quote only verbatim_quote, with its speaker, role, ticker, and fiscal
period. A […] inside verbatim_quote marks omitted transcript sentences between
non-adjacent evidence spans: preserve it exactly when quoting, and never
present text on either side of it as one continuous statement. When a quote is used, render source_link.source_label as the Markdown
link text for source_link.source_url beside the claim. The label names the
company, fiscal period, and earnings call transcript; never replace it with an
ingestion vendor. Do not make a second call just to find a citation, do not
invent a replacement when source_url is null, and do not call a document-level
link exact context. source_locator still identifies the stored transcript block
or Q&A turn. assertion_status is load-bearing: analyst_hypothesized is the
analyst's framing, while mgmt_declined_to_confirm is a refusal, not a management
assertion. Spoken call claims are a different source class from filed XBRL
actuals (run_sql on the sec schema) and formally issued targets (the
sec_guidance dataset); label them separately.
Examples:
Latest call: search_earnings_transcripts(query="", search_target="coverage", ticker="MU"), then repeat with search_target="claims", quarter_filter=<latest_period>, detail=true, limit=50, and finally with search_target="pressure_points" for the same ticker and quarter.
Cross-company theme: search_earnings_transcripts(query="capital expenditure capacity", search_target="claims", ticker="MU,NVDA", detail=true); inspect each returned row for topical support, do not assume every term matched, and retry vocabulary as needed.
Disclosure habits: search_earnings_transcripts(query="", search_target="disclosure_profile", ticker="MU").
claim_family codes: driver_attribution, forward_conviction, prior_view_revision, strategic_agreement, pricing_mechanics, demand_magnitude, capacity_milestone, competitive_positioning, cohort_behavior, cost_margin_bridge, capital_allocation, stated_risk_constraint, qa_dynamics, regulatory_policy, pipeline_backlog, commodity_hedging, ma_deal, labor_org. Topic paths (topic_path column) are rooted at: demand, supply_capacity, pricing, cost_margin, capital, competition, customer, product_roadmap, risk, governance.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "search_earnings_transcripts"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum 1-50 rows (default 15). This is a hard cap, not proof the result is complete; narrow by ticker, quarter, target, family, and claims section. | |
| query | No | For claims/pressure_points: lexical websearch text; strict matches rank above loose partial-term matches, with trigram fallback only when FTS returns no rows. Empty text browses capped rows. For disclosure_profile, it can supply the ticker when ticker is empty. Ignored by coverage. | |
| detail | No | For claims, add structured_fields, secondary_families, period, time_horizon, conviction_qualifier, denominator, falsifiable, and entity_refs (the companies, products and bodies the claim names: raw_name as spoken, ref_type such as competitor/customer/supplier, is_implied for an unnamed reference, and the matched entity_name/entity_ticker when known); for pressure_points, add tone_note. Ignored by disclosure_profile and coverage. The extractor's quantified flag is not published: it only records that the extractor wrote something into value, which the caller can already see in value itself. | |
| ticker | No | Ticker, or a comma-separated list of tickers, for claims, pressure_points, and coverage; case-insensitive. Company names belong in company_name; pass only one of the two. A name passed here is still read as a name when it fits a stored company, and the response says so. Companies listed in India carry the NSE suffix ('RELIANCE.NS', 'INFY.NS') and companies listed in Switzerland carry '.SW' ('NESN.SW', 'ROP.SW'); a plain NSE or Swiss symbol is also accepted, but a symbol that is a US ticker ('INFY', 'ROP') selects the US listing. The response lists possible matches for a value that is not in the transcript corpus. disclosure_profile uses only the first ticker. | |
| section | No | prepared_remarks or qa; applies only to claims. Ignored for pressure_points because those rows are all Q&A, and ignored by lookup/inventory targets. | |
| claim_family | No | Claim-family code. Matches primary/secondary families on claims and the linked family on pressure_points; ignored by disclosure_profile and coverage. | |
| company_name | No | Company name, or a comma-separated list of names, for claims, pressure_points, and coverage; case-insensitive ('nvidia', 'HP Inc', 'Ford Motor'). Each name resolves to the stored ticker(s) that match it best; the response reports the resolution and lists possible matches for a name that resolved to nothing. Pass either company_name or ticker, not both. disclosure_profile uses only the first resolved ticker. | |
| search_target | No | claims or pressure_points perform lexical retrieval/browse; disclosure_profile is a direct company lookup; coverage is corpus inventory. | claims |
| company_filter | No | Deprecated alias of ticker, kept for clients installed before the parameter was renamed. Pass ticker instead. | |
| quarter_filter | No | Exact fiscal period such as FY2026Q3; applies to claims and pressure_points. Ignored by disclosure_profile and coverage. Pin this after coverage for a single-call browse. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||