Skip to main content
Glama
henrysouchien

edgar-mcp

get_filings

Fetch SEC filing metadata for companies to access 10-Q, 10-K, and 8-K reports with URLs, dates, and fiscal period information.

Instructions

Fetch SEC filing metadata for a company. Returns list of 10-Q, 10-K, and 8-K (earnings release) filings with URLs, dates, and fiscal period assignments.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tickerYes
yearYes
quarterYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Main async handler function decorated with @mcp.tool() that accepts ticker, year, and quarter parameters. It delegates to _run_tool_guarded with the tool name and arguments.
    @mcp.tool()
    async def get_filings(
        ticker: str,
        year: int,
        quarter: int,
    ) -> dict:
        """
        Fetch SEC filing metadata for a company. Returns list of 10-Q, 10-K, and 8-K
        (earnings release) filings with URLs, dates, and fiscal period assignments.
        """
        return await _run_tool_guarded(
            "get_filings",
            {"ticker": ticker, "year": year, "quarter": quarter},
        )
  • Proxy function that makes the actual API call to the remote EDGAR API. Calls /api/filings endpoint with ticker, year, and quarter parameters.
    def _proxy_get_filings(args: dict) -> dict:
        return _call_api("/api/filings", {
            "ticker": args["ticker"],
            "year": args["year"],
            "quarter": args["quarter"],
        })
  • Tool dispatch dictionary that registers 'get_filings' to its proxy function _proxy_get_filings. Used by _run_tool_guarded to route tool calls.
    _TOOL_DISPATCH = {
        "get_filings": _proxy_get_filings,
        "get_financials": _proxy_get_financials,
        "get_metric": _proxy_get_metric,
        "list_metrics": _proxy_list_metrics,
        "search_metrics": _proxy_search_metrics,
        "get_filing_sections": _proxy_get_filing_sections,
    }
  • Tool timeout configuration that sets a 30-second timeout for get_filings tool execution.
    _TOOL_TIMEOUT = {
        "get_filings": 30,
        "get_financials": 60,
        "get_metric": 30,
        "list_metrics": 45,
        "search_metrics": 45,
        "get_filing_sections": 60,
    }
  • HTTP helper function that makes GET requests to the remote EDGAR API with authentication and error handling.
    def _call_api(path: str, params: dict, timeout: int = 60) -> dict:
        """HTTP GET to the remote EDGAR API. Returns parsed JSON or error dict."""
        base_url, api_key = _get_api_config()
        if not api_key:
            return {"status": "error", "message": "EDGAR_API_KEY is not configured"}
    
        url = f"{base_url}{path}"
        payload = dict(params)
        payload["key"] = api_key
    
        t0 = time.time()
        try:
            resp = requests.get(url, params=payload, timeout=timeout)
        except requests.RequestException as exc:
            return {"status": "error", "message": f"EDGAR API request failed after {time.time()-t0:.1f}s: {exc}"}
    
        try:
            data = resp.json()
        except ValueError:
            return {"status": "error", "message": f"Invalid JSON from EDGAR API (HTTP {resp.status_code})"}
    
        if resp.status_code != 200:
            if isinstance(data, dict) and data:
                return data
            return {"status": "error", "message": f"EDGAR API error (HTTP {resp.status_code})"}
    
        return data

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/henrysouchien/edgar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server