Anyone who tracks public companies knows the routine: open the newest transcript, skim what management chose to lead with, dig through the Q&A for the question they dodged, then do it all again for the peer group and the prior three quarters. The work is repetitive and rule-shaped - which makes it ideal agent territory.
An earnings research agent automates that loop end to end. You supply a ticker and an intent ("what moved on margins this quarter?"); the agent decides which calls to fetch, reads them, runs the comparisons, and returns a written brief. This post shows how to stand one up on Claude plus the EarningsAPI MCP server. Target audience: developers comfortable in a terminal who want a working agent today.
Why MCP instead of a retrieval pipeline
The conventional build is heavy: scrape transcripts, chunk them, embed them, maintain a vector store, write retrieval glue - and watch it drift out of date every time a new quarter lands.
MCP inverts the architecture. Rather than pre-processing data into a pipeline, the server exposes tools, and the model chooses which to call, in what order, per question. Claude reads the tool descriptions and plans its own sequence. You specify the outcome; the model handles the orchestration.
For research this flexibility is the entire point. "Did guidance change?" requires a different tool path than "who challenged the buyback?" - and you never hardcode either. The hosted server at mcp.earningsapi.io gives Claude live, structured access to the corpus, so the agent never reasons over stale scraped copies.
What you need
Three pieces:
A connector URL. In the dashboard, open Connectors and click Generate. You receive a URL of the form
https://earningsapi.io/u/mct_xxx/mcp- your authenticated entry point into 250,945 transcripts covering 12,728 companies and every GICS sector, back to 2020.An MCP client. Claude Code is the quickest route:
claude mcp add --transport http earningsapi "https://earningsapi.io/u/mct_xxx/mcp"For a custom build, the Claude Agent SDK can register the same HTTP MCP server programmatically and drive it from your own service.
The tools. The server exposes roughly a dozen; the research workhorses:
search_transcripts- full-text search over 11.9M speaker segmentsget_transcript/get_earnings_call- retrieve a complete callget_speaker_segments- segments filtered by role (executive, analyst, operator, attendee, shareholder)list_calls_by_ticker/get_latest_call_for_ticker- walk one company's historylist_upcoming_earnings- the calendarget_dataset_stats,get_company_by_name,list_sectors/list_industries- lookups and coverage checks
No embeddings, no ETL, nothing to babysit.
Worked example: the one-page debrief
The canonical use case - hand the agent a ticker, receive a debrief. In Claude Code, it's one instruction:
You are an earnings research agent. For ticker NVDA, write a one-page debrief of the latest quarter. Steps: (1) locate the most recent call, (2) summarize the three themes management led with in prepared remarks, (3) from the analyst Q&A, surface the two toughest pushback questions and management's answers, (4) note any shift in forward guidance versus the prior quarter. Max 400 words, bullet points, attribute every quote to its speaker.
Under the hood, Claude typically runs get_latest_call_for_ticker to find the call, get_speaker_segments filtered to executive for the prepared remarks, the same tool filtered to analyst for the Q&A, and list_calls_by_ticker to reach the prior quarter for the guidance diff. Three to five tool calls total.
The role filter is what keeps this precise. You aren't asking the model to guess which speaker is an analyst - every segment in the corpus already carries that tag, so "find analyst pushback" is a filtered query, not an inference.
Patterns beyond the single debrief
Once the basic loop works, the compound patterns are where agents earn their keep.
Search → fetch → compare across time. The core research loop:
For SHOP, track how management discussed "take rate" over the last four quarters - frequency and tone. Search each call for the relevant segments, pull surrounding context, and narrate quarter-over-quarter how the framing changed. Flag any quarter where they stopped volunteering a number.
The agent searches per quarter, fetches matches, and performs the actual comparison in one synthesis pass. No tool called "compare quarters" exists; the agent composes it from primitives.
Peer comparison. Same loop, different axis:
Contrast how AMD and INTC characterized data-center demand on their latest calls. Quote the executive commentary from both and tell me who sounded more confident, and why.
Sector-wide themes. With coverage across all GICS sectors, you can widen the aperture: "search last quarter's semiconductor calls for 'inventory correction' and summarize the consensus." The agent fans out searches and aggregates.
Every pattern reduces to: search to locate, fetch to read, synthesize to answer. You describe the destination; the agent sequences the route.
Making it recurring
A debrief you trigger manually is a tool; one that triggers itself is a system.
Schedule the agent: a nightly job calls list_upcoming_earnings, and whenever a watchlist ticker reported in the past 24 hours, it runs the debrief prompt and posts the result to email or Slack. The simplest wiring is a cron entry that shells out to Claude Code with your prompt; a longer-lived Agent SDK service works for more elaborate setups. New calls flow into the corpus as they happen, so scheduled runs always see fresh data.
Budgeting requests
Know the cost model before you automate:
- Every MCP tool call is one API request against your plan's quota.
- A single debrief runs about 3–5 tool calls.
- Plans are quarterly: Basic $105, Pro $145, Ultra $515 - quotas and limits on the pricing page.
Run the numbers for your cadence. A personal watchlist of debriefs sits comfortably on the lower tiers; a scheduled agent sweeping dozens of tickers through earnings season, or fanning out sector-wide searches, wants Ultra's headroom. Prompt discipline pays too - an agent that pulls exactly the segments it needs is several times cheaper than one that fetches full transcripts it never uses.
Tool signatures, parameters, and role values are documented in the docs.
Ship it this week
This is not a big build: a connector URL, one claude mcp add, and a carefully written debrief prompt. Start with a single ticker you already follow, verify the output is something you would genuinely read, then extend to cross-quarter comparisons and a nightly schedule. Generate your connector from the dashboard and pick a plan at earningsapi.io when you're ready to build.