Skip to main content
Glama
hub-equity-mcp

hub-equity-mcp

Official
by Hub-Equity

hub-equity-mcp

Standardized XBRL financial data for LLM agents. A Model Context Protocol (MCP) server that exposes normalized financial facts from US SEC (EDGAR) and European ESEF filings to Claude Desktop, Cursor, and any MCP-aware client.

Hub-Equity serves standardized European ESEF filings alongside US SEC data through one consistent hub-concept vocabulary, so an agent can ask for REVENUE or TOTAL_ASSETS and get a comparable, source-linked value whether the issuer files with the SEC or under ESEF.

Maturity. The public REST API behind this connector runs in production and powers Hub-Equity's own chat. The package follows Semantic Versioning; it keeps the Beta classifier while its install base is young.

Why

  • One vocabulary across two regimes. SEC us-gaap and ESEF ifrs-full concepts are mapped to a single set of standardized hub codes, so cross-issuer and cross-taxonomy comparison works out of the box.

  • Every number is source-linked. Facts carry their filing, period, and provenance so an agent can cite rather than guess.

  • Restatement-aware. Explicit amendments and silent restatements (a figure a later filing reprinted differently, with no amendment filed), each change with the filing that made it.

  • Read-only and closed-world. Every tool advertises readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false per the MCP spec, so clients can reason about safety and caching without introspection.

  • No database credentials. The published package talks only to the public REST API (https://api.hub-equity.com) over HTTPS. It never ships or requires a database key.

Related MCP server: edgar-mcp

Install

pipx run hub-equity-mcp

pipx run (or uvx hub-equity-mcp) fetches and starts the server in an isolated environment; pip install hub-equity-mcp works too. Requires Python 3.12 or newer.

Authentication and access

The server talks only to the public REST API, which needs a hubq_ key (env var HUBEQUITY_API_KEY).

  • Free key. Create an account and a key in a minute at https://hub-equity.com/settings/api-keys. Gives the base tool set (entity search, normalized facts, time series, segments, screener, data-quality grade, FX conversion, and more).

  • Paid plan. Unlocks the premium tools (restatement diffs, calculation trees, cross-period compare, cross-issuer compare, validation checks, extension concepts) and raises the rate limit. See the table below.

The published package never reaches the database directly, only the REST API.

Configure your client

Claude Desktop

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

{
  "mcpServers": {
    "hub-equity": {
      "command": "pipx",
      "args": ["run", "hub-equity-mcp"],
      "env": {
        "HUBEQUITY_API_KEY": "INSERT_YOUR_API_KEY"
      }
    }
  }
}

Without HUBEQUITY_API_KEY, every tool call answers HUBEQUITY_API_KEY is not set with the link to a Free key.

Cursor

Add to .cursor/mcp.json (project root) or the global Cursor MCP settings:

{
  "mcpServers": {
    "hub-equity": {
      "command": "pipx",
      "args": ["run", "hub-equity-mcp"],
      "env": {
        "HUBEQUITY_API_KEY": "INSERT_YOUR_API_KEY"
      }
    }
  }
}

Environment variables

  • HUBEQUITY_API_KEY (required): a hubq_ key. A Free key opens the base tools; a paid plan opens the premium tools and the higher rate limit.

  • HUBEQUITY_API_URL (optional): defaults to https://api.hub-equity.com. https:// is enforced whenever a key is set (the server refuses to send the Bearer key over plaintext to a non-loopback host).

Capabilities

Type

What

Tools

Read-only tools: discovery, facts, time series, segments, forensic checks (table below)

Resources

Hub catalog, statement schema, tier catalog, usage guides, coverage snapshot

Prompts

Analytical templates (list below)

Completion API

{hub_code} autocomplete

Tools

The machine-readable tier catalog is served as a resource (hub-equity://catalog/tool-tiers). Free tools cover discovery and identity; Pro tools, open on every paid plan (Builder, Team, Enterprise), add forensic depth (calculation trees, restatement diffs on amendments and silent restatements, cross-period comparison, cross-issuer comparison, validation results, extension concepts). The tier of a tool mirrors the REST endpoint it calls: every Pro tool's endpoint requires the facts.premium scope server-side, and the Free caps (get_fact_decomposition depth 1 without roll-up components or dimensional slices, screen_companies 20 results without the quality filter, get_segments axes without members, roll_up_metric the value without its rule) are applied by the API, not only by this package.

Tool

Tier

What it does

find_entity(query)

Free

Search by name, ticker, or CIK. Returns the entity_id other tools need.

get_fact(entity_id, hub_concept_code, fiscal_year, fiscal_period_type?)

Free

One normalized value plus its filing source.

get_fact_decomposition(entity_id, fiscal_year, hub_concept_code? or qname?, depth?)

Free (depth 1, linkbase only) / Pro (depth 2-3)

Hub rollup, XBRL calc-linkbase children, and dimensional breakdown. Free: the linkbase layer, without the roll-up components and the dimensional slices.

search_concept(query)

Free

Resolve a hub code from a label or a partial code.

list_hubs(category?, include_non_primary?, limit?)

Free

Enumerate the standardized hub catalog by category.

get_entity_profile(entity_id)

Free

Sector, auditor, employees, fiscal year end, recent filings.

get_metric_history(entity_id, hub_concept_code, n_years?)

Free

N-year time series with YoY growth and CAGR.

get_segments(entity_id, hub_concept_code, fiscal_year)

Free (capped)

Dimensional axis/member breakdown (segment, geography). Free: the axes without their members; Pro: every member.

get_amendments(entity_id, fiscal_year?)

Free

10-K/A restatement summary: every amendment, its per-concept changes (50 per amendment).

get_silent_restatements(entity_id, fiscal_year?)

Free

Silent restatements: figures a later filing reprinted differently in its comparative columns, with no amendment filed, grouped by the filing that revealed them (50 changes per filing).

compare_entities(entity_ids, hub_concept_codes, fiscal_year)

Pro (up to 10x10)

Cross-issuer comparison matrix at one period, calendar-year aligned. Accepts UUIDs, tickers or TICKER.MIC.

roll_up_metric(entity_id, hub_concept_code, fiscal_year)

Free (capped)

Compute a value from signed children when it is not directly tagged. Free: the value; Pro: the rule and the signed contributions behind it.

convert_currency(amount, from_currency, to_currency, date?, rate_type?)

Free

ECB reference-rate FX conversion (closing, average YTD, average prior year).

screen_companies(country?, sector?, min_revenue?, ..., sort_by?, limit?)

Free (limit 20, no quality filter) / Pro (higher)

Filter the issuer universe by metadata, revenue, audit, and data quality.

get_amendment_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)

Pro

Per-concept 10-K/A diffs: materiality, kind and concept filters, label, absolute delta, both filings as sources.

get_silent_restatement_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)

Pro

The same diff on the silent restatements.

get_calculation_tree(filing_id, link_role?)

Pro

The filing's calculation linkbase: every total and its components, declared sign next to the sign the filed values support.

compare_filings(entity_id, fiscal_year_a, fiscal_year_b, hub_concept_codes?)

Pro

Cross-period same-entity compare with new / removed / sign-flip / restatement flags.

get_extension_concepts(entity_id, status_filter?, limit?)

Pro

Issuer-specific qnames declared outside standard taxonomies.

get_data_quality_grade(entity_id)

Free

A+ to D grade (or none), the two gates and counts behind it, freshness, direct-vs-derived split.

get_validation_results(filing_id?, entity_id?, fiscal_year?, status_filter?)

Pro

XBRL accounting and calculation-linkbase checks.

Resources

URI

Type

Purpose

hub-equity://catalog/hubs

json

Full standardized hub catalog with EN/FR labels and category.

hub-equity://catalog/categories

json

Hub counts per category.

hub-equity://catalog/tool-tiers

markdown

Free vs Pro tool catalog and gating conditions.

hub-equity://schema/financial-statements

markdown

Statement structure and reading rules.

hub-equity://catalog/hub/{hub_code}

template

Forward catalog entry for one hub.

hub-equity://entity/{entity_id}/profile

template

Full entity snapshot.

hub-equity://prompts/best-practices

markdown

System-prompt guidance for client integrations. Load this before calling any tool.

hub-equity://prompts/tool-usage-examples

markdown

Per-tool few-shot examples (good and anti-pattern).

hub-equity://prompts/data-coverage

json

Live dataset snapshot (issuer and filing counts, sources, taxonomies, fiscal year range). Cached 24h.

Prompts

Eight analytical templates: peer_comparison, quality_of_earnings, restatement_audit, sector_overview, valuation_screen, goodwill_impairment_risk, working_capital_diagnostic, cash_flow_consistency.

For client developers

Before calling any tool, fetch hub-equity://prompts/best-practices and inject the markdown into your system prompt. This makes your client follow the same tool routing, source-citation, and numeric-fidelity rules as Hub-Equity's own chat.

# Pseudo-code for a typical MCP client integration
session = mcp.connect("hub-equity-mcp")
best_practices = session.read_resource("hub-equity://prompts/best-practices")
system_prompt = "You are an assistant ...\n\n" + best_practices
# now call session.call_tool("find_entity", {"query": "AAPL"}) etc.

Rate limits

Mode

Limit

Notes

Free key

120 requests / minute

Base tools.

Builder key

300 requests / minute

Premium tools unlocked.

Team key

600 requests / minute

Premium tools unlocked.

Enterprise key

1 000 requests / minute

Negotiable.

The bucket is per API key.

On a per-minute 429 the client retries with exponential backoff (up to 3 times) before raising RateLimitExceeded. A used-up daily or monthly allowance is raised at once, with the API's message.

Troubleshooting

Symptom

Cause

Fix

429 Too Many Requests / RateLimitExceeded

Rate cap hit (120/min with a Free key, 300 to 1 000/min on a paid key)

Move to a paid plan, or slow down the tool-call fan-out. The client already backs off up to 3 times.

HUBEQUITY_API_KEY is not set on every tool call

No key in the client's env block

Set HUBEQUITY_API_KEY; a Free key takes a minute at https://hub-equity.com/settings/api-keys.

HubEquityRestError: HTTP 401

An invalid, expired or revoked hubq_ key (INVALID_API_KEY)

Create a new key at https://hub-equity.com/settings/api-keys.

HubEquityRestError: HTTP 403

The key's workspace is on the Free plan and the call needs a Pro tool, or a Free cap (depth > 1, limit > 20, min_quality_grade)

Upgrade the plan, or stay within the Free caps.

RateLimitExceeded whose body carries DAILY_QUOTA_EXCEEDED / MONTHLY_QUOTA_EXCEEDED

The workspace's volume allowance is used up (Free 200 a day / 5 000 a month, Builder 50 000, Team 500 000 a month); raised at once, without retry

Wait for resets_on, or upgrade the plan.

Connection or timeout errors

Network issue reaching api.hub-equity.com, or a bad HUBEQUITY_API_URL

Check connectivity; confirm HUBEQUITY_API_URL (if set) points to a reachable https:// host.

ValueError: HUBEQUITY_API_URL must use https://

A key is set but the URL is plain http:// on a non-loopback host

Use https://, or unset HUBEQUITY_API_URL to fall back to the default API.

Server does not appear in Claude Desktop or Cursor

Config JSON error, or pipx not on the client's PATH

Validate the JSON; use the absolute path of pipx (or uvx) if the client cannot resolve it.

Run locally

python -m hub_equity_mcp.server

Or drive it interactively with the MCP inspector:

npx @modelcontextprotocol/inspector python -m hub_equity_mcp.server

The inspector lists every tool, resource and prompt and lets you call each one.

Development

pip install -e '.[dev]'
pytest tests/

Tests are hermetic: tool tests mock the REST API with respx, so no live backend is needed.

License

Apache-2.0. See LICENSE and NOTICE. This connector is an open client to the public Hub-Equity REST API; access to premium data stays gated by API key, plan, and rate limits on the service side.

Available Tools

21 tools
compare_entitiesA
Read-onlyIdempotent

Build a comparison matrix for N entities × M concepts at one period.

Cap N=10, M=10 (more answers a 422 validation error). ALWAYS prefer this over N×get_fact when comparing more than one company. Returns one row per entity with metadata (sector, country, auditor) + a cells map keyed by hub_concept_code → CompareCell.

Consolidated values only, one value per (entity, hub, year), aligned on the calendar: for each issuer, the fiscal year whose period_end falls in fiscal_year (FY forced). A non-December filer can therefore read a different value here than from get_fact for the same fiscal_year.

Inputs: entity_ids (required), fiscal_year (required), hub_concept_codes (required), fiscal_period_type. Returns: rows, notes, fiscal_year, period_alignment, +1 more

compare_filingsA
Read-onlyIdempotent

Compare two annual filings of the SAME entity side-by-side.

Use when the user asks "what changed at X between FY{n-1} and FY{n}", "X year-over-year breakdown", "compare X's balance sheet year by year".

Pivots the normalized values of the same entity on two fiscal years and surfaces semantic flags: is_new_in_b (concept appeared), is_removed_in_b (concept disappeared), is_sign_flip (positive↔negative), and has_restatement_warning (filing_b's comparative columns retroactively restated filing_a's value).

hub_concept_codes is optional. None = a default set of primary hubs across income statement / balance sheet / cash flow. Pass an explicit list (up to 50) to override.

form_type picks the reference filing of each year: 10-K, 20-F, 40-F, annual_report (ESEF filers), or an amended form (10-K/A, 20-F/A, 40-F/A). Omit it (default) for the most recent original annual filing of each year, whatever its form.

Different from compare_entities (cross-entity), get_amendment_diff (10-K vs 10-K/A same year), and get_metric_history (one metric, time series).

Inputs: entity_id (required), fiscal_year_a (required), fiscal_year_b (required), form_type, +2 more. Returns: result

convert_currencyA
Read-onlyIdempotent

Convert an amount between two ISO 4217 currencies using ECB reference rates.

rate_type ∈ {closing, average_ytd, average_prior_year}:

  • closing (default) → spot rate at date (balance-sheet items per IAS 21)

  • average_ytd → avg over the 365 days ending at date, a rolling window, not year-to-date (P&L / cash flow items)

  • average_prior_year → avg over the calendar year before date

date is YYYY-MM-DD (defaults to today). Identity short-circuit when from == to. An unsupported currency code returns an error result. Cross-rates (e.g. USD→JPY) are computed through EUR. fix_date echoes the requested date: the rate used is the latest ECB fixing available on or before it.

Use when the user asks "convert X in Y", "Microsoft revenue in EUR", "what's the average USD/EUR rate for FY2024 P&L conversion?".

Inputs: amount (required), to_currency (required), from_currency (required), date, +1 more. Returns: result

find_entityA
Read-onlyIdempotent

Search Hub-Equity entities by name, ticker (e.g. 'CSCO'), or CIK.

Returns up to 5 matches ranked by exactness. Use this first when the user mentions a company by name or ticker - you need the entity_id to call any other tool.

Inputs: query (required). Returns: matches

get_amendment_diffA
Read-onlyIdempotent

Per-concept restatement diff (old_value, new_value, diff_pct, kind) across all 10-K/A amendments of an entity. Sorted by |diff_pct| desc.

Differs from get_amendments (which returns counts per amendment): this tool flattens the per-concept changes and filters by materiality (min_diff_pct, default 1%) and optionally by hub_concept_code or kind.

Use for 'what specifically changed in the FY24 10-K/A?', 'show all REVENUE restatements', 'material accounting corrections only'.

Inputs: entity_id (required), fiscal_year, kind_filter, min_diff_pct, +1 more. Returns: result

get_amendmentsA
Read-onlyIdempotent

Surface 10-K/A restatements for an entity (per-concept diffs when available).

Use when the user asks 'has X amended any filing?', 'restatements?', 'what changed in the FY20xx 10-K/A?'.

Inputs: entity_id (required), fiscal_year. Returns: result

get_calculation_treeA
Read-onlyIdempotent

The issuer's own arithmetic in one filing: which concepts add up to which total, with the sign the filer declared (weight) next to the sign the filed values support (corrected_weight); is_corrected marks an arc where the two disagree, corrected_count counts them.

Call it first without link_role to list the filing's calculation sections (largest first), then again with the link_role of the statement or note you want. Take filing_id from the source of get_fact or from get_entity_profile.

Use for 'how does Apple's FY2025 balance sheet add up', 'which lines make up operating expenses in this filing', 'did the issuer get a sign wrong'.

Inputs: filing_id (required), link_role. Returns: result

get_data_quality_gradeA
Read-onlyIdempotent

How complete Hub-Equity's data is for an entity: a grade from A+ to D, or none.

The grade is computed on the latest reported fiscal year and is the worse of two gates: the core concepts every listed issuer publishes, and the concepts this company itself reports. A missing grade is not a bad grade. The result also carries the counts behind each gate, the direct vs derived split, GAAP/IFRS presence and the freshness of the latest filing.

Use when the user asks how reliable a company's data is.

Inputs: entity_id (required). Returns: result

get_entity_profileA
Read-onlyIdempotent

Comprehensive company snapshot: identifiers, sector, auditor, employees, legal form, fiscal year end, recent filings summary.

Use after find_entity when the user wants context, or as a first call when the user asks 'tell me about ' / 'qui est '.

Inputs: entity_id (required). Returns: result

get_extension_conceptsA
Read-onlyIdempotent

Issuer-specific qnames declared outside standard taxonomies (us-gaap / ifrs-full).

Returns up to limit (cap 100) extension concepts sorted by usage_count desc. status_filter ∈ {all, mapped}: mapped keeps the extensions Hub-Equity reads into a standardised hub.

For each extension: qname, label, item type, period type, balance, usage count, the issuer's own documentation and the standard concept it is anchored to (ESEF).

Use for 'what custom concepts has Apple declared?'.

Inputs: entity_id (required), limit, status_filter. Returns: result

get_factA
Read-onlyIdempotent

Get a normalized financial value for an entity at a given period.

hub_concept_code is a Hub-Equity standardized code (e.g. 'REVENUE', 'NET_INCOME', 'TOTAL_ASSETS', 'OTHER_CURRENT_LIABILITIES'). Use search_concept first if you don't know the code.

fiscal_period_type defaults to FY; the served values are annual, and another period type is refused with an error.

When nothing is served for that combination, the call returns an error result that says so: never fill the gap with an estimate.

Inputs: entity_id (required), fiscal_year (required), hub_concept_code (required), fiscal_period_type. Returns: result

get_fact_decompositionA
Read-onlyIdempotent

Decompose a financial fact into its constituent parts.

Pass EITHER hub_concept_code (preferred - e.g. TOTAL_ASSETS) OR qname (raw XBRL like 'us-gaap:DeferredRevenueNoncurrent') for concepts without a hub mapping.

Returns three layers:

  1. rollup_children - the components this issuer reported for the figure, with their sign, on a paid plan; empty below it, with a note.

  2. linkbase_children - XBRL calc linkbase children, RECURSIVE up to depth (max 3). Each child has its own children list.

  3. dimensional_breakdown - axis/member slices (segment, geography), on a paid plan; empty below it, with a note.

depth=1 is open to every caller. On a paid plan, use depth=2 for aggregates (TOTAL_ASSETS, TOTAL_LIABILITIES) to get the full breakdown tree in ONE call instead of N round-trips.

Inputs: entity_id (required), fiscal_year (required), depth, qname, +2 more. Returns: result

get_metric_historyA
Read-onlyIdempotent

N-year time series for one metric (annual values only), with YoY growth (null across a missing year) and CAGR computed.

Use for trend / growth questions: 'evolution of revenue over 5 years', 'CAGR du CF operating', 'Microsoft net income trend'.

Inputs: entity_id (required), hub_concept_code (required), n_years, fiscal_period_type. Returns: result

get_segmentsA
Read-onlyIdempotent

Dimensional breakdown of a metric (axis/member from XBRL dimensions).

Use for 'revenue par région', 'profit by segment', 'split by product/geography'. Reads the dimensional (segment) values for the given period. Returns empty axes when the issuer reported only the consolidated total. The members of each axis need a paid plan: below it the axes are listed without them, with a note.

Inputs: entity_id (required), fiscal_year (required), hub_concept_code (required), fiscal_period_type. Returns: result

get_silent_restatement_diffA
Read-onlyIdempotent

Per-concept silent restatements (old_value, new_value, diff_abs, diff_pct, kind, label, both filings as sources), sorted by |diff_pct| desc.

get_amendment_diff on the other source: figures a later filing reprinted differently in its comparative columns, with no amendment filed. Filters by materiality (min_diff_pct, a fraction, default 1%), hub_concept_code and kind (modified, or added for a newly disclosed figure).

Use for 'all silent REVENUE restatements of X', 'material quiet revisions only', 'which filing revised FY2023 and by how much?'.

Inputs: entity_id (required), fiscal_year, kind_filter, min_diff_pct, +1 more. Returns: result

get_silent_restatementsA
Read-onlyIdempotent

Figures a later filing reprinted differently in its comparative columns, with no amendment filed, grouped by the filing that revealed them.

The restatements get_amendments cannot see: most restatements are never filed as a 10-K/A or an amended ESEF report. fiscal_year is the year of the restated figure. diff_pct is in percent.

Use for 'did X quietly change its past numbers?', 'restatements without an amendment', 'was FY2023 CapEx revised later?'.

Inputs: entity_id (required), fiscal_year. Returns: result

get_validation_resultsA
Read-onlyIdempotent

Surface the checks Hub-Equity ran on the numbers of a filing.

Check types: accounting_equation (Assets = Liabilities + Equity), calculation_filing and calculation (a parent of the issuer's calculation linkbase against the weighted sum of its children), hub_calculation (consistency of the standardized roll-ups) and dqc_* (XBRL US data-quality rules, reported as info).

validation_type is one of: accounting_equation (Assets = Liabilities + Equity), calculation and calculation_filing (XBRL calc linkbase parent ≈ Σ children × weight), dqc_cf_sign and dqc_0015_never_negative (XBRL US Data Quality Committee sign rules). A calculation error means the check could not reconcile the parent with the child values as Hub-Equity extracted them. It is NOT a finding that the issuer's statements are wrong: report it as an unreconciled check, and open the filing before drawing any conclusion about the company.

Default status_filter = ["warning", "error"]. Provide ["valid","skipped"] to also see silent successes.

Provide at least one of filing_id or entity_id. Returns sorted by severity desc then |relative_difference| desc, capped at 100 rows.

Use when the user asks "did the balance sheet balance?" / "which totals of this filing does the check fail to reconcile?".

Inputs: entity_id, filing_id, fiscal_year, status_filter. Returns: result

list_hubsA
Read-onlyIdempotent

List the catalog of standardized Hub-Equity hubs.

Useful when you need to enumerate available metrics for a category (e.g. all balance-sheet hubs) without making N search_concept calls.

Args: category: One of income_statement, balance_sheet, cash_flow, ratio, equity_info, metadata. Omit to list across all categories. include_non_primary: True to include derived/secondary hubs. limit: Cap (max 200, default 80).

Inputs: limit, category, include_non_primary. Returns: total, matches

roll_up_metricA
Read-onlyIdempotent

Rebuild a figure from the components this issuer reported when the figure itself is not tagged. Use when get_fact finds nothing for an aggregate. Below a paid plan the value comes without algorithm and contributions.

Inputs: entity_id (required), fiscal_year (required), hub_concept_code (required), fiscal_period_type. Returns: notes, value, source, currency, +6 more

screen_companiesA
Read-onlyIdempotent

Filter the Hub-Equity universe by metadata + revenue + audit + data quality criteria.

Use this when the user wants a LIST of companies matching criteria, not a single company. Examples: "European tech companies with revenue > 1B", "US Big 4 audited firms with quality grade >= B".

min_revenue/max_revenue are in USD (ECB spot rate); an entity whose currency has no current rate is left out of a revenue filter. country is ISO-2 ('US', 'FR', ...). revenue_year keeps the entities whose latest reported revenue year is N (not the revenue of fiscal year N for every entity). min_quality_grade ∈ {A+, A, B, C, D}. sort_by ∈ {revenue_desc, revenue_asc, employees_desc, employees_asc, quality_desc, name_asc}.

Inputs: limit, sector, country, sort_by, +9 more. Returns: rows, notes, total_count, applied_filters

search_conceptA
Read-onlyIdempotent

Search Hub-Equity standardized hub concepts by code or label.

Returns up to 10 matches. Use this when you don't know the exact hub_concept_code. Accepts plain English ('Costs and Expenses') and bare hub codes ('TOTAL_ASSETS').

Inputs: query (required). Returns: matches

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools target clearly distinct resources/actions, and descriptions explicitly differentiate close pairs (get_amendments vs get_amendment_diff vs silent-restatement variants; compare_filings vs compare_entities). A few boundaries remain subtle — get_calculation_tree vs get_validation_results both touch reconciliation, and the four restatement tools require careful reading — but overlap is limited.

    Naming Consistency4/5

    All names use snake_case consistently with clear verb_noun or verb forms (get_*, find_*, search_*, list_*, compare_*, screen_*). Minor deviation: roll_up_metric uses a non-get verb, and the amendment/silent-restatement names are long, but no style mixing occurs.

    Tool Count4/5

    21 tools is on the heavier side but justified given the breadth of the domain (discovery, facts, decomposition, segments, restatements, validation, comparison, FX, screening). Each tool earns a distinct role rather than being redundant.

    Completeness5/5

    Covers the full lifecycle: entity discovery/profile, concept search and catalog, fact retrieval and roll-ups, time series, segment breakdowns, both filed and silent restatements, calculation trees, validation, data quality, cross-entity and cross-filing comparison, FX conversion, and screening. No obvious dead ends for the stated financial-data purpose.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables LLMs to download, parse, and analyze SEC EDGAR filings, including 10-K/Q reports, XBRL financial statements, and insider trading data. It provides structured access to institutional holdings, corporate events, and financial facts for comprehensive investment research.
      19
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Provides access to SEC EDGAR financial data, enabling AI agents to fetch company filings, financial metrics, and narrative sections. It supports natural-language metric searching and extracts structured data from 10-K, 10-Q, and 8-K reports.
      6
      58 PyPI
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables LLMs to process, validate, and analyze XBRL financial filings with tools for filing operations, fact extraction, taxonomy exploration, and SEC EDGAR integration.
      22
      46
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables searching SEC EDGAR for companies, retrieving recent filings (e.g., 10-K, 10-Q), and accessing structured XBRL financial facts.
      351 npm
      MIT