tools/call over
POST /uniconta/mcp. The connector is connected with an API key: a dedicated
Uniconta Server-Login User (username + password) plus a Company ID, with no
OAuth. See Forbind Uniconta.
Endpoint:
https://mcp.consile.ai/uniconta/mcp. Uniconta is its own named
connector with only its own tools. The transport namespaces each tool as
uniconta__<tool> (e.g. uniconta__get_account_balance); your AI assistant
invokes these for you, so the names below are the bare tool names.This connector is read-only by construction: every read is the uniform
POST /Query/Get/{Entity} request plus the company list, and the client never
calls a create/update/delete or posting endpoint. Uniconta is one of our
read-only data connectors. Your AI can read your figures but can never change,
create or delete anything, so there are no confirm-gated tools.Shared parameters
Most list tools accept a row cap; several support search, exact-account and date-range filtering; and the high-volume reads (list_inventory_items, query)
add server-side sorting, paging and connector-side projection.
integer
default:"50"
Max rows to return. The connector’s own input schema caps this at
1000
(client-side).string
Name search. Wildcards are added automatically (
acme becomes *acme*); pass your
own * to control matching. Available on the debtor, creditor, G/L-account and
inventory list tools.string
Exact account number to filter on (debtor, creditor or G/L account, depending on
the tool).
string (YYYY-MM-DD)
Inclusive date range, e.g.
"2025-01-01" / "2025-12-31". Available on the
invoice, transaction and posting list tools.integer
Rows to skip SERVER-side before the page is returned (maps to Uniconta’s
Skip).
Use with limit and follow the result’s nextOffset to page. Available on
list_inventory_items, list_inventory_transactions and query.string[]
Return ONLY these properties per row (connector-side projection that trims the
payload on wide entities). Available on
list_inventory_items and query. Custom
fields only exist on the …ClientUser entity variants.Result shape
A plain list result is{ entity, count, total, items: [...] }, where total is
the full row count before the limit cap and count is the number of rows
returned. When a tool runs a server-side sort or page it fetches only one page,
so the full count is unknown: total is omitted and the result carries
truncated: true on a full page. offset and nextOffset are added only when the
request itself passed an offset; a sort-only read (no offset) returns
truncated: true on a full page without any cursor. A fields projection that names
a property present in no returned row echoes it in unknownFields.
Companies
list_companies
List the Uniconta companies the connected Server-Login User can access (CompanyId, name, CVR/registration number, country). Arguments: none. Returns
{ count, companies: [...] }.
Debtors (customers)
list_debtors
List debtors (customers) with account, name, address, currency, balance (CurBalance), overdue and credit limit.
string
Name search (wildcards added automatically).
string
Exact debtor account number.
string
CVR / registration number (
CompanyRegNo).integer
default:"50"
list_debtor_open_items
Open (unpaid) debtor items (accounts-receivable / aging view): account, voucher, invoice, due date andAmountOpen (outstanding).
string
Exact debtor account number.
integer
default:"50"
list_debtor_invoices
Issued customer invoices (debitorfakturaer):InvoiceNumber, account, dates,
net/VAT/total amounts and Paid flag.
string
Exact debtor account number.
string (YYYY-MM-DD)
From date; pairs with
toDate as a range.string (YYYY-MM-DD)
integer
default:"50"
list_debtor_orders
Sales orders (salgsordrer):OrderNumber, account, name, amounts and status.
string
Exact debtor account number.
integer
default:"50"
list_debtor_transactions
A debtor’s posted ledger movements (debitorposteringer): date, voucher, invoice, amount and text. Read from the centralGLTransClient table filtered on DCAccount.
For the unpaid/overdue view with due dates and outstanding amounts use
list_debtor_open_items instead.
string
Exact debtor account number (matched on
DCAccount).string (YYYY-MM-DD)
string (YYYY-MM-DD)
integer
default:"50"
Creditors (suppliers)
list_creditors
Creditors (suppliers) for accounts-payable / spend questions: account, name, currency, balance, overdue and payment method.string
Name search (wildcards added automatically).
string
Exact creditor account number.
integer
default:"50"
list_creditor_open_items
Open (unpaid) creditor items (accounts-payable view): account, voucher, due date and outstanding amount.string
Exact creditor account number.
integer
default:"50"
list_creditor_transactions
A creditor’s posted ledger movements (kreditorposteringer): date, voucher, invoice, amount and text. Read from the centralGLTransClient table filtered on DCAccount.
For the unpaid/overdue view use list_creditor_open_items instead.
string
Exact creditor account number (matched on
DCAccount).string (YYYY-MM-DD)
string (YYYY-MM-DD)
integer
default:"50"
Finance / general ledger
list_gl_accounts
The chart of accounts (kontoplan):Account, Name, AccountType, Balance and
this-year / last-year figures.
string
Account name search (wildcards added automatically).
string
Exact G/L account number.
integer
default:"50"
get_account_balance
Read one G/L account’s balance and this-year figures by account number: the direct “balance of account X” answer. Returns the single matching account row, ornull if no account matches.
string
required
G/L account number, e.g.
"1010".list_gl_transactions
General-ledger postings (finansposteringer): date, account, voucher, text, amount, VAT and transaction type.string
Exact G/L account number.
string (YYYY-MM-DD)
string (YYYY-MM-DD)
integer
default:"50"
list_vat_codes
VAT / moms codes with rates (Vat, Name, Rate, Account, VatType), needed
to interpret VAT on invoices and postings.
integer
default:"50"
Inventory (products)
list_inventory_items
Products / inventory items (varer):Item, Name, prices (sales/cost/purchase),
unit, group, EAN and quantity on stock. Optionally sort server-side (fetches only the
top-N, not the whole catalogue), page with offset, trim wide rows with fields, and
set includeCustomFields to read the InvItemClientUser variant so the company’s own
custom/user-defined fields come along. Uniconta stores no creation date on items, so
“newest created product” is not answerable here (use list_recently_added_items).
string
Product name search (wildcards added automatically).
string
Exact item number.
string
Exact product group code.
boolean
default:"false"
Read the
InvItemClientUser entity variant so the company’s custom/user-defined
item fields are included in each row (they are absent on the base entity).enum
One of
item, name, sales_price, cost_price, quantity, last_movement.
Sorts server-side and returns only the top-N (per limit). Uniconta has no item
creation date, so last_movement is the date of the last stock movement.boolean
default:"true"
true = highest/newest first (default); false = ascending.integer
default:"50"
integer
Server-side paging (follow
nextOffset).string[]
Return only these properties per row.
list_product_groups
Inventory product groups (Group, Name) used to categorise items.
integer
default:"50"
list_inventory_transactions
Inventory postings / stock movements (lagerposteringer) fromInvTransClient: Item,
ItemName, Date, Qty (NEGATIVE on a sale), DCAccount (the debtor/creditor on
the line), AccountName, InvoiceNumber, NetAmount and MovementType. This is how
you read the actual sales lines for an item (qty < 0) with their invoice date and
customer. To count units sold in a product group, first get the item numbers via
list_inventory_items (group=…), then call this filtered to those items plus the
date range and sum the negative Qty.
string
Item number (exact). Multiple via Uniconta list syntax, e.g.
"1001;1002;1003".string
Debtor/creditor account on the line (
DCAccount).string (YYYY-MM-DD)
string (YYYY-MM-DD)
integer
default:"50"
integer
Server-side paging (follow
nextOffset).Advanced
query
The read-only escape-hatch: fetch rows for any Uniconta Query entity with raw filters. Use it for entities not covered by a dedicated tool (e.g."ProjectClient").
Read-only by construction: it only ever issues POST /Query/Get/{entity}, never a
write. Optionally sort server-side via orderBy (returns only the top-N per limit),
page with offset, and trim wide rows with fields. Custom/user-defined fields are
only returned, and only filterable, on the …ClientUser entity variants (e.g.
InvItemClientUser); on the base entity a filter on a custom field is silently ignored.
For per-group totals across a whole table, prefer aggregate.
string
required
Uniconta entity / table name, e.g.
"DebtorClient", "GLTransClient". Use the
…ClientUser variant (e.g. "InvItemClientUser") to include custom fields.array
default:"[]"
Uniconta query filters; empty means all rows. Each filter is
{ "PropertyName": string, "FilterValue": string }. FilterValue can be exact,
a wildcard (*abc*), a range (a..b) or a list (a;b;c).string
Property to sort by server-side, e.g.
"Item" or "Date".boolean
default:"true"
When
orderBy is set: true = descending (default), false = ascending.integer
default:"50"
integer
Server-side paging (follow
nextOffset).string[]
Return only these properties per row.
aggregate
Group and sum any Uniconta Query entity inside the connector. It pages through all matching rows server-side (1000 rows/page, up to 50 pages, roughly 50,000 rows) and returns ONLY the per-group totals, e.g. contribution margin per product group across a 17k-item catalogue in one call. Uniconta has no server-side aggregation, so this is the sanctioned way past the per-call row limit. Pure pass-through: rows are folded into the running totals and discarded, nothing is stored. It rejects groupings over 1000 groups, and if the result saystruncated: true you should narrow the filters or date range
rather than retry.
string
required
Uniconta Query entity, e.g.
"InvTransClient" or "InvItemClientUser" (the
…ClientUser variant is required for custom/user-defined fields).array
default:"[]"
Filters applied BEFORE aggregating; empty means all rows.
string[]
default:"[]"
Properties to group by (max 3), e.g.
["Group"]. Empty means one grand-total row.string[]
default:"[]"
Numeric properties to sum per group (max 10). Unparseable values are skipped and
counted in the result’s
nonNumeric tally (never summed as 0).string
default:"Date"
Property the
fromDate/toDate range filters on.string (YYYY-MM-DD)
string (YYYY-MM-DD)
string
Stable sort key while paging, recommended on large tables so
Skip-based pages do not overlap or miss rows.{ entity, groupCount, rowsScanned, pages, truncated, groups: [{ key, count, sums }] }. nonNumeric is included only when it is non-empty, and there is no groupBy key in the result.
Opt-in data layer
list_recently_added_items
List the inventory items Consile saw appear most recently (newest first). Uniconta stores no item creation date, so this is backed by Consile’s opt-in data layeruniconta.first_seen, which the tenant must enable in the portal (Konto, Datalag).
Timestamps are “first seen by Consile after opt-in”, not Uniconta creation dates, so
items that existed before opt-in share the initial baseline. With the data layer not
enabled the tool returns a structured data_layer_not_enabled hint (never data) so
your AI can point you to the portal toggle.
string (ISO)
Only items first seen on/after this date, e.g.
"2026-01-01".integer
default:"50"
Code examples
This connector vaults the Server-Login User (username + password) and Company ID
with no upstream validation at connect time, so an invalid credential, a user
that is not a Server-Login User, or a wrong Company ID surfaces here as a “reconnect
required” error on the first call rather than at connect. Each upstream call has a
15-second timeout, and the session JWT is a 1-hour artefact minted per tool call and
never stored. See Errors & limits.