Skip to main content
Glama

More AI - ChatGPT & Claude MCP (Fortnox)

Försäljning per artikel

get_sales_by_article
Read-onlyIdempotent

Försäljning per artikel: mest sålda, intäkt, täckningsbidrag där inköpspris finns — och artiklar i lager som inte sålt i perioden. Example question: "Vilka artiklar säljer mest? Vad har vi i lager som inte sålt på länge?" Computed on the server from live Fortnox data (Fortnox API, https://api.fortnox.se/apidocs), over all pages.

Input Schema

NameRequiredDescriptionDefault
maxNofakturor att läsa raderna för (standard 100, högst 300) Number.
topNoantal artiklar i listan, standard 25 Number.
todateNofakturadatum till (standard i dag) Date as YYYY-MM-DD unless the text allows more.
fromdateNofakturadatum från ÅÅÅÅ-MM-DD (standard 90 dagar bakåt) Date as YYYY-MM-DD unless the text allows more.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / fromdate / description
      Previous value: -"fakturadatum från ÅÅÅÅ-MM-DD (standard 90 dagar bakåt)"New value: +"fakturadatum från ÅÅÅÅ-MM-DD (standard 90 dagar bakåt) Date as YYYY-MM-DD unless the text allows more."
    • changedInput schema / properties / max / description
      Previous value: -"fakturor att läsa raderna för (standard 100, högst 300)"New value: +"fakturor att läsa raderna för (standard 100, högst 300) Number."
    • changedInput schema / properties / max / type
      Previous value: -[
      -  "string",
      -  "number"
      -]New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / todate / description
      Previous value: -"fakturadatum till (standard i dag)"New value: +"fakturadatum till (standard i dag) Date as YYYY-MM-DD unless the text allows more."
    • changedInput schema / properties / top / description
      Previous value: -"antal artiklar i listan, standard 25"New value: +"antal artiklar i listan, standard 25 Number."
    • changedInput schema / properties / top / type
      Previous value: -[
      -  "string",
      -  "number"
      -]New value: +[
      +  "number",
      +  "string"
      +]
  2. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds real value beyond them: results are computed server-side from live Fortnox data, all pages are traversed automatically, and contribution margin is only available 'där inköpspris finns' – an important data caveat an agent won't find in the annotations.

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?

The purpose and output contents are front-loaded, followed by example questions and data provenance. Every sentence carries information; the only mild redundancy is the example questions restating the listed outputs, but they still earn their place as usage cues.

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

Completeness5/5

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

Given an output schema (return shape needn't be explained) and annotations covering the safety profile, the description covers the remaining unknowns: data source, cross-page aggregation, what is included/excluded (margin only with purchase price, unsold stock included), and default period via the schema. Nothing essential for a correct call is missing.

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 description coverage is 100% and all four parameters (max, top, todate, fromdate) carry their own defaults and limits, so the schema does the work. The description adds nothing about how these parameters affect the result, so the baseline 3 applies.

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

Purpose4/5

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

The description names a concrete resource and analysis ('Försäljning per artikel') and enumerates what it returns: top sellers, revenue, contribution margin where purchase price exists, plus stocked articles with no sales in the period. That is specific enough to separate it from adjacent tools like get_inventory_value or get_top_customers, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

Two natural-language example questions ('Vilka artiklar säljer mest? Vad har vi i lager som inte sålt på länge?') give an agent a clear situational trigger. There is no exclusion guidance or explicit pointer to alternative tools when the question is about customers, accounts, or raw article lists, so it stops short of a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources