Back to Directory/Search & Knowledge

sec-ai: SEC EDGAR

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

Search & KnowledgePythonv2.0.5

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:

claude mcp add sec-ai -e SEC_USER_AGENT="Your Name you@example.com" -- uvx sec-finance-ai@latest

VS Code:

code --add-mcp '{"name":"sec-ai","type":"stdio","command":"uvx","args":["sec-finance-ai@latest"],"env":{"SEC_USER_AGENT":"Your Name you@example.com"}}'

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

{
  "mcpServers": {
    "sec-ai": {
      "command": "uvx",
      "args": [
        "sec-finance-ai@latest"
      ],
      "env": {
        "SEC_USER_AGENT": "Your Name you@example.com"
      }
    }
  }
}

@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

import asyncio
import os
from langchain.agents import create_agent
from 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 you@example.com"},  # 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]"

import os
from google.adk.agents import LlmAgent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from 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 you@example.com"},  # optional
        ),
        timeout=60,
    ))],
)

Strands Agents: pip install strands-agents

import os
from mcp import stdio_client, StdioServerParameters
from strands import Agent
from 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 you@example.com"},  # 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.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
uvx sec-finance-ai

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-lkcair-sec-ai": {
      "command": "uvx",
      "args": [
        "sec-finance-ai"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

sec-finance-aipypi

Compatible MCP Clients

sec-ai: SEC EDGAR works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More