sec-ai: SEC EDGAR

io.github.lkcair由 GitHub 账号 lkcair 发布v2.0.5更新于 Nov 4, 2026

SEC EDGAR in 22 tools: 10-K/10-Q/8-K text, XBRL facts, insider trades, 13F, full-text search.

发布方自己的服务:edgar.tools SEC Intelligence

概览

AI 生成的概览

只读访问 SEC EDGAR:美国上市公司与基金的申报文件、XBRL 财务数据、内部人交易、13F 持仓与全文检索。

可以做什么
  • 查找并预览申报文件:最新 10-K、10-Q、8-K、委托书、IPO,或按股票代码与日期查任意表格
  • 深入阅读单份文件:查看大小、列出文档与附件、分页读取正文或检索关键词
  • 检索申报文件:自 2001 年以来全部 EDGAR 文件全文,或按公司名称与表格类型搜索
  • 提取 XBRL 财务数字:关键指标、单一概念的历史序列,或某概念在所有公司间的排名
  • 查询持股与内部人:内部人交易(表格 3/4/5)、13D/13G 持股方与 13F 基金组合
  • 检查 SEC 接口连通性并运行工具自检
适用场景
适合让助手基于 SEC 官方来源回答美国上市公司披露、财务报表、内部人交易、基金持仓或 IPO 活动相关问题,无需手动浏览 EDGAR。
运行要求
以 stdio 方式在本机运行,通常通过 uvx 或 pip 安装 sec-finance-ai 包,需要 Python 与 uv。无需 API 密钥。可选环境变量 SEC_USER_AGENT 填写向 SEC 表明身份的名称与邮箱,未设置时会发送默认值。网络访问仅限 sec.gov 域名。
安装前请注意
所有工具均为只读,不会写入或修改数据。SEC_USER_AGENT 会把名称与邮箱发送给 SEC,请使用愿意公开的真实联系方式。申报文件正文由公司撰写,应作为待分析的数据而非指令。超大文档仅返回链接。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

sec-finance-ai MCP server

[PyPI] [License: MIT]

AI-powered SEC EDGAR integration: 23 tools on the official sec.gov APIs, in one Python file.

🚀 Thousands of downloads on ClawHub and OpenWebUI

10-K, 10-Q, 8-K, 20-F and proxy filings, the full text of any filing read in pages or searched, XBRL company facts and cross-company rankings, Form 4 insider trades, 13D/13G ownership, 13F fund portfolios, IPOs, and full-text search of every filing since 2001.

Use it inInstallRepo
Claude, Cursor, VS Code, LangChain, Google ADK, Strands Agents and other MCP clientsuvx sec-finance-ai@latestsec-ai-mcp
ClawHub skill for OpenClaw 🚀 Thousands of downloadsopenclaw skills install @lkcair/secsec-ai-skill
OpenWebUI tool 🚀 Thousands of downloadsGet it on openwebui.comsec-finance-ai
Pythonfrom sec_finance_ai import Toolssec-finance-ai

Install

Needs uv. No API key.

Claude Code:

bash
claude mcp add sec-ai -e SEC_USER_AGENT="Your Name [email protected]" -- uvx sec-finance-ai@latest

VS Code:

bash
code --add-mcp '{"name":"sec-ai","type":"stdio","command":"uvx","args":["sec-finance-ai@latest"],"env":{"SEC_USER_AGENT":"Your Name [email protected]"}}'

Claude Desktop, Cursor, Windsurf and other clients, in the client's MCP config file:

json
{  "mcpServers": {    "sec-ai": {      "command": "uvx",      "args": [        "sec-finance-ai@latest"      ],      "env": {        "SEC_USER_AGENT": "Your Name [email protected]"      }    }  }}

@latest picks up new releases when the client starts. Without uv: pip install sec-finance-ai, then use "command": "sec-finance-ai" with no args.

SEC_USER_AGENT is the name and e-mail the SEC asks programs to send. If it is not set, a default is sent.

Listed in the MCP Registry as io.github.lkcair/sec-ai. Every tool is read-only.

Agent frameworks

The server runs over stdio with uvx sec-finance-ai@latest, so any framework with MCP support can load all its tools.

SEC_USER_AGENT is optional. MCP starts the server with a minimal environment, so pass it as shown; **os.environ keeps PATH, so uvx is found.

LangChain: pip install "langchain[mcp]" langchain-anthropic

python
import asyncioimport osfrom langchain.agents import create_agentfrom langchain.mcp import MCPAdapter
async def main():    config = {"mcpServers": {"sec-ai": {        "command": "uvx", "args": ["sec-finance-ai@latest"],        "env": {**os.environ, "SEC_USER_AGENT": "Your Name [email protected]"},  # optional    }}}    async with MCPAdapter(config) as adapter:        tools = await adapter.list_tools()        agent = create_agent("claude-sonnet-5", tools)        result = await agent.ainvoke({"messages": [{"role": "user", "content": "What does Apple's latest 10-K say about Greater China?"}]})        print(result["messages"][-1].content)
asyncio.run(main())

Google ADK: pip install "google-adk[mcp]"

python
import osfrom google.adk.agents import LlmAgentfrom google.adk.tools.mcp_tool import McpToolsetfrom google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParamsfrom mcp import StdioServerParameters
root_agent = LlmAgent(    model="gemini-flash-latest",    name="sec_ai",    instruction="Answer with the sec-ai tools.",    tools=[McpToolset(connection_params=StdioConnectionParams(        server_params=StdioServerParameters(            command="uvx", args=["sec-finance-ai@latest"],            env={**os.environ, "SEC_USER_AGENT": "Your Name [email protected]"},  # optional        ),        timeout=60,    ))],)

Strands Agents: pip install strands-agents

python
import osfrom mcp import stdio_client, StdioServerParametersfrom strands import Agentfrom strands.tools.mcp import MCPClient
sec_ai = MCPClient(lambda: stdio_client(StdioServerParameters(    command="uvx", args=["sec-finance-ai@latest"],    env={**os.environ, "SEC_USER_AGENT": "Your Name [email protected]"},  # optional)))agent = Agent(tools=[sec_ai])agent("What does Apple's latest 10-K say about Greater China?")

Example questions

  • What does Apple's latest 10-K say about Greater China?
  • What are Berkshire Hathaway's top holdings in its latest 13F?
  • Find every 8-K this year that mentions 'going concern'.
  • Which companies had the highest revenue in 2024?

MCP tools (22)

Filings

ToolParametersDescription
get_company_filingsticker, form_type=null, limit=10, start_date=null, end_date=nullGet SEC filings for a company by ticker symbol
get_latest_10ktickerLatest 10-K with a short preview of its text
get_latest_10qtickerLatest 10-Q with a short preview of its text
get_recent_8k_filingsticker, limit=5Recent 8-K filings with a short preview of each
analyze_8k_filingtickerGet and summarize the latest 8-K filing for a company
get_proxy_statementsticker, limit=3Get proxy statements (DEF 14A) for a company
get_recent_iposlimit=20, days=30Get recent IPO activity from EDGAR

Reading inside a filing

ToolParametersDescription
get_filing_sizefiling_urlExact size of a filing document before downloading it
download_filing_textfiling_url, max_length=50000, offset=0, search=nullRead a filing in 50,000-character pages, search inside it, or get the link when it is over 25 MB
get_filing_documentsfiling_urlList every document in a filing (main document, exhibits, XBRL, XML) with sizes and links
get_filing_contentticker, filing_type=null, get_full_content=false, specific_metrics=nullKey financial figures from XBRL, or the full filing text in pages

Search

ToolParametersDescription
full_text_searchquery, form_type=null, start_date=null, end_date=null, limit=20Search the full text of every EDGAR filing since 2001 (words or "exact phrase")
search_filingsquery, form_type=null, start_date=null, end_date=null, limit=20Search SEC filings by company name or other criteria

Ownership and insiders

ToolParametersDescription
get_insider_transactionsticker, limit=20Get insider trading transactions (Forms 3, 4, 5) for a company
get_beneficial_ownershipticker, limit=10, schedule="all"Get beneficial ownership reports (13D, 13G) for a company
get_13f_holdingsticker_or_cik, limit=25Get the latest 13F portfolio of an institutional investment manager

Financial data (XBRL)

ToolParametersDescription
get_company_factstickerGet company facts from SEC XBRL data
get_company_conceptticker, conceptGet specific financial concept data for a company
get_available_metricsticker, search_term=nullDiscover available financial metrics for a company from SEC XBRL data
get_xbrl_framesconcept, period, unit="USD", taxonomy="us-gaap", limit=20One financial concept across all reporting companies for one period, ranked

Utility

ToolParametersDescription
get_sec_api_statusCheck SEC API status and connectivity
run_self_testRun comprehensive self-test of all SEC-AI tools

License

MIT. All data comes from public SEC EDGAR databases. Not affiliated with the U.S. Securities and Exchange Commission.

来源:README.md,提交 7683f51

工具

22

analyze_8k_filing

Analyze 8-K Filing

Get and summarize the latest 8-K filing for a company. Returns: Dictionary containing 8-K summary with actual content

输入参数ticker必填

download_filing_text

Download Filing Text

Read or search the text of one SEC filing document. Three modes, chosen automatically: - mode 'text': returns `content` in pages of max_length characters. If has_more is true, call again with offset=next_offset to keep reading. - mode 'search': when `search` is given, returns snippets around each match with its position (use offset=position to read that part). - mode 'link_only': when the document is larger than the size limit, returns only the link and size so the user can open it. The exact size is checked BEFORE downloading. Returns: Dictionary with mode, filing_url, size_mb, total_characters and content/snippets

输入参数offsetsearchfiling_url必填max_length

get_13f_holdings

13F Holdings

Get the latest 13F portfolio of an institutional investment manager. Returns: Report period, total value, top_issuers (one row per company, share classes combined; use this for "largest holdings") and top_positions (one row per security: CUSIP, share class, put/call)

输入参数limitticker_or_cik必填

get_available_metrics

Available Metrics

Discover available financial metrics for a company from SEC XBRL data. This function lists ALL available metrics that can be requested via specific_metrics. Useful for AI to find exactly which metrics are available before requesting them. Returns: Dict containing: - all_metrics: List of ALL available metric names - filtered_metrics: List of metrics matching search_term (if provided) - metric_categories: Organized by category (income, balance_sheet, cash_flow, etc) - total_available: Total number of available metrics - example_ttm_metrics: Example metrics useful for TTM calculations

输入参数ticker必填search_term

get_beneficial_ownership

Beneficial Ownership

Get beneficial ownership reports (13D, 13G) for a company. Returns: Dictionary containing beneficial ownership information

输入参数limitticker必填schedule

get_company_concept

Company Concept

Get specific financial concept data for a company. Returns: Dictionary containing concept data over time

输入参数ticker必填concept必填

get_company_facts

Company Facts

Get company facts from SEC XBRL data. Returns: Dictionary containing company facts and financial metrics

输入参数ticker必填

get_company_filings

Company Filings

Get SEC filings for a company by ticker symbol. Returns: Dictionary containing filing information

输入参数limitticker必填end_dateform_typestart_date

get_filing_content

Filing Content

Get SEC financial data - SMART & EFFICIENT dual-mode approach. GENERIC MODE (no specific_metrics parameter) - Returns 13 essential metrics for any financial analysis - 5 historical values per metric (sufficient for TTM calc) - Most token-efficient for general questions - Includes: Net Income, Revenues, Interest Expense, Taxes, Operating Income, Gross Profit, Assets, Liabilities, Equity, Depreciation, Shares Outstanding, Cash, Long-term Debt SPECIFIC MODE (provide specific_metrics parameter) - Returns ONLY the requested metrics you specify - Perfect for targeted analysis (TTM EBITDA, leverage ratios) - Minimal token usage - only fetch what you need - Example: ['NetIncomeLoss', 'DepreciationDepletionAndAmortization', 'InterestExpense', 'IncomeTaxExpenseBenefit'] - Use get_available_metrics(ticker) to discover all metrics WORKFLOW FOR TTM CALCULATIONS: 1. Call: get_available_metrics(ticker='GME', search_term='Depreciation') 2. Find needed metrics from results 3. Call: get_filing_content(ticker='GME', specific_metrics=['NetIncomeLoss', ...]) 4. Calculate TTM from 5 historical values (last 4 quarters + 1 prior) FILE HANDLING (get_full_content=True): - The exact document size is checked first (EDGAR filing index) - Up to 25MB: first 50,000 characters in full_content; if has_more, continue with download_filing_text(filing_url, offset=next_offset) or search it with search='keyword' - Over 25MB: link only (file_too_large=True), AI told via ai_note Returns: Dict containing: - ticker, cik, company_name: Company identification - financial_metrics: Dict of requested/essential metrics with 5 historical values each - filing_date, filing_type: Filing metadata - mode: "generic" or "specific" - metrics_returned, values_per_metric: Data shape info - content_mode: 'text' or 'link_only' - full_content, has_more, next_offset: first page of the filing text - file_size_mb, filing_url, ai_note: size, link and what to do next

输入参数ticker必填filing_typeget_full_contentspecific_metrics

get_filing_documents

Filing Documents

List every document in a filing (main document, exhibits, XBRL, XML) with sizes and links. Returns: Dictionary with the filing folder and its documents (name, size_bytes, url)

输入参数filing_url必填

get_filing_size

Filing Size

Get the exact size of a filing document BEFORE downloading it. Use this to decide between reading the text (download_filing_text) and giving the user the link only. Sizes come from the EDGAR filing index. Returns: size_bytes, size_mb, recommendation ('read_text' or 'link_only') and filing_url

输入参数filing_url必填

get_insider_transactions

Insider Transactions

Get insider trading transactions (Forms 3, 4, 5) for a company. Returns: Dictionary containing insider transaction information

输入参数limitticker必填

get_latest_10k

Latest 10-K

Get the latest 10-K filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Returns: Dictionary with the 10-K filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more

输入参数ticker必填

get_latest_10q

Latest 10-Q

Get the latest 10-Q filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Returns: Dictionary with the 10-Q filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more

输入参数ticker必填

get_proxy_statements

Proxy Statements

Get proxy statements (DEF 14A) for a company. Returns: Dictionary containing proxy statement information

输入参数limitticker必填

get_recent_8k_filings

Recent 8-K Filings

Get recent 8-K filings for a company with a SHORT preview of each. Each preview is only the first 5,000 characters. When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) or download_filing_text(filing_url, search='...'). Returns: Dictionary with 8-K filings: filing_url, content_preview, preview_characters, total_characters, preview_is_partial, read_more and extracted items

输入参数limitticker必填

get_recent_ipos

Recent IPOs

Get recent IPO activity from EDGAR. Returns: priced: final prospectuses (424B4, filed when an offering is priced) registrations: new S-1 / F-1 registration statements (companies preparing to list)

输入参数dayslimit

get_sec_api_status

SEC API Status

Check SEC API status and connectivity. Returns: Dictionary containing API status information

无需输入参数。

get_xbrl_frames

XBRL Frames

Compare one financial concept across ALL reporting companies for one period. Returns: Companies ranked by value for that concept and period

输入参数unitlimitperiod必填concept必填taxonomy

run_self_test

Self-Test

Run comprehensive self-test of all SEC-AI tools. Returns: Dictionary containing test results

无需输入参数。

search_filings

Search Filings

Search SEC filings by company name or other criteria. Returns: Dictionary containing search results

输入参数limitquery必填end_dateform_typestart_date

版本历史

1
  1. v2.0.5最新Oct 21, 2026

评分

已满足适用检查项的 90%

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

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

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

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

其他 Edgar 集成