Skip to main content
Glama

More AI - ChatGPT & Claude MCP (Fortnox)

Hämta ett dokument ur Fortnox

get_fortnox_document
Read-onlyIdempotent

Give the person a download link for a document this connection offers (invoice, offer or order as PDF, SIE file, archive or inbox file), or an Excel file (xlsx) of a report or list this connection offers, by its operation_id (for example more:aldersanalys_kund). Fortnox API (https://api.fortnox.se/apidocs). Any other operation is refused.

Input Schema

NameRequiredDescriptionDefault
expandNo
fieldsNo
summarizeNo
company_keyYes
path_paramsNo
operation_idYes
query_paramsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / query_params / additionalProperties / anyOf
      Previous value: -[
      -  {
      -    "maxLength": 500,
      -    "type": "string"
      -  },
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "boolean"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 4000,
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "maxLength": 200,
      +          "type": "string"
      +        },
      +        {
      +          "type": "number"
      +        }
      +      ]
      +    },
      +    "maxItems": 200,
      +    "type": "array"
      +  }
      +]
  2. Changed2 schema fields changed
    • removedInput schema / properties / path_params / additionalProperties / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "number"
      -  }
      -]
    • addedInput schema / properties / path_params / additionalProperties / type
      Added value: +[
      +  "string",
      +  "number"
      +]
  3. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so safety is covered; the description adds what matters beyond that — the return is a download link, non-listed operations are rejected, and the upstream API spec is cited. It omits auth/permission expectations and says nothing about what happens on an invalid company_key or missing document.

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?

Two sentences, front-loaded with the action and outcome; the parenthetical enumeration of supported document types is dense but earns its place by defining scope. The Fortnox API URL is arguably filler for an agent that already knows the connector.

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?

It correctly describes the return (a download link), which is important since no output schema exists, and it bounds accepted operations. But for a 7-parameter generic dispatcher with nested objects and no parameter documentation, an agent still cannot tell what company_key means, how path_params/query_params are used, or how to enumerate valid operation_ids.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, so the description must carry the burden and it only covers operation_id (with one example, "more:aldersanalys_kund"). company_key, expand, fields, summarize, path_params and query_params — including the nested summarize object — receive no explanation at all, and there is no hint on how to discover valid operation_ids.

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?

States a specific verb and outcome ("give the person a download link") plus a concrete resource set (invoice/offer/order PDF, SIE, archive, inbox, xlsx reports) and the selector (operation_id). Sibling differentiation is only implicit — it never says how this differs from get_invoice_pdf, read_sie_file or download_archive_file — so it stops short of a 5.

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?

Provides a clear when-not boundary ("Any other operation is refused") and an example operation_id format, which is genuinely useful for a dispatcher tool. It never names the alternative sibling tools to use when the operation is refused, so the routing guidance is incomplete for an agent that has ~70 sibling tools.

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