canli-mcp / Financial statements

How can an AI agent read a company's financial statements from SEC filings?

canli-mcp's financial_statements tool reads the income statement, balance sheet and cash flow straight from the XBRL a company filed with the SEC. Several years come joined in one table, and a restated figure is shown beside the one first reported, so the agent quotes the filing rather than its memory.

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

Give me Apple's income statement for the last few years, from the filings.

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

{
  "name": "financial_statements",
  "arguments": {
    "company": "AAPL",
    "statement": "income",
    "period": "annual",
    "filings": 2
  }
}

What came back

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

What financial_statements returned: income, the first rows
lineconcept12 months to 2025-09-2712 months to 2024-09-2812 months to 2023-09-3012 months to 2022-09-24
Net salesus-gaap:RevenueFromContractWithCustomerExcludingAssessedTax416161391035383285394328
Cost of salesus-gaap:CostOfGoodsAndServicesSold220960210352214137223546
Gross marginus-gaap:GrossProfit195201180683169148170782
Operating expenses:us-gaap:OperatingExpensesAbstract
Research and developmentus-gaap:ResearchAndDevelopmentExpense34550313702991526251
Selling, general and administrativeus-gaap:SellingGeneralAndAdministrativeExpense27601260972493225094
Total operating expensesus-gaap:OperatingExpenses62151574675484751345
Operating incomeus-gaap:OperatingIncomeLoss133050123216114301119437
The result financial_statements sent back, in full form
{
  "ref": "r2",
  "company": {
    "cik": 320193,
    "name": "Apple Inc.",
    "ticker": "AAPL"
  },
  "period": "annual",
  "filings": {
    "columns": [
      "accession",
      "form",
      "filed",
      "period",
      "index"
    ],
    "rows": [
      [
        "0000320193-25-000079",
        "10-K",
        "2025-10-31",
        "2025-09-27",
        "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm"
      ],
      [
        "0000320193-24-000123",
        "10-K",
        "2024-11-01",
        "2024-09-28",
        "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/0000320193-24-000123-index.htm"
      ]
    ]
  },
  "income": {
    "title": "CONSOLIDATED STATEMENTS OF OPERATIONS",
    "units": "USD ($) shares in Thousands, $ in Millions",
    "money_scale": 1000000,
    "shares_scale": 1000,
    "columns": [
      "line",
      "concept",
      "12 months to 2025-09-27",
      "12 months to 2024-09-28",
      "12 months to 2023-09-30",
      "12 months to 2022-09-24"
    ],
    "rows": [
      [
        "Net sales",
        "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
        416161,
        391035,
        383285,
        394328
      ],
      [
        "Cost of sales",
        "us-gaap:CostOfGoodsAndServicesSold",
        220960,
        210352,
        214137,
        223546
      ],
      [
        "Gross margin",
        "us-gaap:GrossProfit",
        195201,
        180683,
        169148,
        170782
      ],
      [
        "Operating expenses:",
        "us-gaap:OperatingExpensesAbstract",
        null,
        null,
        null,
        null
      ],
      [
        "Research and development",
        "us-gaap:ResearchAndDevelopmentExpense",
        34550,
        31370,
        29915,
        26251
      ],
      [
        "Selling, general and administrative",
        "us-gaap:SellingGeneralAndAdministrativeExpense",
        27601,
        26097,
        24932,
        25094
      ],
      "…"
    ],
    "sources": [
      "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/R3.htm",
      "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/R3.htm"
    ]
  },
  "units_note": "Values are as each statement shows them: units gives the scale of money and shares (\"$ in Millions\"), and money_scale and shares_scale are t…",
  "limits": [
    "From the XBRL statements the company filed, as SEC renders them; Canli Capital does not edit or verify them. Labels are the company's own.",
    "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 same answer as a view

In a host that draws MCP Apps, view: true shows the person the whole result and gives the model a summary. Watch it, then try it: below the clip is canli-mcp's real view, playing a recording.

Statements

The view loads here.

The tools behind the answer

From canli-mcp's tool index
ToolPackWhat it does
financial_statementsmarketsA company's financial statements exactly as filed: income statement, balance sheet, cash flow and equity statement from its 10-K (or 10-Q), with its own line labels, each line's XBRL concept and the values as the filing shows them (units say the scale). Joins several filings by period; a line a later filing restated, or that a stock split changed, is shown beside its first-reported figure, never mixed in.

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