Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default | 
|---|---|---|---|
| NORMAN_EMAIL | Yes | Your Norman Finance account email address | |
| NORMAN_PASSWORD | Yes | Your Norman Finance account password | |
| NORMAN_API_TIMEOUT | No | Request timeout in seconds | 200 | 
| NORMAN_ENVIRONMENT | No | Environment to use, 'production' or 'sandbox' for the development environment | production | 
Schema
Prompts
Interactive templates invoked by user choice
| Name | Description | 
|---|---|
| create_transaction_prompt | Create a prompt for adding a new transaction with essential information. Args: amount: The transaction amount (positive value) description: The transaction description cashflow_type: Type of transaction (INCOME or EXPENSE) Returns: A formatted prompt for creating a transaction | 
| create_client_prompt | Create a prompt for adding a new client with basic information. Args: name: The client name or business name client_type: Type of client (business or private) Returns: A formatted prompt for creating a client | 
| send_invoice_prompt | Create a prompt for sending an invoice via email. Args: invoice_id: ID of the invoice to send Returns: A list of messages forming a conversation about sending an invoice | 
| search_transactions_prompt | Create a prompt for searching transactions with optional date range. Args: date_range: Optional description of date range (e.g., "last month", "this week") Returns: A formatted prompt for searching transactions | 
Resources
Contextual data attached and managed by the client
| Name | Description | 
|---|---|
| company://current | |
| categories://list | 
Tools
Functions exposed to the LLM to take actions
| Name | Description | 
|---|---|
| get_company_details | Get detailed information about the user's company.  | 
| get_company_balance | Get the current balance of the company.
Returns:
    Company balance information  | 
| 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  | 
| update_company_details | Update company information.  | 
| 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  | 
| create_transaction | 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  | 
| update_transaction | Update an existing transaction.  | 
| 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 and always include the generated invoice pdf url from reportUrl field  | 
| 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 setup and always include the generated invoice pdf url from reportUrl field  | 
| 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_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  | 
| upload_bulk_attachments | 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  | 
| list_attachments | 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  | 
| create_attachment | 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  | 
| link_attachment_transaction | 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  | 
| 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  | 
| list_tax_reports | List all available tax reports.  | 
| validate_tax_number | 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  | 
| get_tax_report | Retrieve a specific tax report.
Args:
    report_id: Public ID of the tax report to retrieve
    
Returns:
    Tax report details  | 
| generate_finanzamt_preview | 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.  | 
| 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")
    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  | 
| 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  | 
| delete_client | Delete a client.
Args:
    client_id: ID of the client to delete
    
Returns:
    Confirmation of deletion  |