Frihet MCP Server

O primeiro servidor MCP nativo de IA para um ERP espanhol. Crie faturas, gerencie despesas, acompanhe clientes, lide com produtos, orçamentos e webhooks — tudo por meio de linguagem natural com qualquer assistente de IA. 31 ferramentas, bilíngue ES/EN.

Documentação

frihet-mcp

Servidor MCP nativo com IA para gestão empresarial.
Servidor MCP nativo con IA para gestión empresarial.

Funciona com Claude · ChatGPT · Cursor · Windsurf · Cline · Antigravity · Codex · Copilot · Gemini CLI — e qualquer cliente compatível com MCP.

npm version npm downloads Smithery installs MCP Registry Listed in GitHub MCP Registry license 156 canonical catalogue operations node >=20 TypeScript

Frihet MCP — talk to your ERP in natural language


Distribuição

CanalStatusInstalação
npmAtivonpx @frihet/mcp-server
Endpoint remotoAtivohttps://mcp.frihet.io/mcp (instalação zero, OAuth ou chave de API)
SmitheryAtivosmithery.ai/servers/frihet/frihet-mcp
MCP RegistryAtivoregistry.modelcontextprotocol.io
GitHub MCP RegistryAtivogithub.com/mcp/io.frihet/erp
GlamaAtivoglama.ai/mcp/servers/Frihet-io/frihet-mcp
mcp.soAuto-indexado (não verificado)mcp.so — indexa a partir do npm + GitHub
PulseMCPAuto-indexado (não verificado)pulsemcp.com — indexa a partir do npm + GitHub
Cursor MarketplaceEm brevecursor.com/marketplace
ChatGPT AppsEm brevechatgpt.com
Anthropic Claude DirectoryEm breveclaude.ai/settings/connectors

Fonte da verdade: o catálogo contém 156 operações canônicas. O perfil completo local oferece 161 nomes de ferramentas, 11 recursos e 10 prompts (156 operações canônicas mais 5 aliases fiscais). O perfil agrupado hospedado oferece 164 nomes de ferramentas, 7 recursos e 10 prompts (os mesmos nomes mais 3 ferramentas de descoberta, com recursos apoiados por API mantidos apenas localmente). O perfil OpenAI revisado separadamente oferece 33 nomes de ferramentas, 0 recursos e 0 prompts. A associação ao catálogo não é uma garantia de que uma API de suporte esteja habilitada para cada workspace.


O que é isto

Um servidor MCP que conecta seu assistente de IA ao Frihet. Crie faturas conversando. Consulte despesas em linguagem natural. Gerencie todo o seu negócio a partir da sua IDE.

You:     "Create an invoice for TechStart SL, 40 hours of consulting at 75 EUR/hour, due March 1st"
Claude:  Done. Invoice INV-2026-089 created. Total: 3,000.00 EUR + 21% IVA = 3,630.00 EUR.

156 operações canônicas. Cinco aliases fiscais. Dez prompts. O pacote local oferece 11 recursos; o Worker hospedado deliberadamente oferece os 7 recursos estáticos, enquanto os recursos de workspace apoiados por API permanecem apenas no perfil local.


Experimente instantaneamente (sem cadastro)

Teste sem nenhuma configuração — sem conta, sem chave de API:

FRIHET_DEMO=1 npx -y @frihet/mcp-server

No modo demo, o servidor responde com exemplos de fixtures realistas (faturas espanholas com IVA/IGIC, despesas, clientes, produtos, uma conta bancária e mais) — cada registro usa IDs com prefixo demo_ e o servidor imprime um banner DEMO MODE na inicialização. Nada é persistido e nenhuma chamada de rede é feita. Gravações são simuladas e ações fiscais (e-invoice, VeriFactu, TicketBAI, FACe, folha de pagamento) retornam uma simulação claramente rotulada — nunca um envio real a qualquer autoridade tributária.

Quando estiver pronto para seus dados reais, remova a flag e adicione sua chave (app.frihet.io → Configurações → Chaves de API). Veja Instalação abaixo.


Para agentes de IA

Se você é um agente lendo este repositório em vez de uma pessoa lendo uma página, tudo o que você precisa é legível por máquina e gerado a partir do servidor em execução — você não precisa analisar este README.

O quêOnde
Contrato de integração: guia rápido por cliente, autenticação, fluxo de trabalho seguro, listas de ferramentas com autoridade humana, recuperação de errosdocs/agent-onboarding.json — também incluído no pacote npm
Verdade de capacidade por ferramenta: callability, writesFrihet, externalInteraction, externalSideEffects_meta["io.frihet/capability"] em cada entrada de tools/list
Como se comportar após conectara string instructions retornada por initialize — seu cliente a entrega a você automaticamente

Três regras que o contrato codifica, em resumo:

  1. Oriente-se antes de agir. get_business_context e o recurso frihet://tax/rates decidem o tratamento fiscal correto. Não recupere uma taxa de imposto espanhola da memória.
  2. Rascunhe, mostre, pare. create_invoice, create_quote e create_credit_note todos usam como padrão status=draft — nenhum número fiscal, nenhum hash, nada enviado a uma autoridade tributária. Apresente o rascunho e devolva.
  3. Autoridade humana não é sua para assumir. Qualquer ferramenta com um externalSideEffects não vazio alcança a caixa de entrada de um cliente, um webhook, dinheiro ou AEAT / VeriFactu / TicketBAI / FACe. Várias também aceitam confirm=true; essa flag registra uma decisão humana — nunca a defina para satisfazer seu próprio plano.

docs/agent-onboarding.json é regenerado a partir da superfície ativa por npm run generate:agent-onboarding e controlado no CI por npm run gate:agent-onboarding, portanto suas listas de ferramentas e contagens não podem divergir do servidor.


Instalação

Uma linha (Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI e mais)

npx skills add Frihet-io/frihet-mcp

Plugin Claude Code (skill + servidor MCP em uma única instalação)

Este repositório também é um plugin Claude Code (frihet-erp): instalá-lo conecta tanto a skill de gestão empresarial quanto o servidor MCP.

# Try it locally
claude --plugin-dir /path/to/frihet-mcp

A disponibilidade no marketplace está pendente. Use o comando de plugin local acima ou o comando MCP do Claude Code abaixo para conectar hoje.

Invocação da skill: /frihet-erp:frihet-mcp. O .mcp.json incluído inicia @frihet/mcp-server via npx — defina FRIHET_API_KEY no seu ambiente (obtenha um em app.frihet.io → Configurações → Chaves de API).

A prévia do plugin Claude portátil inclui skills reais de contas a receber, elaboração de documentos e revisão mensal com o MCP remoto público existente. Carregue plugins/claude/frihet-erp no Claude Code ou envie um ZIP dessa pasta no chat/Cowork. Suas skills orientam o comportamento; elas não filtram o catálogo hospedado nem estabelecem aprovação do Directory. A configuração MCP local raiz acima mantém sua configuração de chave de API existente.

Claude Code — um comando

claude mcp add frihet -s user -e FRIHET_API_KEY=fri_your_key_here -- npx -y @frihet/mcp-server
claude mcp list          # verify: frihet ✓ Connected

A CLI é dona do arquivo de configuração, então não há nada para editar manualmente e nenhum caminho para errar. (O escopo do usuário grava ~/.claude.json, não ~/.claude/mcp.json.)

Codex CLI — um comando

codex mcp add frihet --env FRIHET_API_KEY=fri_your_key_here -- npx -y @frihet/mcp-server
codex mcp list           # verify

A configuração do Codex é TOML, não JSON. codex mcp add grava:

[mcp_servers.frihet]
command = "npx"
args = ["-y", "@frihet/mcp-server"]

[mcp_servers.frihet.env]
FRIHET_API_KEY = "fri_your_key_here"

Colar um bloco JSON mcpServers em ~/.codex/config.toml é um erro de análise TOML que derruba toda a sua configuração do Codex, não apenas este servidor. Use o comando acima.

Claude Desktop, Cursor, Windsurf, Cline — configuração JSON

{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["-y", "@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_your_key_here"
      }
    }
  }
}
FerramentaArquivo de configuração
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Cursor.cursor/mcp.json ou ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineConfigurações do VS Code ou .cline/mcp.json

O JSON acima é idêntico para esses quatro clientes; apenas o caminho do arquivo muda. Claude Code e Codex não estão nesta tabela — eles gerenciam sua própria configuração por meio dos comandos CLI mostrados acima.

Remoto (sem instalação)

Use o endpoint hospedado em mcp.frihet.io — zero dependências locais, executa em Cloudflare Workers.

Com chave de API:

{
  "mcpServers": {
    "frihet": {
      "type": "streamable-http",
      "url": "https://mcp.frihet.io/mcp",
      "headers": {
        "Authorization": "Bearer fri_your_key_here"
      }
    }
  }
}

Com OAuth 2.0 + PKCE (login baseado em navegador, sem necessidade de chave de API):

Clientes que suportam OAuth (Claude Desktop, Smithery, etc.) podem conectar diretamente a https://mcp.frihet.io/mcp e autenticar via navegador. O servidor implementa o fluxo completo de código de autorização OAuth 2.1 com PKCE.

Obtenha sua chave de API

  1. Entre em app.frihet.io
  2. Vá para Configurações > API
  3. Clique em Criar chave de API
  4. Copie a chave (começa com fri_) — ela é mostrada apenas uma vez

O que você pode fazer

Fale com seu ERP. Estes são prompts reais, não texto de marketing.

Faturamento

"Show me all unpaid invoices"
"Create an invoice for Acme SL with 10h of consulting at 95/hour"
"Mark invoice abc123 as paid"
"How much has ClientName been invoiced this year?"

Despesas

"Log a 59.99 EUR expense for Adobe Creative Cloud, category: software, tax-deductible"
"List all expenses from January"
"What did I spend on travel last quarter?"

Clientes

"Add a new client: TechStart SL, NIF B12345678, email admin@techstart.es"
"Show me all my clients"
"Update ClientName's address to Calle Mayor 1, Madrid 28001"

CRM

"Add a contact to Acme SL: Ana Garcia, CTO, ana@acme.es"
"Log a call with TechStart: discussed Q2 proposal, they're interested in upgrade"
"Add a note to ClientName: prefers invoices in English, payment NET 30"
"Show me all activities for Acme SL"

Orçamentos

"Create a quote for Design Studio: logo design (2000 EUR) + brand guidelines (3500 EUR)"
"Show me all pending quotes"

Webhooks

"Set up a webhook to notify https://my-app.com/hook when invoices are paid"
"List all my active webhooks"

O que esperar

Este MCP é uma interface de dados estruturados — você descreve o que deseja em linguagem natural, e a IA cria, consulta ou modifica registros de negócios no Frihet. A maioria das 156 operações canônicas são operações CRUD sobre a API REST; o restante são resumos somente leitura e ações fiscais/e-invoice. Nomes de aliases e descoberta são contados separadamente.

Funciona muito bem:

"Create an invoice for TechStart SL, 40h consulting at 75 EUR/h"   --> creates the invoice
"Show unpaid invoices over 1,000 EUR"                               --> queries and filters
"Log a 120 EUR expense for the Madrid train, category: travel"      --> records the expense
"Update client Acme's email to billing@acme.es"                     --> modifies the record

Não faz:

  • OCR ou digitalização de PDF — você não pode enviar uma imagem de fatura e tê-la lida
  • Upload de arquivos ou manipulação de anexos
  • Processamento de imagens de qualquer tipo

Se você precisar digitalizar faturas ou recibos em papel, extraia os dados primeiro (por exemplo, Claude Vision API, um serviço OCR dedicado ou entrada manual) e depois use o MCP para criar o registro:

1. Scan/photograph the invoice
2. Use Claude Vision: "Read this invoice image and extract the vendor, items, amounts, and dates"
3. Then: "Create an expense in Frihet for [extracted data]"

Operações do catálogo (156)

Faturas (12)

FerramentaO que faz
list_invoicesLista faturas com paginação
get_invoiceObtém detalhes completos da fatura por ID
create_invoiceCria uma nova fatura com itens de linha
update_invoiceAtualiza qualquer campo da fatura
delete_invoiceExclui uma fatura em rascunho; uma enviada/paga é cancelada, não destruída (confirm=true obrigatório)
search_invoicesEncontra faturas por nome do cliente, data ou status
send_invoiceEnvia fatura por e-mail ao cliente (anexo PDF) — alcança terceiros, confirm=true obrigatório
mark_invoice_paidMarca uma fatura como paga com data de pagamento opcional
get_invoice_pdfObtém bytes do PDF da fatura limitados como base64
get_invoice_einvoiceObtém bytes XML ou PDF Factur-X limitados para uma fatura
create_credit_noteCria uma nota de crédito vinculada a uma fatura existente
apply_late_feeAplica uma taxa de atraso a uma fatura vencida

Despesas (5)

FerramentaO que faz
list_expensesLista despesas com paginação
get_expenseObtém detalhes da despesa
create_expenseRegistra uma nova despesa
update_expenseModifica uma despesa
delete_expenseExclui uma despesa

Clientes (5)

FerramentaO que faz
list_clientsLista todos os clientes
get_clientObtém detalhes do cliente
create_clientRegistra um novo cliente
update_clientAtualiza informações do cliente
delete_clientRemove um cliente

CRM: Contatos (3)

FerramentaO que faz
list_client_contactsLista todos os contatos de um cliente
create_client_contactAdiciona uma pessoa de contato a um cliente
delete_client_contactRemove um contato de um cliente

CRM: Atividades (2)

FerramentaO que faz
list_client_activitiesLista atividades de CRM (chamadas, e-mails, reuniões, tarefas)
log_client_activityRegistra uma chamada, e-mail, reunião ou tarefa contra um cliente

CRM: Notas (3)

FerramentaO que faz
list_client_notesLista todas as notas de um cliente
create_client_noteAdiciona uma nota de formato livre a um cliente
delete_client_noteRemove uma nota de um cliente

Produtos (5)

FerramentaO que faz
list_productsListar produtos e serviços
get_productObter detalhes do produto
create_productAdicionar um produto ou serviço
update_productAtualizar preço ou detalhes
delete_productRemover um produto

Cotações (6)

FerramentaO que faz
list_quotesListar todas as cotações
get_quoteObter detalhes da cotação
create_quoteCriar um rascunho de nova cotação
update_quoteModificar uma cotação
delete_quoteExcluir apenas um rascunho limpo, sem entrega, resposta, anexo ou evidência de conversão; recusar rascunhos protegidos; cancelar não-rascunhos (confirm=true obrigatório)
send_quoteEnviar cotação por e-mail ao cliente para aceitação

Webhooks (6)

FerramentaO que faz
list_webhooksListar webhooks configurados
get_webhookObter detalhes do webhook
create_webhookRegistrar um novo endpoint de webhook
update_webhookModificar eventos ou URL
delete_webhookRemover um webhook
test_webhookEnviar um payload de teste para um endpoint de webhook configurado

Inteligência (4)

FerramentaO que faz
get_business_contextSnapshot completo: perfil, plano, atividade recente, principais clientes, mês atual
get_monthly_summaryP&L mensal: receita, despesas, lucro, obrigação tributária, principais clientes por receita
get_quarterly_taxesPreparação tributária trimestral: campos do Modelo 303/130, coletado vs. dedutível, obrigação
duplicate_invoiceClonar uma fatura para cobrança recorrente (copia itens/cliente/imposto, inicia como rascunho)

Faturamento Eletrônico (10)

FerramentaO que faz
send_einvoiceEnviar uma fatura em 11 formatos (XRechnung, Factur-X, FatturaPA, PEPPOL, Facturae, UBL, CII) via e-mail / Chorus Pro / SDI / PEPPOL / download
get_einvoice_statusConsultar o status de execução do fluxo de trabalho Hatchet até sucesso/falha — retorna ackId, URL do XML, URL do PDF/A-3
validate_einvoice_xmlValidar XML bruto contra o esquema do formato + regras schematron (KOSIT / Mustang / XSD / Schematron)
export_datevExportar dados contábeis como DATEV EXTF (Buchungsstapel / Debitoren / Kreditoren) na codificação CP1252
einvoice_exportExportar dados de fatura eletrônica em formatos legíveis por máquina (JSON/XML) para arquivamento ou integração
face_submitEnviar fatura para FACe (plataforma espanhola de faturamento eletrônico B2G do governo)
face_statusConsultar o status de envio na FACe para uma fatura enviada
ticketbai_submitEnviar registro fiscal TicketBAI para a autoridade tributária do País Basco (Hacienda)
ticketbai_statusConsultar o status de envio do TicketBAI na autoridade tributária basca
ksef_submitNOT_DEPLOYED — Enviar fatura para KSeF (Polônia) — stub: o transporte está pronto na infraestrutura do Frihet-ERP, mas ainda não exposto como endpoint ativo (produção condicionada ao certificado KSeF); retorna erro rotulado como "indisponível" até ativação

Controle de Horas (6)

FerramentaO que faz
list_time_entriesListar lançamentos de horas com filtro por usuário, projeto, intervalo de datas, status de faturamento
get_time_entryObter detalhes completos de um único lançamento de horas por ID
create_time_entryRegistrar horas para um projeto (marcador de faturamento, descrição, data)
update_time_entryAtualizar qualquer campo em um lançamento de horas existente (semântica PATCH)
delete_time_entryExclusão lógica de um lançamento de horas (confirm=true obrigatório)
get_time_summaryAgregar total de horas faturáveis/não faturáveis para um período, com groupBy opcional (usuário/projeto/dia)

Faturas Recorrentes (8)

FerramentaO que faz
list_recurring_invoicesListar todos os modelos de fatura recorrente (filtrar por ativo/pausado)
get_recurring_invoiceObter detalhes completos de um modelo recorrente por ID
create_recurring_invoiceCriar um novo modelo de fatura recorrente (diário/semanal/mensal/trimestral/anual)
update_recurring_invoiceAtualizar campos do modelo — afeta apenas futuras faturas geradas
pause_recurring_invoicePausar um modelo ativo — nenhuma fatura é gerada enquanto pausado
resume_recurring_invoiceRetomar um modelo pausado — próxima fatura no próximo ciclo agendado
delete_recurring_invoiceExcluir permanentemente um modelo (confirm=true obrigatório)
run_recurring_nowGerar a próxima fatura recorrente com confirm=true explícito nos modos completo e agrupado; as configurações do workspace podem acionar emissão fiscal, envio e webhooks

Gestão de Equipe (4)

FerramentaO que faz
list_team_membersListar membros ativos + convites pendentes (proprietário excluído)
invite_team_memberConvidar um novo membro por e-mail com função (admin/editor/contador/visualizador)
update_team_member_roleAlterar a função de um membro existente (admin/editor/contador/visualizador)
remove_team_memberRemover um membro do workspace (confirm=true obrigatório)

Gestoria — Contadores (5)

FerramentaO que faz
gestoria_message_sendEnviar uma mensagem em um thread contextual (documentRequest / filingItem / obligation)
gestoria_messages_listListar mensagens em um thread, mais recentes primeiro; paginar para trás com before
gestoria_template_createCriar um modelo reutilizável de solicitação de documento com variáveis + prazo em dias
gestoria_template_bulk_sendEnvio em massa de um modelo para até 500 workspaces de clientes em uma única chamada
gestoria_aging_consolidatedRelatório de aging de contas a receber entre clientes (faixas, detalhamento por workspace, maiores atrasos)

Auditoria GL (3)

FerramentaO que faz
frihet_gl_entry_approveAprovar um lançamento contábil GL (somente gestor/admin — ÁREA DE CONFIANÇA)
frihet_gl_entry_rejectRejeitar um lançamento GL com motivo obrigatório (ÁREA DE CONFIANÇA)
frihet_gl_entry_audit_logRecuperar trilha de auditoria completa para um lançamento GL

Domínio do Portal White-label (3)

FerramentaO que faz
frihet_portal_domain_addAdicionar um domínio personalizado ao portal do cliente (retorna registros DNS CNAME)
frihet_portal_domain_verifyVerificar propagação de DNS para um domínio de portal personalizado
frihet_portal_domain_removeRemover um domínio de portal personalizado (reverte para o subdomínio padrão Frihet)

Auto-onboarding e VIES (2)

FerramentaO que faz
frihet_portal_onboard_link_generateGerar um link de auto-onboarding com validade para um cliente potencial
frihet_tax_id_vies_lookupValidar um número de IVA da UE (CIF intracomunitário) via VIES

IGIC — Imposto Indireto das Canárias (4)

FerramentaO que faz
frihet_modelo_415_summaryM415 operações anuais >€3.005 (equivalente canário do M347) — não implantado, retorna NOT_DEPLOYED
frihet_modelo_425_summaryM425 resumo anual de IGIC para empresas das Ilhas Canárias — não implantado, retorna NOT_DEPLOYED
frihet_modelo_418_summaryM418 declaração mensal individual de IGIC, regime especial do grupo de entidades — não implantado, retorna NOT_DEPLOYED
frihet_aiem_calculateCálculo de AIEM (Arbitrio Importación) para Canárias — não implantado, retorna NOT_DEPLOYED

Imposto sobre Sociedades (2)

FerramentaO que faz
frihet_modelo_200_summaryModelo 200 declaração anual de IS — não implantado, retorna NOT_DEPLOYED
frihet_modelo_202_summaryModelo 202 pagamentos antecipados (1P/2P/3P) — não implantado, retorna NOT_DEPLOYED

Regras de Categorização Bancária (2)

FerramentaO que faz
frihet_bank_rules_listListar todas as regras de categorização automática bancária (condições + ações + status)
frihet_bank_rule_createCriar uma nova regra para categorizar automaticamente transações por descrição, valor, contraparte

Depósitos (7)

FerramentaO que faz
list_depositsListar depósitos com paginação
get_depositObter detalhes do depósito por ID
create_depositRegistrar um novo depósito de cliente
update_depositAtualizar campos do depósito
delete_depositExcluir um depósito (confirm=true obrigatório)
apply_depositAplicar um saldo de depósito contra uma fatura
refund_depositRegistrar um reembolso de depósito na contabilidade Frihet com confirm=true; amount opcional registra essa parcela, a omissão registra o saldo reembolsável restante. Não transfere dinheiro

Fornecedores (5)

FerramentaO que faz
list_vendorsListar todos os fornecedores
get_vendorObter detalhes do fornecedor
create_vendorAdicionar um novo fornecedor
update_vendorAtualizar informações do fornecedor
delete_vendorRemover um fornecedor

Banco (5)

FerramentaO que faz
list_bank_accountsListar contas bancárias conectadas
get_bank_accountObter detalhes de uma conta bancária
list_transactionsListar transações bancárias com filtros
categorize_transactionAtribuir uma categoria e tipo de despesa/receita a uma transação
match_transaction_to_invoiceVincular uma transação bancária a uma fatura existente

Fiscal — Modelos Tributários Espanhóis (7)

FerramentaO que faz
get_modelo_303_summaryDeclaração trimestral de IVA (Modelo 303) — coletado vs. dedutível, valor líquido a pagar
get_modelo_130_summaryPagamento trimestral de IRPF para autônomos (Modelo 130)
get_modelo_390_summaryResumo anual de IVA (Modelo 390)
get_modelo_180_summaryResumo anual de retenções para aluguéis (Modelo 180) — não implantado, retorna NOT_DEPLOYED
get_modelo_347_summaryTransações anuais com terceiros >€3.005 (Modelo 347)
verifactu_statusObter status de envio VeriFactu para um registro fiscal
verifactu_resubmitReenviar um registro fiscal VeriFactu rejeitado
ticketbai_statusConsultar o status de envio do TicketBAI — referência cruzada de Faturamento Eletrônico (10); NÃO contado para os 7 desta seção

Aluguel de Temporada / Stay (5)

FerramentaO que faz
list_reservationsListar reservas de aluguel com filtros
get_reservationObter detalhes da reserva
create_reservationCriar uma nova reserva
list_propertiesListar todas as propriedades de aluguel
sync_channelAcionar sincronização de canal OTA (Airbnb, Booking.com, etc.)

PDV — Ponto de Venda (4)

FerramentaO que faz
list_terminalsListar terminais PDV registrados
get_saleObter detalhes de uma transação de venda no PDV
list_salesListar vendas no PDV com paginação
refund_saleEmitir um reembolso para uma venda no PDV

Cozinha / Restaurante (6)

FerramentaO que faz
list_kitchen_ticketsListar tickets de pedido da cozinha para o painel ao vivo, filtrados por status ou estação
get_kitchen_ticketObter um único ticket de cozinha por ID com todos os itens e seus status individuais
update_kitchen_ticketAvançar o status de um ticket (na fila → preparando → pronto → servido) ou reatribuí-lo a outra estação
list_kitchen_stationsListar todas as estações da cozinha com id, nome e status ativo
list_menu_itemsListar o catálogo do menu da cozinha com busca de texto livre e filtro ativo/inativo
kitchen_flow_summaryDetecção de estação lenta: agregar tickets abertos por estação e sinalizar o gargalo

RH — Recursos Humanos (9)

FerramentaO que faz
leave_request_createCriar uma solicitação de afastamento (férias, licença médica, pessoal)
leave_approveAprovar uma solicitação de afastamento pendente
leave_rejectRejeitar uma solicitação de afastamento com motivo
leave_cancelCancelar uma solicitação de afastamento aprovada ou pendente
leave_listListar solicitações de afastamento com filtros (usuário, status, intervalo de datas)
attendance_clock_inRegistrar entrada (clock-in) de um funcionário
attendance_clock_outRegistrar saída (clock-out) de um funcionário
overtime_reportLer horas extras diárias/semanais, agregar minutos/horas e alertas de conformidade calculados sobre os registros selecionados de YYYY ou YYYY-MM
anomaly_listListar anomalias de frequência (pontos ausentes, horas extras excessivas)

Folha de Pagamento (2)

FerramentaO que faz
payroll_exportLê dados de funcionários normalizados prontos para folha de pagamento; o valor de formato é um rótulo de destino ecoado, não um arquivo gerado
payroll_checklistLista funcionários pagáveis com prontidão de perfil de folha, campos ausentes e estado de revisão mensal

Onboarding — retirado via #124

As ferramentas onboarding_status e onboarding_persona_set foram retiradas porque a família /v1/onboarding/* do Frihet-ERP não existe nesta versão. Consulte issue #124 para a auditoria e o precedente (src/tools/igic.ts mostra o padrão de stub inline NOT_DEPLOYED usado para famílias cuja API de suporte ainda não foi lançada; o onboarding optou pela retirada completa, porque o catálogo não deve prometer demais ferramentas que não têm handler ativo).

Se uma versão futura do Frihet-ERP lançar a família, restaure src/tools/onboarding.ts, os schemas onboardingStatusOutput / onboardingPersonaResultOutput em src/tools/shared.ts, os métodos getOnboardingStatus / setOnboardingPersona em IFrihetClient e o registro em src/tools/register-all.ts (o teste Onboarding tools — withdrawn via #124 em src/__tests__/d4b-hr-payroll-onboarding-tools.test.ts é o portão que falhará e lembrará o próximo mantenedor do que existia aqui).

Permissões (2)

FerramentaO que faz
permissions_matrixObtém o snapshot documentado do modelo RBAC (não é uma garantia de autorização em tempo de execução)
permissions_meCompara campos do modelo RBAC com escopos reais de chaves de API e negações de escopo conhecidas (não exaustivo)

Fechamento de Período (3)

FerramentaO que faz
period_close_statusObtém o intervalo do ano fiscal YYYY atual ou selecionado, estado aberto/fechado e detalhes de fechamento anuláveis
period_closeFecha um período contábil (somente gestor/admin — ÁREA DE CONFIANÇA)
period_reopenReabre um período fechado com motivo obrigatório (ÁREA DE CONFIANÇA)

Todas as operações canônicas (e seus aliases) retornam saída estruturada via outputSchema — JSON tipado, não texto bruto. As formas de resposta de listas seguem sua família de API; nem todo endpoint de lista é paginado.

Verdade de capacidade e efeitos colaterais

Nas superfícies MCP completas, cada entrada tools/list inclui _meta["io.frihet/capability"]:

  • registered significa que o nome e o handler existem nesta compilação do servidor;
  • callability é api_dependent (o handler chama a API; implantação, habilitação de workspace e autorização ainda decidem), runtime_checked (o handler distingue explicitamente um backend ausente de dados vazios), deferred, unavailable ou local — nunca uma alegação incondicional de "disponível";
  • writesFrihet, externalInteraction e externalSideEffects distinguem mudanças de estado e chamadas a entidades/provedores externos;
  • As anotações de ação MCP permanecem a fonte padrão para dicas de somente leitura, destrutivas, idempotentes e de mundo aberto.

O host ChatGPT/OpenAI é uma superfície revisada separadamente: exatamente 33 operações de negócio com descrições completas, 0 meta-ferramentas de descoberta, 0 prompts e 0 recursos. Suas 17 leituras e 16 escritas são deliberadamente estreitas, e todas as escritas exigem confirm=true literal. Dez escritas podem entregar eventos de negócio completos a endpoints ativos previamente configurados pelo proprietário do workspace; a administração de webhooks em si permanece excluída. Entrega direta de e-mail, o resumo mensal legado, PDFs brutos de faturas, transições de ciclo de vida de faturas, atualização de um orçamento existente, arquivamento regulado, exclusão de registros pais de clientes, exclusão de despesas com seus arquivos vinculados, exclusão de produtos e exclusão de fornecedores também são excluídos. Esta superfície não deve ser inferida do catálogo completo.


Recursos

Contexto que a IA pode ler para tomar decisões mais inteligentes.

O pacote local serve 11 recursos: 7 referências estáticas mais 4 recursos de workspace com suporte de API. O Worker hospedado serve os 7 recursos estáticos. O host revisado pela OpenAI serve 0 recursos.

Estáticos (dados de referência, sem chamadas de API):

RecursoURIO que fornece
Schema da APIfrihet://api/schemaResumo OpenAPI: endpoints, autenticação, limites de taxa, paginação, códigos de erro
Alíquotas de Impostosfrihet://tax/ratesAlíquotas por zona fiscal espanhola: IVA, IGIC, IPSI, reverse charge da UE, IRPF
Calendário Fiscalfrihet://tax/calendarPrazos de declaração trimestrais e anuais para os modelos fiscais espanhóis listados
Categorias de Despesasfrihet://config/expense-categories8 categorias com regras de dedutibilidade, tratamento de IVA, amortização
Status de Faturasfrihet://config/invoice-statusesFluxo de status (rascunho > enviada > paga/vencida > cancelada), regras de transição, eventos de webhook
Moedasfrihet://config/currencies40 moedas suportadas com códigos ISO, símbolos, casas decimais, formatação de localidade
Paísesfrihet://config/countries61 países suportados com zonas fiscais, alíquotas padrão, moedas, prefixos de fatura

Dinâmicos (dados ao vivo da sua conta):

RecursoURIO que fornece
Perfil do Negóciofrihet://business-profileSuas informações de negócio, plano, padrões, atividade recente, principais clientes
Snapshot Mensalfrihet://monthly-snapshotP&L do mês atual, receita, despesas, obrigação tributária
Faturas Vencidasfrihet://overdue-invoicesTodas as faturas após a data de vencimento (até 100)
Limites do Planofrihet://status/plan-limitsNível do plano ao vivo, contadores de uso, faturas/mês, limites de taxa da API

Prompts (10)

Fluxos de trabalho pré-construídos que a IA pode executar como operações guiadas em várias etapas.

PromptO que fazArgumentos
monthly-closeFechar o mês: revisar faturas não pagas, categorizar despesas, verificar obrigações fiscais, gerar resumomonth? (AAAA-MM)
onboard-clientConfigurar um novo cliente com alíquotas corretas por localização, opcionalmente criar um orçamento de boas-vindasclientName, country?, region?
quarterly-tax-prepPreparar declaração fiscal trimestral: calcular IVA/IGIC, identificar dedutíveis, pré-visualizar Modelo 303/130/420quarter?, fiscalZone?
overdue-followupEncontrar faturas vencidas, redigir mensagens de acompanhamento, sugerir lembretes de pagamento--
new-client-invoiceCriar um cliente + primeira fatura em um único fluxo com consulta de alíquotaclientName, country?
expense-reportGerar relatório de despesas agrupado por categoria com totais dedutíveismonth? (AAAA-MM)
year-end-closeFechamento anual completo: revisão trimestral, faturas pendentes, despesas não categorizadas, checklist de fim de anoyear (AAAA)
cash-flow-forecastProjetar fluxo de caixa para os próximos meses: receita recorrente, despesas, contas a receber vencidas, prazos fiscaismonths? (padrão: 3)
invoice-aging-reviewAnálise de envelhecimento de contas a receber: agrupar faturas não pagas por faixa (0-30/31-60/61-90/90+ dias), principais devedores, ações de cobrança--
expense-batchProcessar despesas em lote: categorizar, aplicar alíquotas, sinalizar recibos ausentesfiscalZone?

Como funciona

graph LR
    AI["Your AI assistant"]
    MCP["frihet-mcp"]
    API["api.frihet.io"]
    DB["Frihet ERP"]

    AI -- "create_invoice()" --> MCP
    MCP -- "POST /v1/invoices" --> API
    API --> DB
    DB -- "201 + invoice data" --> API
    API -- "structured JSON" --> MCP
    MCP -- "typed response + suggestions" --> AI

    style AI fill:#09090b,stroke:#4ade80,color:#fafafa
    style MCP fill:#09090b,stroke:#fafafa,color:#fafafa
    style API fill:#09090b,stroke:#3f3f46,color:#a1a1aa
    style DB fill:#09090b,stroke:#3f3f46,color:#a1a1aa

O servidor traduz chamadas de ferramentas em solicitações REST API. Ele lida com autenticação, limite de taxa (repetição automática com backoff em 429), paginação e mapeamento de erros.

Dois transportes:

  • stdio (local) -- npx @frihet/mcp-server com FRIHET_API_KEY
  • Streamable HTTP (remoto) -- https://mcp.frihet.io/mcp com token Bearer ou OAuth 2.0+PKCE

Variáveis de ambiente

VariávelObrigatóriaPadrão
FRIHET_API_KEYSim (stdio)--
FRIHET_API_URLNãohttps://api.frihet.io/v1
FRIHET_TOOL_MODENãofull
FRIHET_CLAUDE_MODENão (candidato local não lançado)false

O candidato Claude somente-fonte requer compilar este checkout e executar dist/index.js; não se afirma que os lançamentos npm existentes suportam o sinalizador. Consulte escopo do candidato, exclusões e verificações. Ele não pode ser combinado com FRIHET_OPENAI_MODE=true e não está habilitado no Worker implantado.


Exposição de ferramentas: profundidade servida sob demanda

O diferencial do Frihet é profundidade — cobertura fiscal completa ES/UE mais conformidade nativa (VeriFactu, TicketBAI, Facturae/FACe; infraestrutura KSeF Polônia pronta, ativação pendente), bancos, CRM, RH/folha de pagamento, stay/PMS e POS. Mas uma lista plana de todas as ferramentas, carregada no contexto de um agente antecipadamente, é o problema de rotação de contexto de 2026: ela sufoca a tarefa e degrada a seleção de ferramentas antes que qualquer trabalho comece.

FRIHET_TOOL_MODE permite que você escolha como essa profundidade é exposta.

ModoComportamento
full (padrão)Ferramentas canônicas e aliases fiscais são expostos com descrições e schemas completos. Descritores públicos adicionam verdade conservadora de chamabilidade e efeitos colaterais; nomes de operação, schemas e handlers permanecem inalterados.
groupedDivulgação progressiva. A descrição de cada ferramenta é reduzida a um [group] summary — full schema via describe_tool('name') de uma linha, e três ferramentas leves de descoberta são adicionadas. O agente carrega profundidade apenas para as ferramentas que realmente precisa.

No modo grouped, nomes de operação, schemas de entrada e handlers permanecem inalterados. Descritores também expõem a mesma verdade conservadora de capacidade e ação que o perfil completo. A descoberta flui por três meta-ferramentas:

  • list_tool_groups() — o mapa de domínio (faturamento, despesas, fiscal/conformidade, bancos, CRM, RH/folha, stay/PMS, POS, inteligência, produtos, plataforma) com uma descrição de uma linha e contagem de ferramentas para cada um.
  • search_tools(query) — busca de texto livre em nome, título, resumo e grupo da ferramenta; retorna ferramentas correspondentes com seu grupo, resumo, sinalizador somente leitura e campos de entrada. Filtro opcional group e limit.
  • describe_tool(name) — a descrição original completa e campos de entrada para uma ferramenta, sob demanda, antes de chamá-la.
// claude_desktop_config.json — opt in to grouped mode
{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_...",
        "FRIHET_TOOL_MODE": "grouped"
      }
    }
  }
}

A exposição agrupada muda a densidade da descrição, não o comportamento da operação. O perfil revisado pela OpenAI com versão é composto separadamente e permanece gated de forma independente.


Limites da API

LimiteValor
Solicitações por minuto100 por chave de API
Resultados por página100 máx (50 padrão)
Corpo da solicitação1 MB máx
Payload de webhook100 KB máx
Webhooks por conta20 máx

O limite de taxa é tratado automaticamente com backoff exponencial.


Habilidade do Claude Code

Além das ferramentas MCP brutas, este repositório inclui uma habilidade do Claude Code que adiciona contexto de negócio: regras fiscais espanholas, receitas de fluxo de trabalho, relatórios financeiros e comandos em linguagem natural.

Instalar a habilidade

git clone https://github.com/Frihet-io/frihet-mcp.git
ln -s "$(pwd)/frihet-mcp/skills/frihet-mcp" ~/.claude/skills/frihet-mcp

Ou com o instalador universal:

npx skills add Frihet-io/frihet-mcp

A habilidade roteia solicitações para as ferramentas MCP do Frihet (faturas, orçamentos, despesas, clientes, revisão mensal) e informa ao agente quando pedir confirmação antes de escritas. Ela não adiciona subcomandos /frihet independentes e não inclui alíquotas de IVA ou regras de dedutibilidade: os valores fiscais vêm dos seus dados do Frihet, não da habilidade.

Documentação completa: docs.frihet.io/desarrolladores/skill-claude-code


Desenvolvimento

git clone https://github.com/Frihet-io/frihet-mcp.git
cd frihet-mcp
npm install
npm run build

Execute localmente:

FRIHET_API_KEY=fri_xxx node dist/index.js

Teste com o MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Contribuindo

Contribuições são bem-vindas. Por favor, abra uma issue primeiro para discutir o que você gostaria de mudar.

git clone https://github.com/Frihet-io/frihet-mcp.git
cd frihet-mcp
npm install
npm run build   # must pass before submitting

Limitações atuais

  • Sem OCR ou upload de arquivos -- o MCP trabalha com dados estruturados, não imagens ou PDFs.
  • Empresa única -- uma chave de API mapeia para um workspace do Frihet.
  • Conta Frihet necessária -- você precisa de uma conta ativa em app.frihet.io e uma chave de API (começa com fri_).

Ecossistema

PacoteO que é
@frihet/mcp-serverEste servidor MCP (156 operações canônicas + 5 nomes de alias; 11 recursos locais; 10 prompts)
@frihet/sdkSDK TypeScript (frihet.invoices.create())
frihetCLI (frihet invoices list --status overdue)
n8n-nodes-frihetNó comunitário n8n para automação de fluxos de trabalho
API RESTOpenAPI 3.1 em api.frihet.io/v1
MCP RemotoEndpoint hospedado no Cloudflare Workers (instalação zero)
WebhooksEventos em tempo real com HMAC-SHA256

Links


Licença

MIT. Consulte LICENSE.

Desenvolvido por Frihet.