Skip to main content

spoken-alpha-mcp

MCP (Model Context Protocol) server that exposes the Spoken Alpha public API as tools any Claude-using agent can call by name.

The server is a thin client over api.spokenalpha.com/v1/*. It does not bypass auth, expose internal endpoints, or add functionality beyond what the public API ships. Wrapping, not extending.

What it gives you

Three tools, one per Tier 1 endpoint in the public API reference:

Tool Endpoint Status in v1
get_ir_page GET /v1/companies/{ticker}/ir-page Live
get_earnings_calls GET /v1/companies/{ticker}/earnings-calls Live
get_press_releases GET /v1/companies/{ticker}/press-releases Scaffolded — 503 until structured ingest ships

All three accept a US ticker (AAPL, MSFT, BRK.B). get_earnings_calls also accepts limit, cursor, date_from, date_to, confirmed_only, plus client-side fiscal_year / fiscal_quarter filters.

Getting an API key

Spoken Alpha is in private beta. Email kyle@spokenalpha.com to request a key. Pricing tiers and the public listing are at spokenalpha.com/pricing. Set the raw key as SPOKEN_ALPHA_API_KEY — the server forwards it as Authorization: Bearer <key> on every request.

Install

Requires Python 3.11+.

pip install spoken-alpha-mcp
# or, after this package is published to the registry:
# uvx spoken-alpha-mcp

From a local checkout:

cd mcp/spoken-alpha-mcp
pip install -e .

Wire it into Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "spoken-alpha": {
      "command": "spoken-alpha-mcp",
      "env": {
        "SPOKEN_ALPHA_API_KEY": "sk_live_..."
      }
    }
  }
}

If spoken-alpha-mcp isn't on PATH, replace with the absolute install path or use python -m spoken_alpha_mcp.

Wire it into Claude Code

Per-project MCP server (in your repo's .mcp.json):

{
  "mcpServers": {
    "spoken-alpha": {
      "command": "spoken-alpha-mcp",
      "env": { "SPOKEN_ALPHA_API_KEY": "sk_live_..." }
    }
  }
}

Example session

You: Where's Apple's IR page, and when was their last earnings call?

Claude calls get_ir_page("AAPL") → returns
  { "ticker": "AAPL",
    "company_name": "Apple Inc.",
    "ir_page": { "url": "https://investor.apple.com/...", "validation_status": "valid", ... },
    "_self": "..." }

Claude calls get_earnings_calls("AAPL", limit=1) → returns
  { "ticker": "AAPL",
    "calls": [ { "id": "call_AAPL_2026Q2_earnings", "call_date": "2026-05-01", ... } ],
    "pagination": { "next_cursor": null, "has_more": false },
    "_self": "..." }

Claude: Apple's IR page is at investor.apple.com (validated). Their most
        recent earnings call was Q2 FY2026 on 2026-05-01.

Error handling

Every tool returns either a success payload or an error payload of the shape:

{
  "error": true,
  "code": "ticker_not_found",
  "message": "No company found for ticker.",
  "status_code": 404,
  "request_id": "8c3f1e2a-...",
  "documentation_url": "https://api.spokenalpha.com/docs/errors#ticker_not_found"
}

Codes you'll see in practice:

  • unauthorized (401) — bad or missing SPOKEN_ALPHA_API_KEY.
  • forbidden_for_tier (403) — your tier doesn't include this field/endpoint.
  • ticker_not_found / ir_page_not_found (404) — company or IR URL missing.
  • validation_error (422) — query param out of range.
  • rate_limit_exceeded (429) — hourly/monthly cap; rate_limit_reset_at is the unix timestamp.
  • data_not_yet_available (503) — for get_press_releases in v1; the payload carries planned_launch.
  • timeout / network_error — transport failure before reaching the API.

Configuration

Env var Default Notes
SPOKEN_ALPHA_API_KEY (required) Raw bearer key from your dashboard.
SPOKEN_ALPHA_API_BASE_URL https://api.spokenalpha.com/v1 Override for staging / local dev.

Development

cd mcp/spoken-alpha-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

What this is NOT

  • Not an MCP for our internal trading signals. The proprietary surface (per-speaker deviation, the LLM scorer composition, short_signal_score) is walled off in ADR-0031 — by the same rules, this MCP only exposes the public API.
  • Not a richer client than the API itself. If a field isn't in the public API contract, it isn't in this MCP. New endpoints come through the API roadmap.

Metadata

Release files for spoken-alpha-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spoken-alpha-mcp 0.1.0
File Size Uploaded
spoken_alpha_mcp-0.1.0.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spoken-alpha-mcp 0.1.0
File Interpreter ABI Platform
spoken_alpha_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.4 kB

Release files / spoken_alpha_mcp-0.1.0.tar.gz

Download URL spoken_alpha_mcp-0.1.0.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
68d515803b955f3335ac963033f019018719d70c95748caeed8108c1b19f85d7
BLAKE2b-256 checksum
How to use checksums
8e0cd2802d43b5b7ede526d896832498dfc566be5c2e2076099ca400c891af9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release files / spoken_alpha_mcp-0.1.0-py3-none-any.whl

Download URL spoken_alpha_mcp-0.1.0-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfe8857267eb4d0efaf66edd676153aaef572672063104c0c17b6d8783c4eb72
BLAKE2b-256 checksum
How to use checksums
e6246150ad51201d70c3744dc66bfb38bd8dde9438ef218044f2345c6f656bc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page