MCP App Store
by KeenEthics

Overview

Live Earnings turns public company earnings calls into transcripts where each turn is attributed to the person who spoke it: the CEO, the CFO, investor relations, or the sell-side analyst asking the question. Ask Claude what a specific executive said about guidance, which analysts questioned management and what they asked, or how the Q&A unfolded — on calls that have ended or while one is live. Tools (all read-only): list_calls finds the calls you can ask about; get_call returns a call's executives and covering analysts; get_sections shows where the prepared remarks and Q&A begin; get_qa_index lists each analyst's exchange in the Q&A; get_transcript reads the call by section, speaker turn or range; get_new_turns follows a live call; get_live_link opens the call in the browser. Names are assigned automatically from the call's roster and can be corrected by a person; the transcript flags turns whose name is still being worked out. Live Earnings is an independent service, not affiliated with the companies whose calls it covers, and it is not financial advice. Sign in with a free Live Earnings account.

Tools

get_analyst_history

ChatGPT
What one sell-side analyst asked on the earnings calls you can see, newest first, across companies: the question, the company and call, what the operator announced, and automatic checks. Machine-generated from transcripts: checks "consistent" means automatic cross-checks agreed, NOT that a person checked it (attributionChecked is true only after a person checked this exchange's attribution against a source; checkedBy is an assertion by whoever recorded it; it says nothing more about who the analyst is); "flagged" lists why not. Names are candidate identities (warnings flags possible duplicates and namesakes). Only the recordings in coverage are included, usually one quarter per company, so there is no trend. An empty answer can mean the call was never indexed: read coverage (indexed, notIndexed, stale, partialCalls). Read the full exchange, with its answers, by calling get_transcript with the call, fromSeq = startSeq and toSeq = endSeq from the result (omit toSeq when endSeq is null: it is the last exchange). withheldFlagged counts exchanges left out because include_flagged was false. Paged: pass offset=<nextOffset>.

get_call

ChatGPT
The call's company ticker, fiscal period, status (scheduled / live / ended, or as recorded — e.g. cancelled; unknown when not recorded), and its named roster: executives with titles and roles, and the sell-side analysts covering the stock. rosterSource 'none' means no roster is stored for this call, so speakers are unnamed.

get_company_metrics

ChatGPT
A company's key metrics as of a moment (default now): the focus set in force and why each metric is watched; each metric's actuals by quarter and every guide issued for it (only what was published by as_of); and our calculations (Y/Y, Q/Q, actual vs guide, both-end implied changes, revisions, implied remainder of the year). Figures carry origin "printed" with their source and who checked them; calculations carry origin "ours" and their inputs.

get_focus_sets

ChatGPT
The company's dated focus sets, newest first: the metrics that matter for it from each call on, why (with evidence and confidence), and who approved them.

get_metric_history

ChatGPT
Every observation of one metric in issue order — actuals as first printed and as reprinted in later releases, every guide and its revisions, restatements and what they superseded — with the metric's definition versions.

get_new_turns

ChatGPT
What was said since your last poll — the tool for following a LIVE call. Call it first with no cursor: it returns the latest turns and a cursor. Call it again with since=<that cursor, exactly as returned> to get only turns that are new or changed since then; keep the newest cursor each time. changed is 'new', 'renamed' (the speaker's name arrived, was corrected, or naming gave up and it stays null — use the new value) or 'rephased' (the turn moved to a different section; its text and name are unchanged). If a turn you need is pending, poll again with the same cursor after a few seconds: names follow the text. Each turn: speaker (null while unnamed), text, publishedAt (ISO time, the primary timestamp), sinceStreamStart (mm:ss from the start of this call's stream), phase, and flags: pending (text is out, the name is still being worked out — it usually arrives within seconds), provisional (the name is an early guess from the turn's first sentence), correctedByOperator (a person replaced a name that had already been shown — not merely named an unnamed turn), isOperatorHandoff (the conference operator: not a speaker of substance — its text usually names the next questioner and their firm, so read it to see who is about to ask).

get_qa_index

ChatGPT
Use with get_transcript to summarize the Q&A by analyst. Lists each operator handoff in the question-and-answer session, in order: who the operator announced (name and firm, as SAID — confirm names on the turns) and the exchange's seq range. Read one analyst's exchange with get_transcript({ fromSeq: seq, toSeq: endSeq }) (endSeq null = to the end; add phase 'qa' to leave out closing remarks); a long exchange may need a second page (nextOffset). A handoff with announced null is an operator turn from which no announcement could be read — often a re-prompt ("your line is open") that CONTINUES the previous exchange, so read through it: that analyst's question and answers may sit in the null marker's range. Markers can be missing when a handoff was not recognised: the transcript is authoritative. questionInHandoffTurn: the analyst's question was captured inside the handoff turn. state: ok, not_started (Q&A has not begun), no_qa (the call ended without one) or no_handoffs (read get_transcript with phase 'qa').

get_release

ChatGPT
The company's earnings press release for this call: sentences it leads with (results, guidance, margins, EPS, cash flow, backlog and the company's own key metrics), each EXACTLY as the release writes it and approved by a person against the original; context is the release's own lead-in line when the sentence needs one (e.g. a guidance list's introduction). Nothing is reworded or computed — quote the sentence when you cite a figure. Figures the release gives only in tables are not included; downloadUrl is the release itself. available:false means it has not been posted yet.

get_release_metrics

ChatGPT
The company's key metrics exactly as this call's "Key metrics" tab shows them, as of the call's release: the focus set (which metrics matter for this company now, and why), each metric's actuals by quarter and every guide issued for it, and calculations on them (Y/Y, Q/Q, actual vs the guide in force before the results, the change a guided range implies from both ends, revisions between guides, what a full-year guide leaves for the rest of the year). Every figure carries origin "printed" (the company's own number, with its source document, the table row and column or the sentence, and who checked it) and every calculation origin "ours" with the observations it used — cite them that way. Coverage states say what is not captured and why. Figures are in each metric's base_scale (e.g. € millions).

get_sections

ChatGPT
Where each section of the call begins — operator opening, IR introduction, CEO and CFO remarks (in either order), Q&A, closing — with the time (publishedAt, sinceStreamStart) and the turn that starts it. Use get_transcript with phase to read one section.

get_transcript

ChatGPT
The call's transcript in the order it was spoken, one entry per turn, each under the speaker name now in force. Paged: pass offset=<nextOffset> to continue; nextOffset is null on the last page. Filter to one section with phase (e.g. 'qa' for the question-and-answer session), or to a seq range with fromSeq/toSeq (one analyst's exchange, from get_qa_index). For a live call, use get_new_turns to follow what is being said now. Each turn: speaker (null while unnamed), text, publishedAt (ISO time, the primary timestamp), sinceStreamStart (mm:ss from the start of this call's stream), phase, and flags: pending (text is out, the name is still being worked out — it usually arrives within seconds), provisional (the name is an early guess from the turn's first sentence), correctedByOperator (a person replaced a name that had already been shown — not merely named an unnamed turn), isOperatorHandoff (the conference operator: not a speaker of substance — its text usually names the next questioner and their firm, so read it to see who is about to ask).

list_calls

ChatGPT
The earnings calls you can ask about, newest first: call (pass it to the other tools), ticker, fiscal period, company, status (scheduled / live / ended), timing (upcoming / live / past — trust this over status for when a call is; not the same as a turn's phase) and scheduled start. Paged: pass offset=<nextOffset>.

list_companies

ChatGPT
Companies whose key metrics you can ask about (each with at least one call you can see): company_id (pass it to get_company_metrics, get_metric_history and get_focus_sets), name, aliases (tickers with validity dates) and the next scheduled call.

get_call

Claude

get_new_turns

Claude

get_qa_index

Claude

get_sections

Claude

get_transcript

Claude

list_calls

Claude

Capabilities

Read

Example Prompts

Click any prompt to copy it.

Similar Apps