edgar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SEC_USER_AGENT | Yes | The SEC requires a declared User-Agent with real contact details. For example: 'Your Name your@email.com'. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| resolve_companyA | Find a company's SEC CIK number from a ticker symbol or a company name. Call this first, before any other tool. Every other tool needs a CIK. A ticker symbol resolves exactly and is never a guess. A company name is always a guess, because SEC filer names are not unique: "Apple" matches Apple Inc. and Apple Hospitality REIT, and "Delta" matches several unrelated filers. Prefer a ticker whenever the user gave you one. When two names score too closely to separate, this tool refuses to choose
and returns A company that is not in the result is very likely not an SEC filer at all. Private companies (Stripe, SpaceX, OpenAI), foreign companies with no US listing, and subsidiaries that do not file separately are simply absent from EDGAR. If a name does not resolve, say the company does not appear to file with the SEC. Do not answer from memory. Args: query: A ticker symbol such as "NVDA", or a company name such as "NVIDIA Corporation". Returns: On a confident match: cik, ticker, name, confidence and match_type ("ticker_exact", "name_exact" or "name_fuzzy"), plus ranked candidates. On an ambiguous match: resolved false, an error, a suggestion, and the ranked candidates to put to the user. |
| list_filingsA | List a company's SEC filings, newest first, with amendments flagged. Use this to find out what a company filed and when, to get an accession
number for Form types have variants that all mean "annual report": 10-K is the normal one, 10-K/A is an amendment to a previously filed one, and 10-KT is a transition report covering a short year after the company changed its fiscal calendar. Asking for form "10-K" returns all of these. A foreign private issuer files 20-F or 40-F instead and will have no 10-K at all — if a company you expect to see has no annual report, ask for form "20-F". Amendments matter for accuracy. When a 10-K/A exists, the original 10-K is
marked The response also reports Args: cik: The company's CIK, from resolve_company. Zero padding optional. form: Filter to a form type, e.g. "10-K", "10-Q", "8-K", "20-F". Amendment and transition variants are included automatically. since: Only filings filed on or after this date, as YYYY-MM-DD. until: Only filings filed on or before this date, as YYYY-MM-DD. limit: Maximum filings to return. Default 20. Returns: company, cik, fiscal_year_end, and a filings list. Each filing carries form, base_form, is_amendment, filing_date, period_of_report, accession_number, superseded flags, and URLs to the document and index. |
| get_financial_conceptA | Get one reported financial figure as a time series, with its XBRL tag. This is the tool that answers "what was revenue". Supported concepts: revenue, net_income, total_assets, total_liabilities, cash, operating_income, rnd_expense, shares_outstanding, gross_profit, cost_of_revenue Plain-English aliases work too: "sales", "net sales", "profit", "R&D", "COGS", "cash and equivalents", "share count". There is no XBRL tag called "revenue". Companies tag the same economic
figure differently depending on the year and their accounting policy, so
this tool walks an ordered fallback chain and tells you which tag actually
matched. Always read Restatements are surfaced, not hidden. When a period was reported with a
different value in an earlier filing, that period carries Fiscal years are the company's, not the calendar's. NVIDIA's fiscal 2024
ended 28 January 2024. Apple's fiscal 2024 ended 28 September 2024. The
Units are never mixed. The response names the single This tool does not compute ratios, margins, growth rates or per-share figures. To answer a margin question, fetch the two underlying concepts for the same period and divide, and say in your answer that you calculated it. Args: cik: The company's CIK, from resolve_company. concept: A concept name or alias, e.g. "revenue" or "R&D". period: "annual" for fiscal-year figures, "quarterly" for quarters, or "all". Default "annual". fiscal_year: Return only this fiscal year, e.g. 2024. Omit to get a series of recent years. limit: Maximum periods to return, newest first. Default 8. Returns: matched_tag, tags_tried, fallback_chain, unit, units_available, notes, and a values list. Each value carries value, fy, fp, start, end, filed, form, accession_number, restated, and prior_value/prior_filed when the figure changed between filings. |
| compare_companiesA | Compare one financial figure across several companies, and check the dates line up. Give it tickers or company names and one concept. It resolves each company, fetches the same concept for each, and lines the figures up side by side. Read the The tool also warns when the companies matched different XBRL tags, which means the figures are defined differently even when the dates line up, and when a company reports in a currency other than US dollars. If any company name is ambiguous, the whole comparison stops rather than guessing which filer was meant. A comparison that silently includes the wrong company looks completely normal. Args: companies: Tickers or company names, e.g. ["NVDA", "AAPL", "MSFT"]. Two to about eight works; more is slow. concept: A concept name understood by get_financial_concept, such as "revenue" or "net_income". fiscal_year: The fiscal year to compare, e.g. 2024. Omit to use the most recent fiscal year that all the companies report. period: "annual" or "quarterly". Default "annual". Returns: comparable, warning, fiscal_year, unit, a companies list with one row per filer (value, fy, start, end, filed, form, matched_tag, restated), an unavailable list for companies with no data, and notes. |
| get_filing_sectionA | Read one named section out of a filing's text, e.g. Risk Factors or MD&A. Use this for narrative questions — what management said about demand, what risks the company discloses, what a legal proceeding is about. Do not use it to read financial figures: use get_financial_concept, which returns tagged numbers rather than text that used to be a table. Get the accession number from list_filings first. Sections this tool can extract, by key: business (Item 1), risk_factors (Item 1A), properties (Item 2), legal_proceedings (Item 3), mda (Item 7), market_risk (Item 7A), financial_statements (Item 8), controls (Item 9A). Section boundaries are found by matching item headings in the flattened document. This works well for 10-K and 10-Q filings from roughly 2005 onward. It works less well on older filings, on filings that incorporate a section by reference to an exhibit or a proxy statement, and on filings that use unusual heading formats. When the section cannot be found the tool says so and gives you the document URL — pass that URL to the user rather than describing the section from memory. Long sections are truncated. Check Args: cik: The company's CIK, from resolve_company. accession_number: The filing's accession number from list_filings, in the form 0001045810-24-000029. section: A section key such as "risk_factors", or an alias such as "Item 1A" or "MD&A". max_chars: Maximum characters of section text to return. Default 20000. Returns: text, section_label, form, filing_date, period_of_report, document_url, chars_returned, truncated, and extraction_confidence. |
| search_full_textA | Search the full text of EDGAR filings. COVERS 2001 ONWARD ONLY. EDGAR's full-text index begins in 2001. Filings from 1993 to 2000 are in EDGAR and can be read with list_filings and get_filing_section, but they are not in this index and this tool cannot see them. Zero results does not mean the phrase was never filed — it may mean the filing predates 2001. Say this to the user whenever their question touches an earlier period. This tool refuses a date range that starts before 2001 rather than quietly searching a shorter window than the user asked for. Use it to find which companies discussed a topic, or which filing of a company first mentioned something. Wrap a phrase in double quotes for an exact match: "supply chain constraints". This returns filings that match, not the matching text. Follow up with get_filing_section to read the surrounding language. Args: query: The phrase to search for. Use double quotes for exact phrases. forms: Restrict to form types, e.g. ["10-K", "10-Q"]. date_from: Earliest filing date as YYYY-MM-DD. Must be 2001 or later. date_to: Latest filing date as YYYY-MM-DD. limit: Maximum results. Default 10. Returns: results (company, cik, form, filing_date, accession_number, index_url), total_hits, and a coverage statement restating the 2001 limit. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool owns a clearly distinct job: resolving entities, listing filings, pulling a single financial time series, extracting a filing section, searching full text, and comparing companies. The only adjacent pair is compare_companies and get_financial_concept, but the former is explicitly a multi-company alignment tool while the latter is a single-company series, and both descriptions make the boundary clear.
All six tool names follow the same verb_noun snake_case pattern: resolve_company, list_filings, get_financial_concept, get_filing_section, search_full_text, compare_companies. There is no mixing of camelCase, inconsistent verb forms, or vague tool names.
Six tools is right-sized for an EDGAR client, with each tool mapping to a distinct step in the workflow: resolve, browse filings, read numbers, read prose, search, and compare. None feels redundant, and the set is neither too thin nor bloated.
The set covers the core EDGAR workflow well, including entity resolution, filing discovery, XBRL figures, narrative sections, and cross-filing search. Minor gaps remain—there is no tool for fetching an entire raw filing body, and get_financial_concept supports a fixed concept list rather than arbitrary XBRL tags—but these are workaroundable through document URLs and the available extraction tools.