Skip to main content
Glama
Hub-Equity

hub-equity-mcp

Official
by Hub-Equity

compare_entities

Read-onlyIdempotent

Compare up to 10 entities across 10 financial concepts for one fiscal year, returning a matrix of consolidated values and issuer metadata.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
entity_idsYes
fiscal_yearYes
hub_concept_codesYes
fiscal_period_typeNoFY

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsYes
notesNo
fiscal_yearYes
period_alignmentNoHow 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 its own annual report labels. Compare period_start / period_end / fiscal_year on each cell to see the span actually served.calendar_year
fiscal_period_typeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds substantial behavioral detail beyond them: the 10×10 cap, the 422 failure mode, consolidated-only values, one value per (entity, hub, year), fiscal-year alignment, and the caveat that non-December filers may see different values here than from get_fact. These are exactly the operational traits an agent needs before invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then moves efficiently through limits, tool preference, return shape, and the fiscal-year nuance. Every sentence adds useful information, and the line breaks make it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description need not explain return values, yet it still summarizes the return shape (one row per entity plus a cells map) and the key fiscal-year caveat. Combined with the cap and failure-mode disclosure, it provides enough context for correct invocation in this complex comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It adds useful semantics for the key parameters: entity_ids and hub_concept_codes are bounded by the N=10/M=10 limits, fiscal_year is tied to fiscal-period alignment and FY forcing, and hub_concept_code keys the output cells. It still does not explicitly describe the expected string format of entity_ids or hub_concept_codes, and fiscal_period_type is only implied via 'FY forced,' but the core meaning is well beyond what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Build a comparison matrix for N entities × M concepts at one period.' It distinguishes itself from sibling get_fact by name and explicitly states the preferred use case, so an agent can tell exactly what it does and when it is the right tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit selection rule: 'ALWAYS prefer this over N×get_fact when comparing more than one company.' It also discloses the operational cap (N=10, M=10) and the failure mode (422 validation error), which is direct guidance for avoiding misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.