Norman Finance MCP Server
OfficialNorman Finance MCP Server lets an AI assistant work with a company's finance and accounting data.
View company details, balance, tax statistics, and upcoming VAT report; update company details.
Search, create, update, AI-categorize, and link transactions.
Create one-off and recurring invoices; retrieve, list, send invoices, send overdue reminders, and get e-invoice XML.
List, get, create, update, and delete clients.
Upload, list, create, and link attachments to transactions.
Manage tax reports: list/get reports, validate tax numbers, generate Finanzamt previews, submit reports, list tax states/settings, and update tax settings.
Allows importing receipts from Cloudflare into the Norman Finance system, demonstrated in the Gmail receipts example.
Supports configuration through .env files to store and manage Norman Finance credentials and environment settings.
Provides access to installation from source via GitHub repository, with examples linking to attachments hosted on GitHub.
Enables creation of financial transactions by processing receipts from Gmail, with a specific example showing how to use receipt data.
Allows installation of the Norman MCP server via PyPI using the uvx command to run the package directly.
Enables running the MCP server directly using Python via the python -m norman_mcp command for direct execution.
Provides access to e-invoice XML data through the get_einvoice_xml tool for managing compliant electronic invoices.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Norman Finance MCP Server show me my overdue invoices from last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Connect Norman Finance to your AI assistant to create invoices, organize receipts, reconcile transactions, keep your books up to date and prepare tax returns. Work from the same company records you use in the Norman app.
Use the remote MCP connection with Claude, ChatGPT, Gemini, Grok, Perplexity, Cursor and other compatible clients. Client setup instructions distinguish directory installs, extensions and custom connections.
See Norman in action
https://github.com/user-attachments/assets/10718781-34f2-4640-9253-be4c82de6159
Watch the full Norman demo · Explore workflow examples · Watch the Poland introduction
Related MCP server: einvoice-mcp
What you can do
Calculator and form workflows cover public estimates and Polish PDF/DOCX preparation, with deployment prerequisites.
Workflow | Ask Norman to help you |
Invoicing | Create and send invoices, quotes and recurring invoices. Use your branding, product catalog, VAT codes, discounts and service dates. |
Bookkeeping | Organize receipts, categorize and verify transactions, match documents and reconcile your books. |
Full accounting | Inspect accounts, journal entries, balances and reports. Follow a figure back to its source documents. |
VAT and taxes | Calculate and review VAT, prepare returns and submit supported German returns after explicit confirmation. Review Polish registers, estimates and existing filing status. |
Year-end preparation | Review balances, prepare a German annual-close workspace and closing adjustments, or inspect existing Polish financial statements. |
Clients and reminders | Manage clients, track invoice delivery and prepare or send payment reminders when requested. |
Automation | Preview bookkeeping rules, start month-end or reconciliation workflows, answer their questions and schedule recurring work. |
Try asking
"Create a draft invoice for consulting and use my saved company branding."
"Which transactions are missing a receipt?"
"What did we spend on software this quarter?"
"Review my books and tell me what still needs attention before year-end."
"Prepare my German VAT return preview. Do not submit it yet."
"Show my Polish company's JPK register and explain excluded operations."
Get started
Create a Norman account, or use your existing one.
Add Norman in your AI client's directory or as a remote HTTP MCP server:
https://mcp.norman.finance/mcp.Complete Norman OAuth, then confirm the company you want to work with.
For clients that accept an MCP configuration file:
{
"mcpServers": {
"norman-finance": {
"url": "https://mcp.norman.finance/mcp"
}
}
}Using Claude Code?
/plugin marketplace add norman-finance/norman-mcp-server
/plugin install norman-finance@norman-financeAll setup guides: Claude Connectors, Claude Code, ChatGPT, Gemini, Grok, Perplexity, Cursor, Replit, OpenClaw, n8n and other MCP clients.
Your company is the accounting context, not the language of the conversation.
Use list_companies and switch_company to change it; company://current
identifies its country, currency, legal form and chart of accounts.
Market-specific capabilities
One connection supports both Germany and Poland. The workflows differ by jurisdiction:
Germany | Poland | |
Bookkeeping | SKR03/SKR04, transactions and Ledger | KPiR for JDG; full books for sp. z o.o. |
VAT and tax review | Finanzamt previews, VAT and annual reports | JPK registers, PIT/ZUS or CIT estimates |
Year-end | Draft annual close, closing adjustments and workbook review | Review already prepared statements, notes and XML issues |
Accountant handoff | DATEV EXTF exports and preflight checks | General, Optima and EPP export compatibility previews |
Filing through MCP | Supported returns after preview and explicit confirmation | Existing filing status and UPO checks; no signing or submission |
Germany: accounting, VAT and year-end
Keep day-to-day bookkeeping and full GmbH/UG accounting connected to the same AI workflow. Review SKR03/SKR04 accounts, reconcile transactions, calculate VAT and prepare supported VAT and annual tax returns.
For year-end, create a Draft annual-close workspace, review the workbook and post closing adjustments. Preparing that workspace does not lock the year or submit a return. Tax submission is a separate, explicitly confirmed action.
German invoice workflows also support ZUGFeRD, cancellations (Stornorechnung), corrections (Rechnungskorrektur) and delivery notes (Lieferschein).
Additional workflows include German GmbH/UG payroll and company-formation preparation. Payroll tools cover calculation, approval, payslips and supported Lohnsteuer-Anmeldung filing; sensitive employee identifiers stay in the app. Formation tools prepare draft documents and a notary handoff, not a legal incorporation by chat. Detailed workflows.
DATEV MCP support: EXTF, SKR03 and SKR04
Prepare a DATEV EXTF Buchungsstapel with SKR03 or SKR04 for your tax advisor (Steuerberater), with linked documents when requested. The complete GmbH/UG Ledger export includes opening balances, manual entries, payroll, depreciation and closing postings.
trigger_datev_export: prepare the export and download package.validate_ledger_datev_export: check structure, source coverage and documents before handoff.get_datev_changes_since_handoff: list the bookings added, changed or left out since the advisor's last file of each period.read_datev_file: inspect an EXTF/DTVF file without importing postings into your books.
Try: "Check the full GmbH Ledger export before I give it to my accountant."
DATEV details and API requirements. Validation is a handoff check, not certification of tax correctness or DATEV import acceptance.
Poland: KPiR, full books and JPK
Cześć, Polsko
https://github.com/user-attachments/assets/aea417ad-64aa-4623-896f-ff8dc4559d4a
Watch the Poland film · 24 seconds · English on-screen text with Polish subtitles built into the video.
This is a product introduction, not a recording of MCP tool calls. The Polish landing page and English landing page introduce the connection in each language.
What the Polish tools cover
JDG / KPiR: review monthly or annual tax books and explain why an operation is included or excluded.
Sp. z o.o. / full books: inspect the journal, chart of accounts, account sheets and trial balance; review prepared financial statements and their notes.
VAT / JPK_V7: compare sales, purchases, totals and exclusions with source operations.
Tax estimates and status: review PIT/ZUS or CIT estimates, existing JPK/PIT filing status and UPO availability.
Invoices, receipts and assets: use shared tools with Polish VAT codes, document currencies and depreciation inputs; create proforma quotes and record incoming bills in their original currency. Search receipts by supplier and date.
Ryczałt settings: propose a revenue category's rate for the owner to review and apply in Norman. The assistant does not change tax settings directly.
Import review and routines: inspect CSV import batches, preview an exact batch rollback, and confirm or dismiss detected routines. A rollback requires the user's approval and the preview token; confirming a routine does not send invoices.
Accountant handoff: preview General, Optima or EPP compatibility and review blockers.
Try asking:
"Pokaż KPiR mojej JDG za wrzesień i wyjaśnij pominięte koszty."
"Pokaż zestawienie obrotów i sald mojej spółki za trzeci kwartał."
"Sprawdź rejestr JPK_V7: sprzedaż, zakupy i pominięte operacje."
"Sprawdź status wysyłki JPK i dostępność UPO. Niczego nie wysyłaj."
The Polish MCP tools do not sign or submit returns to MF/KRS, create manual Polish journal postings, or generate or close annual statements. They inspect existing filing state; an XML download is not an acceptance receipt or UPO.
Polish tool guide, arguments and examples · Start with a Polish company
Interactive UI inside your AI assistant
MCP Apps-compatible hosts can show focused accounting workspaces inside the conversation:
Workspace | What you can review |
Norman Inbox | Balances, bookkeeping tasks, blocked workflows and pending approvals |
Document Review | Uploaded invoices, receipts and missing transaction matches |
Reconciliation Cockpit | Missing documents, categories and bookkeeping issues |
German Ledger Explorer | SKR accounts, balances and linked postings |
German Tax Preview & Submission | Finanzamt test PDF, tax lines and readiness checks before a separate confirmed filing |
Clients without MCP Apps support receive structured or text results. Polish accounting uses the dedicated structured tools; the German workspaces do not imply equivalent Polish filing functionality.
Skills
Ready-to-use skills compatible with Claude Code, OpenClaw, and the Agent Skills standard.
Skill | What it does |
| Full dashboard : balance, transactions, invoices, and tax status |
| Step-by-step invoice creation and sending |
| List, create, and update client records |
| List, create, update, and archive catalog products; fill invoice lines from them |
| German reports: review, preview, and file with the Finanzamt |
| German payroll : changes, calculation, approval, social insurance, payment, and Lohnsteuer-Anmeldung |
| Categorize and verify bank transactions |
| Find missing receipts from Gmail or email and attach them |
| Identify overdue invoices and send payment reminders |
| Expense breakdown by category, top vendors, and trends |
| Scan transactions for missed deductions and suggest fixes |
| Full monthly close : transactions, invoices, receipts, and taxes |
| Start a Norman workflow, answer its questions, and schedule it to run by itself |
| Found a German GmbH/UG : data, documents, name check, and notary hand-off |
Browse the skills directory. Each skill guides an accounting task while the Norman API enforces access and action permissions.
Control and privacy
You choose the company. Company-scoped records stay in the selected accounting context.
Review before binding actions. Tax filing, payments, external messages and automation approvals require their own decision.
Keep sensitive identifiers in Norman. Complete restricted identity and payment setup in the app, not in chat.
Check the result. A draft, preview, queued request or downloaded XML is not proof of filing or payment success.
Polish KPiR and estimate reads can synchronize derived records and therefore
declare readOnlyHint=false. Country and book-type guards prevent German
procedures from being applied to Polish books. Technical rollout and tool-specific
limits are documented in the linked guides.
Documentation
Guide | Contents |
Hosted OAuth and client installs | |
Every tool the hosted server offers, by area | |
KPiR, full books, JPK, estimates, filing status and limits | |
Invoice settings, emails, uploads, company formation and DATEV details | |
Mixed VAT, input tax, refunds and corrections | |
Invoices, transactions, documents and VAT examples | |
What changed in each release |
This repository holds the documentation, skills and client manifests of the hosted Norman MCP server. Issues and skill suggestions are welcome; see Contributing and Security.
Invoice appearance and updates
Client emails and payment reminders
Mixed VAT and documented input tax
DATEV files and complete Ledger exports
Website · Report an issue or suggest a feature · MIT license
Available Tools
34 toolscategorize_transactionBInspect
Detect category for a transaction using AI.
Args:
transaction_amount: Amount of the transaction
transaction_description: Description of the transaction
transaction_type: Type of transaction ("income" or "expense")
Returns:
Suggested category information for the transaction
Inputs: transaction_amount (required), transaction_description (required), transaction_type (required).
create_attachmentBInspect
Create a new attachment.
Args:
file_path: Path to file to upload
transactions: List of transaction IDs to link
attachment_type: Type of attachment (invoice, receipt)
amount: Amount related to attachment
amount_exchanged: Exchanged amount in different currency
attachment_number: Unique number for attachment
brand_name: Brand name associated with attachment
currency: Currency of amount (default EUR)
currency_exchanged: Exchanged currency (default EUR)
description: Description of attachment
supplier_country: Country of supplier (DE, INSIDE_EU, OUTSIDE_EU)
value_date: Date of value
vat_sum_amount: VAT sum amount
vat_sum_amount_exchanged: Exchanged VAT sum amount
vat_rate: VAT rate percentage
sale_type: Type of sale
additional_metadata: Additional metadata for attachment
Returns:
Created attachment information
Inputs: file_path (required), additional_metadata, amount, amount_exchanged, +13 more.
create_clientBInspect
Create a new client.
Args:
name: Client name or business name
client_type: Type of client (defaults to "business"), Options: "business", "private"
address: Client physical address
zip_code: Client postal/zip code
email: Client email address
country: Client country code (e.g. "DE")
vat_number: Client VAT number
city: Client city
phone: Client phone number
Returns:
Newly created client record
Inputs: name (required), address, city, client_type, +5 more.
create_invoiceAInspect
Create a new invoice. Ask for additional information if needed, for example:
- If the client is not found, ask for the client details and create a new client if necessary.
- If pyament reminder should be sent, ask for the reminder settings.
- If the invoice type is GOODS, ask for the delivery date.
- If the invoice type is SERVICES, ask for the service start and end dates.
- If the invoice should be sent to the client, ask for the email data.
Args:
client_id: ID of the client for the invoice
items: List of invoice items, each containing name, quantity, rate, vatRate and total.
Example: [{"name": "Software Development", "quantity": 3, "rate": 30000, "vatRate": 19, "total": 1071}] // VAT rates might be 0, 7, 19. By default it's 19. Rate and total are in cents.
invoice_number: Optional invoice number (will be auto-generated if not provided)
issued: Issue date in YYYY-MM-DD format
due_to: Due date in YYYY-MM-DD format
currency: Invoice currency (EUR, USD), by default it's EUR
payment_terms: Payment terms text
notes: Additional notes
language: Invoice language (en, de)
invoice_type: Type of invoice (SERVICES, GOODS)
is_vat_included: Whether prices include VAT
bank_name: Name of the bank (gets from company details if exists)
iban: IBAN for payments (gets from company details if exists)
bic: BIC/SWIFT code (gets from company details if exists)
create_qr: Whether to create payment QR code (only if BIC and IBAN provided)
color_schema: Invoice style color (hex code)
font: Invoice font (e.g. "Plus Jakarta Sans", "Inter")
is_to_send: Whether to send invoice automatically to client
mailing_data: Email data if is_to_send is True. Example: {
"emailSubject": "Invoice No.{invoice_number} for {client_name}",
"emailBody": "Dear {client_name},...",
"customClientEmail": "client@example.com" // email to send the invoice to, if not provided, it will be sent to the client email address
}
settings_on_overdue: Configuration for overdue notifications. Example: {
"isToAutosendNotification": true, // whether to send notification automatically
"customEmailSubject": "Reminder: Invoice {invoice_number} is overdue", // custom email subject
"customEmailBody": "Dear {client_name},...", // custom email body
"notifyAfterDays": [1, 3], // days to notify after the due date
"notifyInParticularDays": [] // days to notify in particular dates [2025-05-23", "2025-05-24"]
}
service_start_date: Service period start date (YYYY-MM-DD) by default it's today, should be provided if invoice_type is SERVICES
service_end_date: Service period end date (YYYY-MM-DD) by default it's one month from today, should be provided if invoice_type is SERVICES
delivery_date: Delivery date for goods (YYYY-MM-DD) by default it's today, should be provided if invoice_type is GOODS
Returns:
Information about the created invoice and always include the generated invoice pdf url from reportUrl field
Inputs: client_id (required), items (required), bank_name, bic, +19 more.
create_recurring_invoiceAInspect
Create a recurring invoice that will automatically generate new invoices based on specified frequency.
Useful for contracts or services that bill on a regular basis.
Always ask for reccurring configuration, for example:
- How often to generate invoices (weekly, monthly)
- Number of units for frequency (e.g. 1 for monthly = every month, 2 = every 2 months)
- Start date
- End date
- End invoice count (optional)
Ask for additional information if needed, for example:
- If the client is not found, ask for the client details and create a new client if necessary.
- If the invoice number is not provided, ask for it.
- If the due date is not provided, ask for it.
- If the payment terms are not provided, ask for it.
- If the bank details are not provided, ask for it.
Args:
client_id: ID of the client for the invoice
items: List of invoice items, each containing name, quantity, rate, vatRate and total
frequency_type: How often to generate invoices ("weekly", "monthly")
frequency_unit: Number of units for frequency (e.g. 1 for monthly = every month, 2 = every 2 months)
starts_from_date: Date to start generating invoices from (YYYY-MM-DD)
ends_on_date: Optional end date for recurring invoices (YYYY-MM-DD). Either ends_on_date or ends_on_invoice_count should be provided.
ends_on_invoice_count: Optional number of invoices to generate before stopping. Either ends_on_date or ends_on_invoice_count should be provided.
invoice_number: Base invoice number (will be auto-generated if not provided)
issued: Issue date in YYYY-MM-DD format
due_to: Due date in YYYY-MM-DD format
currency: Invoice currency (EUR, USD), by default it's EUR
payment_terms: Payment terms text
notes: Additional notes
language: Invoice language (en, de)
invoice_type: Type of invoice (SERVICES, GOODS)
is_vat_included: Whether prices include VAT
bank_name: Name of the bank
iban: IBAN for payments
bic: BIC/SWIFT code
create_qr: Whether to create payment QR code
color_schema: Invoice style color (hex code)
font: Invoice font (e.g. "Plus Jakarta Sans", "Inter")
is_to_send: Whether to send invoices automatically to client
settings_on_overdue: Configuration for overdue notifications
service_start_date: Service period start date (for SERVICES type)
service_end_date: Service period end date (for SERVICES type)
delivery_date: Delivery date (for GOODS type)
Returns:
Information about the created recurring invoice setup and always include the generated invoice pdf url from reportUrl field
Inputs: client_id (required), frequency_type (required), frequency_unit (required), items (required), +23 more.
create_transactionBInspect
Create a new manual transaction.
Args:
amount: Transaction amount (positive for income, negative for expense)
description: Transaction description
category: Transaction category
date: Transaction date in YYYY-MM-DD format (defaults to today)
vat_rate: VAT rate (0, 7, 19)
sale_type: Sale type (GOODS, SERVICES)
supplier_country: Country of the supplier (DE, INSIDE_EU, OUTSIDE_EU)
cashflow_type: Cashflow type of the transaction (INCOME, EXPENSE)
category_id: Category ID of the transaction (If not provided, the transaction will be categorized automatically using AI)
Returns:
Information about the created transaction
Inputs: amount (required), cashflow_type (required), description (required), supplier_country (required), +4 more.
delete_clientCInspect
Delete a client.
Args:
client_id: ID of the client to delete
Returns:
Confirmation of deletion
Inputs: client_id (required).
generate_finanzamt_previewCInspect
Generate a test Finanzamt preview for a tax report.
Args:
report_id: Public ID of the tax report
Returns:
Generate a PDF preview of the tax report.
Always suggest to check the preview before sending it to the Finanzamt.
Always include the path to the generated PDF file as a link to open the file from local file system.
Get the report data from @get_tax_report and show line items and totals.
You could add short summary based on the report data.
Ask follow up question to file the tax report to the Finanzamt @submit_tax_report. Don't send the report to the Finanzamt without the user confirmation.
Inputs: report_id (required).
get_clientCInspect
Get detailed information about a specific client.
Args:
client_id: ID of the client to retrieve
Returns:
Detailed client information
Inputs: client_id (required).
get_company_balanceCInspect
Get the current balance of the company.
Returns:
Company balance information
Inputs: no named parameters.
get_company_detailsBInspect
Get detailed information about the user's company.
Inputs: no named parameters.
get_company_tax_statisticsCInspect
Get tax statistics for the company.
Returns:
Company tax statistics data
Inputs: no named parameters.
get_einvoice_xmlBInspect
Get the e-invoice XML for a specific invoice.
Args:
invoice_id: ID of the invoice to get XML for
Returns:
E-invoice XML data
Inputs: invoice_id (required).
get_invoiceCInspect
Get detailed information about a specific invoice.
Args:
invoice_id: ID of the invoice to retrieve
Returns:
Detailed invoice information
Inputs: invoice_id (required).
get_tax_reportBInspect
Retrieve a specific tax report.
Args:
report_id: Public ID of the tax report to retrieve
Returns:
Tax report details
Inputs: report_id (required).
get_vat_next_reportCInspect
Get the VAT amount for the next report period.
Returns:
VAT next report amount data
Inputs: no named parameters.
link_attachment_transactionCInspect
Link a transaction to an attachment.
Args:
attachment_id: ID of the attachment
transaction_id: ID of the transaction to link
Returns:
Response from the link transaction request
Inputs: attachment_id (required), transaction_id (required).
link_transactionBInspect
Link a transaction to an invoice.
Args:
invoice_id: ID of the invoice
transaction_id: ID of the transaction to link
Returns:
Response from the link transaction request
Inputs: invoice_id (required), transaction_id (required).
list_attachmentsBInspect
Get list of attachments with optional filters.
Args:
file_name: Filter by file name (case insensitive partial match)
linked: Filter by whether attachment is linked to transactions
attachment_type: Filter by attachment type (invoice, receipt, contract, other)
description: Filter by description (case insensitive partial match)
brand_name: Filter by brand name (case insensitive partial match)
Returns:
List of attachments matching the filters
Inputs: attachment_type, brand_name, description, file_name, +1 more.
list_clientsBInspect
Get a list of all clients for the company.
Returns:
List of clients with their details
Inputs: no named parameters.
list_invoicesBInspect
List invoices with optional filtering.
Args:
status: Filter by invoice status (draft, pending, sent, paid, overdue, uncollectible)
name: Filter by invoice (client) name
from_date: Filter invoices created after this date (YYYY-MM-DD)
to_date: Filter invoices created before this date (YYYY-MM-DD)
limit: Maximum number of invoices to return (default 100)
Returns:
List of invoices matching the criteria
Inputs: from_date, limit, name, status, +1 more.
list_tax_reportsBInspect
List all available tax reports.
Inputs: no named parameters.
list_tax_settingsBInspect
Get list of tax settings for the current company.
Returns:
List of company tax settings
Inputs: no named parameters.
list_tax_statesBInspect
Get list of available tax states.
Returns:
List of tax states
Inputs: no named parameters.
search_transactionsAInspect
Search for transactions matching specified criteria.
Args:
description: Text to search for in transaction descriptions
from_date: Start date in YYYY-MM-DD format
to_date: End date in YYYY-MM-DD format
min_amount: Minimum transaction amount
max_amount: Maximum transaction amount
category: Transaction category
limit: Maximum number of results to return (default 100)
no_invoice: Whether to exclude invoices
no_receipt: Whether to exclude receipts
status: Status of the transaction (UNVERIFIED, VERIFIED)
cashflow_type: Cashflow type of the transaction (INCOME, EXPENSE)
Returns:
List of matching transactions with sensitive data removed
Inputs: cashflow_type, category, description, from_date, +7 more.
send_invoiceBInspect
Send an invoice via email.
Args:
invoice_id: ID of the invoice to send
subject: Email subject line
body: Email body content
additional_emails: List of additional email addresses to send to
is_send_to_company: Whether to send the copy to the company email (Owner)
custom_client_email: Custom email address for the client (By default the email address of the client is used if it is set)
Returns:
Response from the send invoice request
Inputs: body (required), invoice_id (required), subject (required), additional_emails, +2 more.
send_invoice_overdue_reminderBInspect
Send an overdue payment reminder for an invoice via email.
Args:
invoice_id: ID of the invoice to send reminder for
subject: Email subject line
body: Email body content
additional_emails: List of additional email addresses to send to
is_send_to_company: Whether to send the copy to the company email (Owner)
custom_client_email: Custom email address for the client (By default the email address of the client is used if it is set)
Returns:
Response from the send overdue reminder request
Inputs: body (required), invoice_id (required), subject (required), additional_emails, +2 more.
submit_tax_reportBInspect
Submit a tax report to the Finanzamt.
Args:
report_id: Public ID of the tax report to submit
Returns:
Response from the submission request and a link to the tax report from reportFile to download.
If response status is 403, it means a paid subscription is required to file the report.
Inputs: report_id (required).
update_clientBInspect
Update an existing client.
Args:
client_id: ID of the client to update
name: Updated client name
client_type: Updated client type ("business" or "private")
address: Updated client physical address
zip_code: Updated client postal/zip code
email: Updated client email address
country: Updated client country code (e.g. "DE")
vat_number: Updated client VAT number
city: Updated client city
phone: Updated client phone number
Returns:
Updated client record
Inputs: client_id (required), address, city, client_type, +6 more.
update_company_detailsDInspect
Update company information.
Inputs: activity_start, address, city, country, +7 more.
update_tax_settingAInspect
Update a tax setting. Always generate a preview of the tax report @generate_finanzamt_preview before submitting it to the Finanzamt.
Args:
setting_id: Public ID of the tax setting to update
tax_type: Type of tax (e.g. "sales")
vat_type: VAT type (e.g. "vat_subject")
vat_percent: VAT percentage
start_tax_report_date: Start date for tax reporting (YYYY-MM-DD)
reporting_frequency: Frequency of reporting (e.g. "monthly")
Returns:
Updated tax setting
Inputs: setting_id (required), reporting_frequency, start_tax_report_date, tax_type, +2 more.
update_transactionCInspect
Update an existing transaction.
Inputs: transaction_id (required), amount, cashflow_type, category, +6 more.
upload_bulk_attachmentsBInspect
Upload multiple file attachments in bulk.
Args:
file_paths: List of paths to files to upload
cashflow_type: Optional cashflow type for the transactions (INCOME or EXPENSE)
Returns:
Response from the bulk upload request
Inputs: file_paths (required), cashflow_type.
validate_tax_numberCInspect
Validate a tax number for a specific region.
Args:
tax_number: Tax number to validate
region_code: Region code (e.g. "BE" for Belgium)
Returns:
Validation result for the tax number
Inputs: region_code (required), tax_number (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 34 tools
Most tools have distinct purposes, but there is some overlap between create_transaction and categorize_transaction, and between send_invoice and send_invoice_overdue_reminder, which could cause minor confusion. However, descriptions clarify their specific roles, and the majority of tools target unique resources or actions.
All tool names follow a consistent snake_case pattern with a clear verb_noun structure, such as create_client, list_invoices, and update_transaction. This uniformity makes the tool set predictable and easy to navigate.
With 34 tools, the count is borderline high for a finance server, potentially overwhelming for an agent. While the domain is broad (clients, invoices, transactions, taxes, attachments), some tools might be redundant or overly specialized, making the set feel heavy.
The tool set provides comprehensive coverage for financial management, including full CRUD operations for clients, invoices, transactions, and attachments, plus tax reporting, validation, and email functionalities. There are no obvious gaps, and tools support end-to-end workflows.
Maintenance
Related MCP Connectors
German B2B E-Rechnung MCP server: EN 16931, KoSIT XRechnung 3.0 & DATEV ZUGFeRD 2.5 PDF/A-3b.
1MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
Headless API-first double-entry accounting & bookkeeping engine. 84 MCP tools over HTTP.
MCP server for Codat — companies, connections, invoices, bills and financial statements.
Related MCP Servers
- FlicenseBqualityDmaintenanceMCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.1559 npm-
- AlicenseAqualityDmaintenanceMCP server for DACH e-invoicing. Create XRechnung (UBL) and ZUGFeRD 2.3 (Factur-X CII) invoices, validate against EN 16931 rules, extract data from XML, and convert between UBL, CII and JSON formats.661 npm2MIT
- AlicenseAqualityDmaintenanceMCP server for German e-invoice compliance (XRechnung 3.0 & ZUGFeRD 2.x) enabling AI agents to validate, generate, parse, and check compliance of electronic invoices per EN 16931.61MIT
- AlicenseAqualityCmaintenanceMCP server for Spanish accounting for freelancers and SMEs, enabling AI agents to issue invoices, OCR expense PDFs, reconcile bank transactions, and prepare quarterly VAT (Modelo 303).234MIT