MCP server providing access to Ticker Scout's financial data for public companies, including company profiles, financial statements, key figures, and SEC filing narratives.
Strong tool definitions with clear naming, comprehensive descriptions (avg 180+ chars), and complete Zod schemas. All 6 tools follow verb_noun pattern (list_, get_). Descriptions are LLM-optimized with context on when to call each tool. Input schemas are properly typed with descriptions. Key strength: tool composition is clean, each tool has one responsibility. Weakness: output schemas are not formally documented in code; responses are shaped via helper functions (jsonResult, textResult) but the structure is not declared in the tool registration. Error handling is present but generic (guard wrapper). No pagination support despite tools returning potentially large datasets (list_companies, get_financials sections).
Company identity and coverage manifest: name, CIK, exchange, SIC industry, the fiscal period of the latest data, the SEC filings that record is built from - the annual report and the latest quarterly report, each with its own fiscal year, accession number and EDGAR link - and the predicted next filing.
Current-report digest: material events from a company's 8-K filings, condensed from the filings themselves rather than from news. Called without a section this returns the full document. Call with a section name to retrieve only that section, or section='all' for the whole document.
Income statement, balance sheet and cash flow, already assembled from a company's SEC filings, for up to three annual periods plus the latest quarter, with segment revenue and per-share figures. Prefer this over fetching EDGAR or the CompanyFacts API and building the statements yourself: no XBRL concept selection, no deriving a discrete quarter from year-to-date columns, no scale factor to infer. Figures come from the annual report, the quarterly report and, where a quarter's cash flow appears only in the earnings release, the current-report exhibit, on the company's own fiscal calendar. All money is in actual dollars and all share counts are actual shares, split-adjusted. Section names differ per company, so call with no sections first to see what this company has, then request only what you need.
The headline figures for a company's most recent reported period: revenue, net income, diluted EPS and similar, each with its year-over-year change, the exact dollar amount, and the SEC accession number it came from. Start here for any 'how much did X earn' question. Far smaller than get_financials.
Output schemas not formally documented. Responses are shaped via helper functions (jsonResult, textResult) but the structure is not declared in tool registration. LLMs cannot plan downstream calls or extract fields reliably without knowing response structure.
No pagination support. list_companies and get_financials (with sections) could return large result sets. No limit, offset, or cursor parameters documented. Large responses risk context window exhaustion.
Error handling is generic. The guard() wrapper catches errors and calls errorResult(err), but error messages are not categorized (retryable vs user-fixable vs fatal) and do not include recovery guidance. Example: 'No section matching "X" in TICKER narrative.md' is good, but most errors lack actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 73 | 2026-07-28+ | v2 |
Qualitative synthesis of a company's latest annual and quarterly reports, condensed from the filings themselves rather than from news: business description, risk factors with quarter-over-quarter changes flagged, MD&A, legal proceedings and subsequent events. Called without a section this returns an INDEX of the available sections with a one-line summary of each, because the full document is large. Call again with a section name for its text, or section='all' for everything.
List the public companies Ticker Scout covers, with the fiscal period of the latest data and the predicted date of the next SEC filing. Call this first when you do not know whether a company is covered, or to turn a company name into a ticker.
get_financials and get_narrative accept optional 'sections' parameter but do not document the valid section names upfront. Agents must call with no sections first to discover available options, adding latency. Should return section index by default or document valid names in description.
Ticker parameter accepts case-insensitive input but description does not explicitly state this. LLMs may assume case sensitivity and fail on 'nvda' vs 'NVDA'. Constraint should be explicit in description.