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
tickerrequired
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
Read-only SEC EDGAR access: filings, XBRL financials, insider trades, 13F portfolios and full-text search for US-listed companies.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
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.
Needs uv. No API key.
Claude Code:
VS Code:
Claude Desktop, Cursor, Windsurf and other clients, in the client's MCP config file:
@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.
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
Google ADK: pip install "google-adk[mcp]"
Strands Agents: pip install strands-agents
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
Analyze 8-K Filing
Get and summarize the latest 8-K filing for a company. Returns: Dictionary containing 8-K summary with actual content
tickerrequiredDownload 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_urlrequiredmax_lengthFull Text Search
Search the full text of every EDGAR filing since 2001 (words or "exact phrase"). Returns: Matching filings (newest first) with company, form, date and a link to the matching document
limitqueryrequiredend_dateform_typestart_date13F 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_cikrequiredAvailable 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
tickerrequiredsearch_termBeneficial Ownership
Get beneficial ownership reports (13D, 13G) for a company. Returns: Dictionary containing beneficial ownership information
limittickerrequiredscheduleCompany Concept
Get specific financial concept data for a company. Returns: Dictionary containing concept data over time
tickerrequiredconceptrequiredCompany Facts
Get company facts from SEC XBRL data. Returns: Dictionary containing company facts and financial metrics
tickerrequiredCompany Filings
Get SEC filings for a company by ticker symbol. Returns: Dictionary containing filing information
limittickerrequiredend_dateform_typestart_dateFiling 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
tickerrequiredfiling_typeget_full_contentspecific_metricsFiling 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_urlrequiredFiling 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_urlrequiredInsider Transactions
Get insider trading transactions (Forms 3, 4, 5) for a company. Returns: Dictionary containing insider transaction information
limittickerrequiredLatest 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
tickerrequiredLatest 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
tickerrequiredProxy Statements
Get proxy statements (DEF 14A) for a company. Returns: Dictionary containing proxy statement information
limittickerrequiredRecent 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
limittickerrequiredRecent 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)
dayslimitSEC API Status
Check SEC API status and connectivity. Returns: Dictionary containing API status information
Takes no parameters.
XBRL Frames
Compare one financial concept across ALL reporting companies for one period. Returns: Companies ranked by value for that concept and period
unitlimitperiodrequiredconceptrequiredtaxonomySelf-Test
Run comprehensive self-test of all SEC-AI tools. Returns: Dictionary containing test results
Takes no parameters.
Search Filings
Search SEC filings by company name or other criteria. Returns: Dictionary containing search results
limitqueryrequiredend_dateform_typestart_date90% 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.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
tools.edgarOfficial publisher
Remote MCP server giving assistants 23 tools and 5 recipes for SEC filings, financials, insider trades, 13F holdings and funds.

Published by GitHub account SudiptoHaldar
Read-only SEC EDGAR filing metadata by stock ticker: latest filing, calendar-year filing history, and form-type codes, with official sec.gov links.

Published by GitHub account kriton-dev
SEC EDGAR — Recent Company Filing Index by CIK's hosted MCP server; credential required; Streamable HTTP.

Published by GitHub account mrfentmen
Local MCP server that gives an assistant access to SEC EDGAR filings and XBRL financial concepts, including company profiles by CIK and full-text search.

Published by GitHub account monriah-studio
Remote MCP server for U.S. SEC EDGAR data, letting an assistant look up insider trades, filings, XBRL financials and full-text filing search.
claude mcp add sec-ai -e SEC_USER_AGENT="Your Name [email protected]" -- uvx sec-finance-ai@latestcode --add-mcp '{"name":"sec-ai","type":"stdio","command":"uvx","args":["sec-finance-ai@latest"],"env":{"SEC_USER_AGENT":"Your Name [email protected]"}}'{ "mcpServers": { "sec-ai": { "command": "uvx", "args": [ "sec-finance-ai@latest" ], "env": { "SEC_USER_AGENT": "Your Name [email protected]" } } }}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())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, ))],)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?")