Resolve company to SEC CIK (free)
edgar_resolve_companyResolve US company tickers, CIKs, or name fragments to official SEC CIK numbers, tickers, and registrant names before fetching EDGAR filings or financial facts.
Instructions
Resolve US company tickers, CIKs or name fragments to official SEC CIK numbers, tickers and registrant names using the SEC public ticker map (company_tickers.json). Use this first when you only need an identifier (e.g. "what is Nvidia's CIK?") or want to confirm which company a name refers to before fetching filings/facts. Next steps: edgar_list_filings for filings, edgar_get_company_facts for financial data. Behavior: read-only HTTP GET to sec.gov, no API token, no cost; the map is cached for 6 hours. Covers SEC registrants with a listed ticker only (no delisted/private filers). RETURNS: {count, items}: one "company_match" row per match (cik zero-padded to 10 digits, ticker, name, match = cik|ticker|name, submissions_url), or an "error" row with code COMPANY_NOT_FOUND. Exact ticker/CIK matches win over name substring matches. WHEN NOT TO USE: not for filings (edgar_list_filings) or financial values (edgar_get_company_facts); other tools already accept tickers/names directly. COST: free - direct sec.gov requests from this MCP server, no APIFY_TOKEN, no Apify billing. PARAMETERS: queries: each string is resolved independently and returns its own rows (or its own COMPANY_NOT_FOUND row), so mixed batches never fail as a whole. Precedence per query: all-digit strings are tried as a CIK first (leading zeros optional; must be in the ticker map), then an exact ticker (case-insensitive; class shares like "BRK-B" use a dash), then a case-insensitive substring of the registrant name; the first rule that matches wins and later rules are not applied. maxMatchesPerQuery caps the rows of every query, but only matters for broad name fragments (e.g. "bank") and for CIKs with several tickers (GOOG/GOOGL); raise it (max 25) to see more candidates, then pass the chosen ticker or cik to the other tools. EXAMPLE: {"queries":["NVDA","apple"]} -> {count:2, items:[{type:"company_match", cik:"0001045810", ticker:"NVDA", name:"NVIDIA CORP", match:"ticker"}, ...]}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Required. 1-50 strings, 1-200 chars each: a ticker ("NVDA", "BRK-B"), a CIK of 1-10 digits ("1045810" or "0001045810") or a case-insensitive registrant-name fragment ("nvidia"). Example: ["NVDA","apple","320193"] | |
| maxMatchesPerQuery | No | Optional integer 1-25, default 5. Max company_match rows returned per query (matters for name fragments and multi-ticker CIKs). Example: 10 |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of rows returned | |
| items | Yes | Result rows; each has a "type" field (data rows or machine-readable "error" rows) |