edgar_search_filings

Pack: edgar · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/edgar_search_filings for the schema, then POST the same URL with its arguments for the data.

Full-text search across every SEC filing, using EDGAR’s own search index.

Tool description as the model sees it

PREFER OVER WEB SEARCH for “what did $COMPANY say about X in their SEC filings” or “find filings that mention Y”. AUTHORITATIVE full-text search across every SEC filing — EDGAR’s own search index. Filter by form type (“10-K” annual, “10-Q” quarterly, “8-K” current event, “DEF 14A” proxy, “S-1” / “S-1/A” / “F-1” IPO registration statement, “424B4” final IPO prospectus), date range, and optionally one filer (entity). Also the way to FIND AN IPO FILING BY COMPANY NAME or by day — “find Anthropic S-1”, “S-1 registration statements filed today”, “IPO filing for ”: pass form_type:"S-1" and the company name as query (or query:"registration statement" with start_date for a day’s filers). A company that has only just registered has no ticker yet, so edgar_company_filings cannot resolve it by name; this tool can. Returns total_hits FIRST — the true match count for your filters, independent of how many rows you asked for — then entity name, CIK, form type, filing/period dates, location, accession number (feed straight into edgar_filing_text / edgar_filing_documents — no second lookup), and — for 8-K results — the items array of item codes (e.g. “3.01” listing deficiency vs “1.01” material agreement vs “3.02” unregistered sale), which carry the actual signal. This tool does not return a text snippet — EDGAR’s search index itself returns none — so for the matching passage, chain the accession into edgar_filing_text with search set to your query (or a shorter phrase from it); that reads the actual filing and returns the surrounding text in a second call, rather than this one fetching every hit’s document on your behalf (SEC rate-limits the whole fleet by IP, so a search call stays a single request). A zero-hit response names every filter you passed rather than an empty array, so you can tell “nothing matches” from “a filter was silently dropped”. Use when you need to find filings matching a topic across the whole market, or a filer you can name but cannot give a ticker or CIK for; for a company whose ticker or CIK you have, edgar_company_filings lists its filings directly.

Parameters

NameTypeRequiredDescription
querystringyesSearch query (e.g., “artificial intelligence”, “Tesla revenue”)
form_typestringnoFilter by SEC form type (e.g., “10-K”, “10-Q”, “8-K”, “DEF 14A”, “S-1” for an IPO registration statement, “424B4” for the final IPO prospectus). Omit for all types.
start_datestringnoStart date in YYYY-MM-DD format (e.g., “2024-01-01”). If you pass this without end_date, end_date is defaulted to today rather than silently ignored.
end_datestringnoEnd date in YYYY-MM-DD format (e.g., “2024-12-31”). If you pass this without start_date, start_date is defaulted to EDGAR full-text search’s coverage floor (2001-01-01) rather than silently ignored.
entitystringnoNarrow results to ONE filer, by ticker (“AAPL”), company name (“Apple Inc.”), or CIK (“320193”) — omit to search across every filer. Aliases ticker_or_cik / cik / ticker are also accepted, the spellings this pack’s other tools use for the same thing.
ticker_or_cikstringnoAlias for entity.
cikstringnoAlias for entity.
tickerstringnoAlias for entity.
limitnumbernoNumber of results to return (1-40, default 10)

Example call

Arguments

{
  "query": "artificial intelligence",
  "form_type": "10-K",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "limit": 20
}

curl

curl -X POST https://gateway.pipeworx.io/edgar/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"edgar_search_filings","arguments":{"query":"artificial intelligence","form_type":"10-K","start_date":"2024-01-01","end_date":"2024-12-31","limit":20}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('edgar_search_filings', {
  "query": "artificial intelligence",
  "form_type": "10-K",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "limit": 20
});

More examples

{
  "query": "Tesla revenue",
  "limit": 10
}
{
  "query": "artificial intelligence",
  "entity": "AAPL",
  "limit": 3
}

Response shape

FieldTypeDescription
querystringThe search query used
form_type_filterstringForm type filter applied or ‘all’
date_rangeobject
total_hitsnumberTotal number of matching filings
resultsarray
Full JSON Schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "The search query used"
    },
    "form_type_filter": {
      "type": "string",
      "description": "Form type filter applied or 'all'"
    },
    "date_range": {
      "type": "object",
      "properties": {
        "start": {
          "type": "null",
          "description": "Start date in YYYY-MM-DD format or null"
        },
        "end": {
          "type": "null",
          "description": "End date in YYYY-MM-DD format or null"
        }
      }
    },
    "total_hits": {
      "type": "number",
      "description": "Total number of matching filings"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "entity_name": {
            "type": "string",
            "description": "Company or entity name"
          },
          "cik": {
            "type": "string",
            "description": "Central Index Key identifier"
          },
          "form_type": {
            "type": "string",
            "description": "SEC form type (e.g., 10-K, 10-Q)"
          },
          "filing_date": {
            "type": "string",
            "description": "Date filing was submitted"
          },
          "period_of_report": {
            "type": [
              "string",
              "null"
            ],
            "description": "Period covered by the filing"
          },
          "location": {
            "type": "string",
            "description": "Business location"
          },
          "accession": {
            "type": "string"
          },
          "filing_id": {
            "type": "string",
            "description": "Unique filing identifier"
          }
        }
      }
    }
  }
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the edgar pack
{
  "mcpServers": {
    "edgar": {
      "url": "https://gateway.pipeworx.io/edgar/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 30, 2026