Hub-Equity MCP

Fundamentos de XBRL da SEC e europeu (ESEF) em um único vocabulário de conceitos, cada valor com seu arquivamento e a tag do emissor, alterações e reafirmações silenciosas rastreadas. Servidor stdio somente leitura, Python.

Documentação

hub-equity-mcp

Dados financeiros XBRL padronizados para agentes de LLM. Um servidor Model Context Protocol (MCP) que expõe fatos financeiros normalizados de arquivamentos da SEC (EDGAR) dos EUA e ESEF europeus para Claude Desktop, Cursor e qualquer cliente compatível com MCP.

O Hub-Equity serve arquivamentos padronizados ESEF europeus juntamente com dados da SEC dos EUA por meio de um vocabulário consistente de conceitos de hub, para que um agente possa solicitar REVENUE ou TOTAL_ASSETS e obter um valor comparável e vinculado à fonte independentemente de o emissor arquivar na SEC ou sob o ESEF.

Maturidade. A API REST pública por trás deste conector opera em produção e alimenta o chat do próprio Hub-Equity. O pacote segue o Versionamento Semântico; ele mantém o classificador Beta enquanto sua base de instalação é jovem.

Por quê

  • Um vocabulário para dois regimes. Conceitos us-gaap da SEC e ifrs-full do ESEF são mapeados para um único conjunto padronizado de códigos de hub, de modo que a comparação entre emissores e entre taxonomias funcione imediatamente.
  • Todo número é vinculado à fonte. Os fatos carregam seu arquivamento, período e proveniência, para que um agente possa citar em vez de adivinhar.
  • Ciente de reafirmações. Emendas explícitas e reafirmações silenciosas (um valor que um arquivamento posterior reimprimiu de forma diferente, sem emenda registrada), cada alteração com o arquivamento que a realizou.
  • Somente leitura e mundo fechado. Cada ferramenta anuncia readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false conforme a especificação MCP, para que os clientes possam raciocinar sobre segurança e cache sem introspecção.
  • Sem credenciais de banco de dados. O pacote publicado fala apenas com a API REST pública (https://api.hub-equity.com) via HTTPS. Ele nunca envia nem exige uma chave de banco de dados.

Instalação

pipx run hub-equity-mcp

pipx run (ou uvx hub-equity-mcp) baixa e inicia o servidor em um ambiente isolado; pip install hub-equity-mcp também funciona. Requer Python 3.12 ou mais recente.

Autenticação e acesso

O servidor fala apenas com a API REST pública, que precisa de uma chave hubq_ (variável de ambiente HUBEQUITY_API_KEY).

  • Chave gratuita. Crie uma conta e uma chave em um minuto em https://hub-equity.com/settings/api-keys. Oferece o conjunto básico de ferramentas (busca de entidades, fatos normalizados, séries temporais, segmentos, triagem, nota de qualidade de dados, conversão de câmbio e muito mais).
  • Plano pago. Desbloqueia as ferramentas premium (diferenças de reafirmação, árvores de cálculo, comparação entre períodos, comparação entre emissores, verificações de validação, conceitos de extensão) e aumenta o limite de taxa. Veja a tabela abaixo.

O pacote publicado nunca acessa o banco de dados diretamente, apenas a API REST.

Configure seu cliente

Claude Desktop

Adicione 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"
      }
    }
  }
}

Sem HUBEQUITY_API_KEY, cada chamada de ferramenta responde HUBEQUITY_API_KEY is not set com o link para uma chave gratuita.

Cursor

Adicione a .cursor/mcp.json (raiz do projeto) ou às configurações globais do MCP do Cursor:

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

Variáveis de ambiente

  • HUBEQUITY_API_KEY (obrigatório): uma chave hubq_. Uma chave gratuita abre as ferramentas básicas; um plano pago abre as ferramentas premium e o limite de taxa mais alto.
  • HUBEQUITY_API_URL (opcional): o padrão é https://api.hub-equity.com. https:// é aplicado sempre que uma chave está definida (o servidor se recusa a enviar a chave Bearer em texto simples para um host não loopback).

Capacidades

TipoO quê
FerramentasFerramentas somente leitura: descoberta, fatos, séries temporais, segmentos, verificações forenses (tabela abaixo)
RecursosCatálogo do hub, esquema de demonstrações, catálogo de níveis, guias de uso, instantâneo de cobertura
PromptsModelos analíticos (lista abaixo)
API de conclusãoAutocompletar {hub_code}

Ferramentas

O catálogo de níveis legível por máquina é servido como um recurso (hub-equity://catalog/tool-tiers). As ferramentas gratuitas cobrem descoberta e identidade; as ferramentas Pro, disponíveis em todos os planos pagos (Builder, Team, Enterprise), adicionam profundidade forense (árvores de cálculo, diferenças de reafirmação em emendas e reafirmações silenciosas, comparação entre períodos, comparação entre emissores, resultados de validação, conceitos de extensão). O nível de uma ferramenta espelha o endpoint REST que ela chama: o endpoint de toda ferramenta Pro exige o escopo facts.premium no lado do servidor, e os limites gratuitos (get_fact_decomposition profundidade 1 sem componentes de roll-up ou fatias dimensionais, screen_companies 20 resultados sem o filtro de qualidade, get_segments eixos sem membros, roll_up_metric o valor sem sua regra) são aplicados pela API, não apenas por este pacote.

FerramentaNívelO que faz
find_entity(query)GratuitaBusca por nome, ticker ou CIK. Retorna o entity_id que outras ferramentas precisam.
get_fact(entity_id, hub_concept_code, fiscal_year, fiscal_period_type?)GratuitaUm valor normalizado mais sua fonte de arquivamento.
get_fact_decomposition(entity_id, fiscal_year, hub_concept_code? or qname?, depth?)Gratuita (profundidade 1, somente linkbase) / Pro (profundidade 2-3)Roll-up do hub, filhos do linkbase de cálculo XBRL e detalhamento dimensional. Gratuita: a camada de linkbase, sem os componentes de roll-up e as fatias dimensionais.
search_concept(query)GratuitaResolve um código de hub a partir de um rótulo ou código parcial.
list_hubs(category?, include_non_primary?, limit?)GratuitaEnumera o catálogo padronizado do hub por categoria.
get_entity_profile(entity_id)GratuitaSetor, auditor, funcionários, fim do ano fiscal, arquivamentos recentes.
get_metric_history(entity_id, hub_concept_code, n_years?)GratuitaSérie temporal de N anos com crescimento YoY e CAGR.
get_segments(entity_id, hub_concept_code, fiscal_year)Gratuita (limitada)Detalhamento dimensional de eixo/membro (segmento, geografia). Gratuita: os eixos sem seus membros; Pro: todos os membros.
get_amendments(entity_id, fiscal_year?)GratuitaResumo de reafirmação 10-K/A: cada emenda, suas alterações por conceito (50 por emenda).
get_silent_restatements(entity_id, fiscal_year?)GratuitaReafirmações silenciosas: valores que um arquivamento posterior reimprimiu de forma diferente em suas colunas comparativas, sem emenda registrada, agrupados pelo arquivamento que os revelou (50 alterações por arquivamento).
compare_entities(entity_ids, hub_concept_codes, fiscal_year)Pro (até 10x10)Matriz de comparação entre emissores em um período, alinhada ao ano calendário. Aceita UUIDs, tickers ou TICKER.MIC.
roll_up_metric(entity_id, hub_concept_code, fiscal_year)Gratuita (limitada)Calcula um valor a partir de filhos assinados quando não está diretamente marcado. Gratuita: o valor; Pro: a regra e as contribuições assinadas por trás dele.
convert_currency(amount, from_currency, to_currency, date?, rate_type?)GratuitaConversão de câmbio com taxa de referência do BCE (fechamento, média YTD, média do ano anterior).
screen_companies(country?, sector?, min_revenue?, ..., sort_by?, limit?)Gratuita (limite 20, sem filtro de qualidade) / Pro (maior)Filtra o universo de emissores por metadados, receita, auditoria e qualidade de dados.
get_amendment_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)ProDiferenças 10-K/A por conceito: materialidade, filtros de tipo e conceito, rótulo, delta absoluto, ambos os arquivamentos como fontes.
get_silent_restatement_diff(entity_id, fiscal_year?, hub_concept_code?, min_diff_pct?, kind_filter?)ProA mesma diferença nas reafirmações silenciosas.
get_calculation_tree(filing_id, link_role?)ProLinkbase de cálculo do arquivamento: cada total e seus componentes, sinal declarado ao lado do sinal que os valores arquivados suportam.
compare_filings(entity_id, fiscal_year_a, fiscal_year_b, hub_concept_codes?)ProComparação entre períodos da mesma entidade com sinalizações de novo / removido / inversão de sinal / reafirmação.
get_extension_concepts(entity_id, status_filter?, limit?)ProQnames específicos do emissor declarados fora das taxonomias padrão.
get_data_quality_grade(entity_id)GratuitaNota de A+ a D (ou nenhuma), os dois portões e contagens por trás dela, atualidade, divisão direto-vs-derivado.
get_validation_results(filing_id?, entity_id?, fiscal_year?, status_filter?)ProVerificações contábeis XBRL e do linkbase de cálculo.

Recursos

URITipoPropósito
hub-equity://catalog/hubsjsonCatálogo completo padronizado do hub com rótulos EN/FR e categoria.
hub-equity://catalog/categoriesjsonContagens do hub por categoria.
hub-equity://catalog/tool-tiersmarkdownCatálogo de ferramentas Gratuitas vs Pro e condições de acesso.
hub-equity://schema/financial-statementsmarkdownEstrutura de demonstrações e regras de leitura.
hub-equity://catalog/hub/{hub_code}templateEntrada de catálogo encaminhada para um hub.
hub-equity://entity/{entity_id}/profiletemplateInstantâneo completo da entidade.
hub-equity://prompts/best-practicesmarkdownOrientação de prompt de sistema para integrações de cliente. Carregue antes de chamar qualquer ferramenta.
hub-equity://prompts/tool-usage-examplesmarkdownExemplos few-shot por ferramenta (bons e anti-padrões).
hub-equity://prompts/data-coveragejsonInstantâneo ao vivo do conjunto de dados (contagens de emissores e arquivamentos, fontes, taxonomias, intervalo de anos fiscais). Cache de 24h.

Prompts

Oito modelos analíticos: peer_comparison, quality_of_earnings, restatement_audit, sector_overview, valuation_screen, goodwill_impairment_risk, working_capital_diagnostic, cash_flow_consistency.

Para desenvolvedores de clientes

Antes de chamar qualquer ferramenta, busque hub-equity://prompts/best-practices e injete o markdown no seu prompt de sistema. Isso faz seu cliente seguir as mesmas regras de roteamento de ferramentas, citação de fontes e fidelidade numérica do chat do próprio 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.

Limites de taxa

ModoLimiteNotas
Chave gratuita120 solicitações / minutoFerramentas básicas.
Chave Builder300 solicitações / minutoFerramentas premium desbloqueadas.
Chave Team600 solicitações / minutoFerramentas premium desbloqueadas.
Chave Enterprise1 000 solicitações / minutoNegociável.

O bucket é por chave de API.

Em um 429 por minuto, o cliente tenta novamente com backoff exponencial (até 3 vezes) antes de levantar RateLimitExceeded. Uma cota diária ou mensal esgotada é levantada imediatamente, com a mensagem da API.

Solução de problemas

SintomaCausaCorreção
429 Too Many Requests / RateLimitExceededLimite de taxa atingido (120/min com chave gratuita, 300 a 1 000/min com chave paga)Mude para um plano pago ou reduza a dispersão de chamadas de ferramentas. O cliente já faz backoff até 3 vezes.
HUBEQUITY_API_KEY is not set em toda chamada de ferramentaSem chave no bloco env do clienteDefina HUBEQUITY_API_KEY; uma chave gratuita leva um minuto em https://hub-equity.com/settings/api-keys.
HubEquityRestError: HTTP 401Uma chave hubq_ inválida, expirada ou revogada (INVALID_API_KEY)Crie uma nova chave em https://hub-equity.com/settings/api-keys.
HubEquityRestError: HTTP 403O workspace da chave está no plano gratuito e a chamada precisa de uma ferramenta Pro, ou um limite gratuito (depth > 1, limit > 20, min_quality_grade)Faça upgrade do plano ou permaneça dentro dos limites gratuitos.
RateLimitExceeded cujo corpo carrega DAILY_QUOTA_EXCEEDED / MONTHLY_QUOTA_EXCEEDEDA cota de volume do workspace está esgotada (Gratuito 200 por dia / 5 000 por mês, Builder 50 000, Team 500 000 por mês); levantada imediatamente, sem nova tentativaAguarde resets_on ou faça upgrade do plano.
Erros de conexão ou tempo limiteProblema de rede ao acessar api.hub-equity.com, ou um HUBEQUITY_API_URL incorretoVerifique a conectividade; confirme que HUBEQUITY_API_URL (se definido) aponta para um host https:// acessível.
ValueError: HUBEQUITY_API_URL must use https://Uma chave está definida, mas a URL é http:// simples em um host não loopbackUse https:// ou desdefina HUBEQUITY_API_URL para voltar à API padrão.
O servidor não aparece no Claude Desktop ou CursorErro de JSON na configuração, ou pipx não está no PATH do clienteValide o JSON; use o caminho absoluto de pipx (ou uvx) se o cliente não conseguir resolvê-lo.

Execute localmente

python -m hub_equity_mcp.server

Ou conduza-o interativamente com o inspetor MCP:

npx @modelcontextprotocol/inspector python -m hub_equity_mcp.server

O inspetor lista todas as ferramentas, recursos e prompts e permite chamar cada um deles.

Desenvolvimento

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

Os testes são herméticos: os testes de ferramentas simulam a API REST com respx, então nenhum backend ao vivo é necessário.

Licença

Apache-2.0. Veja LICENSE e NOTICE. Este conector é um cliente aberto para a API REST pública do Hub-Equity; o acesso a dados premium permanece controlado por chave de API, plano e limites de taxa no lado do serviço.