canli-mcp / Every annual report

How can I search every annual report a company has filed for one subject?

canli-mcp's filing_memory reads every annual report a company has on EDGAR, on your machine, and returns the best passages and how often a subject came up each year, free with no key. Across Coca-Cola's 33 reports back to 1994, the year 2000 problem is counted only in those for 1997, 1998 and 1999.

Price: $0 to run. Updated 2026-11-02. Free and MIT-licensed, with no account and no API key. Or run claude mcp add canli -- npx -y canli-mcp in Claude Code.

Ask it

What has Coca-Cola said about the year 2000 problem across its annual reports?

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

{
  "name": "filing_memory",
  "arguments": {
    "company": "KO",
    "query": "year 2000 computer systems",
    "also": [
      "Y2K"
    ],
    "years": 33,
    "limit": 3,
    "per_year": 1
  }
}

What came back

Recorded from canli-mcp 0.16.0 on 2026-11-02, with no API key set. The model read 7,214 characters.

What filing_memory returned, the first rows
filedperiod endformprose wordsmentionsmentions per 10000 words
2026-02-202025-12-3110-K8244300
2025-02-202024-12-3110-K8254500
2024-02-202023-12-3110-K8147900
2023-02-212022-12-3110-K8247700
2022-02-222021-12-3110-K8318400
2021-02-252020-12-3110-K8862200
2020-02-242019-12-3110-K9000500
2019-02-212018-12-3110-K9465700
The result filing_memory sent back, in full form
{
  "ref": "r4",
  "company": {
    "cik": 21344,
    "name": "COCA COLA CO"
  },
  "query": "year 2000 computer systems",
  "also": [
    "Y2K"
  ],
  "counted_as": "a paragraph holding most of the query's words, weighted by how rare each word is",
  "reports_read": 33,
  "earliest": "1994-03-14",
  "latest": "2026-02-20",
  "columns": [
    "filed",
    "period_end",
    "form",
    "prose_words",
    "mentions",
    "mentions_per_10000_words"
  ],
  "rows": [
    [
      "2026-02-20",
      "2025-12-31",
      "10-K",
      82443,
      0,
      0
    ],
    [
      "2025-02-20",
      "2024-12-31",
      "10-K",
      82545,
      0,
      0
    ],
    [
      "2024-02-20",
      "2023-12-31",
      "10-K",
      81479,
      0,
      0
    ],
    [
      "2023-02-21",
      "2022-12-31",
      "10-K",
      82477,
      0,
      0
    ],
    [
      "2022-02-22",
      "2021-12-31",
      "10-K",
      83184,
      0,
      0
    ],
    [
      "2021-02-25",
      "2020-12-31",
      "10-K",
      88622,
      0,
      0
    ],
    "…"
  ],
  "passages": {
    "columns": [
      "filed",
      "period_end",
      "item",
      "counts_as_mention",
      "score",
      "text",
      "…"
    ],
    "rows": [
      [
        "1999-03-29",
        "1998-12-31",
        "14",
        true,
        23.12,
        "YEAR 2000 Certain computer programs written with two digits rather than four to define the applicable year may experience problems handling …",
        "…"
      ],
      [
        "1998-03-09",
        "1997-12-31",
        "14",
        true,
        22.66,
        "YEAR 2000 In prior years, certain computer programs were written using two digits rather than four to define the applicable year. These prog…",
        "…"
      ],
      [
        "2000-03-09",
        "1999-12-31",
        "14",
        true,
        17.53,
        "- -- The uncertainties of litigation, as well as other risks and uncertainties detailed from time to time in our Company's Securities and Ex…",
        "…"
      ]
    ]
  },
  "sources": [
    "SEC EDGAR: the company's annual reports"
  ],
  "limits": [
    "This matches words, ranked by how rare and how frequent they are. It does not understand meaning: a passage can use the words and be about s…",
    "A count follows what lawyers choose to write as much as what is happening. A rise is a change in the words, not evidence of the event.",
    "Tables and short headings are left out. Reports older than about 2001 are plain text, and their sections may not be identified."
  ]
}

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
filing_memorymarketsEverything one company has said about a subject across every annual report it has on EDGAR, back to the 1990s where they exist: the best passages with links, how often it came up each year, and optionally how that moved with a margin, tested against chance. Reads the reports on this machine; no key. Supply the company's likely words in also and all_of, since a company rarely uses yours.

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