search_sec_filings
Search SEC EDGAR filings by CIK number, form type, company name, or date range to access filing metadata and document URLs for financial research and compliance.
Instructions
Search SEC EDGAR filings by CIK number, form type (10-K, 10-Q, 8-K, etc.), company name, and date range. Returns filing metadata including accession number, filing date, and document URLs. Source: SEC EDGAR, updated every 15 minutes.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Central Index Key — SEC's unique company identifier (e.g. 0001652044 for Alphabet) | |
| form_type | No | SEC form type (e.g. 10-K, 10-Q, 8-K, S-1, DEF 14A). Case-insensitive. | |
| company_name | No | Company name to search for (partial match) | |
| date_from | No | Start date for filing date range (YYYY-MM-DD) | |
| date_to | No | End date for filing date range (YYYY-MM-DD) | |
| limit | No | Maximum number of results (default 25, max 100) |
Implementation Reference
- src/tools/sec.ts:41-82 (registration)Registration of the 'search_sec_filings' tool including title, description, and input schema.
server.registerTool( "search_sec_filings", { title: "Search SEC Filings", description: "Search SEC EDGAR filings by CIK number, form type (10-K, 10-Q, 8-K, etc.), " + "company name, and date range. Returns filing metadata including accession number, " + "filing date, and document URLs. Source: SEC EDGAR, updated every 15 minutes.", inputSchema: { cik: z .string() .optional() .describe( "Central Index Key — SEC's unique company identifier (e.g. 0001652044 for Alphabet)", ), form_type: z .string() .optional() .describe( "SEC form type (e.g. 10-K, 10-Q, 8-K, S-1, DEF 14A). Case-insensitive.", ), company_name: z .string() .optional() .describe("Company name to search for (partial match)"), date_from: z .string() .optional() .describe("Start date for filing date range (YYYY-MM-DD)"), date_to: z .string() .optional() .describe("End date for filing date range (YYYY-MM-DD)"), limit: z .number() .int() .min(1) .max(100) .optional() .describe("Maximum number of results (default 25, max 100)"), }, }, - src/tools/sec.ts:83-113 (handler)Handler function for 'search_sec_filings' which calls the SEC filings API.
async ({ cik, form_type, company_name, date_from, date_to, limit }) => { const res = await apiGet<SecFilingsResponse>("/api/v1/sec/filings", { cik, form_type, company_name, date_from, date_to, limit: limit ?? 25, }); if (!res.ok) { return { content: [ { type: "text" as const, text: `API error (${res.status}): ${JSON.stringify(res.data)}`, }, ], isError: true, }; } const { count, data } = res.data; const summary = `Found ${count} SEC filing(s).`; const json = JSON.stringify(data, null, 2); return { content: [{ type: "text" as const, text: `${summary}\n\n${json}` }], }; }, );