canli-mcp / Fund holdings

How can an AI agent see what an ETF or mutual fund holds?

canli-mcp's fund_portfolio tool reads a fund's N-PORT filings on SEC EDGAR and lists its top holdings with weights, and can compare a period with the one before.

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

What are the top holdings of the iShares Core S&P 500 ETF?

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

{
  "name": "fund_portfolio",
  "arguments": {
    "fund": "IVV",
    "top": 10
  }
}

What came back

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

What fund_portfolio returned, the first rows; the first columns
nametitlecusipisinvalue usdweightasset categoryissuer category
NVIDIA Corp.NVIDIA Corp.67066G104US67066G1040666623583680.075059ECCORP
Apple, Inc.Apple, Inc.037833100US0378331005584591308270.065823ECCORP
Microsoft Corp.Microsoft Corp.594918104US5949181045381154469520.042917ECCORP
Amazon.com, Inc.Amazon.com, Inc.023135106US0231351067320925999320.036135ECCORP
Alphabet, Inc.Alphabet, Inc., Class A02079K305US02079K3059288241297800.032455ECCORP
Broadcom, Inc.Broadcom, Inc.11135F101US11135F1012246016415230.027701ECCORP
Alphabet, Inc.Alphabet, Inc., Class C02079K107US02079K1079229709899370.025864ECCORP
Micron Technology, Inc.Micron Technology, Inc.595112103US5951121038179071425550.020163ECCORP
The result fund_portfolio sent back, in full form
{
  "ref": "r2",
  "fund": {
    "name": "iShares Core S&P 500 ETF",
    "ticker": "IVV",
    "series_id": "S000004310",
    "class_id": "C000012040",
    "registrant": "iShares Trust",
    "registrant_cik": 1100663
  },
  "period": "2026-06-30",
  "filed": "2026-08-25",
  "accession": "0002071691-26-019760",
  "net_assets": 888128937468,
  "total_assets": 889637196077,
  "positions": 508,
  "weights_add_to": 1.0012,
  "columns": [
    "name",
    "title",
    "cusip",
    "isin",
    "value_usd",
    "weight",
    "…"
  ],
  "rows": [
    [
      "NVIDIA Corp.",
      "NVIDIA Corp.",
      "67066G104",
      "US67066G1040",
      66662358368,
      0.075059,
      "…"
    ],
    [
      "Apple, Inc.",
      "Apple, Inc.",
      "037833100",
      "US0378331005",
      58459130827,
      0.065823,
      "…"
    ],
    [
      "Microsoft Corp.",
      "Microsoft Corp.",
      "594918104",
      "US5949181045",
      38115446952,
      0.042917,
      "…"
    ],
    [
      "Amazon.com, Inc.",
      "Amazon.com, Inc.",
      "023135106",
      "US0231351067",
      32092599932,
      0.036135,
      "…"
    ],
    [
      "Alphabet, Inc.",
      "Alphabet, Inc., Class A",
      "02079K305",
      "US02079K3059",
      28824129780,
      0.032455,
      "…"
    ],
    [
      "Broadcom, Inc.",
      "Broadcom, Inc.",
      "11135F101",
      "US11135F1012",
      24601641523,
      0.027701,
      "…"
    ],
    "…"
  ],
  "exposure": {
    "asset_category": {
      "columns": [
        "code",
        "meaning",
        "weight"
      ],
      "rows": [
        [
          "EC",
          "equity, common",
          0.9983
        ],
        [
          "STIV",
          "short-term investment vehicle (money market fund, cash sweep)",
          0.0028
        ],
        [
          "DE",
          "derivative, equity",
          0
        ],
        [
          "OTHER",
          "other",
          0
        ]
      ]
    },
    "issuer_category": {
      "columns": [
        "code",
        "meaning",
        "weight"
      ],
      "rows": [
        [
          "CORP",
          "corporate",
          0.9983
        ],
        [
          "RF",
          "registered fund",
          0.0028
        ],
        [
          "OTHER",
          "other",
          0
        ]
      ]
    },
    "country": {
      "columns": [
        "country",
        "weight"
      ],
      "rows": [
        [
          "US",
          0.9717
        ],
        [
          "IE",
          0.02
        ],
        [
          "CH",
          0.0027
        ],
        [
          "BM",
          0.0016
        ],
        [
          "NL",
          0.0013
        ],
        [
          "LR",
          0.0012
        ],
        "…"
      ]
    },
    "currency": {
      "columns": [
        "currency",
        "weight"
      ],
      "rows": [
        [
          "USD",
          1.0012
        ]
      ]
    }
  },
  "monthly_returns": {
    "class_id": "C000012040",
    "columns": [
      "month",
      "total_return"
    ],
    "rows": [
      [
        "2026-04",
        0.104916
      ],
      [
        "2026-05",
        0.052632
      ],
      [
        "2026-06",
        -0.009562
      ]
    ]
  },
  "flows": {
    "units": "US dollars",
    "columns": [
      "month",
      "sales",
      "reinvestment",
      "redemption",
      "net"
    ],
    "rows": [
      [
        "2026-04",
        16417602043,
        0,
        14720875334,
        1696726709
      ],
      [
        "2026-05",
        30594589402,
        0,
        15266607536,
        15327981866
      ],
      [
        "2026-06",
        114335801884,
        0,
        70740612096,
        43595189788
      ]
    ]
  },
  "changes_since": {
    "period": "2026-03-31",
    "accession": "0002071691-26-012459",
    "columns": [
      "change",
      "name",
      "cusip",
      "balance_before",
      "balance_now",
      "value_now"
    ],
    "rows": [
      [
        "new",
        "Marvell Technology, Inc.",
        "573874104",
        0,
        12043614,
        3587672174
      ],
      [
        "new",
        "Honeywell International, Inc.",
        "438516205",
        0,
        4366671,
        977697525
      ],
      [
        "new",
        "Honeywell Aerospace, Inc.",
        "43849R105",
        0,
        4366671,
        965383514
      ],
      [
        "new",
        "Flex Ltd.",
        "N/A",
        0,
        5057856,
        819726722
      ],
      [
        "new",
        "Carnival Corp. Ltd.",
        "N/A",
        0,
        17695832,
        505569920
      ],
      [
        "new",
        "Casey's General Stores, Inc.",
        "147528103",
        0,
        507738,
        403545085
      ],
      "…"
    ],
    "counts": {
      "new": 10,
      "exited": 9,
      "added": 490,
      "reduced": 6
    }
  },
  "source": "https://www.sec.gov/Archives/edgar/data/1100663/000207169126019760/0002071691-26-019760-index.htm",
  "limits": [
    "From the fund's Form N-PORT as filed with the SEC; funds file it monthly, and only the last month of each fiscal quarter is made public, 60 …",
    "Weights are percentages of net assets as filed; short positions and derivatives can make them add to more or less than 100 percent. Balances…",
    "Sales and redemptions are shares issued and redeemed in dollars (creations and redemptions for an ETF); monthly returns are the share class'…",
    "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
fund_portfoliomarketsWhat a US mutual fund or ETF holds, from its own SEC Form N-PORT (VOO, IVV, QQQ, AGG, FXAIX): every position with value and weight, exposure by asset type, issuer, country and currency, a bond fund's coupon and maturity profile, its monthly returns, the money that came in and went out each month, and what changed since the previous quarter.

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