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 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
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search query (e.g., “artificial intelligence”, “Tesla revenue”) |
form_type | string | no | Filter 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_date | string | no | Start 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_date | string | no | End 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. |
entity | string | no | Narrow 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_cik | string | no | Alias for entity. |
cik | string | no | Alias for entity. |
ticker | string | no | Alias for entity. |
limit | number | no | Number 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
| Field | Type | Description |
|---|---|---|
query | string | The search query used |
form_type_filter | string | Form type filter applied or ‘all’ |
date_range | object | |
total_hits | number | Total number of matching filings |
results | array |
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.