Skip to main content
Glama
norman-finance

Norman Finance MCP Server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NORMAN_EMAILYesYour Norman Finance account email address
NORMAN_PASSWORDYesYour Norman Finance account password
NORMAN_API_TIMEOUTNoRequest timeout in seconds200
NORMAN_ENVIRONMENTNoEnvironment to use, 'production' or 'sandbox' for the development environmentproduction

Capabilities

Server capabilities have not been inspected yet.

Tools

Functions exposed to the LLM to take actions

NameDescription
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

Prompts

Interactive templates invoked by user choice

NameDescription
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

NameDescription
company://current
categories://list

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/norman-finance/norman-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server