Skip to main content
Glama
Thesma MCP Server

Thesma MCP Server

Official
by thesma-dev

Thesma MCP Server

Give your AI assistant access to SEC, Census, BLS, and SBA data.

PyPI version Python License: MIT

What it does

An MCP server that wraps the Thesma API, giving AI assistants (Claude, Cursor, ChatGPT) native access to SEC EDGAR filings — US-GAAP 10-K and IFRS 20-F, covering every US-listed public company on NYSE and NASDAQ (~6,000 companies) — plus Bureau of Labor Statistics employment data, US Census Bureau demographics, and SBA 7(a) small business lending. Ask questions in plain English, get structured data back.

Related MCP server: publicfinance

Quick example

"What was Apple's revenue last year?"

The AI calls get_financials and returns Apple's income statement with formatted line items.

"What was Spotify's revenue last year?"

The AI calls get_financials for SPOT and returns Spotify's income statement in EUR with taxonomy: ifrs-full and by_nature presentation metadata.

"Find high-margin S&P 500 companies where insiders are buying"

The AI calls screen_companies with margin filters and insider buying signals.

"Which funds increased their position in NVDA last quarter?"

The AI calls get_holding_changes and shows quarter-over-quarter position changes.

"What's the average wage for software developers in Texas?"

The AI calls get_occupation_wages with SOC code 15-1252 and state filter, returning median and percentile wage data.

"What does Apple's labor market look like — hiring trends, local wages, compensation benchmarks?"

The AI calls get_company for AAPL, which automatically includes BLS labor market context alongside SEC company details.

"Give me a full picture of Apple — profile, financials, ratios, insider trades, top holders, executive compensation, and board."

The AI calls get_company('AAPL', include='financials,ratios,insider_trades,holders,compensation,board,labor_context,lending_context') and returns a composed view in one call instead of eight tool invocations.

Installation

pip install thesma-mcp

Claude Desktop

Add to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "thesma": {
      "command": "uvx",
      "args": ["thesma-mcp"],
      "env": {
        "THESMA_API_KEY": "your-api-key"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "thesma": {
      "command": "uvx",
      "args": ["thesma-mcp"],
      "env": {
        "THESMA_API_KEY": "your-api-key"
      }
    }
  }
}

Using pip install instead of uvx? If you've already installed thesma-mcp with pip, you can use "command": "thesma-mcp" directly (no args needed) instead of uvx.

Get your API key at portal.thesma.dev (free tier: 250 requests/day).

Available tools

Company Discovery

Tool

Description

search_companies

Find US public companies by name, ticker, index tier, exchange, domicile, taxonomy, or currency

get_company

Get company details — CIK, SIC code, fiscal year end, index membership, exchange, domicile

Financial Statements

Tool

Description

get_financials

Get income statement, balance sheet, or cash flow from SEC filings — US-GAAP 10-K and IFRS 20-F, returned in native currency

get_financial_metric

Get a single financial metric over time for trend analysis; per-point currency honors presentation-currency transitions

Financial Ratios

Tool

Description

get_ratios

Get computed financial ratios — margins, returns, leverage, growth

get_ratio_history

Get a single ratio over time for trend analysis

Screening

Tool

Description

screen_companies

Find companies matching financial criteria — profitability, growth, leverage, index tier, SIC, exchange, domicile, taxonomy, currency, insider/institutional signals, labor market, SBA lending (county + industry)

Corporate Events

Tool

Description

get_events

Get 8-K corporate events — earnings, M&A, leadership changes, material agreements

Insider Trading

Tool

Description

get_insider_trades

Get Form 4 insider transactions — purchases, sales, grants, option exercises

Institutional Holdings

Tool

Description

search_funds

Find institutional investment managers (hedge funds, mutual funds) by name

get_institutional_holders

Get which funds hold a company's stock with shares and market values

get_fund_holdings

Get a fund's portfolio — what stocks it owns

get_holding_changes

Get quarter-over-quarter changes in institutional positions

Compensation & Governance

Tool

Description

get_executive_compensation

Get executive pay — salary, bonus, stock awards, total, CEO pay ratio

get_board_members

Get board of directors — age, tenure, independence, committee memberships

Filings

Tool

Description

search_filings

Search SEC filings by company, type (10-K, 10-Q, 8-K, etc.), and date range

Tool

Description

search_filing_sections

Semantic search of SEC filing section content (Risk Factors, MD&A, etc.) by natural-language query — optionally scoped by ticker, filing type, section type, year, or similarity threshold

Webhooks

Tool

Description

list_webhook_event_types

List the 5 event types you can subscribe to

list_webhooks

List your webhook subscriptions

create_webhook

Create a new subscription (returns one-time HMAC secret)

get_webhook

Get details for one subscription

update_webhook

Modify url / events / filing_types / is_active / description

delete_webhook

Delete a subscription

list_webhook_deliveries

Recent delivery attempts (debugging)

rotate_webhook_secret

Generate a new HMAC secret (invalidates old)

send_webhook_test

Enqueue a synthetic test delivery

replay_webhook_delivery

Re-queue a past delivery (within 7-day window)

Industry Lookup

Tool

Description

search_industries

Find BLS industries by name or NAICS level

get_industry_detail

Get industry details — child industries, data availability across CES/QCEW/OEWS

Industry Employment (CES)

Tool

Description

get_industry_employment

Get employment, earnings, and hours data for an industry by NAICS code

County Employment & Wages (QCEW)

Tool

Description

get_county_employment

Get quarterly employment data for a US county by FIPS code

get_county_wages

Get county wage snapshot with location quotients vs. national average

Occupation Wages (OEWS)

Tool

Description

search_occupations

Find BLS occupations by name or SOC group

get_occupation_wages

Get occupation wage data — mean, median, and percentile distribution

Labor Market Turnover (JOLTS)

Tool

Description

get_industry_turnover

Get job openings, hires, quits, and layoffs for an industry

get_state_turnover

Get state-level labor market turnover (total nonfarm)

get_regional_turnover

Get turnover data for a Census region (Northeast, South, Midwest, West)

Local Area Unemployment (LAUS)

Tool

Description

get_county_unemployment

Get monthly unemployment rate, labor force, and employment for a US county (never seasonally adjusted)

compare_county_unemployment

Compare unemployment metrics across up to 10 counties in a single period

get_state_unemployment

Get monthly state unemployment with labor force participation rate and employment-population ratio (SA or NSA)

compare_state_unemployment

Compare unemployment metrics across up to 10 states in a single period

SBA 7(a) Lending

Tool

Description

get_county_lending

Get quarterly SBA 7(a) loan aggregates for a US county (loan count, total amount, charge-off rate)

get_state_lending

Get quarterly SBA 7(a) loan aggregates for a US state

get_industry_lending

Get quarterly SBA 7(a) loan aggregates for a NAICS industry, optionally scoped to state or county

get_lenders

List SBA 7(a) lenders ranked by loan count, total amount, or average loan size

get_lender

Get details and quarterly history for a single SBA lender by lender_id

get_lending_characteristics

Get loan size, term length, interest rate, sub-programme, and business-type distributions for a quarter

get_lending_outcomes

Get vintage cohort charge-off rates and maturity status

explore_sba_metrics

Browse available SBA metrics by category or keyword

get_sba_metric_detail

Get full definition, unit, cadence, and data availability for a single SBA metric

BLS Discovery

Tool

Description

explore_bls_metrics

Browse available BLS metrics by category, source, or keyword

Configuration

Variable

Required

Description

THESMA_API_KEY

Yes

API key from portal.thesma.dev

THESMA_API_URL

No

Override API base URL (default: https://api.thesma.dev)

Data coverage

  • ~6,000 US-listed public companies on NYSE and NASDAQ — US-GAAP filers plus IFRS 20-F filers (Spotify, Nu Holdings, ASML, and other US-listed IFRS reporters). Native-currency reporting; no USD normalization.

  • SEC EDGAR: financial statements (2009-present), insider trades, institutional holdings, executive compensation, board data, corporate events, filings

  • Bureau of Labor Statistics: industry employment (CES), county wages (QCEW), occupation wages (OEWS), job openings and turnover (JOLTS), local unemployment (LAUS)

  • Small Business Administration: 7(a) loan program data — quarterly lending aggregates by county/state/industry, lender rankings, loan characteristics (size, term, rate, sub-programme), vintage cohort charge-off outcomes

  • Labor & lending market enrichment: get_company automatically includes BLS labor context and SBA 7(a) lending context; screen_companies supports labor market and SBA lending filters

  • Known gaps: IFRS bank filings (Nu Holdings, HSBC, Deutsche Bank, etc.) — the core banking-statement extensions (net_interest_income, etc.) are US-GAAP-specific today; IFRS banking fields land in a future release.

  • All data sourced from US federal public-domain sources: SEC EDGAR, US Census Bureau, Bureau of Labor Statistics, Small Business Administration

License

MIT

Available Tools

60 tools
compare_census_metricA

Compare a single US Census metric across 2 to 25 places at the same geography level. Params: metric is the canonical_name; fips is a list of 2-25 FIPS codes; dataset is optional ('acs1' or 'acs5'); year is optional. Passing FIPS at mixed geography levels will likely produce an API error. Returns each place's value with margin of error. Source: public-domain US Census Bureau data.

Inputs: fips (required), metric (required), year, dataset. Returns: result

compare_county_unemploymentA

Compare LAUS unemployment metrics across up to 10 US counties for a single period (never seasonally adjusted). Params: fips is a comma-separated list of 5-digit county FIPS codes (e.g. '06085,48201,17031' for Santa Clara CA, Harris TX, Cook IL). Maximum 10 counties per call. year and month are both optional, but if one is provided the other must be too (omit both to get the latest period the API can resolve). Use month=13 for the annual-average row. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

Inputs: fips (required), year, month. Returns: result

compare_state_unemploymentA

Compare LAUS unemployment metrics across up to 10 US states for a single period. Defaults to seasonally adjusted (adjustment='sa'); pass adjustment='nsa' for the NSA series. Params: fips is a comma-separated list of 2-digit state FIPS codes (e.g. '06,48,36' for CA, TX, NY). Maximum 10 states per call. year and month are both optional, but if one is provided the other must be too (omit both to get the latest period the API can resolve). Use month=13 for the annual-average row. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

Inputs: fips (required), year, month, adjustment. Returns: result

create_webhookA

Create a webhook subscription. Required: url (HTTPS) and events (e.g. ['filing.created']). Optional: filing_types to narrow events to specific form types ('10-K', '8-K'); description for your own notes. Returns the new subscription details PLUS a one-time HMAC signing secret you MUST save — the api will not show it again. Free-tier callers receive a 402 error; webhooks require Starter+ plan.

Inputs: url (required), events (required), description, filing_types. Returns: result

delete_webhookA

Delete a webhook subscription. Delivery history is retained server-side; the subscription itself stops receiving new events. Irreversible.

Inputs: subscription_id (required). Returns: result

explore_bls_metricsA

Discover available BLS metrics and what data the API offers. Use this to understand what labor market data is available before making specific queries. Filter by category ('employment', 'wages', 'derived'), source ('ces', 'qcew', 'oews'), or search by name.

Inputs: query, source, category. Returns: result

explore_census_geographiesA

List available US Census geography levels (state, county, place, metro, etc.) and the number of places at each level. Use this first to discover what levels exist before calling search_census_places. Source: public-domain US Census Bureau data.

Inputs: no named parameters. Returns: result

explore_census_metricsA

Discover available US Census Bureau metrics. Use this to find the canonical_name of a metric before calling the place or breakdown tools. Params: query filters by substring match on display_name or canonical_name; category filters by metric category (e.g. 'demographics', 'economy', 'housing'). Filters are case-insensitive. Returns up to 50 results. Source: public-domain US Census Bureau data.

Inputs: query, category. Returns: result

explore_sba_metricsA

Browse the SBA 7(a) metric catalog — discover available metrics by category or keyword. category accepts 'volume', 'outcomes', or 'characteristics'. query is a free-text search (minimum 2 characters). Returns metric canonical names with display name, category, unit, and update cadence. Use get_sba_metric_detail to fetch the full definition for a single metric. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: limit, query, category. Returns: result

get_board_membersA

Get board of directors (name, age, tenure, independence, committee memberships) from proxy statements. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), year. Returns: result

get_census_metric_detailA

Get metadata for a single US Census metric, including the underlying source variables and margin-of-error formula type. Use this after explore_census_metrics to understand exactly what a metric measures. Params: metric is the canonical_name (e.g. 'median_household_income'). Source: public-domain US Census Bureau data.

Inputs: metric (required). Returns: result

get_census_placeA

Get detailed geographic information for a single US Census place. Returns name, parent place, population, area, coordinates, and available child levels. Params: level is the geography level, fips is the place's FIPS code. FIPS length varies by level: state=2 digits, county=5 digits, place=7 digits, tract=11 digits. Source: public-domain US Census Bureau data.

Inputs: fips (required), level (required). Returns: result

get_census_place_breakdownA

Break a US Census metric down across the child geographies of a parent place. For example, pass a state FIPS to get the metric for every county inside that state. Params: fips is the parent place's FIPS; metric is the canonical_name; dataset is optional ('acs1' or 'acs5'); year is optional. Source: public-domain US Census Bureau data.

Inputs: fips (required), metric (required), year, dataset. Returns: result

get_census_place_metricsA

Get the full set of US Census metrics for one place, grouped by category. Returns the latest available year by default (server-chosen). Use this as a 'Census profile' for a single place. Params: fips is the place's FIPS code (length varies by level: state=2, county=5, place=7, tract=11). Source: public-domain US Census Bureau data.

Inputs: fips (required). Returns: result

get_census_place_metric_seriesA

Get a time series for one US Census metric in one place. Omit year for the full series; provide year for a single observation. Params: fips is the place's FIPS code; metric is the canonical_name; dataset is optional ('acs1' or 'acs5'). Source: public-domain US Census Bureau data.

Inputs: fips (required), metric (required), year, dataset. Returns: result

get_companyA

Get company profile plus any combination of sub-resources in one call: financials, ratios, insider trades, institutional holders, 8-K corporate events, executive compensation, board, labor market context, or SBA lending context. Pass include='financials,ratios,events' (comma-separated) to compose exactly what you need. Default includes labor_context + lending_context for the company profile view. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), include. Returns: result

get_county_employmentA

Get quarterly employment data for a US county from the BLS QCEW program. FIPS is a 5-digit county code (e.g. '12086' for Miami-Dade County, FL). Industry defaults to '10' (all industries). Ownership defaults to 'private'. Omit year/quarter for all available data.

Inputs: fips (required), year, quarter, industry, +1 more. Returns: result

get_county_lendingA

Get quarterly SBA 7(a) loan aggregates for a single US county — loan count, total amount, charge-off rate, average loan size, and jobs supported. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: fips is a 5-digit county FIPS code (e.g. '06037' for Los Angeles County, CA). Optional industry filter accepts a NAICS code to restrict aggregates to one industry. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: fips (required), year, quarter, industry, +2 more. Returns: result

get_county_unemploymentA

Get monthly LAUS unemployment data for a single US county (never seasonally adjusted — county LAUS has no SA/NSA option). Without dates, returns the latest available observation. Provide both from_date and to_date (YYYY-MM) for a time series. Set annual_only=True to return only annual averages (M13 rows). Params: fips is a 5-digit county FIPS code (e.g. '06085' for Santa Clara County, CA). For comparing multiple counties in a single period, use compare_county_unemployment instead. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

Inputs: fips (required), to_date, from_date, annual_only. Returns: result

get_county_wagesA

Get a wage snapshot for a US county including location quotients. FIPS is a 5-digit county code (e.g. '06037' for Los Angeles County, CA). A location quotient above 1.0 means the county has a higher concentration of that industry than the national average. Industry defaults to '10' (all industries).

Inputs: fips (required), year, quarter, industry, +1 more. Returns: result

get_eventsA

Get 8-K corporate events (earnings, M&A, leadership changes, material agreements). Use ticker to scope to one company, or omit to search across all companies. Filter by category and date range. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

Inputs: limit, ticker, to_date, category, +1 more. Returns: result

get_executive_compensationA

Get executive compensation (salary, bonus, stock awards, total) from proxy statements. Includes CEO-to-median pay ratio when available. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), year. Returns: result

get_financial_metricA

Get a single financial metric over time. Returns a time series for trend analysis. Series points carry per-point currency and taxonomy metadata, authoritative over the envelope currency when a filer changes presentation currency mid-series. Income metrics: revenue, cost_of_revenue, gross_profit, operating_expenses, research_and_development, selling_general_admin, operating_income, interest_expense, interest_income, pre_tax_income, income_tax_expense, net_income, eps_basic, eps_diluted, shares_basic, shares_diluted. Balance sheet: total_assets, current_assets, cash_and_equivalents, accounts_receivable, inventory, non_current_assets, property_plant_equipment, goodwill, intangible_assets, total_liabilities, current_liabilities, accounts_payable, short_term_debt, non_current_liabilities, long_term_debt, total_equity, common_shares_outstanding. Cash flow: operating_cash_flow, investing_cash_flow, financing_cash_flow, net_change_in_cash, capital_expenditures, dividends_paid, share_repurchases. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: metric (required), ticker (required), period, to_year, +1 more. Returns: result

get_financialsA

Get financial statements (income statement, balance sheet, cash flow, or all three) for a US public company from SEC filings. Pass statement='all' to get all three in one call or years=N (1-10) to get the last N annual periods for trend analysis. Responses carry taxonomy ('us-gaap' or 'ifrs-full'), native-reported currency, and presentation-format metadata. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), year, years, period, +2 more. Returns: result

get_fund_holdingsB

Get a fund's portfolio holdings. Shows what stocks a fund owns, with share counts and market values. Accepts fund name or CIK. Response rows carry the 13F report_quarter and filed_at timestamp.

Inputs: fund_name (required), limit, quarter, position_type. Returns: result

get_holding_changesA

Get quarter-over-quarter changes in institutional holdings. Use 'ticker' to see which funds are buying/selling a company, or 'fund_name' to see what a fund is buying/selling. Provide exactly one. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: limit, change, ticker, quarter, +1 more. Returns: result

get_industry_detailA

Get detailed information for a single BLS industry including child industries and data availability. Use this after search_industries to drill into a specific industry. Params: naics is the NAICS code (e.g. '5112' for Software Publishers).

Inputs: naics (required). Returns: result

get_industry_employmentA

Get employment data for a BLS industry. Shows the latest observation with year-over-year changes by default. Provide from_date and to_date (YYYY-MM format) for a time series. Params: naics is the NAICS code, adjustment is 'sa' (seasonally adjusted, default) or 'nsa', geo/state/metro narrow geography.

Inputs: naics (required), geo, metro, state, +3 more. Returns: result

get_industry_lendingA

Get quarterly SBA 7(a) loan aggregates for a NAICS industry. Default scope is national; pass geo='state' with state=<2-digit FIPS> or geo='county' with county=<5-digit FIPS> to scope the aggregate. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: naics is a NAICS code (2–6 digits, e.g. '541211' for Offices of Accountants). Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: naics (required), geo, year, state, +4 more. Returns: result

get_industry_turnoverA

Get labor market turnover data (job openings, hires, quits, layoffs) for an industry by NAICS code. Shows the latest observation by default. Provide from_date and to_date (YYYY-MM) for a time series. Use search_industries first to find NAICS codes.

Inputs: naics (required), to_date, measures, from_date, +1 more. Returns: result

get_insider_tradesA

Get insider trading transactions (Form 4) — purchases, sales, grants, and option exercises. Use ticker to scope to one company, or omit to search across all companies. Filter by transaction type, minimum value, and date range. By default, rows are aggregated transaction events (same-day 10b5-1 tranches collapsed on person/date/type/security/ownership). Pass flat=True for the per-slice Form 4 rows. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

Inputs: flat, type, limit, ticker, +3 more. Returns: result

get_institutional_holdersA

Get which institutional funds hold a company's stock. Shows shares held, market value, and discretion type. Response rows carry the 13F report_quarter and filed_at timestamp; when quarter is omitted the API returns the latest available quarter. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), limit, quarter. Returns: result

get_lenderA

Get details and quarterly history for a single SBA 7(a) lender by lender_id. Optional from_period/to_period filters the quarterly history range (YYYY-Qq). Both are required together for a range; omit both for full history. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: lender_id (required), to_period, from_period. Returns: result

get_lendersA

List SBA 7(a) lenders ranked by loan count, total amount, or average loan size. Optional filters: state (2-digit FIPS), county (5-digit FIPS), industry (NAICS), year/quarter, and a from_period/to_period range (YYYY-Qq). sort accepts 'loan_count' (default), 'total_amount', or 'avg_amount'. limit is capped at 50. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: sort, year, limit, state, +5 more. Returns: result

get_lending_characteristicsA

Get SBA 7(a) loan distributions for a single quarter — loan size buckets, term length buckets, interest rate histogram, sub-programme mix, business-type mix, and revolving-vs-term split. year and quarter are required by the API (pass them together). Optional state (2-digit FIPS), county (5-digit FIPS), or industry (NAICS) filters scope the distributions. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: year, state, county, quarter, +1 more. Returns: result

get_lending_outcomesA

Get SBA 7(a) vintage cohort charge-off outcomes — loans originated in a given year and their charge-off rates, maturity status, and gross charge-off amounts. vintage_from is required by the API; vintage_to defaults to vintage_from (single vintage) and the API enforces vintage_to - vintage_from <= 10. Optional state (2-digit FIPS), county (5-digit FIPS), or industry (NAICS) filters. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: state, county, industry, vintage_to, +1 more. Returns: result

get_occupation_wagesA

Get wage data for a BLS occupation including percentile distribution. SOC code format is XX-XXXX (e.g. '15-1252' for Software Developers). Optionally filter by NAICS industry, geography, or year. Returns median wage plus 10th/25th/75th/90th percentiles.

Inputs: soc (required), geo, year, metro, +2 more. Returns: result

get_ratio_historyB

Get a single financial ratio over time. Returns a time series for trend analysis. Valid ratios: gross_margin, operating_margin, net_margin, return_on_equity, return_on_assets, debt_to_equity, current_ratio, interest_coverage, revenue_growth_yoy, net_income_growth_yoy, eps_growth_yoy. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ratio (required), ticker (required), period, to_year, +1 more. Returns: result

get_ratiosA

Get computed financial ratios (margins, returns, leverage, growth) for a US public company. Derived from SEC filings. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META).

Inputs: ticker (required), year, period, quarter. Returns: result

get_regional_turnoverA

Get regional labor market turnover data for one of the 4 Census regions. Params: region is 'northeast', 'south', 'midwest', or 'west'.

Inputs: region (required), to_date, from_date, adjustment. Returns: result

get_sba_metric_detailA

Get the full definition for a single SBA 7(a) metric by canonical name. Returns display name, description, category, unit, update cadence, typical lag, data availability year range, and related endpoints. Use explore_sba_metrics to discover canonical names. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: metric (required). Returns: result

get_state_lendingA

Get quarterly SBA 7(a) loan aggregates for a single US state — loan count, total amount, charge-off rate, average loan size, and jobs supported. Without period filters, returns the latest available quarterly observation. Provide both from_period and to_period (YYYY-Qq, e.g. '2024-Q1') for a time series. Params: fips is a 2-digit state FIPS code (e.g. '06' for California, '48' for Texas). Optional industry filter accepts a NAICS code to restrict aggregates to one industry. Source: US Small Business Administration, 7(a) Loan Program (public domain).

Inputs: fips (required), year, quarter, industry, +2 more. Returns: result

get_state_turnoverA

Get state-level labor market turnover data. Total nonfarm only — no industry breakdown at state level. Data available from October 2021 onward. Params: fips is the 2-digit state FIPS code (e.g. '06' for California).

Inputs: fips (required), to_date, from_date, adjustment. Returns: result

get_state_unemploymentA

Get monthly LAUS unemployment data for a single US state. Defaults to seasonally adjusted (adjustment='sa'); pass adjustment='nsa' for the not-seasonally-adjusted series. Without dates, returns the latest available observation. Provide both from_date and to_date (YYYY-MM) for a time series. Set annual_only=True to return only annual averages (M13 rows). Params: fips is a 2-digit state FIPS code (e.g. '06' for California, '48' for Texas). State observations include labor force participation rate and employment-population ratio. For comparing multiple states in a single period, use compare_state_unemployment instead. Source: US Bureau of Labor Statistics, Local Area Unemployment Statistics (public domain).

Inputs: fips (required), to_date, from_date, adjustment, +1 more. Returns: result

get_webhookA

Get details for one webhook subscription by id (e.g. 'sub_abc123').

Inputs: subscription_id (required). Returns: result

list_webhook_deliveriesA

Show delivery attempts for a webhook subscription. Useful for debugging — each row shows event type, status, attempt count, and queued/completed timestamps. Pagination is offset-based: pass page=2 for the next batch. limit (per page) is capped at 50 server-side.

Inputs: subscription_id (required), page, limit. Returns: result

list_webhook_event_typesA

List the event types you can subscribe a webhook to (filing.created, corporate_event.created, compensation.filed, board.changed, amendment.filed). Returns the catalog with descriptions and links to payload schemas.

Inputs: no named parameters. Returns: result

list_webhooksA

List your webhook subscriptions — each row shows id, url, events, active/inactive status, and last-delivery timestamp.

Inputs: no named parameters. Returns: result

replay_webhook_deliveryA

Re-queue a past webhook delivery for redelivery. Useful if your endpoint was temporarily down. Deliveries older than the 7-day retention window return a 410 error and cannot be replayed.

Inputs: delivery_id (required), subscription_id (required). Returns: result

rotate_webhook_secretA

Generate a new HMAC signing secret for a webhook subscription. The PREVIOUS secret is invalidated immediately — there is no grace period. Update your HMAC verifier before, or atomically with, calling this tool, or incoming deliveries will start failing verification. The new secret is shown ONCE — save it immediately. If this call returns an error after the api has already processed the rotation (e.g. network timeout), the previous secret may already be invalidated server-side — call this tool again to get a fresh secret rather than retrying with the old one.

Inputs: subscription_id (required). Returns: result

screen_companiesA

Find US public companies matching financial criteria. Combine filters: profitability (margins), growth rates, leverage ratios, index membership, SIC code, stock exchange (nyse/nasdaq, comma-separated for multiple), domicile (us/adr), and insider/institutional signals. Supports labor market filters: industry hiring trend, employment growth, wage growth, comp-to-market ratio, and HQ-county LAUS local unemployment (min/max local unemployment rate, local unemployment trend, min local labor force). Supports SBA 7(a) lending filters: local loan count (trailing 4Q in HQ county), local lending growth (YoY %), industry lending growth (NAICS national YoY %), and industry charge-off rate (%). Set include='lending_context' or include='labor_context,lending_context' to surface an SBA lending context summary on each row. Note: include='labor_context' and include='lending_context' require a Pro+ plan. Free/Starter callers receive a tier upgrade message instead of enriched results. Sort by any ratio: gross_margin, operating_margin, net_margin, return_on_equity, return_on_assets, debt_to_equity, current_ratio, interest_coverage, revenue_growth_yoy, net_income_growth_yoy, eps_growth_yoy. Margin/ratio/growth filters use integer percent (20 for 20%, not 0.20). Values 0<x<1 are rejected as ambiguous. Pass 0 for no minimum. Use search='' to filter by name substring or ticker prefix (case-insensitive; server trims/escapes/skips nulls; does not normalise 'BRK.B' vs 'BRK-B' and does not consult ticker aliases; omit search rather than passing an empty string, which the server treats as a no-op; any match lacking a qualifying annual CompanyRatio row is silently excluded by the screener inner-join). Filter by taxonomy='us-gaap' or 'ifrs-full' and/or by presentation currency via currency='' (case-insensitive, e.g. 'USD', 'EUR', 'JPY'); both are server-validated — unknown values return 400. Filter by Russell-index membership: in_index=True returns only companies in any tracked index (sp500, russell1000, or russell2000); in_index=False returns only unindexed companies. Note: combining in_index=False with a query that matches an indexed ticker (e.g. 'AAPL') returns no results because the ticker is filtered out.

Inputs: sic, sort, tier, limit, +43 more. Returns: result

search_census_placesA

List US Census places at a given geography level, optionally filtered by name (case-insensitive). IMPORTANT: the SDK returns a single page of places per call and does not expose pagination controls, so the name filter only sees that page. For large levels like 'tract' (73k+ places), if you already know the FIPS code use get_census_place directly instead. Params: level is the geography level from explore_census_geographies (e.g. 'state', 'county', 'place'); query is an optional substring filter on place name. Returns up to 50 results. Source: public-domain US Census Bureau data.

Inputs: level (required), query. Returns: result

search_companiesA

Find US public companies by name substring or ticker prefix (case-insensitive). Use this to look up a company before querying its financials, ratios, or filings. Optional filters: taxonomy='us-gaap' or 'ifrs-full' to narrow to US-GAAP 10-K vs IFRS 20-F filers; currency='' (e.g. 'USD', 'EUR') to narrow by presentation currency. Filter by Russell-index membership: in_index=True returns only companies in any tracked index (sp500, russell1000, or russell2000); in_index=False returns only unindexed companies. Note: combining in_index=False with a query that matches an indexed ticker (e.g. 'AAPL') returns no results because the ticker is filtered out.

Inputs: query (required), tier, limit, currency, +4 more. Returns: result

search_filingsA

Search SEC filings by company, type (10-K, 10-Q, 8-K, 4, DEF 14A, 13F-HR), and date range. Returns filing metadata with accession numbers. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

Inputs: type, limit, ticker, to_date, +1 more. Returns: result

search_filing_sectionsA

Semantic search across SEC filing section content (10-K Risk Factors, 10-Q MD&A, etc.) using natural-language queries. Returns matching text excerpts ranked by cosine similarity. Optionally scope by ticker (one company), filing_type (e.g. '10-K'), section_type (e.g. 'item_1a' for Risk Factors, 'item_7' for MD&A), fiscal year, or minimum similarity threshold. Args: ticker: Stock ticker (e.g. 'AAPL'), 10-digit CIK ('0000320193'), stripped CIK ('320193'), or historical ticker ('FB' resolves to META). Omit to search all companies.

Inputs: query (required), year, limit, ticker, +3 more. Returns: result

search_fundsA

Find institutional investment managers (hedge funds, mutual funds) by name. Use this to look up a fund's CIK before querying its holdings.

Inputs: query (required), limit. Returns: result

search_industriesA

Search BLS industries by name or list by NAICS level. Use this to find NAICS industry codes before querying employment data. Params: query is a text search (e.g. 'software'), level is NAICS hierarchy depth (1=sector, 2=subsector, up to 6=national industry). Returns up to 25 results.

Inputs: level, query. Returns: result

search_occupationsA

Search BLS occupations by name. Use this to find SOC occupation codes before querying wage data. Params: query is a text search (e.g. 'software developer'), group is 'major' (broad categories like 15-0000 Computer and Mathematical) or 'detailed' (specific jobs like 15-1252).

Inputs: group, query. Returns: result

send_webhook_testA

Enqueue a synthetic 'webhook.test' delivery to verify your endpoint is reachable and your HMAC verification works. Rate-limited to 5 calls per 60 seconds. Use list_webhook_deliveries afterward to see the result. If the subscription has is_active=False, the api may reject the request — call update_webhook(is_active=True) to re-enable first.

Inputs: subscription_id (required). Returns: result

update_webhookA

Update a webhook subscription. Pass only the fields you want to change — unset fields are left untouched. Use is_active=false to disable a hook without deleting it. Note: events=[] and filing_types=[] are treated as 'no change' (api does not support setting these to empty via this tool); to stop receiving any events, use is_active=false instead.

Inputs: subscription_id (required), url, events, is_active, +2 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 60 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes with detailed descriptions, and the get/search/compare/explore prefixes help differentiate. However, composite tools like get_company that can include financials and ratios overlap with dedicated endpoints (get_financials, get_ratios), and search_companies vs screen_companies could cause misselection. The high volume of similar geographic lending/unemployment tools makes boundaries less obvious.

    Naming Consistency4/5

    Tool names predominantly follow a verb_noun pattern (get_, search_, compare_, explore_, list_, create_, update_, delete_) with consistent snake_case. Minor deviations exist: get_lender/get_lenders singular vs plural, get_financial_metric vs get_ratio_history naming inconsistency, and get_census_place_metrics vs get_census_place_metric_series.

    Tool Count1/5

    60 tools is far beyond the typical well-scoped MCP server, making it overwhelming and difficult for an agent to navigate. While each tool may serve a purpose, the sheer volume violates the expected 3-15 range and falls into the extreme category.

    Completeness4/5

    The server provides comprehensive coverage across BLS, Census, SEC company data, SBA lending, and webhooks. Each domain has lifecycle/query tools (search, get, compare, explore, CRUD for webhooks). Minor gaps exist, such as no direct state-level QCEW employment/wages tool, but overall the surface is fairly complete for its stated multi-source purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI agents to access SEC EDGAR filings, US Treasury rates, BLS labor statistics, and economic indicators without API keys.
      6
      26 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Connect your ads, shop, analytics, social, CRM and finance platforms once, then let Claude, ChatGPT, Cursor or any MCP client read, join and explain your numbers. Public statistics from the World Bank, IMF, Eurostat, OECD, WHO and SEC filings come as context, searchable and chartable from the same tools. Read-only by design, every number carries its source.
      57
      115 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      It enables AI assistants (Claude, Cursor, etc.) to access SEC EDGAR data through 6 structured tools — from discovering available filings to keyword-searching within their pages.
      7
      37 PyPI
      2
      MIT