The13f

com.the13f由 the13f.com 发布v0.5.0更新于 Oct 29, 2026

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

已验证STDIO仅桌面金融数据与分析

概览

AI 生成的概览

让助手查询 SEC 13F 机构持仓数据:基金经理、持仓、季度变动、持股方与行业资金流向。

可以做什么
  • 列出可用季度,按名称搜索或列出 13F 申报机构及其管理规模摘要
  • 获取某机构某季度的全部持仓,可单次查询或批量查询最多 25 组
  • 查看某机构买入、卖出、增持、减持的标的,支持单季度或多季度,并给出规模与持仓数趋势
  • 查询某只证券被哪些机构持有,包括新进与清仓者
  • 将自选组合匹配到相似机构、两家机构正面对比,并获取最多机构共同持有的标的
  • 读取机构市场状态快照与各行业资金流向
适用场景
适合让助手基于公开 13F 申报做机构持仓研究:机构组合、季度间调仓、某只股票的持有者、组合重合度或行业资金流向,无需手工比对申报文件。
运行要求
通过 uvx(或 pip)在本地运行,需 Python 3.11+,并配合 Claude Desktop、Cursor 或 VS Code + Continue 等桌面 MCP 客户端。需要免费的 pf13f_ API 密钥,放在 THE13F_API_KEY 中(每天 100 次读取,无需信用卡)。可选 THE13F_API_BASE_URL 与 THE13F_MCP_TIMEOUT。需能访问厂商 API。
安装前请注意
API 密钥为一次性显示的机密,请勿写入共享配置。数据仅供研究,申报滞后约 45 天,仅含多头,管理规模低于 1 亿美元的机构可能不申报;结果附带免责声明,应原样呈现。默认情况下服务器会把故障信息(版本、操作系统、位置、错误信息)上报给厂商,可用 THE13F_MCP_REPORTS 设为 off 关闭。付费的信号与报告功能尚在计划中。

安装

在 SourceWeft 中

  1. 打开 控制台中的 The13f,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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.

来源:README.md,提交 dc3821b

工具

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.

无需输入参数。

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..." }

输入参数limitquery必填

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": "..." }

输入参数cik必填quarter必填

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.

输入参数active_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": "..."}

输入参数top_nquarterholdings必填direction

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": ..., ...}, ...]}

输入参数quarter必填

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", ...}

输入参数quarter必填

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": ..., ...}, ...]}

输入参数sectorquarter必填

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).

输入参数pairs必填

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": "..." }

输入参数cik必填quarter

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": "..." }

输入参数cik必填quarterquarters

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": "..." }

输入参数limitticker必填quarter

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": "..." }

输入参数cik必填history_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": "..." }

输入参数cik_a必填cik_b必填limitquarter

版本历史

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

评分

已满足适用检查项的 80%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。