Frihet

Servidor MCP de gestão empresarial nativo em IA — 31 ferramentas para faturamento, despesas, clientes, produtos, orçamentos e conformidade fiscal. 40 moedas, OCR, Stripe Connect. Licenciado sob MIT.

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 158 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

Verdade da superfície: o catálogo contém 158 operações canônicas. O perfil completo local serve 163 nomes de ferramentas, 11 recursos e 10 prompts (158 operações canônicas mais 5 aliases fiscais). O perfil agrupado hospedado serve 166 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 serve 33 nomes de ferramentas, 0 recursos e 0 prompts. A associação ao catálogo não é uma promessa de que uma API de suporte esteja habilitada para todos os espaços de trabalho.


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 do seu 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.

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


Experimente instantaneamente (sem cadastro)

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

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

No modo demo, o servidor responde a partir de exemplos realistas (faturas em espanhol 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: início 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 uma vez conectadoa 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. Rascunho, mostre, pare. create_invoice, create_quote e create_credit_note todos usam como padrão status=draft — sem número fiscal, sem hash, nada enviado a uma autoridade tributária. Apresente o rascunho e devolva o controle.
  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 e contagens de ferramentas 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).

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

Converse 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 158 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 alias 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 esperar que ela seja 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 então 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 (158)

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 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 do 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 texto livre a um cliente
delete_client_noteRemove uma nota de um cliente

Produtos (5)

FerramentaO que faz
list_productsLista produtos e serviços
get_productObtém detalhes do produto
create_productAdiciona um produto ou serviço
update_productAtualiza preços ou detalhes
delete_productRemove um produto

Orçamentos (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 fiscal trimestral: campos do Modelo 303/130, coletado vs. dedutível, obrigação
duplicate_invoiceClonar uma fatura para cobrança recorrente (copia itens/cliente/impostos, 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 da execução do workflow Hatchet até sucesso/falha — retorna ackId, URL do XML, URL do PDF/A-3
validate_einvoice_xmlValidar XML bruto contra o schema do formato + regras schematron (KOSIT / Mustang / XSD / Schematron)
export_datevExportar dados contábeis como DATEV EXTF (Buchungsstapel / Debitoren / Kreditoren) em 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 o FACe (plataforma espanhola de faturamento eletrônico B2G)
face_statusConsultar o status de envio do 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 o 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 um erro rotulado como "indisponível" até ser ativado

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 (flag 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 horas totais/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 faturas futuras 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_nowAcionar manualmente a geração imediata da próxima instância de fatura

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 documentos com variáveis + offset de data de vencimento
gestoria_template_bulk_sendEnvio em massa de um modelo para até 500 workspaces de clientes em uma única chamada
gestoria_aging_consolidatedRelatório de envelhecimento de contas a receber entre clientes (faixas, detalhamento por workspace, maiores vencidos)

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 do Frihet)

Self-onboard & VIES (2)

FerramentaO que faz
frihet_portal_onboard_link_generateGerar um link de self-onboard com tempo limitado 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 Ilhas 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

Impuesto sobre Sociedades — Imposto Corporativo (2)

FerramentaO que faz
frihet_modelo_200_summaryDeclaração anual de IS do Modelo 200 — não implantado, retorna NOT_DEPLOYED
frihet_modelo_202_summaryPagamentos por conta do Modelo 202 (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 autocategorização 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_depositEmitir um reembolso para um depósito

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 status de envio do TicketBAI — referência cruzada de Faturamento Eletrônico (10); NÃO contado para os 7 desta seção

Aluguéis 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 para 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 pedidos 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 um 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 YYYY ou YYYY-MM selecionados
anomaly_listListar anomalias de presença (pontos ausentes, horas extras excessivas)

Folha de Pagamento (2)

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

Onboarding (2)

FerramentaO que faz
onboarding_statusObter status de conclusão do onboarding para o workspace atual
onboarding_persona_setDefinir ou atualizar a persona de negócio (freelancer, PME, gestoría, etc.)

Permissões (2)

FerramentaO que faz
permissions_matrixObter o snapshot documentado do modelo RBAC (não é uma garantia de autorização em tempo de execução)
permissions_meComparar 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_statusObter o intervalo do ano fiscal YYYY atual ou selecionado, estado aberto/fechado e detalhes de fechamento anuláveis
period_closeFechar um período contábil (somente gestor/admin — ÁREA DE CONFIANÇA)
period_reopenReabrir um período fechado com um 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 sobre capacidade e efeitos colaterais

Nas superfícies MCP completas, cada entrada de 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 do 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 gravações são deliberadamente restritas, e todas as gravações exigem literalmente confirm=true. Dez gravações 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 de clientes pais, 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
Esquema da APIfrihet://api/schemaResumo OpenAPI: endpoints, autenticação, limites de taxa, paginação, códigos de erro
Alíquotas de Impostosfrihet://tax/ratesAlíquotas de impostos 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 de impostos padrão, moedas, prefixos de faturas

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 com data de vencimento passada (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 de impostos 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 de trabalho com consulta de alíquota de impostoclientName, 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 de impostos, 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 de API REST. 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

Exposição de ferramentas: profundidade sob demanda

O diferencial do Frihet é a profundidade — cobertura fiscal completa ES/UE mais conformidade nativa (VeriFactu, TicketBAI, Facturae/FACe; KSeF Polônia infra-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 apodrecimento de contexto de 2026: ela ocupa espaço da 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 esquemas completos. Descritores públicos adicionam verdade conservadora de chamabilidade e efeitos colaterais; nomes de operações, esquemas 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ções, esquemas 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 de pagamento, 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 da ferramenta, título, resumo e grupo; 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 com acesso 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.


Skill do Claude Code

Além das ferramentas MCP brutas, este repositório inclui uma skill 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 skill

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

Ou com o instalador universal:

npx skills add Frihet-io/frihet-mcp

Comandos

ComandoO que faz
/frihet statusVisão geral da conta, atividade recente, pagamentos pendentes
/frihet invoiceCriar, listar, pesquisar faturas
/frihet expenseRegistrar e consultar despesas
/frihet clientsGerenciar banco de dados de clientes
/frihet quoteCriar e gerenciar orçamentos
/frihet reportResumos financeiros (P&L, trimestral, vencidos)
/frihet webhooksConfigurar gatilhos de automação
/frihet setupConfiguração guiada e teste de conexão

A skill conhece alíquotas de IVA, retenção de IRPF, preparação do Modelo 303, regras de dedutibilidade de despesas e conformidade VeriFactu.

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 Inspetor MCP:

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 (158 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 em Cloudflare Workers (zero instalação)
WebhooksEventos em tempo real com HMAC-SHA256

Links


Licença

MIT. Veja LICENSE.

Construído por Frihet.