Odel
Frihet ERP

Frihet ERP

@frihet-ioDeveloper Tools6TypeScriptMITUpdated 6 days ago

AI-native ERP MCP: ES/EU fiscal compliance (VeriFactu/TicketBAI/Facturae), invoicing, tax, banking

Server endpointStreamable HTTPOAuthProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

frihet-mcp

AI-native MCP server for business management.
Servidor MCP nativo con IA para gestión empresarial.

npm version npm downloads Smithery installs MCP Registry license 157 tools node >=18 TypeScript


Distribution

ChannelStatusInstall
npmLivenpx @frihet/mcp-server
Remote endpointLivehttps://mcp.frihet.io/mcp (zero install, OAuth or API key)
SmitheryLivesmithery.ai/server/frihet/frihet-mcp
MCP RegistryLiveregistry.modelcontextprotocol.io
GlamaLiveglama.ai/mcp/servers/@Frihet-io/frihet-mcp
mcp.soAuto-index (unverified)mcp.so — indexes from npm + GitHub
PulseMCPAuto-index (unverified)pulsemcp.com — indexes from npm + GitHub
Cursor MarketplaceComing sooncursor.com/marketplace
ChatGPT AppsComing soonchatgpt.com
Anthropic Claude DirectoryComing soonclaude.ai/settings/connectors

Tool count: npm latest (1.14.0) ships all 157 tools, same as the remote endpoint (mcp.frihet.io).


What is this

An MCP server that connects your AI assistant to Frihet. Create invoices by talking. Query expenses in natural language. Manage your entire business from your 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.

157 tools. 11 resources. 10 prompts. Structured output on every tool. Zero boilerplate.


Install

One-line (Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI, and more)

npx skills add Frihet-io/frihet-mcp

Claude Code / Claude Desktop

{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["-y", "@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_your_key_here"
      }
    }
  }
}
ToolConfig file
Claude Code~/.claude/mcp.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Cursor.cursor/mcp.json or ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineVS Code settings or .cline/mcp.json
Codex CLI~/.codex/config.toml (MCP section)

The JSON config is identical for all tools. Only the file path changes.

Remote (no install)

Use the hosted endpoint at mcp.frihet.io -- zero local dependencies, runs on Cloudflare Workers.

With API key:

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

With OAuth 2.0 + PKCE (browser-based login, no API key needed):

Clients that support OAuth (Claude Desktop, Smithery, etc.) can connect directly to https://mcp.frihet.io/mcp and authenticate via browser. The server implements the full OAuth 2.1 authorization code flow with PKCE.

Get your API key

  1. Log into app.frihet.io
  2. Go to Settings > API
  3. Click Create API key
  4. Copy the key (starts with fri_) -- it's only shown once

What you can do

Talk to your ERP. These are real prompts, not marketing copy.

Invoicing

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

Expenses

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

Clients

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

Quotes

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

What to expect

This MCP is a structured data interface -- you describe what you want in natural language, and the AI creates, queries, or modifies business records in Frihet. All 157 tools are CRUD operations over the REST API.

Works great:

"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

Does not do:

  • OCR or PDF scanning -- you cannot upload an invoice image and have it read
  • File upload or attachment handling
  • Image processing of any kind

If you need to digitize paper invoices or receipts, extract the data first (e.g., Claude Vision API, a dedicated OCR service, or manual entry), then use the MCP to create the record:

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

Tools (157)

Invoices (12)

ToolWhat it does
list_invoicesList invoices with pagination
get_invoiceGet full invoice details by ID
create_invoiceCreate a new invoice with line items
update_invoiceUpdate any invoice field
delete_invoicePermanently delete an invoice
search_invoicesFind invoices by client name, date, or status
send_invoiceEmail invoice to client (PDF attachment)
mark_invoice_paidMark an invoice as paid with optional payment date
get_invoice_pdfGet a download URL for the invoice PDF
get_invoice_einvoiceGet the e-invoice XML for a given invoice ID
create_credit_noteCreate a credit note linked to an existing invoice
apply_late_feeApply a late payment fee to an overdue invoice

Expenses (5)

ToolWhat it does
list_expensesList expenses with pagination
get_expenseGet expense details
create_expenseRecord a new expense
update_expenseModify an expense
delete_expenseDelete an expense

Clients (5)

ToolWhat it does
list_clientsList all clients
get_clientGet client details
create_clientRegister a new client
update_clientUpdate client info
delete_clientRemove a client

CRM: Contacts (3)

ToolWhat it does
list_client_contactsList all contacts for a client
create_client_contactAdd a contact person to a client
delete_client_contactRemove a contact from a client

CRM: Activities (2)

ToolWhat it does
list_client_activitiesList CRM activities (calls, emails, meetings, tasks)
log_client_activityLog a call, email, meeting, or task against a client

CRM: Notes (3)

ToolWhat it does
list_client_notesList all notes for a client
create_client_noteAdd a free-form note to a client
delete_client_noteRemove a note from a client

Products (5)

ToolWhat it does
list_productsList products and services
get_productGet product details
create_productAdd a product or service
update_productUpdate pricing or details
delete_productRemove a product

Quotes (6)

ToolWhat it does
list_quotesList all quotes
get_quoteGet quote details
create_quoteDraft a new quote
update_quoteModify a quote
delete_quoteDelete a quote
send_quoteEmail quote to client for acceptance

Webhooks (6)

ToolWhat it does
list_webhooksList configured webhooks
get_webhookGet webhook details
create_webhookRegister a new webhook endpoint
update_webhookModify events or URL
delete_webhookRemove a webhook
test_webhookSend a test payload to a configured webhook endpoint

Intelligence (4)

ToolWhat it does
get_business_contextFull snapshot: profile, plan, recent activity, top clients, current month
get_monthly_summaryMonthly P&L: revenue, expenses, profit, tax liability, top clients by revenue
get_quarterly_taxesQuarterly tax prep: Modelo 303/130 fields, collected vs deductible, liability
duplicate_invoiceClone an invoice for recurring billing (copies items/client/tax, starts as draft)

E-Invoicing (10)

Status: beta. Tools call api.frihet.io/v1/einvoice/* directly. If an endpoint is not yet deployed (404), the tool falls back to { _stub: true, _note: "CF endpoint pending deploy", _plannedEndpoint: "..." } so the server remains usable while transport ships.

ToolWhat it does
send_einvoiceDispatch an invoice in 11 formats (XRechnung, Factur-X, FatturaPA, PEPPOL, Facturae, UBL, CII) via email / Chorus Pro / SDI / PEPPOL / download
get_einvoice_statusPoll Hatchet workflow run status until succeeded/failed — returns ackId, XML URL, PDF/A-3 URL
validate_einvoice_xmlValidate raw XML against format schema + schematron rules (KOSIT / Mustang / XSD / Schematron)
export_datevExport accounting data as DATEV EXTF (Buchungsstapel / Debitoren / Kreditoren) in CP1252 encoding
einvoice_exportExport e-invoice data in machine-readable formats (JSON/XML) for archival or integration
face_submitSubmit invoice to FACe (Spain B2G government e-invoicing platform)
face_statusPoll submission status from FACe for a submitted invoice
ticketbai_submitSubmit TicketBAI fiscal record to Basque Country tax authority (Hacienda)
ticketbai_statusPoll TicketBAI submission status from the Basque tax authority
ksef_submitSubmit invoice to KSeF (Poland national e-invoicing system — stub)

Time Tracking (6)

Status: stub/v1/time/* endpoints planned. Tools surface 404 until backend ships.

ToolWhat it does
list_time_entriesList time entries with filter by user, project, date range, billable status
get_time_entryGet full details of a single time entry by ID
create_time_entryLog hours for a project (billable flag, description, date)
update_time_entryUpdate any field on an existing time entry (PATCH semantics)
delete_time_entrySoft-delete a time entry (confirm=true required)
get_time_summaryAggregate total/billable/non-billable hours for a period, with optional groupBy (user/project/day)

Recurring Invoices (8)

Status: stub/v1/recurring/* endpoints planned. Tools surface 404 until backend ships.

ToolWhat it does
list_recurring_invoicesList all recurring invoice templates (filter by active/paused)
get_recurring_invoiceGet full details of a recurring template by ID
create_recurring_invoiceCreate a new recurring invoice template (daily/weekly/monthly/quarterly/yearly)
update_recurring_invoiceUpdate template fields — affects future generated invoices only
pause_recurring_invoicePause an active template — no invoices generated while paused
resume_recurring_invoiceResume a paused template — next invoice on next scheduled cycle
delete_recurring_invoicePermanently delete a template (confirm=true required)
run_recurring_nowManually trigger immediate generation of the next invoice instance

Team Management (4)

Status: stub/v1/team/* endpoints planned. Tools surface 404 until backend ships.

ToolWhat it does
list_team_membersList all workspace members with role and invite status
invite_team_memberInvite a new member by email with role (admin/member/viewer)
update_team_member_roleChange an existing member's role
remove_team_memberRemove a member from the workspace (confirm=true required)

Gestoria — Accountants (5)

Status: stub/v1/gestoria/* REST surface lands with Wave Fase 1 closure (PRs #383 bulk send, #384 aging, #385 messaging). Tools surface 404 until the backend ships.

ToolWhat it does
gestoria_message_sendSend a message in a contextual thread (documentRequest / filingItem / obligation)
gestoria_messages_listList messages in a thread, newest first; paginate backwards with before
gestoria_template_createCreate a reusable document request template with variables + due-date offset
gestoria_template_bulk_sendBulk send a template to up to 500 client workspaces in one call
gestoria_aging_consolidatedCross-client AR aging report (buckets, per-workspace breakdown, top overdue)

Audit GL (3)

Status: stub/v1/gl/* proxies callables approveGLEntry, rejectGLEntry, getGLEntryAuditLog (PR #395). Tools surface 404 until backend ships.

ToolWhat it does
frihet_gl_entry_approveApprove a GL journal entry (gestor/admin only — TRUST AREA)
frihet_gl_entry_rejectReject a GL entry with a mandatory reason (TRUST AREA)
frihet_gl_entry_audit_logRetrieve full audit trail for a GL entry

White-label Portal Domain (3)

Status: stub/v1/portal/domain/* proxies callables addCustomPortalDomain, verifyCustomPortalDomain, removeCustomPortalDomain (PR #397).

ToolWhat it does
frihet_portal_domain_addAdd a custom domain to the client portal (returns DNS CNAME records)
frihet_portal_domain_verifyVerify DNS propagation for a custom portal domain
frihet_portal_domain_removeRemove a custom portal domain (reverts to default Frihet subdomain)

Self-onboard & VIES (2)

Status: stub/v1/portal/onboard/* proxies callables generatePortalOnboardLink, lookupTaxIdViaVIES (PR #398). Public portal flows excluded from MCP.

ToolWhat it does
frihet_portal_onboard_link_generateGenerate a time-limited self-onboard link for a prospective client
frihet_tax_id_vies_lookupValidate an EU VAT number (CIF intracomunitario) via VIES

IGIC — Canary Islands Indirect Tax (4)

Status: stub/v1/igic/* service-layer reads (PR #390). ATC SOAP excluded (internal infra).

ToolWhat it does
frihet_modelo_415_summaryM415 annual operations >€3,005 (Canarias equivalent of M347)
frihet_modelo_425_summaryM425 annual IGIC recap for Canary Islands businesses
frihet_modelo_418_summaryM418 monthly IGIC return for large enterprises (grandes empresas)
frihet_aiem_calculateCalculate AIEM (Arbitrio Importación) for imported/produced goods in Canarias

Impuesto sobre Sociedades — Corporate Tax (2)

Status: stub/v1/is/* service-layer reads for Spanish SLs/SAs (PR #392).

ToolWhat it does
frihet_modelo_200_summaryModelo 200 annual IS return (taxable base, deductions, net payable)
frihet_modelo_202_summaryModelo 202 installment payments (1P April, 2P October, 3P December)

Bank Categorization Rules (2)

Status: stub/v1/banking/rules Q3-flagged (PR #394). Webhook handlers excluded.

ToolWhat it does
frihet_bank_rules_listList all bank auto-categorization rules (conditions + actions + status)
frihet_bank_rule_createCreate a new rule to auto-categorize transactions by description, amount, counterparty

Deposits (7)

ToolWhat it does
list_depositsList deposits with pagination
get_depositGet deposit details by ID
create_depositRecord a new client deposit
update_depositUpdate deposit fields
delete_depositDelete a deposit (confirm=true required)
apply_depositApply a deposit balance against an invoice
refund_depositIssue a refund for a deposit

Vendors (5)

ToolWhat it does
list_vendorsList all vendors/suppliers
get_vendorGet vendor details
create_vendorAdd a new vendor
update_vendorUpdate vendor info
delete_vendorRemove a vendor

Banking (5)

ToolWhat it does
list_bank_accountsList connected bank accounts
get_bank_accountGet details for a bank account
list_transactionsList bank transactions with filters
categorize_transactionAssign a category and expense/income type to a transaction
match_transaction_to_invoiceLink a bank transaction to an existing invoice

Fiscal — Spanish Tax Models (8)

ToolWhat it does
get_modelo_303_summaryQuarterly IVA return (Modelo 303) — collected vs deductible, net payable
get_modelo_130_summaryQuarterly IRPF installment for self-employed (Modelo 130)
get_modelo_390_summaryAnnual IVA summary (Modelo 390)
get_modelo_180_summaryAnnual withholding summary for rentals (Modelo 180)
get_modelo_347_summaryAnnual third-party transactions >€3,005 (Modelo 347)
verifactu_statusGet VeriFactu submission status for a fiscal record
verifactu_resubmitResubmit a rejected VeriFactu fiscal record
ticketbai_statusPoll TicketBAI submission status (also available in E-Invoicing section)

Vacation Rentals / Stay (5)

ToolWhat it does
list_reservationsList rental reservations with filters
get_reservationGet reservation details
create_reservationCreate a new reservation
list_propertiesList all rental properties
sync_channelTrigger OTA channel sync (Airbnb, Booking.com, etc.)

POS — Point of Sale (4)

ToolWhat it does
list_terminalsList registered POS terminals
get_saleGet details for a POS sale transaction
list_salesList POS sales with pagination
refund_saleIssue a refund for a POS sale

HR — Human Resources (9)

ToolWhat it does
leave_request_createCreate a leave request (vacation, sick, personal)
leave_approveApprove a pending leave request
leave_rejectReject a leave request with a reason
leave_cancelCancel an approved or pending leave request
leave_listList leave requests with filters (user, status, date range)
attendance_clock_inRecord clock-in for an employee
attendance_clock_outRecord clock-out for an employee
overtime_reportGenerate overtime report for a period
anomaly_listList attendance anomalies (missing punches, excessive overtime)

Payroll (2)

ToolWhat it does
payroll_exportExport payroll data for a period (CSV/PDF for gestoría)
payroll_checklistGenerate pre-payroll checklist: pending leaves, anomalies, overtime

Onboarding (2)

ToolWhat it does
onboarding_statusGet onboarding completion status for the current workspace
onboarding_persona_setSet or update the business persona (freelancer, SME, gestoría, etc.)

Permissions (2)

ToolWhat it does
permissions_matrixGet the full permissions matrix for all roles in the workspace
permissions_meGet the current API key's effective permissions

Period Close (3)

ToolWhat it does
period_close_statusGet the close status for an accounting period
period_closeClose an accounting period (gestor/admin only — TRUST AREA)
period_reopenReopen a closed period with a mandatory reason (TRUST AREA)

All 157 tools return structured output via outputSchema -- typed JSON, not raw text. List tools return paginated results ({ data, total, limit, offset }).


Resources (11)

Context the AI can read to make smarter decisions.

Static (reference data, no API calls):

ResourceURIWhat it provides
API Schemafrihet://api/schemaOpenAPI summary: endpoints, auth, rate limits, pagination, error codes
Tax Ratesfrihet://tax/ratesTax rates by Spanish fiscal zone: IVA, IGIC, IPSI, EU reverse charge, IRPF
Tax Calendarfrihet://tax/calendarQuarterly filing deadlines: Modelo 303, 130, 390, 420, VeriFactu timeline
Expense Categoriesfrihet://config/expense-categories8 categories with deductibility rules, IVA treatment, amortization
Invoice Statusesfrihet://config/invoice-statusesStatus flow (draft > sent > paid/overdue > cancelled), transition rules, webhook events
Currenciesfrihet://config/currencies40 supported currencies with ISO codes, symbols, decimal places, locale formatting
Countriesfrihet://config/countries61 supported countries with fiscal zones, default tax rates, currencies, invoice prefixes

Dynamic (live data from your account):

ResourceURIWhat it provides
Business Profilefrihet://business-profileYour business info, plan, defaults, recent activity, top clients
Monthly Snapshotfrihet://monthly-snapshotCurrent month P&L, revenue, expenses, tax liability
Overdue Invoicesfrihet://overdue-invoicesAll invoices past due date (up to 100)
Plan Limitsfrihet://status/plan-limitsLive plan tier, usage counters, invoices/month, API rate limits

Prompts (10)

Pre-built workflows the AI can execute as guided multi-step operations.

PromptWhat it doesArguments
monthly-closeClose the month: review unpaid invoices, categorize expenses, check tax obligations, generate summarymonth? (YYYY-MM)
onboard-clientSet up a new client with correct tax rates by location, optionally create a welcome quoteclientName, country?, region?
quarterly-tax-prepPrepare quarterly tax filing: calculate IVA/IGIC, identify deductibles, preview Modelo 303/130/420quarter?, fiscalZone?
overdue-followupFind overdue invoices, draft follow-up messages, suggest payment reminders--
new-client-invoiceCreate a client + first invoice in one workflow with tax rate lookupclientName, country?
expense-reportGenerate expense report grouped by category with deductible totalsmonth? (YYYY-MM)
year-end-closeFull annual closing: quarterly review, pending invoices, uncategorized expenses, year-end checklistyear (YYYY)
cash-flow-forecastProject cash flow for coming months: recurring income, expenses, overdue receivables, tax deadlinesmonths? (default: 3)
invoice-aging-reviewAR aging analysis: group unpaid invoices by bucket (0-30/31-60/61-90/90+ days), top debtors, collection actions--
expense-batchProcess expenses in bulk: categorize, apply tax rates, flag missing receiptsfiscalZone?

How it works

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

The server translates tool calls into REST API requests. It handles authentication, rate limiting (automatic retry with backoff on 429), pagination, and error mapping.

Two transports:

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

Environment variables

VariableRequiredDefault
FRIHET_API_KEYYes (stdio)--
FRIHET_API_URLNohttps://api.frihet.io/v1
FRIHET_TOOL_MODENofull

Tool exposure: depth served on demand

Frihet's differentiator is depth — full ES/EU fiscal coverage plus native compliance (VeriFactu, TicketBAI, Facturae/FACe/KSeF), banking, CRM, HR/payroll, stay/PMS and POS. But a flat list of every tool, loaded into an agent's context up front, is the 2026 context-rot problem: it crowds out the task and degrades tool selection before any work begins.

FRIHET_TOOL_MODE lets you choose how that depth is exposed.

ModeBehavior
full (default)All tools are exposed with their full descriptions and schemas. Unchanged from previous releases — existing setups are unaffected.
groupedProgressive disclosure. Each tool's description collapses to a one-line [group] summary — full schema via describe_tool('name'), and three lightweight discovery tools are added. The agent loads depth only for the tools it actually needs.

In grouped mode the tools are unchanged — same names, same input schemas, same behavior. Only the up-front context cost changes. Discovery flows through three meta-tools:

  • list_tool_groups() — the domain map (invoicing, expenses, fiscal/compliance, banking, CRM, HR/payroll, stay/PMS, POS, intelligence, products, platform) with a one-line blurb and tool count for each.
  • search_tools(query) — free-text search across tool name, title, summary and group; returns matching tools with their group, summary, read-only flag and input fields. Optional group filter and limit.
  • describe_tool(name) — the full original description and input fields for one tool, on demand, before you call it.
// 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"
      }
    }
  }
}

This is an opt-in exposure layer only — it never changes a tool's logic, name or behavior, and full mode is byte-identical to before. The same interceptor pattern powers the OpenAI-safe profile (FRIHET_OPENAI_MODE).


API limits

LimitValue
Requests per minute100 per API key
Results per page100 max (50 default)
Request body1 MB max
Webhook payload100 KB max
Webhooks per account20 max

Rate limiting is handled automatically with exponential backoff.


Claude Code Skill

Beyond raw MCP tools, this repo includes a Claude Code skill that adds business context: Spanish tax rules, workflow recipes, financial reports, and natural language commands.

Install the skill

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

Or with the universal installer:

npx skills add Frihet-io/frihet-mcp

Commands

CommandWhat it does
/frihet statusAccount overview, recent activity, pending payments
/frihet invoiceCreate, list, search invoices
/frihet expenseLog and query expenses
/frihet clientsManage client database
/frihet quoteCreate and manage quotes
/frihet reportFinancial summaries (P&L, quarterly, overdue)
/frihet webhooksConfigure automation triggers
/frihet setupGuided setup and connection test

The skill knows about IVA rates, IRPF retention, Modelo 303 prep, expense deductibility rules, and VeriFactu compliance.

Full documentation: docs.frihet.io/desarrolladores/skill-claude-code


Development

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

Run locally:

FRIHET_API_KEY=fri_xxx node dist/index.js

Test with the MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Contributing

Contributions are welcome. Please open an issue first to discuss what you'd like to change.

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

Current limitations

  • No OCR or file upload -- the MCP works with structured data, not images or PDFs. Planned for a future release.
  • Single company -- one API key maps to one Frihet workspace. Multi-company support is not yet available.
  • Frihet account required -- you need an active account at app.frihet.io and an API key (starts with fri_).

Ecosystem

PackageWhat it is
@frihet/mcp-serverThis MCP server (157 tools, 11 resources, 10 prompts)
@frihet/sdkTypeScript SDK (frihet.invoices.create())
frihetCLI (frihet invoices list --status overdue)
n8n-nodes-frihetn8n community node for workflow automation
REST APIOpenAPI 3.1 at api.frihet.io/v1
Remote MCPHosted endpoint on Cloudflare Workers (zero install)
WebhooksReal-time events with HMAC-SHA256

Links


License

MIT. See LICENSE.

Built by Frihet.