informer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INFORMER_TOOLS | No | Allowlist of tags and/or tool names, comma separated. | (all) |
| INFORMER_API_KEY | Yes | API key for a single administration. | |
| INFORMER_BASE_URL | No | Override the API root. | https://api.informer.eu/v2 |
| INFORMER_SPEC_URL | No | Override the API description to download. | |
| INFORMER_READ_ONLY | No | `true` exposes only GET tools, for every administration. Same as `--read-only`. | false |
| INFORMER_AUTO_SETUP | No | `false` stops the setup page from opening when no credentials are configured. | true |
| INFORMER_SPEC_CACHE | No | Where the downloaded API description is cached. | ~/.informer-mcp.spec.json |
| INFORMER_TIMEOUT_MS | No | Per-request timeout. | 30000 |
| INFORMER_CONFIG_FILE | No | JSON file listing several administrations. Created by setup if absent. | ~/.informer-mcp.json |
| INFORMER_MAX_RETRIES | No | Retries for 408/429/5xx and network errors. | 2 |
| INFORMER_OPEN_BROWSER | No | `false` prints the setup URL instead of launching a browser. | true |
| INFORMER_EXCLUDE_TOOLS | No | Denylist, applied after the allowlist. | (none) |
| INFORMER_SECURITY_CODE | Yes | Security code for that administration. | |
| INFORMER_ADMINISTRATIONS | No | The same JSON inline, as an environment variable. Overrides the file per alias. | |
| INFORMER_FANOUT_CONCURRENCY | No | How many administrations a fan-out query hits at the same time. | 4 |
| INFORMER_MAX_RESPONSE_CHARS | No | Longer tool results are truncated with a notice. Split evenly across a fan-out query. | 100000 |
| INFORMER_SPEC_MAX_AGE_HOURS | No | How old the cached API description may get before a background refresh. `0` disables it. | 24 |
| INFORMER_ADMINISTRATION_MODE | No | `read-only` or `read-write` for that alias. | |
| INFORMER_ADMINISTRATION_ALIAS | No | Alias for the single INFORMER_API_KEY pair. | default |
| INFORMER_ADMINISTRATION_LABEL | No | Human-readable name for that alias. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_administrationsA | List the client administrations this server is configured for, with the alias to pass as the "administration" argument of every other tool, and whether each one may be written to. Set "verify" to also fetch each company name from the API, which confirms the credentials work and that each alias points at the company you expect. To change any of it — add a client, replace a key, switch one to read-only — use open_setup. |
| get_administrationA | Get administration details. Get details about the administration linked to this API key, including address, contact information, tax IDs and active modules. [Administration] GET /administration |
| get_relationA | Get a single relation. Get a single relation by ID. Includes contacts, tags and custom fields (free fields). [Relations] GET /relations/{id} |
| update_relationB | Update a relation. Update an existing relation by ID. Not all fields are required; you can send only the fields you want to update. [Relations] PUT /relations/{id} |
| list_relationsA | Get a list of relations. Get a paginated list of all relations. For each relation the contacts, tags and subtypes are included. [Relations] GET /relations |
| create_relationA | Create a new relation. Create a new relation. The relation_number is optional; if omitted or 0, a new number is generated. The fields sales_invoice_template_id and payment_condition_id are optional; default values will be used if not provided. When relation_type is 0 (company): company_name is required, firstname/surname are forbidden. When relation_type is 1 (private): firstname and surname are required, company_name is forbidden. [Relations] POST /relations |
| get_contactB | Get a single contact. Get a single contact person by ID. [Contacts] GET /contact/{id} |
| update_contactA | Update a contact. Update an existing contact person by ID. [Contacts] PUT /contact/{id} |
| create_contactC | Create a new contact. Create a new contact person linked to a relation. [Contacts] POST /contact |
| get_sales_invoiceA | Get a single sales invoice. Get a single sales invoice by ID, including all line items. [Sales Invoices] GET /invoices/sales/{id} |
| update_sales_invoiceA | Update a sales invoice. Update an existing sales invoice by ID. The invoice must be in concept status. [Sales Invoices] PUT /invoices/sales/{id} |
| list_sales_invoicesB | Get a list of sales invoices. Get a paginated list of all sales invoices with their line items. [Sales Invoices] GET /invoices/sales |
| create_sales_invoiceA | Create a new sales invoice. Create a new sales invoice. Use the /invoices/sales/options endpoint first to determine valid combinations of vat_id, ledger_id and vat_option. Lines can be either regular lines (with qty, amount, vat_id, ledger_id) or info lines (with info=true and description only). For administrations in Austria (AT) or Germany (DE), the delivery_date field is also required. [Sales Invoices] POST /invoices/sales |
| get_sales_invoice_optionsA | Get sales invoice options. Get the available VAT rates with their compatible ledger accounts and VAT options. Use this endpoint to determine valid combinations of vat_id, ledger_id and vat_option when creating invoices. [Sales Invoices] GET /invoices/sales/options |
| get_sales_invoice_pdfA | Get sales invoice PDF. Download the PDF of a sales invoice as a base64-encoded string. [Sales Invoices] GET /invoices/sales/pdf/{id} |
| send_sales_invoiceB | Send a sales invoice. Send a sales invoice via email, mark as sent, or send via Peppol. The invoice will be finalized before sending. [Sales Invoices] POST /invoices/sales/send/{id} |
| upload_sales_invoice_attachmentA | Upload an invoice-specific attachment. Upload a file as a document-specific attachment for a sales invoice. The file content must be base64-encoded. Supported types: PDF, PNG, JPEG, GIF, DOC, DOCX, XLS, XLSX. Maximum size: 10 MB. The attachment is automatically included when the invoice is sent by email and is preserved when the invoice is updated. Do not reference these IDs in the 'attachments' field of POST/PUT requests; manage them only through this endpoint. [Sales Invoices] POST /invoices/sales/{id}/attachments |
| download_sales_invoice_attachmentA | Download an invoice attachment. Download the file content of an attachment linked to a sales invoice, base64-encoded. Works for both shared library attachments and invoice-specific document attachments, as long as the attachment is linked to this invoice. The file content is only returned by this endpoint, not in the invoice GET response. [Sales Invoices] GET /invoices/sales/{id}/attachments/{attachment_id} |
| delete_sales_invoice_attachmentA | Delete an invoice-specific attachment. Delete a document-specific attachment from a sales invoice. The file is permanently removed from storage. [Sales Invoices] DELETE /invoices/sales/{id}/attachments/{attachment_id} |
| get_purchase_invoiceA | Get a single purchase invoice. Get a single purchase invoice by ID, including all line items. [Purchase Invoices] GET /invoices/purchase/{id} |
| list_purchase_invoicesA | Get a list of purchase invoices. Get a paginated list of all purchase invoices with their line items. [Purchase Invoices] GET /invoices/purchase |
| create_purchase_invoiceA | Create a new purchase invoice. Create a new purchase invoice. Use the /invoices/purchase/options endpoint first to determine valid combinations of vat_id and ledger_id. The amount field per line is the gross amount (excl or incl VAT depending on vat_option). The vat_amount is the VAT portion of that amount. [Purchase Invoices] POST /invoices/purchase |
| get_purchase_invoice_optionsA | Get purchase invoice options. Get the available VAT rates with their compatible ledger accounts for creating purchase invoices. [Purchase Invoices] GET /invoices/purchase/options |
| get_purchase_invoice_pdfA | Get purchase invoice PDF. Download the PDF attached to a purchase invoice as a base64-encoded string. [Purchase Invoices] GET /invoices/purchase/pdf/{id} |
| get_recurring_invoiceA | Get a single recurring invoice. Get a single recurring invoice by ID, including all line items. [Recurring Invoices] GET /invoices/recurring/{id} |
| update_recurring_invoiceB | Update a recurring invoice. Update an existing recurring invoice by ID. [Recurring Invoices] PUT /invoices/recurring/{id} |
| list_recurring_invoicesA | Get a list of recurring invoices. Get a paginated list of all recurring invoices with their line items. [Recurring Invoices] GET /invoices/recurring |
| create_recurring_invoiceA | Create a new recurring invoice. Create a new recurring invoice. Use the /invoices/recurring/options endpoint first to determine valid combinations of vat_id, ledger_id and vat_option. Lines can be either regular lines (with qty, amount, vat_id, ledger_id) or info lines (with info=true and description only). [Recurring Invoices] POST /invoices/recurring |
| get_recurring_invoice_optionsA | Get recurring invoice options. Get the available VAT rates with their compatible ledger accounts and VAT options. Use this endpoint to determine valid combinations of vat_id, ledger_id and vat_option when creating recurring invoices. Per VAT rate the usable ledger accounts and compatible vat_option values are returned. [Recurring Invoices] GET /invoices/recurring/options |
| get_sales_orderA | Get a single sales order. Get a single sales order by ID, including all line items. Requires the trade module to be active. [Sales Orders] GET /orders/sales/{id} |
| update_sales_orderB | Update a sales order. Update an existing sales order by ID. Requires the trade module to be active. [Sales Orders] PUT /orders/sales/{id} |
| list_sales_ordersA | Get a list of sales orders. Get a paginated list of all sales orders with their line items. Requires the trade module to be active. [Sales Orders] GET /orders/sales |
| create_sales_orderA | Create a new sales order. Create a new sales order. Requires the trade module to be active. Use the /orders/sales/options endpoint first to determine valid combinations of vat_id, ledger_id and vat_option. For administrations in Austria (AT) or Germany (DE), the delivery_date field is also required. [Sales Orders] POST /orders/sales |
| get_sales_order_optionsA | Get sales order options. Get the available VAT rates with their compatible ledger accounts and VAT options for creating sales orders. Requires the trade module to be active. [Sales Orders] GET /orders/sales/options |
| get_sales_order_pdfA | Get sales order PDF. Download the PDF of a sales order as a base64-encoded string. [Sales Orders] GET /orders/sales/pdf/{id} |
| send_sales_orderA | Send a sales order. Send a sales order via email or mark as sent. Requires the trade module to be active. Peppol is not available for sales orders. [Sales Orders] POST /orders/sales/send/{id} |
| get_quotationA | Get a single quotation. Get a single quotation by ID, including all line items. [Quotations] GET /quotations/{id} |
| update_quotationB | Update a quotation. Update an existing quotation by ID. [Quotations] PUT /quotations/{id} |
| list_quotationsA | Get a list of quotations. Get a paginated list of all quotations with their line items. [Quotations] GET /quotations |
| create_quotationA | Create a new quotation. Create a new quotation. Use the /quotations/options endpoint first to determine valid combinations of vat_id, ledger_id and vat_option. For administrations in Austria (AT) or Germany (DE), the delivery_date field is also required. [Quotations] POST /quotations |
| get_quotation_optionsA | Get quotation options. Get the available VAT rates with their compatible ledger accounts and VAT options for creating quotations. [Quotations] GET /quotations/options |
| get_quotation_pdfA | Get quotation PDF. Download the PDF of a quotation as a base64-encoded string. [Quotations] GET /quotations/pdf/{id} |
| send_quotationA | Send a quotation. Send a quotation via email, mark as sent, or send via Peppol. [Quotations] POST /quotations/send/{id} |
| get_salesbook_invoiceA | Get a single salesbook invoice. Get a single salesbook invoice by ID, including all line items. [Salesbook] GET /salesbook/{id} |
| update_salesbook_invoiceC | Update a salesbook invoice. Update an existing salesbook invoice by ID. [Salesbook] PUT /salesbook/{id} |
| list_salesbook_invoicesB | Get a list of salesbook invoices. Get a paginated list of all salesbook invoices with their line items. [Salesbook] GET /salesbook |
| create_salesbook_invoiceA | Create a new salesbook invoice. Create a new salesbook invoice. Use the /salesbook/options endpoint first to determine valid combinations of vat_id, ledger_id and vat_option. A PDF file can optionally be attached as a base64-encoded string. For administrations in Austria (AT) or Germany (DE), the delivery_date field is also required. [Salesbook] POST /salesbook |
| get_salesbook_invoice_optionsA | Get salesbook options. Get the available VAT rates with their compatible ledger accounts and VAT options for creating salesbook invoices. [Salesbook] GET /salesbook/options |
| get_salesbook_invoice_pdfA | Get salesbook PDF. Download the PDF file attached to a salesbook invoice as a base64-encoded string. [Salesbook] GET /salesbook/pdf/{id} |
| list_payment_conditionsB | Get all payment conditions. Get a list of all payment conditions configured for this administration. [Payment Conditions] GET /payment-conditions |
| list_templatesB | Get all templates. Get a list of all document templates configured for this administration. [Templates] GET /templates |
| list_vat_optionsA | Get all VAT options. Get a list of all VAT/tax rates configured for this administration, including their percentages, codes and availability status. [VAT] GET /vat |
| list_ledgersA | Get all ledger accounts. Get a list of all ledger accounts (chart of accounts) for this administration, including VAT codes, cost centre settings, RGS codes and condensation codes. [Ledgers] GET /ledgers |
| list_cost_centresA | Get all cost centre accounts. Get a list of all cost centre accounts for this administration. [Costs] GET /costs |
| list_currenciesA | Get all currencies. Get a list of all currencies configured for this administration, including exchange rates. [Currencies] GET /currencies |
| list_journalsB | Get all journals. Get a list of all journals (dagboeken) for this administration. [Journals] GET /journals |
| list_subscription_typesA | Get all subscription types. Get a list of all subscription types (abonnementstypes) for this administration. [Subscription types] GET /subscription-types |
| list_attachmentsB | Get all attachments. Get a list of all available document attachments for this administration. [Attachments] GET /attachments |
| list_productsA | Get all products. Get a list of all products for this administration, including supplier information. Requires the trade module to be active. [Products] GET /products |
| get_receiptC | Get a single receipt. Get a single receipt by ID. [Receipts] GET /receipts/{id} |
| update_receiptB | Update a receipt. Update an existing receipt. [Receipts] PUT /receipts/{id} |
| list_receiptsB | Get a list of receipts. Get a paginated list of all receipts (bonnetjes) for this administration. [Receipts] GET /receipts |
| create_receiptC | Create a new receipt. Create a new receipt. [Receipts] POST /receipts |
| get_memorandum_entryA | Get a single memorandum entry. Get a single memorandum journal entry by ID, including all line items. [Memorandum] GET /memorandum/{id} |
| update_memorandum_entryA | Update a memorandum entry. Update an existing memorandum journal entry. All lines are replaced with the newly provided lines. Debit and credit totals across all lines must be equal. [Memorandum] PUT /memorandum/{id} |
| list_memorandum_entriesA | Get a list of memorandum entries. Get a paginated list of all memorandum journal entries with their line items. [Memorandum] GET /memorandum |
| create_memorandum_entryB | Create a new memorandum entry. Create a new memorandum journal entry. Debit and credit totals across all lines must be equal. Optionally link a line to an existing sales invoice, purchase invoice or receipt by providing both [Memorandum] POST /memorandum |
| get_balance_reportB | Get balance sheet. Get a balance sheet report for a given year range and period. [Reports] GET /reports/balance |
| get_column_balance_reportB | Get column balance. Get a column balance (proef- en saldibalans) for a given year, period range and ledger account range. [Reports] GET /reports/column-balance |
| refresh_api_specA | Download the current OpenAPI description from Informer and update this server's tools to match, without restarting. New endpoints become new tools, removed ones disappear, and changed arguments are re-advertised. Use it when an endpoint you expect is missing, when an argument is rejected as unknown, or to check whether Informer has changed anything. Pass dry_run to see the differences without applying them. This only touches this server; it never changes bookkeeping data. |
| open_setupA | Open the Informer settings, configuration or setup page. This is the single answer to every request about configuring this server: first-time setup, "open the config/settings/configuration site", adding a client or administration, changing or rotating an API key or security code, switching a client between read-only and read-write, removing one, or fixing a call that failed with 401 Authentication failed. It opens a form on 127.0.0.1 in the user's browser, one card per administration: alias, company name, API key, security code, access. Call this instead of searching the filesystem for config files, reading the installation directory, running the setup command in a shell, or asking the user for a key in the conversation — credentials belong in the page, not in a chat. Returns the URL to pass on in case the browser did not open. Saving verifies each key against the API and applies the change to this server immediately. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| openapi | The OpenAPI 3.0 specification these tools are generated from. |