Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Hub-Equity MCP

PYPI · HUB-EQUITY-MCP

Standardized, restatement-aware SEC + European (ESEF) XBRL fundamentals, served to your agent.

Available components

+3 this week 64 Trust /100

Last scanned (15 hours ago)

Scores higher than 61% of PyPI servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 28 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Build provenance is cryptographically sound, but it attests a different repository to the one declared in the registry. Most often the declared URL is simply stale. View diagnostics → Unverified
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 29 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3861 tokens (~137/item across 28 items; 21 tools + 7 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (14)

  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (2)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Malware scan in Supply Chain SecurityMalware scan not yet available for this package.
  • Provenance in Provenance & TransparencyBuild provenance is cryptographically sound, but it attests a different repository to the one declared in the registry. Most often the declared URL is simply stale.

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Registry listing versus package

Where what the registry lists and what we observed about the package disagree. This is read from the stored diagnostics and is never an input to the score.

  • Repository

    Registry says
    https://github.com/Hub-Equity/hub-equity-mcp
    Package shows
    GLaine1/Hub-Equity_MVP

    The attestation is cryptographically sound but binds a different repository to the one the registry declares. Most often the declared URL is simply stale. See the evidence →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −14
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 30 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
  • 26 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/hub-equity-mcp@2.0.0

Provenance Repository mismatch

The attestation is cryptographically sound but binds a different repository to the one the registry declares. Most often the declared URL is simply stale.

Result Repository mismatch
Ecosystem pypi
Reason Repository mismatch
Discovered via Registry attestation endpoint
Source repo GLaine1/Hub-Equity_MVP
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/GLaine1/Hub-Equity_MVP/.github/workflows/publish-mcp.yml@refs/tags/mcp-v2.0.0
Rekor log index 3106376249
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:99b1c8ee31b6501499ed93760e1db22843e51c2fff477622f597f1c738ec1fb5

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 28 packages
Packages resolved 28
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~3,597 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
compare_entities ~191

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.

NameTypeReqDescription
entity_idsarrayyes–
fiscal_period_typestring––
fiscal_yearintegeryes–
hub_concept_codesarrayyes–
NameTypeReqDescription
fiscal_period_typestringyes–
fiscal_yearintegeryes–
notesarray––
period_alignmentstring–How rows were aligned across issuers. 'calendar_year': a cell is the row whose period_end falls in [YYYY-01-01, YYYY-12-31], so a non-December filer may be shown a different fiscal year than the one…
rowsarrayyes–

No examples provided.

compare_filings ~345

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).

NameTypeReqDescription
entity_idstringyes–
fiscal_period_typestring––
fiscal_year_aintegeryes–
fiscal_year_bintegeryes–
form_type–––
hub_concept_codes–––
NameTypeReqDescription
result–yes–

No examples provided.

convert_currency ~258

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?".

NameTypeReqDescription
amountnumberyes–
date–––
from_currencystringyes–
rate_typestring––
to_currencystringyes–
NameTypeReqDescription
result–yes–

No examples provided.

find_entity ~75

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.

NameTypeReqDescription
querystringyes–
NameTypeReqDescription
matchesarrayyes–

No examples provided.

get_amendment_diff ~170

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'.

NameTypeReqDescription
entity_idstringyes–
fiscal_year–––
hub_concept_code–––
kind_filter–––
min_diff_pctnumber––
NameTypeReqDescription
result–yes–

No examples provided.

get_amendments ~75

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?'.

NameTypeReqDescription
entity_idstringyes–
fiscal_year–––
NameTypeReqDescription
result–yes–

No examples provided.

get_calculation_tree ~184

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'.

NameTypeReqDescription
filing_idstringyes–
link_role–––
NameTypeReqDescription
result–yes–

No examples provided.

get_data_quality_grade ~130

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.

NameTypeReqDescription
entity_idstringyes–
NameTypeReqDescription
result–yes–

No examples provided.

get_entity_profile ~78

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 <company>' / 'qui est <entreprise>'.

NameTypeReqDescription
entity_idstringyes–
NameTypeReqDescription
result–yes–

No examples provided.

get_extension_concepts ~152

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?'.

NameTypeReqDescription
entity_idstringyes–
limitinteger––
status_filterstring––
NameTypeReqDescription
result–yes–

No examples provided.

get_fact ~166

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.

NameTypeReqDescription
entity_idstringyes–
fiscal_period_typestring––
fiscal_yearintegeryes–
hub_concept_codestringyes–
NameTypeReqDescription
result–yes–

No examples provided.

get_fact_decomposition ~280

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.

NameTypeReqDescription
depthinteger––
entity_idstringyes–
fiscal_period_typestring––
fiscal_yearintegeryes–
hub_concept_code–––
qname–––
NameTypeReqDescription
result–yes–

No examples provided.

get_metric_history ~101

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'.

NameTypeReqDescription
entity_idstringyes–
fiscal_period_typestring––
hub_concept_codestringyes–
n_yearsinteger––
NameTypeReqDescription
result–yes–

No examples provided.

get_segments ~128

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.

NameTypeReqDescription
entity_idstringyes–
fiscal_period_typestring––
fiscal_yearintegeryes–
hub_concept_codestringyes–
NameTypeReqDescription
result–yes–

No examples provided.

get_silent_restatement_diff ~189

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?'.

NameTypeReqDescription
entity_idstringyes–
fiscal_year–––
hub_concept_code–––
kind_filter–––
min_diff_pctnumber––
NameTypeReqDescription
result–yes–

No examples provided.

get_silent_restatements ~143

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?'.

NameTypeReqDescription
entity_idstringyes–
fiscal_year–––
NameTypeReqDescription
result–yes–

No examples provided.

get_validation_results ~358

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?".

NameTypeReqDescription
entity_id–––
filing_id–––
fiscal_year–––
status_filter–––
NameTypeReqDescription
result–yes–

No examples provided.

list_hubs ~127

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).

NameTypeReqDescription
category–––
include_non_primaryboolean––
limitinteger––
NameTypeReqDescription
matchesarrayyesHubs matching the filters, sorted by category then catalog order
totalintegeryesNumber of items returned (at most `limit`, itself capped at 200)

No examples provided.

roll_up_metric ~91

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`.

NameTypeReqDescription
entity_idstringyes–
fiscal_period_typestring––
fiscal_yearintegeryes–
hub_concept_codestringyes–
NameTypeReqDescription
algorithmstringyesHow the value was obtained for this entity, on a paid plan: tagged, equivalent_concept or sum_of_components ('unknown' otherwise).
contributionsarray––
currency–––
fiscal_period_typestringyes–
fiscal_yearintegeryes–
notesarray––
parent_codestringyes–
parent_label–––
source–––
value–––

No examples provided.

screen_companies ~285

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}.

NameTypeReqDescription
auditor_name–––
bankruptcy_flag–––
country–––
gics_sector–––
limitinteger––
max_employees–––
max_revenue–––
min_employees–––
min_quality_grade–––
min_revenue–––
revenue_year–––
sector–––
sort_bystring––
NameTypeReqDescription
applied_filtersobject––
notesarray––
rowsarrayyes–
total_countintegeryesNumber of rows returned (capped at limit)

No examples provided.

search_concept ~71

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').

NameTypeReqDescription
querystringyes–
NameTypeReqDescription
matchesarrayyes–

No examples provided.

Install

How do I install the Hub-Equity MCP server?

Hub-Equity MCP runs locally as a PyPI package, launched with uvx hub-equity-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · hub-equity-mcp

# add to Claude Code
claude mcp add com-hub-equity-hub-equity-mcp -- uvx hub-equity-mcp
Common questions

What is the Hub-Equity MCP server?

Hub-Equity MCP is listed in the public MCP registry as com.hub-equity/hub-equity-mcp. Standardized, restatement-aware SEC + European (ESEF) XBRL fundamentals, served to your agent. This page covers its PyPI package (hub-equity-mcp).

Is the Hub-Equity MCP server safe to use?

Hub-Equity MCP scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Hub-Equity MCP server expose?

Hub-Equity MCP exposes 21 tools: find_entity, get_fact, get_fact_decomposition, search_concept, list_hubs, and 16 more. Their descriptions and schemas cost roughly 3,597 tokens of context every time the server is loaded.

Is the Hub-Equity MCP server still maintained?

Hub-Equity MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Hub-Equity MCP server under?

Hub-Equity MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the Hub-Equity MCP server?

VerifyMCP ran 14 checks on Hub-Equity MCP, covering Known CVEs, Install scripts, Dependency health, Source repository and 10 more. 2 items could not be completed, a gap on our side rather than a finding about Hub-Equity MCP: Malware scan and Provenance. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.