In the previous post we wired the earningscalls MCP into Claude Desktop for ad-hoc question-answering. That's the natural starting point — fast, conversational, no friction.

But the real productivity unlock isn't asking better questions. It's not having to ask them at all because Claude already produced the answer overnight, sitting in your inbox or your Notion workspace, ready when you log in.

This post shows how to use the same MCP server inside Claude Code — Anthropic's CLI tool — to build recurring, semi-autonomous research workflows. The kind of thing that used to require an engineer.

Setup time: 15 minutes. Cost: ~$0.15 per workflow execution for typical scans.

Why Claude Code (Not Desktop) For This

Claude Desktop is a chat surface. You ask, Claude answers, done. Great for exploration.

Claude Code is a programmable agent in your terminal — it can:

This means you can encode an entire research workflow as a single prompt-as-script that runs unattended on a schedule. The MCP server gives that script tools to fetch real data.

Setup: MCP in Claude Code

Same mcpServers config block as Desktop, but in a different location:

# In your project root
cat > .mcp.json <<EOF
{
  "mcpServers": {
    "earningscalls": {
      "url": "https://mcp.earningscalls.dev/mcp",
      "headers": {
        "X-API-Key": "ec_your_key_here"
      }
    }
  }
}
EOF

Or globally for all projects in ~/.config/claude/mcp.json (Linux/Mac) or %APPDATA%\Claude\mcp.json (Windows).

Verify by launching Claude Code (claude in your terminal) and asking:

"What earningscalls tools do you have?"

Claude should list search_transcripts, get_latest_call, get_speakers, etc.

Workflow 1: Weekly Watchlist Digest

The simplest valuable workflow: every Monday morning, get a digest of last week's earnings calls for your watchlist, with key takeaways per company.

Create weekly-digest.md in your project:

You are my equity research assistant. Today is Monday.

Watchlist: NVDA, MSFT, AAPL, META, GOOG, AMZN, TSLA, CRM, NFLX, ORCL.

For each ticker in the watchlist:
1. Use the earningscalls MCP to check if they had an earnings call
   in the last 7 days
2. If yes, fetch the transcript and produce a 3-bullet summary:
   - Headline result vs consensus
   - Most important guidance change
   - Most surprising thing said in Q&A
3. If no, skip silently

Write the output to ./research/weekly-YYYY-MM-DD.md
(use today's date). Use H2 per ticker, then the bullets.
At the end, include a "Stats" section with:
- Total companies that reported this week
- Total API requests used (ask the MCP if it exposes a count;
  if not, estimate based on tool calls)

Run it:

claude --no-interactive < weekly-digest.md

--no-interactive makes Claude Code execute the workflow without prompting back. It runs through the watchlist, makes the necessary tool calls, writes the file, and exits.

Wrap it in cron for full automation:

0 8 * * MON cd /path/to/project && claude --no-interactive < weekly-digest.md

Monday 8 AM, your research/ folder has the latest digest. If you've connected your project to a Notion/Linear integration via another MCP server, Claude can write directly there instead of a file — same prompt, different output target.

Workflow 2: Theme-Scanning Skill

For recurring themes you care about, define a Claude Code skill — a reusable prompt with parameters.

Create ~/.config/claude/skills/earnings-theme-scan.md:

---
description: Scan recent earnings calls for mentions of a theme across the S&P 500
arguments:
  - name: theme
    description: The theme to search for (e.g. "agentic AI", "China exposure")
  - name: days_back
    description: Lookback window in days (default 14)
---

You are doing a market-wide theme scan.

1. Use the earningscalls `search_transcripts` MCP tool to find mentions
   of "{{theme}}" in transcripts from the last {{days_back}} days.
2. Paginate until you have all matches.
3. Group results by sector. Compute:
   - Total companies mentioning the theme
   - Top 5 sectors by mention count
   - Top 10 individual companies by mention count
4. For the top 3 companies, fetch a representative snippet of how
   they're discussing the theme.
5. Write the report to ./research/themes/{{theme | slugify}}-{{date}}.md

Report length: ~400 words. Be terse, no marketing language.
At the end, include the total API request count.

Invoke from the CLI:

claude /earnings-theme-scan "agentic AI" 30

The skill auto-fills the parameters, Claude executes the workflow, writes the file. Run it weekly for 5 different themes you track — your research/themes/ folder builds up a longitudinal record of how market discourse on each topic is evolving.

Workflow 3: Conditional Alert Pipeline

The most powerful pattern: Claude decides what's worth alerting on based on the call's content, not just keyword matches.

alert-on-significant-change.md:

You are monitoring TSLA and NVDA for the next earnings cycle.

Steps:
1. Use `get_upcoming_earnings` to find when each reports
2. If either reports today (call_date matches today's date),
   continue. If not, exit silently.
3. For each ticker reporting today:
   a. Wait until 30 minutes after the call's scheduled time
      (use `sleep` shell command)
   b. Fetch the transcript via `get_latest_call`
   c. Compare to the prior quarter's call (also fetched via MCP)
   d. Identify substantive changes — guidance shifts, new strategic
      themes, language tonal shifts.
   e. If you find a *substantive* change (your judgment), write
      a 200-word alert to `./alerts/{ticker}-{date}.md`
   f. If the call is routine, write a one-line note to
      `./alerts/_routine.log` and exit.

Be selective. The point is to alert only when you (as a researcher)
would have flagged it for your boss.

This pattern uses Claude's judgment as the filter, not a rule. Run from cron after each market close; only get alerts when actual signal occurs.

Workflow 4: Cross-Reference With Your Own Data

The MCP server provides earnings data. You probably have other data — positions, watchlists, signals — in CSVs, databases, or other MCPs. Claude Code can join them.

claude << EOF
1. Read ./data/portfolio.csv — it has columns: ticker, weight,
   conviction_score.
2. For each ticker with conviction_score >= 4 (out of 5):
   - Use earningscalls MCP to check if there's a call in the next 14 days
   - If yes, note the date and time
3. Output a calendar in ./output/upcoming-positions-earnings.md,
   sorted by date, with: ticker, weight, conviction, call date,
   call time, expected revenue estimate (if available via API)
EOF

This kind of stitching — your spreadsheet + the MCP's data + Claude's reasoning — is where the agentic pattern stops feeling like a toy and starts replacing actual research-ops work.

Cost Estimates

Per workflow execution:

Workflow Typical API Calls Cost @ $0.005/req
Weekly digest (10 tickers) 10-20 $0.05-0.10
Theme scan (single theme) 5-15 (with pagination) $0.025-0.075
Conditional alert (per ticker) 4-8 $0.02-0.04
Cross-reference workflow 10-30 (depends on watchlist) $0.05-0.15

Run all four workflows daily/weekly:

Total: ~1,200 requests/month for fully-automated research-ops on a 10-15 ticker watchlist + 5 tracked themes. That's 24% of a Pro plan ($24.99) → about $6 in actual usage cost.

Plus your Claude Code subscription (currently bundled with Claude Pro / API usage), which for typical workflow runs of 5-15 minutes is well under $1/day.

Net: a fully-automated research-ops setup for a single analyst, costing under $50/month all-in.

Why This Beats Custom Code

I love writing custom code. But for this shape of workflow — read data, judge it, write a report — Claude Code dominates a hand-written script on three axes:

  1. Robustness to edge cases. A hand-written script breaks when a transcript is missing, or a company changes its ticker, or the API returns 429. Claude recovers — tries again, picks an alternative, notes the gap and continues. You don't write that retry logic; the agent has it built in.
  2. Easy modification by non-engineers. Your PM can edit weekly-digest.md and add "and also flag any company that mentions tariffs" without a code review. The workflow file is plain English.
  3. No deployment. The MCP is hosted, Claude Code runs locally or in your cron. No Docker, no infra, no PagerDuty rotation for the system itself.

The tradeoff: workflows running 1000+ times per day are cheaper as custom code. For workflows running 1-100 times/day — the agent dominates on TCO.

Recommended First Project

If you're new to this pattern, start with Workflow 1: Weekly Watchlist Digest. 15 minutes to write the prompt, immediately useful, easy to extend. Once you have one working workflow producing real output, the others reveal themselves naturally.

The mental shift is the hard part: instead of writing scripts, you're writing job descriptions for a competent agent. Tone, scope, what to include, what to skip. The MCP makes the tool calls automatic — your job is just to specify the work.

Get an API key and have your first workflow running tonight.