Frihet

Servidor MCP de gestión empresarial nativo en IA — 31 herramientas para facturación, gastos, clientes, productos, presupuestos y cumplimiento fiscal. 40 monedas, OCR, Stripe Connect. Licencia MIT.

Documentación

frihet-mcp

Servidor MCP nativo con IA para gestión empresarial.
Servidor MCP nativo con IA para gestión empresarial.

Funciona con Claude · ChatGPT · Cursor · Windsurf · Cline · Antigravity · Codex · Copilot · Gemini CLI — y cualquier cliente compatible con 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


Distribución

CanalEstadoInstalación
npmActivonpx @frihet/mcp-server
Endpoint remotoActivohttps://mcp.frihet.io/mcp (sin instalación, OAuth o clave API)
SmitheryActivosmithery.ai/servers/frihet/frihet-mcp
Registro MCPActivoregistry.modelcontextprotocol.io
Registro MCP de GitHubActivogithub.com/mcp/io.frihet/erp
GlamaActivoglama.ai/mcp/servers/Frihet-io/frihet-mcp
mcp.soAuto-indexado (sin verificar)mcp.so — indexa desde npm + GitHub
PulseMCPAuto-indexado (sin verificar)pulsemcp.com — indexa desde npm + GitHub
Cursor MarketplacePróximamentecursor.com/marketplace
ChatGPT AppsPróximamentechatgpt.com
Directorio de conectores de Anthropic ClaudePróximamenteclaude.ai/settings/connectors

Fuente de verdad: el catálogo contiene 158 operaciones canónicas. El perfil completo local ofrece 163 nombres de herramientas, 11 recursos y 10 prompts (158 operaciones canónicas más 5 alias fiscales). El perfil agrupado alojado ofrece 166 nombres de herramientas, 7 recursos y 10 prompts (los mismos nombres más 3 herramientas de descubrimiento, con recursos respaldados por API mantenidos solo en local). El perfil de OpenAI revisado por separado ofrece 33 nombres de herramientas, 0 recursos y 0 prompts. La pertenencia al catálogo no garantiza que una API subyacente esté habilitada para cada espacio de trabajo.


Qué es esto

Un servidor MCP que conecta tu asistente de IA a Frihet. Crea facturas hablando. Consulta gastos en lenguaje natural. Gestiona todo tu negocio desde tu 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 operaciones canónicas. Cinco alias fiscales. Diez prompts. El paquete local ofrece 11 recursos; el Worker alojado ofrece deliberadamente los 7 recursos estáticos, mientras que los recursos de espacio de trabajo respaldados por API permanecen solo en el perfil local.


Pruébalo al instante (sin registro)

Ponlo a prueba sin configuración — sin cuenta, sin clave API:

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

En modo demo, el servidor responde con datos de ejemplo realistas (facturas en español con IVA/IGIC, gastos, clientes, productos, una cuenta bancaria y más) — cada registro usa IDs con prefijo demo_ y el servidor imprime un banner de DEMO MODE al iniciar. No se persiste nada y nunca se realiza ninguna llamada de red. Las escrituras se simulan y las acciones fiscales (factura electrónica, VeriFactu, TicketBAI, FACe, nóminas) devuelven una simulación claramente etiquetada — nunca un envío real a ninguna autoridad tributaria.

Cuando estés listo para tus datos reales, elimina la bandera y añade tu clave (app.frihet.io → Configuración → Claves API). Consulta Instalación a continuación.


Para agentes de IA

Si eres un agente que lee este repositorio en lugar de una persona que lee una página, todo lo que necesitas es legible por máquina y se genera desde el servidor en ejecución — no tienes que analizar este README.

QuéDónde
Contrato de incorporación: inicio rápido por cliente, autenticación, flujo de trabajo seguro, listas de herramientas con autoridad humana, recuperación de erroresdocs/agent-onboarding.json — también incluido en el paquete npm
Verdad de capacidad por herramienta: callability, writesFrihet, externalInteraction, externalSideEffects_meta["io.frihet/capability"] en cada entrada de tools/list
Cómo comportarse una vez conectadola cadena instructions devuelta por initialize — tu cliente te la entrega automáticamente

Tres reglas que el contrato codifica, en resumen:

  1. Orientarse antes de actuar. get_business_context y el recurso frihet://tax/rates determinan el tratamiento fiscal correcto. No recuerdes una tasa impositiva española de memoria.
  2. Redactar, mostrar, detenerse. create_invoice, create_quote y create_credit_note tienen como valor predeterminado status=draft — sin número fiscal, sin hash, nada enviado a una autoridad tributaria. Presenta el borrador y devuelve el control.
  3. La autoridad humana no es tuya para asumir. Cualquier herramienta con un externalSideEffects no vacío llega a la bandeja de entrada de un cliente, un webhook, dinero o AEAT / VeriFactu / TicketBAI / FACe. Varias también aceptan confirm=true; esa bandera registra una decisión humana — nunca la establezcas para satisfacer tu propio plan.

docs/agent-onboarding.json se regenera desde la superficie en vivo mediante npm run generate:agent-onboarding y se controla en CI mediante npm run gate:agent-onboarding, por lo que sus listas y recuentos de herramientas no pueden desviarse del servidor.


Instalación

Una línea (Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI y más)

npx skills add Frihet-io/frihet-mcp

Plugin de Claude Code (skill + servidor MCP en una sola instalación)

Este repositorio también es un plugin de Claude Code (frihet-erp): instalarlo conecta tanto la skill de gestión empresarial como el servidor MCP.

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

La disponibilidad en el marketplace está pendiente. Usa el comando de plugin local anterior o el comando MCP de Claude Code a continuación para conectarte hoy.

Invocación de la skill: /frihet-erp:frihet-mcp. El .mcp.json incluido lanza @frihet/mcp-server mediante npx — establece FRIHET_API_KEY en tu entorno (consigue una en app.frihet.io → Configuración → Claves API).

Claude Code — un 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

La CLI es propietaria del archivo de configuración, por lo que no hay nada que editar a mano ni una ruta que pueda fallar. (El ámbito de usuario escribe ~/.claude.json, no ~/.claude/mcp.json).

Codex CLI — un comando

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

La configuración de Codex es TOML, no JSON. codex mcp add escribe:

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

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

Pegar un bloque JSON mcpServers en ~/.codex/config.toml es un error de análisis TOML que derriba toda tu configuración de Codex, no solo este servidor. Usa el comando anterior.

Claude Desktop, Cursor, Windsurf, Cline — configuración JSON

{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["-y", "@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_your_key_here"
      }
    }
  }
}
HerramientaArchivo de configuración
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Cursor.cursor/mcp.json o ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineConfiguración de VS Code o .cline/mcp.json

El JSON anterior es idéntico para estos cuatro clientes; solo cambia la ruta del archivo. Claude Code y Codex no están en esta tabla — gestionan su propia configuración mediante los comandos CLI mostrados arriba.

Remoto (sin instalación)

Usa el endpoint alojado en mcp.frihet.io — cero dependencias locales, se ejecuta en Cloudflare Workers.

Con clave API:

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

Con OAuth 2.0 + PKCE (inicio de sesión basado en navegador, sin necesidad de clave API):

Los clientes que admiten OAuth (Claude Desktop, Smithery, etc.) pueden conectarse directamente a https://mcp.frihet.io/mcp y autenticarse mediante el navegador. El servidor implementa el flujo completo de código de autorización OAuth 2.1 con PKCE.

Obtén tu clave API

  1. Inicia sesión en app.frihet.io
  2. Ve a Configuración > API
  3. Haz clic en Crear clave API
  4. Copia la clave (empieza con fri_) — solo se muestra una vez

Lo que puedes hacer

Habla con tu ERP. Estos son prompts reales, no texto de marketing.

Facturación

"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?"

Gastos

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

Presupuestos

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

Qué esperar

Este MCP es una interfaz de datos estructurada — describes lo que quieres en lenguaje natural y la IA crea, consulta o modifica registros de negocio en Frihet. La mayoría de las 158 operaciones canónicas son operaciones CRUD sobre la API REST; el resto son resúmenes de solo lectura y acciones fiscales/de factura electrónica. Los nombres de alias y descubrimiento se cuentan por separado.

Funciona muy bien:

"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

No hace:

  • OCR o escaneo de PDF — no puedes subir una imagen de factura y que la lea
  • Carga de archivos o gestión de adjuntos
  • Procesamiento de imágenes de ningún tipo

Si necesitas digitalizar facturas o recibos en papel, extrae los datos primero (por ejemplo, con la API de visión de Claude, un servicio OCR dedicado o entrada manual) y luego usa el MCP para crear el 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]"

Operaciones del catálogo (158)

Facturas (12)

HerramientaQué hace
list_invoicesListar facturas con paginación
get_invoiceObtener detalles completos de una factura por ID
create_invoiceCrear una nueva factura con líneas de detalle
update_invoiceActualizar cualquier campo de una factura
delete_invoiceEliminar una factura borrador; una enviada/pagada se cancela, no se destruye (se requiere confirm=true)
search_invoicesBuscar facturas por nombre de cliente, fecha o estado
send_invoiceEnviar factura por correo al cliente (adjunto PDF) — llega a un tercero, se requiere confirm=true
mark_invoice_paidMarcar una factura como pagada con fecha de pago opcional
get_invoice_pdfObtener bytes PDF de factura limitados como base64
get_invoice_einvoiceObtener bytes XML o PDF Factur-X limitados para una factura
create_credit_noteCrear una nota de crédito vinculada a una factura existente
apply_late_feeAplicar un recargo por mora a una factura vencida

Gastos (5)

HerramientaQué hace
list_expensesListar gastos con paginación
get_expenseObtener detalles de un gasto
create_expenseRegistrar un nuevo gasto
update_expenseModificar un gasto
delete_expenseEliminar un gasto

Clientes (5)

HerramientaQué hace
list_clientsListar todos los clientes
get_clientObtener detalles de un cliente
create_clientRegistrar un nuevo cliente
update_clientActualizar información de un cliente
delete_clientEliminar un cliente

CRM: Contactos (3)

HerramientaQué hace
list_client_contactsListar todos los contactos de un cliente
create_client_contactAñadir una persona de contacto a un cliente
delete_client_contactEliminar un contacto de un cliente

CRM: Actividades (2)

HerramientaQué hace
list_client_activitiesListar actividades de CRM (llamadas, correos, reuniones, tareas)
log_client_activityRegistrar una llamada, correo, reunión o tarea contra un cliente

CRM: Notas (3)

HerramientaQué hace
list_client_notesListar todas las notas de un cliente
create_client_noteAñadir una nota de texto libre a un cliente
delete_client_noteEliminar una nota de un cliente

Productos (5)

HerramientaQué hace
list_productsListar productos y servicios
get_productObtener detalles de un producto
create_productAñadir un producto o servicio
update_productActualizar precios o detalles
delete_productEliminar un producto

Presupuestos (6)

HerramientaQué hace
list_quotesListar todas las cotizaciones
get_quoteObtener detalles de una cotización
create_quoteRedactar una nueva cotización
update_quoteModificar una cotización
delete_quoteEliminar solo un borrador limpio sin evidencia de entrega, respuesta, adjunto o conversión; rechazar borradores protegidos; cancelar no-borradores (confirm=true requerido)
send_quoteEnviar cotización por correo al cliente para aceptación

Webhooks (6)

HerramientaQué hace
list_webhooksListar webhooks configurados
get_webhookObtener detalles de un webhook
create_webhookRegistrar un nuevo endpoint de webhook
update_webhookModificar eventos o URL
delete_webhookEliminar un webhook
test_webhookEnviar un payload de prueba a un endpoint de webhook configurado

Inteligencia (4)

HerramientaQué hace
get_business_contextInstantánea completa: perfil, plan, actividad reciente, principales clientes, mes actual
get_monthly_summaryP&L mensual: ingresos, gastos, beneficio, obligación fiscal, principales clientes por ingresos
get_quarterly_taxesPreparación fiscal trimestral: campos del Modelo 303/130, recaudado vs. deducible, obligación
duplicate_invoiceClonar una factura para facturación recurrente (copia artículos/cliente/impuestos, comienza como borrador)

Facturación Electrónica (10)

HerramientaQué hace
send_einvoiceEnviar una factura en 11 formatos (XRechnung, Factur-X, FatturaPA, PEPPOL, Facturae, UBL, CII) por correo / Chorus Pro / SDI / PEPPOL / descarga
get_einvoice_statusConsultar el estado de ejecución del flujo de trabajo Hatchet hasta que tenga éxito o falle — devuelve ackId, URL XML, URL PDF/A-3
validate_einvoice_xmlValidar XML sin procesar contra el esquema de formato + reglas schematron (KOSIT / Mustang / XSD / Schematron)
export_datevExportar datos contables como DATEV EXTF (Buchungsstapel / Debitoren / Kreditoren) en codificación CP1252
einvoice_exportExportar datos de factura electrónica en formatos legibles por máquina (JSON/XML) para archivo o integración
face_submitEnviar factura a FACe (plataforma española de facturación electrónica B2G)
face_statusConsultar el estado de envío de FACe para una factura enviada
ticketbai_submitEnviar registro fiscal TicketBAI a la autoridad tributaria del País Vasco (Hacienda)
ticketbai_statusConsultar el estado de envío de TicketBAI desde la autoridad tributaria vasca
ksef_submitNO_DESPLEGADO — Enviar factura a KSeF (Polonia) — stub: el transporte está listo a nivel de infraestructura en Frihet-ERP pero aún no se expone como endpoint en vivo (producción condicionada al certificado KSeF); devuelve un error etiquetado como "no disponible" hasta que se active

Seguimiento de Tiempo (6)

HerramientaQué hace
list_time_entriesListar entradas de tiempo con filtro por usuario, proyecto, rango de fechas, estado facturable
get_time_entryObtener detalles completos de una entrada de tiempo individual por ID
create_time_entryRegistrar horas para un proyecto (marca facturable, descripción, fecha)
update_time_entryActualizar cualquier campo en una entrada de tiempo existente (semántica PATCH)
delete_time_entryEliminación suave de una entrada de tiempo (confirm=true requerido)
get_time_summaryAgregar horas totales/facturables/no facturables para un período, con groupBy opcional (usuario/proyecto/día)

Facturas Recurrentes (8)

HerramientaQué hace
list_recurring_invoicesListar todas las plantillas de facturas recurrentes (filtrar por activa/pausada)
get_recurring_invoiceObtener detalles completos de una plantilla recurrente por ID
create_recurring_invoiceCrear una nueva plantilla de factura recurrente (diaria/semanal/mensual/trimestral/anual)
update_recurring_invoiceActualizar campos de plantilla — afecta solo a facturas futuras generadas
pause_recurring_invoicePausar una plantilla activa — no se generan facturas mientras esté pausada
resume_recurring_invoiceReanudar una plantilla pausada — siguiente factura en el próximo ciclo programado
delete_recurring_invoiceEliminar permanentemente una plantilla (confirm=true requerido)
run_recurring_nowActivar manualmente la generación inmediata de la siguiente instancia de factura

Gestión de Equipo (4)

HerramientaQué hace
list_team_membersListar miembros activos + invitaciones pendientes (propietario excluido)
invite_team_memberInvitar a un nuevo miembro por correo con rol (admin/editor/contable/visor)
update_team_member_roleCambiar el rol de un miembro existente (admin/editor/contable/visor)
remove_team_memberEliminar un miembro del espacio de trabajo (confirm=true requerido)

Gestoría — Contables (5)

HerramientaQué hace
gestoria_message_sendEnviar un mensaje en un hilo contextual (documentRequest / filingItem / obligation)
gestoria_messages_listListar mensajes en un hilo, más recientes primero; paginar hacia atrás con before
gestoria_template_createCrear una plantilla reutilizable de solicitud de documentos con variables + desplazamiento de fecha de vencimiento
gestoria_template_bulk_sendEnvío masivo de una plantilla a hasta 500 espacios de trabajo de clientes en una sola llamada
gestoria_aging_consolidatedInforme de antigüedad de cuentas por cobrar entre clientes (cubos, desglose por espacio de trabajo, principales vencidos)

Auditoría de Libro Mayor (3)

HerramientaQué hace
frihet_gl_entry_approveAprobar un asiento de diario del libro mayor (solo gestor/admin — ÁREA DE CONFIANZA)
frihet_gl_entry_rejectRechazar un asiento del libro mayor con un motivo obligatorio (ÁREA DE CONFIANZA)
frihet_gl_entry_audit_logRecuperar el rastro de auditoría completo de un asiento del libro mayor

Dominio del Portal de Marca Blanca (3)

HerramientaQué hace
frihet_portal_domain_addAñadir un dominio personalizado al portal del cliente (devuelve registros DNS CNAME)
frihet_portal_domain_verifyVerificar la propagación DNS para un dominio de portal personalizado
frihet_portal_domain_removeEliminar un dominio de portal personalizado (revierte al subdominio predeterminado de Frihet)

Auto-onboarding y VIES (2)

HerramientaQué hace
frihet_portal_onboard_link_generateGenerar un enlace de auto-onboarding con límite de tiempo para un cliente potencial
frihet_tax_id_vies_lookupValidar un número de IVA de la UE (CIF intracomunitario) a través de VIES

IGIC — Impuesto Indirecto de Canarias (4)

HerramientaQué hace
frihet_modelo_415_summaryM415 operaciones anuales >€3.005 (equivalente canario del M347) — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_425_summaryM425 resumen anual de IGIC para empresas canarias — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_418_summaryM418 declaración mensual individual de IGIC, régimen especial del grupo de entidades — no desplegado, devuelve NOT_DEPLOYED
frihet_aiem_calculateCálculo de AIEM (Arbitrio de Importación) para Canarias — no desplegado, devuelve NOT_DEPLOYED

Impuesto sobre Sociedades (2)

HerramientaQué hace
frihet_modelo_200_summaryDeclaración anual del IS Modelo 200 — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_202_summaryPagos fraccionados del Modelo 202 (1P/2P/3P) — no desplegado, devuelve NOT_DEPLOYED

Reglas de Categorización Bancaria (2)

HerramientaQué hace
frihet_bank_rules_listListar todas las reglas de auto-categorización bancaria (condiciones + acciones + estado)
frihet_bank_rule_createCrear una nueva regla para auto-categorizar transacciones por descripción, importe, contraparte

Depósitos (7)

HerramientaQué hace
list_depositsListar depósitos con paginación
get_depositObtener detalles de un depósito por ID
create_depositRegistrar un nuevo depósito de cliente
update_depositActualizar campos de depósito
delete_depositEliminar un depósito (confirm=true requerido)
apply_depositAplicar un saldo de depósito contra una factura
refund_depositEmitir un reembolso por un depósito

Proveedores (5)

HerramientaQué hace
list_vendorsListar todos los proveedores
get_vendorObtener detalles de un proveedor
create_vendorAñadir un nuevo proveedor
update_vendorActualizar información de proveedor
delete_vendorEliminar un proveedor

Banca (5)

HerramientaQué hace
list_bank_accountsListar cuentas bancarias conectadas
get_bank_accountObtener detalles de una cuenta bancaria
list_transactionsListar transacciones bancarias con filtros
categorize_transactionAsignar una categoría y tipo de gasto/ingreso a una transacción
match_transaction_to_invoiceVincular una transacción bancaria a una factura existente

Fiscal — Modelos Tributarios Españoles (7)

HerramientaQué hace
get_modelo_303_summaryDeclaración trimestral de IVA (Modelo 303) — recaudado vs. deducible, neto a pagar
get_modelo_130_summaryPago fraccionado trimestral de IRPF para autónomos (Modelo 130)
get_modelo_390_summaryResumen anual de IVA (Modelo 390)
get_modelo_180_summaryResumen anual de retenciones para alquileres (Modelo 180) — no desplegado, devuelve NOT_DEPLOYED
get_modelo_347_summaryTransacciones anuales con terceros >€3.005 (Modelo 347)
verifactu_statusObtener estado de envío de VeriFactu para un registro fiscal
verifactu_resubmitReenviar un registro fiscal de VeriFactu rechazado
ticketbai_statusConsultar estado de envío de TicketBAI — referencia cruzada desde Facturación Electrónica (10); NO se cuenta para los 7 de esta sección

Alquileres Vacacionales / Estancias (5)

HerramientaQué hace
list_reservationsListar reservas de alquiler con filtros
get_reservationObtener detalles de una reserva
create_reservationCrear una nueva reserva
list_propertiesListar todas las propiedades de alquiler
sync_channelActivar sincronización de canal OTA (Airbnb, Booking.com, etc.)

TPV — Punto de Venta (4)

HerramientaQué hace
list_terminalsListar terminales TPV registrados
get_saleObtener detalles de una transacción de venta TPV
list_salesListar ventas TPV con paginación
refund_saleEmitir un reembolso por una venta TPV

Cocina / Restaurante (6)

HerramientaQué hace
list_kitchen_ticketsListar tickets de pedidos de cocina para el tablero en vivo, filtrados por estado o estación
get_kitchen_ticketObtener un ticket de cocina individual por ID con todos los artículos y sus estados individuales
update_kitchen_ticketAvanzar el estado de un ticket (en cola → preparando → listo → servido) o reasignarlo a otra estación
list_kitchen_stationsListar todas las estaciones de cocina con id, nombre y estado activo
list_menu_itemsListar el catálogo del menú de cocina con búsqueda de texto libre y filtro activo/inactivo
kitchen_flow_summaryDetección de estación lenta: agregar tickets abiertos por estación y marcar el cuello de botella

RRHH — Recursos Humanos (9)

HerramientaQué hace
leave_request_createCrear una solicitud de ausencia (vacaciones, enfermedad, personal)
leave_approveAprobar una solicitud de ausencia pendiente
leave_rejectRechazar una solicitud de ausencia con un motivo
leave_cancelCancelar una solicitud de ausencia aprobada o pendiente
leave_listListar solicitudes de ausencia con filtros (usuario, estado, rango de fechas)
attendance_clock_inRegistrar entrada (fichaje) para un empleado
attendance_clock_outRegistrar salida (fichaje) para un empleado
overtime_reportLeer horas extra diarias/semanales, agregar minutos/horas y alertas de cumplimiento calculadas sobre los registros YYYY o YYYY-MM seleccionados
anomaly_listListar anomalías de asistencia (fichajes faltantes, horas extra excesivas)

Nómina (2)

HerramientaQué hace
payroll_exportLeer datos de empleados normalizados listos para nómina; el valor de formato es una etiqueta de destino repetida, no un archivo generado
payroll_checklistListar empleados pagables con preparación de perfil de nómina, campos faltantes y estado de revisión mensual

Onboarding (2)

HerramientaQué hace
onboarding_statusObtener estado de finalización del onboarding para el espacio de trabajo actual
onboarding_persona_setEstablecer o actualizar la persona de negocio (autónomo, PYME, gestoría, etc.)

Permisos (2)

HerramientaQué hace
permissions_matrixObtener la instantánea documentada del modelo RBAC (no es una garantía de autorización en tiempo de ejecución)
permissions_meComparar los campos del modelo RBAC con los alcances reales de las claves API y las denegaciones de alcance conocidas (no exhaustivo)

Cierre de período (3)

HerramientaQué hace
period_close_statusObtener el rango del año fiscal YYYY actual o seleccionado, estado abierto/cerrado y detalles de cierre anulables
period_closeCerrar un período contable (solo gestor/admin — ÁREA DE CONFIANZA)
period_reopenReabrir un período cerrado con un motivo obligatorio (ÁREA DE CONFIANZA)

Todas las operaciones canónicas (y sus alias) devuelven salida estructurada a través de outputSchema — JSON tipado, no texto sin formato. Las formas de respuesta de las listas siguen su familia de API; no todos los endpoints de listas están paginados.

Verdad sobre capacidades y efectos secundarios

En todas las superficies MCP, cada entrada de tools/list incluye _meta["io.frihet/capability"]:

  • registered significa que el nombre y el manejador existen en esta compilación del servidor;
  • callability es api_dependent (el manejador llama a la API; el despliegue, la habilitación del espacio de trabajo y la autorización aún deciden), runtime_checked (el manejador distingue explícitamente un backend ausente de datos vacíos), deferred, unavailable o local — nunca una afirmación incondicional de "disponible";
  • writesFrihet, externalInteraction y externalSideEffects distinguen cambios de estado y llamadas a entidades/proveedores externos;
  • Las anotaciones de acciones MCP siguen siendo la fuente estándar para pistas de solo lectura, destructivas, idempotentes y de mundo abierto.

El host de ChatGPT/OpenAI es una superficie revisada por separado: exactamente 33 operaciones de negocio con descripciones completas, 0 meta-herramientas de descubrimiento, 0 prompts y 0 recursos. Sus 17 lecturas y 16 escrituras son deliberadamente limitadas, y todas las escrituras requieren literalmente confirm=true. Diez escrituras pueden entregar eventos comerciales completos a endpoints activos previamente configurados por el propietario del espacio de trabajo; la administración de webhooks en sí permanece excluida. La entrega directa de correo electrónico, el resumen mensual heredado, los PDF de facturas sin procesar, las transiciones del ciclo de vida de facturas, la actualización de una cotización existente, la presentación regulada, la eliminación de registros de clientes principales, la eliminación de gastos con sus archivos vinculados, la eliminación de productos y la eliminación de proveedores también están excluidas. Esta superficie no debe inferirse del catálogo completo.


Recursos

Contexto que la IA puede leer para tomar decisiones más inteligentes.

El paquete local sirve 11 recursos: 7 referencias estáticas más 4 recursos de espacio de trabajo respaldados por API. El Worker alojado sirve los 7 recursos estáticos. El host revisado por OpenAI sirve 0 recursos.

Estáticos (datos de referencia, sin llamadas API):

RecursoURIQué proporciona
Esquema APIfrihet://api/schemaResumen OpenAPI: endpoints, autenticación, límites de tasa, paginación, códigos de error
Tasas impositivasfrihet://tax/ratesTasas impositivas por zona fiscal española: IVA, IGIC, IPSI, inversión del sujeto pasivo UE, IRPF
Calendario fiscalfrihet://tax/calendarPlazos de presentación trimestrales y anuales para los modelos fiscales españoles enumerados
Categorías de gastosfrihet://config/expense-categories8 categorías con reglas de deducibilidad, tratamiento de IVA, amortización
Estados de facturafrihet://config/invoice-statusesFlujo de estados (borrador > enviada > pagada/vencida > cancelada), reglas de transición, eventos de webhook
Monedasfrihet://config/currencies40 monedas compatibles con códigos ISO, símbolos, decimales, formato de configuración regional
Paísesfrihet://config/countries61 países compatibles con zonas fiscales, tasas impositivas predeterminadas, monedas, prefijos de factura

Dinámicos (datos en vivo de tu cuenta):

RecursoURIQué proporciona
Perfil de negociofrihet://business-profileTu información de negocio, plan, valores predeterminados, actividad reciente, clientes principales
Instantánea mensualfrihet://monthly-snapshotP&L del mes actual, ingresos, gastos, obligación tributaria
Facturas vencidasfrihet://overdue-invoicesTodas las facturas con fecha de vencimiento pasada (hasta 100)
Límites del planfrihet://status/plan-limitsNivel de plan en vivo, contadores de uso, facturas/mes, límites de tasa API

Prompts (10)

Flujos de trabajo preconstruidos que la IA puede ejecutar como operaciones guiadas de múltiples pasos.

PromptQué haceArgumentos
monthly-closeCerrar el mes: revisar facturas impagas, categorizar gastos, verificar obligaciones fiscales, generar resumenmonth? (AAAA-MM)
onboard-clientConfigurar un nuevo cliente con tasas impositivas correctas por ubicación, opcionalmente crear una cotización de bienvenidaclientName, country?, region?
quarterly-tax-prepPreparar la presentación fiscal trimestral: calcular IVA/IGIC, identificar deducibles, previsualizar Modelo 303/130/420quarter?, fiscalZone?
overdue-followupEncontrar facturas vencidas, redactar mensajes de seguimiento, sugerir recordatorios de pago--
new-client-invoiceCrear un cliente + primera factura en un solo flujo de trabajo con búsqueda de tasa impositivaclientName, country?
expense-reportGenerar informe de gastos agrupado por categoría con totales deduciblesmonth? (AAAA-MM)
year-end-closeCierre anual completo: revisión trimestral, facturas pendientes, gastos sin categorizar, lista de verificación de fin de añoyear (AAAA)
cash-flow-forecastProyectar flujo de caja para los próximos meses: ingresos recurrentes, gastos, cuentas por cobrar vencidas, plazos fiscalesmonths? (predeterminado: 3)
invoice-aging-reviewAnálisis de antigüedad de cuentas por cobrar: agrupar facturas impagas por rango (0-30/31-60/61-90/90+ días), principales deudores, acciones de cobro--
expense-batchProcesar gastos en lote: categorizar, aplicar tasas impositivas, marcar recibos faltantesfiscalZone?

Cómo 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

El servidor traduce las llamadas de herramientas en solicitudes API REST. Maneja autenticación, límites de tasa (reintento automático con retroceso exponencial en 429), paginación y mapeo de errores.

Dos transportes:

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

Variables de entorno

VariableRequeridaPredeterminado
FRIHET_API_KEYSí (stdio)--
FRIHET_API_URLNohttps://api.frihet.io/v1
FRIHET_TOOL_MODENofull

Exposición de herramientas: profundidad servida bajo demanda

El diferenciador de Frihet es la profundidad — cobertura fiscal completa ES/UE más cumplimiento nativo (VeriFactu, TicketBAI, Facturae/FACe; KSeF Polonia infraestructura lista, activación pendiente), banca, CRM, RRHH/nóminas, estancia/PMS y POS. Pero una lista plana de cada herramienta, cargada en el contexto de un agente de antemano, es el problema de la podredumbre de contexto de 2026: desplaza la tarea y degrada la selección de herramientas antes de que comience cualquier trabajo.

FRIHET_TOOL_MODE te permite elegir cómo se expone esa profundidad.

ModoComportamiento
full (predeterminado)Las herramientas canónicas y los alias fiscales se exponen con descripciones y esquemas completos. Los descriptores públicos añaden verdad conservadora sobre capacidad de llamada y efectos secundarios; los nombres de operaciones, esquemas y manejadores no cambian.
groupedDivulgación progresiva. La descripción de cada herramienta se colapsa a un [group] summary — full schema via describe_tool('name') de una línea, y se añaden tres herramientas de descubrimiento ligeras. El agente carga profundidad solo para las herramientas que realmente necesita.

En el modo grouped, los nombres de operaciones, esquemas de entrada y manejadores no cambian. Los descriptores también exponen la misma verdad conservadora de capacidad y acción que el perfil completo. El descubrimiento fluye a través de tres meta-herramientas:

  • list_tool_groups() — el mapa de dominio (facturación, gastos, fiscal/cumplimiento, banca, CRM, RRHH/nóminas, estancia/PMS, POS, inteligencia, productos, plataforma) con una descripción de una línea y el recuento de herramientas para cada uno.
  • search_tools(query) — búsqueda de texto libre en nombre de herramienta, título, resumen y grupo; devuelve herramientas coincidentes con su grupo, resumen, indicador de solo lectura y campos de entrada. Filtro opcional group y limit.
  • describe_tool(name) — la descripción original completa y los campos de entrada para una herramienta, bajo demanda, antes de llamarla.
// 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"
      }
    }
  }
}

La exposición agrupada cambia la densidad de la descripción, no el comportamiento de la operación. El perfil versionado revisado por OpenAI se compone por separado y permanece con acceso independiente.


Límites de API

LímiteValor
Solicitudes por minuto100 por clave API
Resultados por página100 máx. (50 predeterminado)
Cuerpo de solicitud1 MB máx.
Carga útil de webhook100 KB máx.
Webhooks por cuenta20 máx.

El límite de tasa se maneja automáticamente con retroceso exponencial.


Habilidad de Claude Code

Más allá de las herramientas MCP sin procesar, este repositorio incluye una habilidad de Claude Code que añade contexto de negocio: reglas fiscales españolas, recetas de flujos de trabajo, informes financieros y comandos en lenguaje natural.

Instalar la habilidad

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

O con el instalador universal:

npx skills add Frihet-io/frihet-mcp

Comandos

ComandoQué hace
/frihet statusResumen de cuenta, actividad reciente, pagos pendientes
/frihet invoiceCrear, listar, buscar facturas
/frihet expenseRegistrar y consultar gastos
/frihet clientsGestionar base de datos de clientes
/frihet quoteCrear y gestionar cotizaciones
/frihet reportResúmenes financieros (P&L, trimestral, vencidos)
/frihet webhooksConfigurar disparadores de automatización
/frihet setupConfiguración guiada y prueba de conexión

La habilidad conoce las tasas de IVA, la retención de IRPF, la preparación del Modelo 303, las reglas de deducibilidad de gastos y el cumplimiento de VeriFactu.

Documentación completa: docs.frihet.io/desarrolladores/skill-claude-code


Desarrollo

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

Ejecutar localmente:

FRIHET_API_KEY=fri_xxx node dist/index.js

Probar con el Inspector MCP:

npx @modelcontextprotocol/inspector node dist/index.js

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir lo que te gustaría cambiar.

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

Limitaciones actuales

  • Sin OCR ni carga de archivos -- el MCP funciona con datos estructurados, no con imágenes o PDFs.
  • Empresa única -- una clave API se asigna a un espacio de trabajo de Frihet.
  • Se requiere cuenta de Frihet -- necesitas una cuenta activa en app.frihet.io y una clave API (comienza con fri_).

Ecosistema

PaqueteQué es
@frihet/mcp-serverEste servidor MCP (158 operaciones canónicas + 5 nombres de alias; 11 recursos locales; 10 prompts)
@frihet/sdkSDK de TypeScript (frihet.invoices.create())
frihetCLI (frihet invoices list --status overdue)
n8n-nodes-frihetNodo comunitario de n8n para automatización de flujos de trabajo
API RESTOpenAPI 3.1 en api.frihet.io/v1
MCP remotoEndpoint alojado en Cloudflare Workers (instalación cero)
WebhooksEventos en tiempo real con HMAC-SHA256

Enlaces


Licencia

MIT. Ver LICENCIA.

Construido por Frihet.