Skip to main content
Glama
dansheik

Fiken MCP

by dansheik

fiken_find_duplicate_purchases

Read-onlyIdempotent

Find possible duplicate purchases for the same supplier by matching invoice number or identical NOK gross amount and document date, searching paginated Fiken records.

Instructions

Finn mulige duplikater blant kjøp for samme leverandør: fakturanummer ELLER likt NOK-bruttobeløp og dato. Søker uten datogrense, inntil max_pages. Ingen treff er ikke garanti; utkast/inbox og andre leverandør-ID-er inngår ikke.

Input Schema

NameRequiredDescriptionDefault
gross_oreYes
max_pagesNo
supplier_idYes
company_slugYes
document_dateYes
invoice_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the bar is lower; the description still adds real behavioral context: no date-window restriction, a pagination ceiling via max_pages, and the important caveat that zero hits is not proof of uniqueness. It stops short of saying how matches are returned or whether pagination truncation is signalled.

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 dense sentences with no filler; the match criteria come first and the caveats follow. It is efficient, though the three caveats are packed into a single trailing sentence rather than being signposted.

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?

There is no output schema, so the description should say what a result looks like — a list of matching purchase objects, with IDs, is never stated. Combined with undocumented required parameters and the currency-unit ambiguity, the definition is serviceable but leaves gaps an agent must guess at.

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?

With 0% schema description coverage, the description must carry parameter meaning, and it only partly does: it explains the OR-relationship between invoice_number and gross amount/date, and names max_pages as a search cap. It leaves company_slug, supplier_id, document_date format, and the fact that gross_ore is in øre (it says NOK gross amount) unexplained.

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 a specific verb and resource (find duplicate purchases for a supplier) and spells out the exact match logic: same invoice number OR equal NOK gross amount plus date. That level of specificity separates it cleanly from siblings like fiken_list_purchases or fiken_get_purchase, which merely retrieve purchases.

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?

It states the search is unbounded by date and capped by max_pages, and explicitly lists what is out of scope (drafts/inbox, other supplier IDs). That gives clear conditions for using it, though it never names an alternative tool to use when the caller wants draft/inbox coverage or a plain listing.

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