sec-ai
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SEC_USER_AGENT | No | The name and e-mail the SEC asks every program to send (e.g. "Your Name you@example.com"). Leave it out and a built-in default is sent; everything still works. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| analyze_8k_filingB | Get and summarize the latest 8-K filing for a company. Args: ticker: Stock ticker symbol Returns: Dictionary containing 8-K summary with actual content |
| download_filing_textA | Read or search the text of one SEC filing document. Three modes, chosen automatically:
Args: filing_url: Filing document URL (https://www.sec.gov/Archives/edgar/data/...) max_length: Characters per page (default 50,000) offset: Character position to start reading from (default 0) search: Optional word or phrase to find inside the filing (case-insensitive) Returns: Dictionary with mode, filing_url, size_mb, total_characters and content/snippets |
| full_text_searchA | Search the full text of every EDGAR filing since 2001 (words or "exact phrase"). Args: query: Words to find, e.g. 'tariffs' or '"going concern"' for an exact phrase form_type: Optional form filter, e.g. '8-K' or '10-K,10-Q' start_date: Optional YYYY-MM-DD (default: one year ago; use '2001-01-01' for all history) end_date: Optional YYYY-MM-DD (default: today) limit: Max results (1-100, default 20) Returns: Matching filings (newest first) with company, form, date and a link to the matching document |
| get_13f_holdingsA | Get the latest 13F portfolio of an institutional investment manager. Args: ticker_or_cik: Manager ticker (e.g. 'BRK-B') or CIK (e.g. '1350694' for Bridgewater) limit: Number of top positions to return (default 25) Returns: Report period, total value, top_issuers (one row per company, share classes combined; use this for "largest holdings") and top_positions (one row per security: CUSIP, share class, put/call) |
| get_available_metricsA | Discover available financial metrics for a company from SEC XBRL data. This function lists ALL available metrics that can be requested via specific_metrics. Useful for AI to find exactly which metrics are available before requesting them. Args: ticker: Stock ticker symbol (e.g., 'GME', 'AAPL') search_term: Optional search term to filter metrics (e.g., 'EBITDA', 'Revenue', 'Debt') Returns: Dict containing: - all_metrics: List of ALL available metric names - filtered_metrics: List of metrics matching search_term (if provided) - metric_categories: Organized by category (income, balance_sheet, cash_flow, etc) - total_available: Total number of available metrics - example_ttm_metrics: Example metrics useful for TTM calculations |
| get_beneficial_ownershipB | Get beneficial ownership reports (13D, 13G) for a company. Args: ticker: Stock ticker symbol limit: Number of reports to return schedule: 'all' (default), '13D' (activist or control intent) or '13G' (passive holder) Returns: Dictionary containing beneficial ownership information |
| get_company_conceptB | Get specific financial concept data for a company. Args: ticker: Stock ticker symbol concept: XBRL concept (e.g., 'Revenues', 'NetIncomeLoss', 'Assets') Returns: Dictionary containing concept data over time |
| get_company_factsB | Get company facts from SEC XBRL data. Args: ticker: Stock ticker symbol Returns: Dictionary containing company facts and financial metrics |
| get_company_filingsA | Get SEC filings for a company by ticker symbol. Args: ticker: Stock ticker symbol (e.g., 'AAPL', 'TSLA') form_type: SEC form type (e.g., '10-K', '10-Q', '8-K'). Can be a single string or a list of strings. If None, returns all forms. limit: Maximum number of filings to return (default: 10) start_date: Start date for filing search (YYYY-MM-DD format) end_date: End date for filing search (YYYY-MM-DD format) Returns: Dictionary containing filing information |
| get_filing_contentA | Get SEC financial data - SMART & EFFICIENT dual-mode approach. ╔════════════════════════════════════════════════════════════════════╗ ║ GENERIC MODE (no specific_metrics parameter) ║ ║ - Returns 13 essential metrics for any financial analysis ║ ║ - 5 historical values per metric (sufficient for TTM calc) ║ ║ - Most token-efficient for general questions ║ ║ - Includes: Net Income, Revenues, Interest Expense, Taxes, ║ ║ Operating Income, Gross Profit, Assets, Liabilities, Equity, ║ ║ Depreciation, Shares Outstanding, Cash, Long-term Debt ║ ╚════════════════════════════════════════════════════════════════════╝ ╔════════════════════════════════════════════════════════════════════╗ ║ SPECIFIC MODE (provide specific_metrics parameter) ║ ║ - Returns ONLY the requested metrics you specify ║ ║ - Perfect for targeted analysis (TTM EBITDA, leverage ratios) ║ ║ - Minimal token usage - only fetch what you need ║ ║ - Example: ['NetIncomeLoss', 'DepreciationDepletionAndAmortization',║ ║ 'InterestExpense', 'IncomeTaxExpenseBenefit'] ║ ║ - Use get_available_metrics(ticker) to discover all metrics ║ ╚════════════════════════════════════════════════════════════════════╝ WORKFLOW FOR TTM CALCULATIONS:
FILE HANDLING (get_full_content=True):
Args: ticker: Stock ticker symbol (e.g., 'GME', 'AAPL') filing_type: Type of filing - '10-Q', '10-K', '8-K', etc. (None = get latest) get_full_content: If True, check and optionally download full filing text specific_metrics: List of specific metric names to fetch. If None, returns 13 essential metrics (generic mode). Example: ['NetIncomeLoss', 'Revenues', 'DepreciationDepletionAndAmortization'] Use get_available_metrics() to discover what's available. Returns: Dict containing: - ticker, cik, company_name: Company identification - financial_metrics: Dict of requested/essential metrics with 5 historical values each - filing_date, filing_type: Filing metadata - mode: "generic" or "specific" - metrics_returned, values_per_metric: Data shape info - content_mode: 'text' or 'link_only' - full_content, has_more, next_offset: first page of the filing text - file_size_mb, filing_url, ai_note: size, link and what to do next |
| get_filing_documentsA | List every document in a filing (main document, exhibits, XBRL, XML) with sizes and links. Args: filing_url: Any URL inside the filing folder (https://www.sec.gov/Archives/edgar/data/CIK/ACCESSION/...) Returns: Dictionary with the filing folder and its documents (name, size_bytes, url) |
| get_filing_sizeA | Get the exact size of a filing document BEFORE downloading it. Use this to decide between reading the text (download_filing_text) and giving the user the link only. Sizes come from the EDGAR filing index. Args: filing_url: Filing document URL (https://www.sec.gov/Archives/edgar/data/...) Returns: size_bytes, size_mb, recommendation ('read_text' or 'link_only') and filing_url |
| get_insider_transactionsB | Get insider trading transactions (Forms 3, 4, 5) for a company. Args: ticker: Stock ticker symbol limit: Number of transactions to return Returns: Dictionary containing insider transaction information |
| get_latest_10kA | Get the latest 10-K filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Args: ticker: Stock ticker symbol Returns: Dictionary with the 10-K filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more |
| get_latest_10qA | Get the latest 10-Q filing for a company: filing link plus a SHORT preview of its text. The preview is only the first 10,000 characters (cover page and first statements). When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) pages through the rest, download_filing_text(filing_url, search='...') jumps to a section. Args: ticker: Stock ticker symbol Returns: Dictionary with the 10-Q filing: filing_url, content_preview, preview_characters, total_characters, preview_is_partial and read_more |
| get_proxy_statementsB | Get proxy statements (DEF 14A) for a company. Args: ticker: Stock ticker symbol limit: Number of proxy statements to return Returns: Dictionary containing proxy statement information |
| get_recent_8k_filingsA | Get recent 8-K filings for a company with a SHORT preview of each. Each preview is only the first 5,000 characters. When preview_is_partial is true, follow read_more: download_filing_text(filing_url, offset=...) or download_filing_text(filing_url, search='...'). Args: ticker: Stock ticker symbol limit: Number of recent 8-K filings to return Returns: Dictionary with 8-K filings: filing_url, content_preview, preview_characters, total_characters, preview_is_partial, read_more and extracted items |
| get_recent_iposA | Get recent IPO activity from EDGAR. Args: limit: Max companies per list (default 20) days: Look-back window in days (default 30) Returns: priced: final prospectuses (424B4, filed when an offering is priced) registrations: new S-1 / F-1 registration statements (companies preparing to list) |
| get_sec_api_statusB | Check SEC API status and connectivity. Returns: Dictionary containing API status information |
| get_xbrl_framesA | Compare one financial concept across ALL reporting companies for one period. Args: concept: XBRL tag, e.g. 'Revenues', 'NetIncomeLoss', 'Assets' period: 'CY2024' (annual), 'CY2024Q3' (quarter) or 'CY2024Q4I' (balance-sheet instant) unit: 'USD' (default), 'USD-per-shares', 'shares' taxonomy: 'us-gaap' (default), 'ifrs-full', 'dei' limit: Number of top companies to return (default 20) Returns: Companies ranked by value for that concept and period |
| run_self_testA | Run comprehensive self-test of all SEC-AI tools. Returns: Dictionary containing test results |
| search_filingsB | Search SEC filings by company name or other criteria. Args: query: Search query (company name, ticker, etc.) form_type: SEC form type to filter by start_date: Start date for search (YYYY-MM-DD) end_date: End date for search (YYYY-MM-DD) limit: Maximum number of results Returns: Dictionary containing search results |
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 22 tools
Several tools overlap in retrieving filings and financial data: get_company_filings, search_filings, and full_text_search all return filings; get_filing_content, get_company_facts, get_company_concept, get_available_metrics and get_latest_10k/10q all expose XBRL/financial data. Descriptions provide detail, but an agent could easily misselect among these. Some distinctions are clear (e.g., ownership forms, IPO, admin), but the financial/filing cluster is crowded.
Nearly all tools use snake_case and a get_* prefix for retrievals, with a few verb variations (analyze_8k_filing, download_filing_text, search_filings, full_text_search, run_self_test). The pattern is predictable overall, though full_text_search lacks an explicit verb and search_filings breaks the get_* convention. Minor deviations only.
22 tools for a broad SEC data server is on the heavy side; several financial-data tools could potentially be consolidated (e.g., get_company_facts, get_company_concept, get_available_metrics, get_filing_content). Many tools cover distinct form types and data domains, but the count feels slightly over-scoped rather than lean.
The surface covers filings, financial metrics, ownership (13F, 13D/G, insider, proxy), IPOs, XBRL frames, and admin checks, which is comprehensive for SEC EDGAR data. Minor gaps exist (e.g., no explicit tool for comparing a company's metrics across periods beyond get_company_concept/get_filing_content's 5 values, and no section-level extraction beyond text search). Overall, agents can complete most SEC research workflows.