The13f

com.the13fPublished by the13f.comv0.5.0Updated Oct 29, 2026

Institutional 13F intelligence: 8,600+ managers, holdings, changes, ownership, overlap and flows.

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Queries SEC 13F institutional holdings data — managers, positions, quarter-over-quarter changes, ownership and sector flows — from an assistant.

What you can do
  • List available quarters and search or list 13F filers with AUM summaries
  • Retrieve a manager's full positions for a quarter, singly or in bulk up to 25 pairs
  • Show what a filer bought, sold, added or trimmed, across one or many recent quarters, plus AUM and position-count trends
  • Find which filers hold a given security, including new buyers and exits
  • Match a portfolio to similar managers, compare two managers head-to-head, and get the most widely held consensus names
  • Read institutional regime snapshots and per-sector capital flows
When to use it
Useful when you want an assistant to research institutional positioning from public 13F filings: manager portfolios, quarter-over-quarter moves, who holds a ticker, portfolio overlap, or sector-level flows, without hand-diffing filings.
Requirements
Runs locally via uvx (or pip) with Python 3.11+; desktop MCP host such as Claude Desktop, Cursor or VS Code with Continue. Requires a free pf13f_ API key in THE13F_API_KEY (100 read calls per day, no card). Optional THE13F_API_BASE_URL and THE13F_MCP_TIMEOUT. Network access to the vendor API.
Before you install
The API key is a secret shown once at signup; keep it out of shared configs. Data is research only, filed with roughly a 45-day lag, long-only, and excludes funds under $100M; results carry a disclaimer meant to be surfaced. By default the server reports failures (versions, OS, location, error message) to the vendor unless THE13F_MCP_REPORTS is set to off. Paid signal and report tiers are planned.

Installation

In SourceWeft

  1. Open The13f in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

the13f-mcp

Model Context Protocol server for the13f. Brings institutional 13F intelligence into Claude Desktop, Cursor, VS Code + Continue, and any MCP-compatible host — no HTTP code required on your side.

Important limitations

Research data only. Sourced from publicly disclosed SEC Form 13F filings, which lag quarter-end by up to 45 days. Past institutional positioning does not predict future performance. Nothing here constitutes investment advice. Every tool's response includes a disclaimer field; the host LLM should surface it alongside any analysis it produces.

Install

uvx the13f-mcp

Or pip install the13f-mcp if you prefer to manage Python environments yourself. Python 3.11+ required.

Get a free API key

Free, no payment, no credit card:

  1. Visit https://the13f.com/developers/
  2. Enter your email and solve the Cloudflare Turnstile challenge
  3. Copy your pf13f_ key — shown once
  4. Paste it into your MCP host's config as THE13F_API_KEY (see below)
  5. Restart the host

Free tier: 100 read calls per day; quota rolls at UTC midnight. Signal and report tools arrive in later minor versions when paid tiers launch.

Configure your MCP host

Claude Desktop

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

json
{  "mcpServers": {    "the13f": {      "command": "uvx",      "args": ["the13f-mcp"],      "env": {        "THE13F_API_KEY": "pf13f_..."      }    }  }}

Restart Claude Desktop. The13f tools should appear in the MCP tool list.

Cursor

Settings → MCP → Add Server. Paste the same JSON block into the "Custom" field.

VS Code with Continue

Settings → experimental.modelContextProtocolServers → add a stdio transport running uvx the13f-mcp with THE13F_API_KEY in env. The key reveal page at https://the13f.com/developers/signup-success shows a copy-paste-ready snippet with the key already filled in.

Available tools — v0.1.0 (Read tier, free)

ToolWhat it does
list_quartersAll quarters with holdings data + the latest quarter
search_managersAutocomplete 13F filers by name
get_manager_holdingsFull positions for a CIK + quarter
get_manager_holdings_bulkUp to 25 (cik, quarter) pairs in one call
list_all_managersUniverse of 8,600+ filers with per-manager summary stats
find_similar_managersMatch a portfolio against the universe
get_consensus_portfolioMost-widely-held securities per quarter
get_market_regimeInstitutional regime snapshot (IIOI composite, state, transition)
get_sector_flowsPer-sector capital flows and risk posture

Planned tools — later versions

VersionToolsRequires
v0.2.0get_security_signals, get_security_signals_bulk, get_portfolio_signalsStandard tier subscription
v0.3.0generate_manager_report, generate_security_report, generate_sector_report, check_report_status, wait_and_download_reportStandard tier + stored card; two-step confirm

The free-tier Read tools are enough to explore the data and build prompts against it. Signal and report tools deliberately wait on the paid-tier billing plumbing.

Example prompts

"Pull Berkshire Hathaway's top 20 positions as of Q4 2025 and summarize what grew the most quarter-over-quarter."

"I own AAPL, MSFT, and NVDA equal-weight. Find the 5 institutional managers whose portfolios most closely resemble mine."

"What sector did 13F filers most aggressively reduce last quarter? Show me the top three managers leading the reduction."

The MCP host's LLM picks the right tool, fills in arguments, surfaces the disclaimer, and returns the result as structured JSON.

Environment variables

VarDefaultWhat it controls
THE13F_API_KEY(none)Your pf13f_ key. Without it, tools return a structured "free signup required" response with a link to the signup page.
THE13F_API_BASE_URLhttps://api.the13f.comOverride for local development against a running copy of the13f's gui_server.
THE13F_MCP_TIMEOUT30Per-request HTTP timeout in seconds. Minimum 5.

Source

Public source: https://github.com/pickelfintech/the13f-mcp. This is the snapshot that PyPI, Glama.ai, and the MCP community list point at. The GitHub repo is a push-mirror of the GitLab one at gitlab.com/pickel-fintech/the13f-mcp; GitLab remains the primary and also carries the release CI. Bug reports and PRs are accepted on either side.

License

MIT — see LICENSE. The hosted api.the13f.com API that this client calls is a separate service. A free API key (100 calls/day) is required; sign up at https://the13f.com/developers/.

Support

[email protected] — quote the request_id field returned by any failing tool call for fastest triage.

License

MIT. See LICENSE. The MCP server source is MIT-licensed; use of the the13f API itself is governed by the Terms of Service at https://the13f.com/terms.html.

Source: README.md at commit dc3821b

Tools

14

list_quarters

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return all quarter codes with available data. Returns: {"quarters": ["q1y2013", ..., "q4y2025"], "latest": "q4y2025"} Use the latest quarter by default unless the user specifies one.

Takes no parameters.

search_managers

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Find institutional 13F filers by name (case-insensitive substring, min 2 chars). Args: query: substring of the manager's name (e.g. "renaissance", "berkshire"). limit: max results to return, 1-50, default 10. Returns: { "query": "...", "results": [ {"cik": "0001037389", "name": "Renaissance Technologies Llc", "latest_aum": 64461244358, "available_quarters": [...]}, ... ], "disclaimer": "Research data only..." }

Parameterslimitqueryrequired

get_manager_holdings

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return all positions held by a 13F filer in a given quarter. Args: cik: zero-padded 10-digit SEC CIK (e.g. "0001037389"). quarter: quarter code like "q4y2025". Returns: { "cik": "...", "quarter": "...", "n_positions": 3185, "total_value_thousands": 64461244358.0, "holdings": [{"CUSIP": ..., "TICKER": ..., "VALUE": ..., ...}, ...], "disclaimer": "..." }

Parameterscikrequiredquarterrequired

list_all_managers

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return the full universe of 13F filers with per-manager AUM. Args: active_only: if true (default), only managers present in the latest quarter. Returns: { "count": 8625, "active_only": true, "managers": [{"cik": "...", "name": "...", "latest_aum": ..., ...}, ...], "disclaimer": "..." } NOTE: response can be ~6 MB JSON; consider filtering client-side.

Parametersactive_only

find_similar_managers

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Match a portfolio against the 13F universe and return the closest (or deliberately-different) managers. Args: holdings: list of {"ticker": "AAPL", "weight": 0.05}; weight optional (equal weights default). quarter: defaults to latest quarter if None. top_n: 1-50, default 10. direction: "similar" (closest matches) or "unlike" (most different). Returns: {"quarter": "...", "matches": [{"cik": ..., "similarity_score": ..., ...}, ...], "disclaimer": "..."}

Parameterstop_nquarterholdingsrequireddirection

get_consensus_portfolio

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return the top-N consensus portfolio - securities held by the most institutional managers. Args: quarter: quarter code (e.g. "q4y2025"). Returns: {"quarter": "...", "count": 50, "securities": [{"ticker": ..., "weight_pct": ..., ...}, ...]}

Parametersquarterrequired

get_market_regime

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return the institutional regime snapshot for a quarter (IIOI composite, regime state, transition). Args: quarter: quarter code. Returns: {"quarter": "...", "iioi_composite": 62.4, "regime_state": "High Optimism", ...}

Parametersquarterrequired

get_sector_flows

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return per-sector institutional capital flow intelligence for a quarter. Args: quarter: quarter code. sector: optional GICS sector to filter (e.g. "Information Technology"). Returns: {"quarter": "...", "sectors": [{"gics_sector": ..., "net_capital_flow_thousands": ..., "risk_posture": ..., ...}, ...]}

Parameterssectorquarterrequired

get_manager_holdings_bulk

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Look up holdings for many (cik, quarter) pairs in one call (Tier 3). Faster than calling get_manager_holdings repeatedly: groups by quarter so each parquet file is read at most once. Each pair counts once against your key's daily limit, as a get_manager_holdings call would (up to 25 pairs per call). Args: pairs: list of {"cik": "...", "quarter": "..."} dicts. Min 1, max 25. Returns: { "results": [ {"cik": "0001067983", "quarter": "q4y2025", "status": "ok", "n_positions": 42, "total_value_thousands": ..., "holdings": [...]}, {"cik": "0001234567", "quarter": "q4y2025", "status": "not_found", "error": "..."}, ... ], "n_requested": 5, "n_ok": 4, "n_failed": 1 } Per-pair errors do NOT raise; check status field on each result. Use this when you need holdings for multiple managers/quarters at once (e.g. comparing a portfolio across periods or surveying peer institutions).

Parameterspairsrequired

get_manager_changes

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return what a 13F filer bought, sold, added, and trimmed versus the prior quarter. The single most-requested 13F view, without hand-diffing two holdings calls. Positions are grouped into new buys, exits, increases, and decreases, each with dollar and share deltas. The first quarter in the dataset has no prior quarter to compare, so the change lists come back empty with previous_quarter=null. Args: cik: zero-padded 10-digit SEC CIK (e.g. "0001037389"). quarter: quarter code like "q4y2025". Defaults to the latest quarter. Returns: { "manager": {"cik": ..., "name": ...}, "quarter": "...", "previous_quarter": "..." | null, "summary": {"n_new", "n_exited", "n_increased", "n_decreased", "n_unchanged", "new_positions_value_usd", "exited_positions_value_usd", "increased_value_change_usd", "decreased_value_change_usd", "net_value_change_usd", ...}, "new_positions": [{"ticker", "cusip", "name", "value_usd", "shares", "weight"}, ...], "exited_positions": [{"ticker", "cusip", "name", "previous_value_usd", ...}, ...], "increased_positions": [{..., "value_change_usd", "shares_change", "value_percentage_change"}, ...], "decreased_positions": [...], "disclaimer": "..." }

Parameterscikrequiredquarter

get_portfolio_changes

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return a filer's new/exit/add/trim moves across several recent quarters in one call. The multi-quarter view of get_manager_changes: instead of a single quarter it walks the most recent `quarters` filings and returns each quarter's grouped changes, newest first. Quarters the manager did not file are skipped. Use it to see how a book evolved over time without looping get_manager_changes. Args: cik: zero-padded 10-digit SEC CIK (e.g. "0001067983"). quarters: how many recent quarters to include (1-60, default 12). quarter: most recent quarter code like "q4y2025". Defaults to the latest. Returns: { "manager": {"cik": ..., "name": ...}, "anchor_quarter": "...", "quarters_requested": ..., "quarters_returned": ..., "timeline": [{"quarter", "previous_quarter", "summary", "new_positions", "exited_positions", "increased_positions", "decreased_positions"}, ...], "disclaimer": "..." }

Parameterscikrequiredquarterquarters

get_security_ownership

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return which 13F filers hold a security, and who newly bought or exited it. The security-centric complement to get_manager_holdings: instead of "what does this manager hold", this answers "who owns this stock". Holders are ranked by held value; aggregate held value, holder count, and the quarter-over-quarter change in holder count are always reported. Args: ticker: ticker symbol (with or without a .US suffix, e.g. "NVDA" or "NVDA.US"); an 8/9-char CUSIP also resolves as a fallback. quarter: quarter code. Defaults to the latest quarter. limit: max holders / new-buyers / exited-holders to list, 1-250, default 50 (full counts are always reported regardless). Returns: { "security": {"ticker", "name", "sector", "cusips": [...], "matched_by"}, "quarter": "...", "previous_quarter": "..." | null, "aggregate": {"holder_count", "previous_holder_count", "holder_count_change", "total_value_usd", "total_shares", "new_buyer_count", "exited_holder_count"}, "holders": [{"cik", "manager_name", "value_usd", "shares", "weight_in_portfolio_pct", "is_new_holder", "value_change_usd"}, ...], "new_buyers": [...], "exited_holders": [...], "holders_truncated": bool, "disclaimer": "..." }

Parameterslimittickerrequiredquarter

get_manager_profile

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Return a one-call manager overview: AUM and position-count trend, plus a snapshot. A trend view that would otherwise need many holdings calls. Combines the per-quarter AUM and position-count history (newest first) with a top-10 holdings snapshot of the manager's latest filed quarter and basic metadata. Args: cik: zero-padded 10-digit SEC CIK. history_quarters: how many recent quarters of history to include, 1-60, default 12 (3 years). Returns: { "manager": {"cik", "name", "state", "manager_style", "sec_file_number", "entity_type"}, "summary": {"latest_quarter", "first_quarter", "n_quarters_filed", "latest_aum_usd", "latest_n_positions", "median_n_positions"}, "history": [{"quarter", "period_end_date", "aum_usd", "n_positions"}, ...], "top_holdings": [{"ticker", "cusip", "weight", "value_usd", "shares"}, ...], "disclaimer": "..." }

Parameterscikrequiredhistory_quarters

compare_managers

Research data only. Returns disclosed institutional positions; do not infer manager intent or future direction. Compare two managers head-to-head: shared positions, weight gaps, and what is unique to each. Instant manager-vs-manager comparison for a quarter. Returns the positions both hold (with each side's portfolio weight and the gap between them), the positions unique to each, and overlap metrics (shared count, weight overlap). Args: cik_a: first manager's zero-padded 10-digit SEC CIK. cik_b: second manager's CIK. quarter: quarter code. Defaults to the latest quarter. limit: max shared / unique positions to list per side, 1-250, default 50 (full counts are always reported regardless). Returns: { "quarter": "...", "manager_a": {"cik", "name", "n_positions", "total_value_usd"}, "manager_b": {...}, "overlap": {"n_shared", "n_unique_to_a", "n_unique_to_b", "weight_overlap_pct", "name_overlap_pct"}, "shared_positions": [{"ticker", "cusip", "name", "weight_a_pct", "weight_b_pct", "weight_gap_pp", "value_a_usd", "value_b_usd"}, ...], "unique_to_a": [{"ticker", "cusip", "name", "weight_pct", "value_usd"}, ...], "unique_to_b": [...], "disclaimer": "..." }

Parameterscik_arequiredcik_brequiredlimitquarter

Version history

4
  1. v0.5.0LatestOct 22, 2026
  2. v0.4.1Oct 19, 2026
  3. v0.4.0Oct 19, 2026
  4. v0.1.3Sep 16, 2026

Score

80% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.