Norman

AI-powered bookkeeping, accounting, invoicing, and tax workflows for European businesses via MCP: invoices, transactions, receipts, ledgers, reports…

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • List Clients: Get a list of all clients for the company. Returns: List of clients with their details
  • Get Client: Get detailed information about a specific client. Args: client_id: ID of the client to retrieve Returns: Detailed client information
  • Create Client: 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_c

What data it sees

Do you need an account

No: the server works without sign-in

AI-powered bookkeeping, accounting, invoicing, and tax workflows for European businesses via MCP: invoices, transactions, receipts, ledgers, reports, documents, taxes, and company workflows.

Server tool list (60)

Raw names from tools/list. Only developers need these.

list_clients Get a list of all clients for the company. Returns: List of clients with their details
get_client Get detailed information about a specific client. Args: client_id: ID of the client to retrieve Returns: Detailed client information
create_client 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
update_client 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
delete_client Delete a client. Args: client_id: ID of the client to delete Returns: Confirmation of deletion
list_vendors Get a list of all vendors (suppliers) for the company. Returns: List of vendors with their details
get_vendor Get detailed information about a specific vendor. Args: vendor_id: ID of the vendor to retrieve Returns: Detailed vendor information
create_vendor Create a new vendor (supplier). Args: name: Vendor name or business name iban: Vendor bank account IBAN bic: Vendor bank BIC/SWIFT email: Vendor email address phone: Vendor phone number address: Vendor physical address country: Vendor country code (e.g. "DE") vat_number: Vendor VAT number Returns: Newly created vendor record
update_vendor Update an existing vendor. Only the fields you pass are changed. Args: vendor_id: ID of the vendor to update name: Updated vendor name iban: Updated IBAN bic: Updated BIC/SWIFT email: Updated email address phone: Updated phone number address: Updated physical address country: Updated country code (e.g. "DE") vat_number: Updated VAT number Returns: Updated vendor record
delete_vendor Delete a vendor. Args: vendor_id: ID of the vendor to delete Returns: Confirmation of deletion
list_bills Get a list of bills (incoming supplier invoices / Eingangsrechnungen). Args: status: Optional status filter (e.g. "PAID", "OPEN") Returns: List of bills with their details
get_bill Get detailed information about a specific bill. Args: bill_id: ID of the bill to retrieve Returns: Detailed bill information
update_bill Update an existing bill. Currently supports changing the bill status — e.g. set ``status="PAID"`` to clear a migrated/already-paid bill from the Bills view. Args: bill_id: ID of the bill to update status: New status (e.g. "PAID") Returns: Updated bill record
mark_bill_paid Mark a bill as paid (``status="PAID"``) WITHOUT initiating a payment. Use this for bills that were already paid outside Norman (e.g. migrated bills) to clear them from the Bills view. To actually pay a bill via SEPA, use ``pay_bill`` instead. Args: bill_id: ID of the bill to mark paid Returns: Updated bill record
pay_bill Initiate a SEPA payment for a bill. ⚠️ This starts a REAL payment flow. Returns a ``paymentOrderId`` and a ``webformUrl`` the user must open to authorise the payment with their bank. Does not move money on its own, but begins the process — only call when the user has explicitly asked to pay. Args: bill_id: ID of the bill to pay account_id: ID of the bank account to pay from (required by the backend) execution_date: Optional payment execution date in YYYY-MM-DD format purpose: Optional payment purpose / reference text Returns: Payment order details including paymentOrderId and webformUrl
delete_bill Delete a bill. Args: bill_id: ID of the bill to delete Returns: Confirmation of deletion
create_invoice 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. Use downloadUrl for a direct temporary PDF download link (valid for 1 hour).
create_recurring_invoice 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. Use downloadUrl for a direct temporary PDF download link (valid for 1 hour).
get_invoice Get detailed information about a specific invoice. Args: invoice_id: ID of the invoice to retrieve Returns: Detailed invoice information
send_invoice 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
send_invoice_overdue_reminder 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
link_transaction 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
get_einvoice_xml 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
list_invoices 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
get_invoice_preview Get a visual preview of an invoice. Returns an inline JPEG image of the first page of the invoice PDF, rendered directly in clients that support MCP ImageContent. Also includes a downloadUrl for the full PDF.
create_offer Create a new offer/quote. Args: client_id: ID of the client for the offer items: List of offer items. Example: [{"name": "Software Development", "quantity": 3, "rate": 30000, "vatRate": 19}] VAT rates might be 0, 7, 19. Rate is in cents. offer_number: Optional offer number (will be auto-generated if not provided) issued: Issue date in YYYY-MM-DD format valid_until: Offer validity date in YYYY-MM-DD format (defaults to 30 days from today) currency: Offer currency (EUR, USD), by default it's EUR payment_terms: Payment terms text notes: Additional notes language: Offer language (en, de) invoice_type: Type of offer (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 (only if BIC and IBAN provided) color_schema: Offer style color (hex code) font: Offer font (e.g. "Plus Jakarta Sans", "Inter") is_to_send: Whether to send the offer automatically to client mailing_data: Email data if is_to_send is True service_start_date: Service period start date (YYYY-MM-DD) service_end_date: Service period end date (YYYY-MM-DD) delivery_date: Delivery date for goods (YYYY-MM-DD) Returns: Information about the created offer. Use downloadUrl for a direct temporary PDF download link when available.
list_offers List offers/quotes with optional filtering. Args: status: Filter by offer status (draft, pending, saved, sent, approved) name: Filter by client name from_date: Filter offers created after this date (YYYY-MM-DD) to_date: Filter offers created before this date (YYYY-MM-DD) limit: Maximum number of offers to return (default 100) Returns: List of offers matching the criteria
get_offer Get detailed information about a specific offer/quote. Args: offer_id: ID of the offer to retrieve Returns: Detailed offer information
send_offer Send an offer/quote via email. Args: offer_id: ID of the offer 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 a copy to the company email custom_client_email: Custom client email address Returns: Response from the send offer request
convert_offer_to_invoice Convert an offer/quote into an invoice. The backend creates a new invoice from the quote data and removes the original quote. Args: offer_id: ID of the offer to convert Returns: Newly created invoice information
list_tax_reportsList all available tax reports.
get_tax_report Retrieve a specific tax report. Args: report_id: Public ID of the tax report to retrieve Returns: Tax report details
validate_tax_number Validate a tax number for a specific region. Args: tax_number: Tax number to validate region_code: Region code (e.g., DE for Germany) Returns: Validation result
generate_finanzamt_preview Generate a test Finanzamt preview for a tax report. Returns the preview as an inline PNG image (first page) plus a downloadUrl for the full PDF. The image is rendered directly in clients that support MCP ImageContent.
submit_tax_report 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.
list_tax_states Get list of available tax states. Returns: List of tax states
list_tax_settings Get list of tax settings for the current company. Returns: List of company tax settings
update_tax_setting 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"); Options: "sales", "trade", "income", "profit_loss" vat_type: VAT type (e.g. "vat_subject"), Options: "vat_subject", "kleinunternehmer", "vat_exempt" vat_percent: VAT percentage; Options: 0, 7, 19 start_tax_report_date: Start date for tax reporting (YYYY-MM-DD) reporting_frequency: Frequency of reporting (e.g. "monthly"), Options: "monthly", "quarterly", "yearly" Returns: Updated tax setting
get_company_tax_statistics Get tax statistics for the company. Returns: Company tax statistics data
get_vat_next_report Get the VAT amount for the next report period. Returns: VAT next report amount data
search_transactions 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
get_transactionGet a transaction including its split items and current VAT semantics.
create_transaction Create a new manual transaction. For SME companies (GmbH/UG), use company_category_id instead of category_id, and optionally set payment_date and payment_type for accrual accounting.
update_transactionUpdate an existing transaction. For SME companies, use company_category_id and payment fields.
delete_transactionDelete a transaction and its regenerable Ledger postings after confirmation.
categorize_transaction 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
change_transaction_verification Verify or unverify a transaction (finalize or unfinalize). Args: transaction_id: Public ID of the transaction to update verify: If True, verify (finalize) the transaction; if False, unverify (unfinalize) it Returns: Updated transaction information
get_accounting_setupGet opening/cutover status for a fiscal year without changing the books.
analyze_accounting_cutover_documentsAnalyze migration files without writing anything to the Ledger.
preview_accounting_cutoverPreview findings and reconciliation without changing the books.
apply_accounting_cutoverWrite previewed opening/cutover data only after explicit confirmation.
list_chart_of_accounts_templatesList account frameworks available for the selected company and country.
list_chart_of_accountsSearch and page through the selected company's complete account master.
create_chart_of_accounts_accountCreate a custom Ledger account; balance-sheet accounts stay Ledger-only.
update_chart_of_accounts_accountEdit a custom account, or hide/unhide a built-in account.
deactivate_chart_of_accounts_accountSoft-delete an account. Existing postings remain in the immutable Ledger.
switch_account_frameworkSwitch SKR framework with the same explicit confirmation used by the Norman UI.
list_assetsList fixed assets and their depreciation schedules.
get_assetGet an asset including source transaction, useful life and annual depreciation.
create_assetCreate an asset, optionally linked to a Norman Transaction or split item.