sec-ai: SEC EDGAR

io.github.lkcairPublished by GitHub account lkcairv2.0.5Updated Nov 4, 2026

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

The publisher's own server: edgar.tools SEC Intelligence

Overview

AI-generated overview

Read-only SEC EDGAR access: filings, XBRL financials, insider trades, 13F portfolios and full-text search for US-listed companies.

What you can do
  • Find and preview filings: latest 10-K, 10-Q, 8-K, proxy statements, IPOs, or any form by ticker and date
  • Read inside a filing: check size, list documents and exhibits, page through text or search for phrases
  • Search filings: full text of every EDGAR filing since 2001, or by company name and form type
  • Pull financial numbers from XBRL: key metrics, a single concept over time, or one concept ranked across all companies
  • Look up ownership: insider transactions (Forms 3/4/5), 13D/13G holders and 13F fund portfolios
  • Check SEC API connectivity and run a self-test of the tools
When to use it
Useful when you want an assistant to answer questions about US public-company disclosures, financial statements, insider activity, fund holdings or IPO activity from official SEC sources, without manually browsing EDGAR.
Requirements
Runs locally over stdio, typically via uvx or pip install of the sec-finance-ai package, so Python and uv are needed. No API key. The optional SEC_USER_AGENT environment variable carries a name and e-mail identifying the user to the SEC; a default is sent if unset. Network access is limited to sec.gov domains.
Before you install
Every tool is read-only, so nothing is written or changed. SEC_USER_AGENT sends a name and e-mail to the SEC, so use a real contact you are comfortable sharing. Filing text is company-authored content and should be treated as data to analyze, not as instructions. Very large documents are returned as links only.

Installation

In SourceWeft

  1. Open sec-ai: SEC EDGAR 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

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.

Source: README.md at commit 7683f51

Tools

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

Parameterstickerrequired

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

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

Parameterslimitticker_or_cikrequired

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

Parameterstickerrequiredsearch_term

get_beneficial_ownership

Beneficial Ownership

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

Parameterslimittickerrequiredschedule

get_company_concept

Company Concept

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

Parameterstickerrequiredconceptrequired

get_company_facts

Company Facts

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

Parameterstickerrequired

get_company_filings

Company Filings

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

Parameterslimittickerrequiredend_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

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

Parametersfiling_urlrequired

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

Parametersfiling_urlrequired

get_insider_transactions

Insider Transactions

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

Parameterslimittickerrequired

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

Parameterstickerrequired

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

Parameterstickerrequired

get_proxy_statements

Proxy Statements

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

Parameterslimittickerrequired

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

Parameterslimittickerrequired

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)

Parametersdayslimit

get_sec_api_status

SEC API Status

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

Takes no parameters.

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

Parametersunitlimitperiodrequiredconceptrequiredtaxonomy

run_self_test

Self-Test

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

Takes no parameters.

search_filings

Search Filings

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

Parameterslimitqueryrequiredend_dateform_typestart_date

Version history

1
  1. v2.0.5LatestOct 21, 2026

Score

90% 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

Other Edgar integrations