Search Filing Text
search_filing_textFull-text search across SEC filing content that returns the matching passage: one match per filing, with the exhibit it was found in (exhibit_id, exhibit_type) and a snippet with context. Query syntax: unquoted words all have to appear (any order, any distance); "quoted phrase" = exact wording; OR between alternatives (merger OR acquisition); -word or -"phrase" to exclude; w1 NEAR/10 w2 (also NEAR(10), or bare NEAR = within 10) = words close together; word* = prefix of 4+ letters (dilut* matches dilution, dilutive); $AAPL or a capitalised ticker scopes to that company; a form code (8-K, 10-Q, S-1), "item 5.02" / "8-K 1.05" and a bare year (2024) scope to that form / 8-K item / year. Quoted multi-word phrases match as phrases; the archive's reading of the query is in meta.understanding. Suited to locating specific clauses ("change of control", "anti-dilution", "right of first refusal") and to the excerpt of a known filing (accessionNumber or filingId). It has no filing-level paging, totals, date ranges, 8-K item, excluded-form or company filters. Filters: CIK, filing, accession number, form type, section (risk_factors, mdna, ex99 …; applied only when meta.sections confirms it, otherwise meta.unsupported says the whole filing was searched) and exhibitTypes (EX-10 …). Coverage: Signal8's SEC EDGAR archive, updated through the day, in its held range (see archiveFrom in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in). Before archiveFrom it holds only a scatter, so absence before archiveFrom is not evidence a filing was never filed; SEC EDGAR itself covers earlier periods. Record-only rows (bodyStored: false) have no stored body; the document is at its sec.gov URL.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"pattern": "<pattern>"
},
"name": "search_filing_text"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Filter to a specific company by CIK number | |
| sort | No | Result order: newest (default) or relevance (best match first) | |
| limit | No | Max results (default: 20, max: 100) | |
| match | No | Word matching. exact = a word matches only itself ("split" does not match "splits"), which is EDGAR full-text search's behaviour; stemmed = English word variations also match. Default when omitted: stemmed. The mode actually applied is reported in the response's meta.matchMode. | |
| facets | No | true = also return `facets` { forms, years, items }: [{ value, count }] over the whole match set. Absent when not measured (not zero). Default false. | |
| pattern | Yes | Search query (minimum 2 characters): "exact phrase", OR, -exclude, w1 NEAR/n w2, word*, $TICKER. A CIK/filing-scoped search whose text is not indexed yet falls back to a literal case-insensitive substring match (response engine: "substring"); there each "quoted phrase" and bare word must appear (quotes stripped), and meta.substringTerms lists the terms matched. OR, NEAR, -exclude and word* are not applied on that path. | |
| section | No | Restricts matching to sections (comma-separated): business, risk_factors, cybersecurity, legal_proceedings, mdna, market_risk, controls (10-K/10-Q/20-F narrative items, by meaning: mdna is 10-K Item 7, 10-Q Part I Item 2 and 20-F Item 5), ex99 (press-release / EX-99.x exhibit text) and item_X_YY (the text under an 8-K item, e.g. item_5_02). Aliases: mda, risk, legal, cyber, press_release, 5.02. Unknown names are a 400. Requires q. Applied only when the response's meta.sections names it; otherwise meta.unsupported says why (e.g. the archive index does not have sections yet) and matches may come from anywhere in the filing. | |
| filingId | No | Filter to a specific filing by internal ID | |
| formType | No | Filter by form type (e.g., "10-K", "S-1") | |
| understand | No | Query understanding (default true): tickers/$TICKER, company names, form codes, "item N.NN" and synonym expansion, reported in meta.understanding. false = match the words literally. | |
| exhibitTypes | No | Keeps only filings carrying any of these exhibit types (comma-separated): a family such as EX-10 (material contracts) matches every member (EX-10.1, EX-10.2…); an exact type such as EX-99.1 (usually the press release) only itself. Others: EX-97 clawback policy, EX-3 charter/bylaws, EX-4 instruments/warrants, EX-21 subsidiaries, EX-23 consents. "10.1" is accepted for EX-10.1. Listed in appliedFilters when the rows prove it; otherwise in ignoredFilters / meta.unsupported, and the rows are then unfiltered. | |
| snippetLength | No | Characters of context around each match (default: 200) | |
| accessionNumber | No | Filter to a specific filing by SEC accession number | |
| matchedSections | No | Per-row `matchedSections` (default true): the sections the text matched in. Absent on a row means not measured (index without sections), not "matched nowhere". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No |