npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@earningscalls/mcp-server

v0.2.1

Published

Model Context Protocol server for EarningsCalls.dev — gives AI agents direct access to earnings call transcripts, speaker segments, and search.

Readme

EarningsCalls MCP Server

Website · MCP setup guide · API docs · License: MIT

Model Context Protocol server that gives AI agents direct access to the EarningsCalls.dev dataset — 177,000+ earnings call transcripts from 17,000+ companies across 70 countries and 170+ exchanges (2020 to present), with 11M+ speaker segments cleanly tagged by role (Executive / Analyst / Operator / Attendee / Shareholder), full-text search, and more.

Ask Claude (or any MCP-capable client) about any earnings call in natural language:

"What did NVIDIA's CFO say about data center growth in their last call?" "Compare Tesla's gross-margin commentary across the last four quarters." "Find S&P 500 companies that mentioned 'tariffs' in their Q2 2026 calls."

Built as a thin MCP wrapper around the public REST API at https://earningscalls.dev/api/v1. New calls land within minutes of the call ending.


Requirements

  • A paid EarningsCalls subscription (Pro, Ultra, or Enterprise). The free test key does not work here — grab a plan at earningscalls.dev/#pricing (from $24.99/month).
  • For the local method only: Node.js 18+.

Installation

Two remote options (zero install, recommended) and one local option.

Option A — Connector URL (recommended)

The easiest path: a personal connector URL with the token embedded, so there's no API-key header to manage.

  1. Go to earningscalls.dev/dashboardConnectorsGenerate.
  2. Copy the URL — it looks like https://earningscalls.dev/u/<your-token>/mcp.

Claude Desktop / claude.ai (web): Settings → Connectors → Add custom connector → paste the URL → Add. (On the web, leave the OAuth fields empty and confirm the consent popup.)

Claude Code (CLI):

claude mcp add --transport http earningscalls "https://earningscalls.dev/u/<your-token>/mcp"
# add --scope user to make it available in every project

Cursor.cursor/mcp.json:

{
  "mcpServers": {
    "earningscalls": {
      "url": "https://earningscalls.dev/u/<your-token>/mcp"
    }
  }
}

Each connector URL is independently revocable — generate one per device or workspace.

Option B — API-key header

Point your client at the hosted endpoint and pass your API key (ect_...) via the X-API-Key header.

Claude Code (CLI):

claude mcp add earningscalls --transport http https://mcp.earningscalls.dev/mcp \
  --header "X-API-Key: ect_your_key_here"

Claude Desktop / Cursor — config:

{
  "mcpServers": {
    "earningscalls": {
      "url": "https://mcp.earningscalls.dev/mcp",
      "headers": { "X-API-Key": "ect_your_key_here" }
    }
  }
}

Option C — Local (via npx)

Runs the server as a local process over stdio.

claude mcp add earningscalls \
  --env EARNINGSCALLS_API_KEY=ect_your_key_here \
  -- npx -y @earningscalls/mcp-server

Or in a client config:

{
  "mcpServers": {
    "earningscalls": {
      "command": "npx",
      "args": ["-y", "@earningscalls/mcp-server"],
      "env": { "EARNINGSCALLS_API_KEY": "ect_your_key_here" }
    }
  }
}

Coverage

| | | |---|---| | Earnings call transcripts | 177,000+ | | Companies | 17,000+ | | Countries / exchanges | 70 / 170+ | | History | 2020 – present (5+ years) | | Speaker segments | 11M+ (Executive / Analyst / Operator / Attendee / Shareholder) | | Sectors | All 11 GICS sectors | | Freshness | New calls within minutes of the call ending |


Available Tools

| Tool | Description | |---|---| | get_dataset_stats | Total counts and date range — call first to understand coverage. | | list_latest_calls | Most recent calls, optionally filtered by sector. | | list_recent_transcripts | Recently added transcripts. | | list_calls_by_ticker | All calls for a ticker (e.g. PLTR, AAPL), newest first. | | get_latest_call_for_ticker | Single most recent call for a ticker. | | get_company_by_name | Look up a company by full/partial name. | | list_companies | Browse / search companies. | | list_upcoming_earnings | Scheduled calls in the next N days. | | get_earnings_call | Metadata for a single call. | | get_transcript | Full text of a call — format full, summary, or components. | | get_speaker_segments | Speaker segments with role filter (Executive / Analyst / Operator …). | | search_transcripts | Full-text search across all transcripts and speaker segments. | | search_within_ticker | Full-text search scoped to one ticker. | | list_sectors / list_industries | Discover filter dimensions. |


Environment Variables

Local mode (stdio)

| Variable | Required | Default | |---|---|---| | EARNINGSCALLS_API_KEY | yes | — | | EARNINGSCALLS_BASE_URL | no | https://earningscalls.dev |

Remote mode (HTTP)

| Variable | Required | Default | |---|---|---| | PORT | no | 3000 | | EARNINGSCALLS_BASE_URL | no | https://earningscalls.dev |

In remote mode the API key is provided per session by the connecting client — either embedded in the connector URL (Option A) or via the X-API-Key header (Option B).


Development

npm install
npm run build

npm start    # local stdio mode
npm run serve # remote HTTP mode

Source layout:

src/
├── index.ts      # stdio entry + preflight (local mode)
├── http.ts       # Streamable HTTP entry (remote mode)
├── client.ts     # HTTP client for earningscalls.dev API
├── config.ts     # env var loading
├── messages.ts   # user-facing banners + error hints
└── tools.ts      # MCP tool definitions

License

MIT