canli-mcp / Earnings calendar

How do I get an earnings calendar in an AI chat?

Ask canli-mcp's earnings_calendar tool, for one company or the market. earnings_release then reads the release itself, with guidance as ranges and last quarter's guidance set against the results.

Free and MIT-licensed. No account and no API key. Or run claude mcp add canli -- npx -y canli-mcp in Claude Code.

Ask it

When does Microsoft report earnings, and when did it report before?

The agent finds the tool through canli-mcp's find_tool and runs it through run_tool. This is the call:

{
  "name": "earnings_calendar",
  "arguments": {
    "company": "MSFT",
    "quarters": 4
  }
}

What came back

Recorded from canli-mcp 0.11.1 on 2026-10-25, with no API key set. The model read 2,744 characters.

What earnings_calendar returned: releases, every row
dateweekdayaccepted ettimingquarter endedaccessionurl
2026-07-29Wednesday16:04after the close2026-06-300001193125-26-323632source
2026-04-29Wednesday16:03after the close2026-03-310001193125-26-191457source
2026-01-28Wednesday16:04after the close2025-12-310001193125-26-027198source
2025-10-29Wednesday16:07after the close2025-09-300001193125-25-256310source
The result earnings_calendar sent back, in full form
{
  "ref": "r16",
  "company": {
    "cik": 789019,
    "name": "MICROSOFT CORP",
    "ticker": "MSFT",
    "fiscal_year_end": "0630"
  },
  "as_of": "2026-10-25",
  "next": {
    "expected": "2026-10-28",
    "weekday": "Wednesday",
    "window_days": 3,
    "earliest": "2026-10-25",
    "latest": "2026-10-31",
    "basis": "52 weeks after 2025-10-29, the release that followed the same quarter a year earlier",
    "based_on": "2025-10-29",
    "status": "due now",
    "year_on_year_moves_days": [
      8,
      1,
      6,
      1,
      0,
      0,
      "…"
    ],
    "last_year_timing": "after the close"
  },
  "releases": {
    "columns": [
      "date",
      "weekday",
      "accepted_et",
      "timing",
      "quarter_ended",
      "accession",
      "…"
    ],
    "rows": [
      [
        "2026-07-29",
        "Wednesday",
        "16:04",
        "after the close",
        "2026-06-30",
        "0001193125-26-323632",
        "…"
      ],
      [
        "2026-04-29",
        "Wednesday",
        "16:03",
        "after the close",
        "2026-03-31",
        "0001193125-26-191457",
        "…"
      ],
      [
        "2026-01-28",
        "Wednesday",
        "16:04",
        "after the close",
        "2025-12-31",
        "0001193125-26-027198",
        "…"
      ],
      [
        "2025-10-29",
        "Wednesday",
        "16:07",
        "after the close",
        "2025-09-30",
        "0001193125-25-256310",
        "…"
      ]
    ]
  },
  "note": "Dates are when the company filed its results 8-K (Item 2.02); accepted_et is when EDGAR accepted it, usually minutes after the press release…",
  "source": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=789019&type=8-K&dateb=&owner=include&count=40",
  "limits": [
    "From the company's own 8-K filings on EDGAR, as filed. Foreign private issuers furnish results on Form 6-K, which has no item numbers, and a…",
    "Not investment advice."
  ]
}

Prices, filings and statistics are as the sources published them on that day; run the call again for today's. Nothing here is investment advice.

The tools behind the answer

From canli-mcp's tool index
ToolPackWhat it does
earnings_calendarmarketsEarnings dates from the companies' own 8-Ks (Item 2.02, results of operations). For a company: its recent results releases with the quarter each covered and whether it came before the open or after the close (EDGAR's acceptance time), and the next release estimated from the same quarter a year earlier, with a window. Across the market: who is due to report in a window, from when they reported in the same weeks last year, marked once they have. Estimates, not announcements.
earnings_releasemarketsA quarter's results press release (8-K Item 2.02): the headline, the results it states (each with the part of the business it belongs to and what a change is measured against), its guidance parsed into ranges (low, high, midpoint, unit, measure, basis, period, and the sentence or table row), and the previous release's guidance for this quarter set against the company's results: above, within or below the range, in basis points for rates.

Add canli-mcp

Claude Code
claude mcp add canli -- npx -y canli-mcp
Cursor, Claude Desktop or any MCP client
{ "mcpServers": { "canli": { "command": "npx", "args": ["-y", "canli-mcp"] } } }
claude.ai, ChatGPT or any client that takes a URL
https://canlicapital.com/mcp/canli

Everything canli-mcp does · How it compares with other finance MCP servers

Related questions