Labsco
MCP SERVER

Frihet

by Frihet-io

Raise an invoice and send it, file the Spanish tax model it feeds, then match the incoming bank movement back to it — with clients, timesheets and recurring templates behind the same key.

Accounting, Invoicing & BookkeepingVerified
Summary
Billing, the fiscal filing and the bank feed answer to one key, so a job runs from quote to matched payment without changing tools.

A surface this wide is a context problem before it is a capability problem, and the server treats it as one: setting FRIHET_TOOL_MODE to grouped collapses every description to one line and adds list_tool_groups, search_tools and describe_tool, so an agent loads the full schema only for what it is about to call. Destructive and outward-facing actions are gated behind confirm=true — send_invoice, delete_invoice, remove_team_member and their kin — and every tools/list entry carries a capability marker that says whether the handler exists rather than whether your workspace has it enabled. Worth knowing up front: there is no OCR or file upload here, so a paper receipt has to be read somewhere else before it becomes an expense.

What it is

A server over a Frihet workspace with 157 canonical operations: the documents a business issues, the records they draw on, and the Spanish and EU fiscal filings they roll up into. It translates each call into a REST request against api.frihet.io and returns typed JSON through outputSchema rather than prose.

What you get
  • The invoice as a lifecycle rather than a document: built from line items, emailed to the client as a PDF, marked paid on a given date, duplicated into the next period, credited with a credit note, or charged a late fee once overdue (create_invoice, send_invoice, mark_invoice_paid, duplicate_invoice, create_credit_note, apply_late_fee, get_invoice_pdf).
  • Quotes drafted, sent for acceptance and turned into work, plus a reusable product and service catalogue behind both (list_quotes, create_quote, send_quote, list_products, create_product).
  • The records the documents point at: clients with contact people, logged calls, emails and meetings, free-form notes, and vendors on the other side of the ledger (create_client, create_client_contact, log_client_activity, create_client_note, create_vendor).
  • Money in motion around the invoice — expenses tagged by category and deductibility, client deposits applied against an invoice or refunded, and bank transactions categorised, matched to an invoice, or handled by standing auto-categorisation rules (create_expense, apply_deposit, refund_deposit, categorize_transaction, match_transaction_to_invoice, frihet_bank_rule_create).
  • Spanish and Canary Islands fiscal returns as summaries you can read before filing: Modelo 303, 130, 390, 180 and 347, the IGIC models 415, 425 and 418, AIEM, and corporate tax models 200 and 202 (get_modelo_303_summary, get_modelo_130_summary, get_modelo_347_summary, frihet_modelo_415_summary, frihet_aiem_calculate, frihet_modelo_200_summary).
  • E-invoicing across eleven formats including XRechnung, Factur-X, FatturaPA, PEPPOL, Facturae, UBL and CII, with submission and status polling for FACe, TicketBAI and VeriFactu, XML validated against schema and schematron rules, and DATEV EXTF export for the accountant (send_einvoice, validate_einvoice_xml, face_submit, ticketbai_submit, verifactu_status, export_datev).
  • Recurring invoice templates on a daily, weekly, monthly, quarterly or yearly cycle, pausable and resumable without losing the template and runnable ahead of schedule (create_recurring_invoice, pause_recurring_invoice, run_recurring_now).
  • The people side of the same books: billable and non-billable time entries summarised by user, project or day; leave requests with approval and rejection; clock-in and clock-out with anomaly and overtime reporting; and workspace roles of admin, editor, accountant or viewer (create_time_entry, get_time_summary, leave_request_create, attendance_clock_in, overtime_report, invite_team_member).
  • Three vertical surfaces on the same workspace — vacation rental reservations with OTA channel sync, POS terminals and sales with refunds, and a live kitchen board with slow-station detection (create_reservation, sync_channel, list_sales, refund_sale, update_kitchen_ticket, kitchen_flow_summary).
  • Accountant-facing controls: contextual message threads and bulk document requests across up to 500 client workspaces, cross-client AR aging, GL entry approval with a full audit trail, and period close and reopen (gestoria_template_bulk_send, gestoria_aging_consolidated, frihet_gl_entry_approve, frihet_gl_entry_audit_log, period_close, period_reopen).
Requirements

A Frihet workspace and an API key from app.frihet.io, passed as FRIHET_API_KEY. Two transports: stdio via `npx -y @frihet/mcp-server` on Node 20 or newer, or the hosted endpoint at https://mcp.frihet.io/mcp with a Bearer token or an OAuth 2.1 browser login and nothing installed. `FRIHET_DEMO=1` runs the whole surface against example fixtures with no network call and no persistence, if you want to see it before signing up. The key is rate-limited to 100 requests per minute, with retry and backoff handled for you. Bank accounts are connected on the Frihet side; the reconciliation tools read what is already linked.

Setup effort

One command plus a key — npx @frihet/mcp-server, then supply credentials