Skip to main content
Glama
Walma-Labs

fortnox-mcp

by Walma-Labs

List customer invoices

list_invoices
Read-onlyIdempotent

Retrieve customer invoices with totals, balances, and status; filter by unpaid, overdue, paid, cancelled, date range, or customer to track receivables.

Instructions

Customer invoices (kundfakturor), newest first unless sorted otherwise. Filter by status (unpaid, unpaidoverdue, fullypaid, unbooked, cancelled), invoice date range and customer. Total includes VAT; Balance is the amount still unpaid according to Fortnox.

Input Schema

NameRequiredDescriptionDefault
maxNoMax rows to return (default 100, up to 2000)
filterNo
sort_byNo
to_dateNoInvoice date to (inclusive)
from_dateNoInvoice date from (inclusive)
sort_orderNo
customer_numberNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent and non-destructive, so the bar is lower; the description still adds real behavioral value by disclosing the default result ordering ('newest first unless sorted otherwise') and clarifying that Total is VAT-inclusive while Balance reflects Fortnox's remaining-unpaid figure. It does not, however, discuss pagination or the practical effect of the max cap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the primary resource and default ordering front-loaded, then filters, then field semantics. No filler, though the parenthetical Swedish term and the trailing field notes dilute focus slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter read tool with no output schema, the description helps by explaining the Total and Balance return fields and the default sort, but it is silent on result shape as a whole, the max/pagination behavior, and how it relates to the single-invoice and payment siblings. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 43%, so the description must carry weight; it does map the filter enum to its meaning ('status (unpaid, unpaidoverdue, fullypaid, unbooked, cancelled)') and explains the date-range and customer filtering intent. It adds nothing for max, sort_by or sort_order, so several parameters remain undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource, 'Customer invoices (kundfakturor)', which cleanly separates it from the sibling list_supplier_invoices and get_invoice. The listing verb plus the scoping ('filter by ...') makes the tool's job unambiguous without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates what can be filtered and the default ordering, which implies the browse-with-filters use case, but never states when to choose this over get_invoice for a single record or list_invoice_payments/list_supplier_invoices. No explicit when/when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.