Hub-Equity MCP

Fundamentos de XBRL de la SEC y europeo (ESEF) en un solo vocabulario de conceptos, cada cifra con su presentación y la etiqueta del emisor, enmiendas y reexpresiones silenciosas rastreadas. Servidor stdio de solo lectura, Python.

Documentación

hub-equity-mcp

Datos financieros XBRL estandarizados para agentes LLM. Un servidor de Protocolo de Contexto de Modelo (MCP) que expone hechos financieros normalizados de presentaciones de la SEC de EE. UU. (EDGAR) y ESEF europeas a Claude Desktop, Cursor y cualquier cliente compatible con MCP.

Hub-Equity sirve presentaciones estandarizadas ESEF europeas junto con datos de la SEC de EE. UU. a través de un vocabulario de conceptos hub consistente, de modo que un agente puede solicitar REVENUE o TOTAL_ASSETS y obtener un valor comparable y vinculado a la fuente, ya sea que el emisor presente ante la SEC o bajo ESEF.

Madurez. La API REST pública detrás de este conector opera en producción y alimenta el chat propio de Hub-Equity. El paquete sigue Versionado Semántico; mantiene el clasificador Beta mientras su base de instalación sea joven.

Por qué

  • Un vocabulario para dos regímenes. Los conceptos us-gaap de la SEC y ifrs-full de ESEF se asignan a un único conjunto estandarizado de códigos hub, de modo que la comparación entre emisores y entre taxonomías funciona de inmediato.
  • Cada número está vinculado a su fuente. Los hechos llevan su presentación, período y procedencia, para que un agente pueda citar en lugar de adivinar.
  • Consciente de reexpresiones. Enmiendas explícitas y reexpresiones silenciosas (una cifra que una presentación posterior reimprimió de forma diferente, sin enmienda presentada), cada cambio con la presentación que lo originó.
  • Solo lectura y mundo cerrado. Cada herramienta anuncia readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false según la especificación MCP, para que los clientes puedan razonar sobre seguridad y almacenamiento en caché sin introspección.
  • Sin credenciales de base de datos. El paquete publicado solo se comunica con la API REST pública (https://api.hub-equity.com) a través de HTTPS. Nunca incluye ni requiere una clave de base de datos.

Instalación

pipx run hub-equity-mcp

pipx run (o uvx hub-equity-mcp) descarga e inicia el servidor en un entorno aislado; pip install hub-equity-mcp también funciona. Requiere Python 3.12 o superior.

Autenticación y acceso

El servidor solo se comunica con la API REST pública, que requiere una clave hubq_ (variable de entorno HUBEQUITY_API_KEY).

  • Clave gratuita. Crea una cuenta y una clave en un minuto en https://hub-equity.com/settings/api-keys.. Ofrece el conjunto básico de herramientas (búsqueda de entidades, hechos normalizados, series temporales, segmentos, filtro, calificación de calidad de datos, conversión de divisas y más).
  • Plan de pago. Desbloquea las herramientas premium (diferencias de reexpresión, árboles de cálculo, comparación entre períodos, comparación entre emisores, verificaciones de validación, conceptos de extensión) y aumenta el límite de tasa. Consulta la tabla a continuación.

El paquete publicado nunca accede directamente a la base de datos, solo a la API REST.

Configura tu cliente

Claude Desktop

Agrega a 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"
      }
    }
  }
}

Sin HUBEQUITY_API_KEY, cada llamada a herramienta responde HUBEQUITY_API_KEY is not set con el enlace a una clave gratuita.

Cursor

Agrega a .cursor/mcp.json (raíz del proyecto) o a la configuración global de MCP de Cursor:

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

Variables de entorno

  • HUBEQUITY_API_KEY (obligatoria): una clave hubq_. Una clave gratuita abre las herramientas básicas; un plan de pago abre las herramientas premium y el límite de tasa más alto.
  • HUBEQUITY_API_URL (opcional): el valor predeterminado es https://api.hub-equity.com. https:// se aplica siempre que se establezca una clave (el servidor se niega a enviar la clave Bearer en texto plano a un host que no sea de bucle local).

Capacidades

TipoQué
HerramientasHerramientas de solo lectura: descubrimiento, hechos, series temporales, segmentos, verificaciones forenses (tabla a continuación)
RecursosCatálogo hub, esquema de estados, catálogo de niveles, guías de uso, instantánea de cobertura
PromptsPlantillas analíticas (lista a continuación)
API de finalizaciónAutocompletado {hub_code}

Herramientas

El catálogo de niveles legible por máquina se sirve como recurso (hub-equity://catalog/tool-tiers). Las herramientas gratuitas cubren descubrimiento e identidad; las herramientas Pro, disponibles en todo plan de pago (Builder, Team, Enterprise), añaden profundidad forense (árboles de cálculo, diferencias de reexpresión en enmiendas y reexpresiones silenciosas, comparación entre períodos, comparación entre emisores, resultados de validación, conceptos de extensión). El nivel de una herramienta refleja el endpoint REST que llama: el endpoint de cada herramienta Pro requiere el alcance facts.premium en el servidor, y los límites gratuitos (get_fact_decomposition profundidad 1 sin componentes de consolidación ni cortes dimensionales, screen_companies 20 resultados sin el filtro de calidad, get_segments ejes sin miembros, roll_up_metric el valor sin su regla) los aplica la API, no solo este paquete.

HerramientaNivelQué hace
find_entity(query)GratuitaBusca por nombre, ticker o CIK. Devuelve el entity_id que necesitan otras herramientas.
get_fact(entity_id, hub_concept_code, fiscal_year, fiscal_period_type?)GratuitaUn valor normalizado más su fuente de presentación.
get_fact_decomposition(entity_id, fiscal_year, hub_concept_code? or qname?, depth?)Gratuita (profundidad 1, solo linkbase) / Pro (profundidad 2-3)Consolidación hub, hijos del linkbase de cálculo XBRL y desglose dimensional. Gratuita: la capa de linkbase, sin los componentes de consolidación ni los cortes dimensionales.
search_concept(query)GratuitaResuelve un código hub a partir de una etiqueta o un código parcial.
list_hubs(category?, include_non_primary?, limit?)GratuitaEnumera el catálogo hub estandarizado por categoría.
get_entity_profile(entity_id)GratuitaSector, auditor, empleados, fin de año fiscal, presentaciones recientes.
get_metric_history(entity_id, hub_concept_code, n_years?)GratuitaSerie temporal de N años con crecimiento interanual y CAGR.
get_segments(entity_id, hub_concept_code, fiscal_year)Gratuita (limitada)Desglose dimensional de eje/miembro (segmento, geografía). Gratuita: los ejes sin sus miembros; Pro: cada miembro.
get_amendments(entity_id, fiscal_year?)GratuitaResumen de reexpresión 10-K/A: cada enmienda, sus cambios por concepto (50 por enmienda).
get_silent_restatements(entity_id, fiscal_year?)GratuitaReexpresiones silenciosas: cifras que una presentación posterior reimprimió de forma diferente en sus columnas comparativas, sin enmienda presentada, agrupadas por la presentación que las reveló (50 cambios por presentación).
compare_entities(entity_ids, hub_concept_codes, fiscal_year)Pro (hasta 10x10)Matriz de comparación entre emisores en un período, alineada por año calendario. Acepta UUID, tickers o TICKER.MIC.
roll_up_metric(entity_id, hub_concept_code, fiscal_year)Gratuita (limitada)Calcula un valor a partir de hijos con signo cuando no está etiquetado directamente. Gratuita: el valor; Pro: la regla y las contribuciones con signo detrás.
convert_currency(amount, from_currency, to_currency, date?, rate_type?)GratuitaConversión de divisas con tipo de referencia del BCE (cierre, promedio YTD, promedio del año anterior).
screen_companies(country?, sector?, min_revenue?, ..., sort_by?, limit?)Gratuita (límite 20, sin filtro de calidad) / Pro (mayor)Filtra el universo de emisores por metadatos, ingresos, auditoría y calidad de datos.
get_amendment_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)ProDiferencias 10-K/A por concepto: materialidad, filtros de tipo y concepto, etiqueta, delta absoluto, ambas presentaciones como fuentes.
get_silent_restatement_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)ProLa misma diferencia en las reexpresiones silenciosas.
get_calculation_tree(filing_id, link_role?)ProLinkbase de cálculo de la presentación: cada total y sus componentes, signo declarado junto al signo que respaldan los valores presentados.
compare_filings(entity_id, fiscal_year_a, fiscal_year_b, hub_concept_codes?)ProComparación entre períodos de la misma entidad con indicadores de nuevo / eliminado / cambio de signo / reexpresión.
get_extension_concepts(entity_id, status_filter?, limit?)Proqnames específicos del emisor declarados fuera de las taxonomías estándar.
get_data_quality_grade(entity_id)GratuitaCalificación de A+ a D (o ninguna), las dos puertas y los recuentos detrás, frescura, desglose directo vs. derivado.
get_validation_results(filing_id?, entity_id?, fiscal_year?, status_filter?)ProVerificaciones contables XBRL y del linkbase de cálculo.

Recursos

URITipoPropósito
hub-equity://catalog/hubsjsonCatálogo hub estandarizado completo con etiquetas EN/FR y categoría.
hub-equity://catalog/categoriesjsonRecuentos hub por categoría.
hub-equity://catalog/tool-tiersmarkdownCatálogo de herramientas gratuitas vs. Pro y condiciones de acceso.
hub-equity://schema/financial-statementsmarkdownEstructura de estados y reglas de lectura.
hub-equity://catalog/hub/{hub_code}templateEntrada de catálogo reenviada para un hub.
hub-equity://entity/{entity_id}/profiletemplateInstantánea completa de entidad.
hub-equity://prompts/best-practicesmarkdownGuía de indicaciones del sistema para integraciones de cliente. Cárgalo antes de llamar a cualquier herramienta.
hub-equity://prompts/tool-usage-examplesmarkdownEjemplos de pocas muestras por herramienta (buenos y contraejemplos).
hub-equity://prompts/data-coveragejsonInstantánea de conjunto de datos en vivo (recuentos de emisores y presentaciones, fuentes, taxonomías, rango de años fiscales). Caché de 24 h.

Prompts

Ocho plantillas analíticas: peer_comparison, quality_of_earnings, restatement_audit, sector_overview, valuation_screen, goodwill_impairment_risk, working_capital_diagnostic, cash_flow_consistency.

Para desarrolladores de clientes

Antes de llamar a cualquier herramienta, obtén hub-equity://prompts/best-practices e inyecta el markdown en tu indicación del sistema. Esto hace que tu cliente siga las mismas reglas de enrutamiento de herramientas, citación de fuentes y fidelidad numérica que el chat propio de Hub-Equity.

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

Límites de tasa

ModoLímiteNotas
Clave gratuita120 solicitudes / minutoHerramientas básicas.
Clave Builder300 solicitudes / minutoHerramientas premium desbloqueadas.
Clave Team600 solicitudes / minutoHerramientas premium desbloqueadas.
Clave Enterprise1 000 solicitudes / minutoNegociable.

El depósito es por clave de API.

Ante un 429 por minuto, el cliente reintenta con retroceso exponencial (hasta 3 veces) antes de lanzar RateLimitExceeded. Una asignación diaria o mensual agotada se lanza de inmediato, con el mensaje de la API.

Solución de problemas

SíntomaCausaSolución
429 Too Many Requests / RateLimitExceededLímite de tasa alcanzado (120/min con clave gratuita, 300 a 1 000/min con clave de pago)Cambia a un plan de pago o reduce la expansión de llamadas a herramientas. El cliente ya retrocede hasta 3 veces.
HUBEQUITY_API_KEY is not set en cada llamada a herramientaSin clave en el bloque env del clienteEstablece HUBEQUITY_API_KEY; una clave gratuita toma un minuto en https://hub-equity.com/settings/api-keys.
HubEquityRestError: HTTP 401Una clave hubq_ inválida, caducada o revocada (INVALID_API_KEY)Crea una nueva clave en https://hub-equity.com/settings/api-keys.
HubEquityRestError: HTTP 403El espacio de trabajo de la clave está en el plan gratuito y la llamada necesita una herramienta Pro, o un límite gratuito (depth > 1, limit > 20, min_quality_grade)Mejora el plan o mantente dentro de los límites gratuitos.
RateLimitExceeded cuyo cuerpo lleva DAILY_QUOTA_EXCEEDED / MONTHLY_QUOTA_EXCEEDEDLa asignación de volumen del espacio de trabajo está agotada (Gratis 200 al día / 5 000 al mes, Builder 50 000, Team 500 000 al mes); se lanza de inmediato, sin reintentoEspera a resets_on o mejora el plan.
Errores de conexión o tiempo de esperaProblema de red para llegar a api.hub-equity.com, o un HUBEQUITY_API_URL incorrectoVerifica la conectividad; confirma que HUBEQUITY_API_URL (si está establecido) apunte a un host https:// accesible.
ValueError: HUBEQUITY_API_URL must use https://Hay una clave establecida pero la URL es http:// en texto plano en un host que no es de bucle localUsa https:// o desestablece HUBEQUITY_API_URL para volver a la API predeterminada.
El servidor no aparece en Claude Desktop o CursorError de JSON de configuración, o pipx no está en el PATH del clienteValida el JSON; usa la ruta absoluta de pipx (o uvx) si el cliente no puede resolverla.

Ejecutar localmente

python -m hub_equity_mcp.server

O manéjalo de forma interactiva con el inspector de MCP:

npx @modelcontextprotocol/inspector python -m hub_equity_mcp.server

El inspector lista cada herramienta, recurso y prompt y te permite llamar a cada uno.

Desarrollo

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

Las pruebas son herméticas: las pruebas de herramientas simulan la API REST con respx, por lo que no se necesita un backend en vivo.

Licencia

Apache-2.0. Consulta LICENSE y NOTICE. Este conector es un cliente abierto a la API REST pública de Hub-Equity; el acceso a datos premium sigue restringido por clave de API, plan y límites de tasa en el lado del servicio.