Skip to main content
Glama

handle-mcp

En MCP-server, der giver Claude adgang til nemlig.com og BilkaToGo: søg varer, se ugens tilbud og nemligs opskrifter, sammenlign en indkøbsliste i begge butikker og fyld kurven i den billigste.

Den kan aldrig bestille eller betale. Den kode findes ikke, en "vagt" blokerer kaldene, og testene fejler, hvis nogen prøver at tilføje dem. Du åbner selv butikkens hjemmeside, tjekker kurven, vælger leveringstid og betaler.

Uofficiel. Bruger butikkernes egne hjemmeside-API'er, så det kan holde op med at virke uden varsel.

Installér (Windows)

Kræver uv og Git.

# 1. Gem login (spørger om email og kode, tjekker dem og gemmer i Windows Credential Manager)
uvx --from git+https://github.com/JuliusTorpLarsenPrivat/handle-mcp@v0.1.0 handle-mcp login nemlig
uvx --from git+https://github.com/JuliusTorpLarsenPrivat/handle-mcp@v0.1.0 handle-mcp login bilka
  1. Claude Desktop → Settings → Developer → Edit Config:

{
  "mcpServers": {
    "handle": {
      "command": "C:\\Users\\JuliusTorpLarsen\\.local\\bin\\uvx.exe",
      "args": ["--from", "git+https://github.com/JuliusTorpLarsenPrivat/handle-mcp@v0.1.0", "handle-mcp"]
    }
  }
}
  1. Genstart Claude Desktop helt. BilkaToGo: vælg hjemlevering én gang på bilkatogo.dk.

Related MCP server: Israel Grocery MCP

Værktøjer

Værktøj

Ændrer noget?

Hvad

soeg_varer

nej

Pris, enhedspris, tilbud, lager

ugens_tilbud

nej

Ugens tilbud i én butik

soeg_opskrifter / hent_opskrift

nej

nemligs opskrifter og varerne til dem

sammenlign_liste

nej

Prissætter en liste i begge butikker inkl. gebyrer

vis_kurv

nej

Kurv, gebyrer, minimumskøb

saet_antal_i_kurv

ja, kun kurven

Sætter antal af varer i kurven

leveringstider

nej

Ledige tider og pris

tidligere_ordrer

nej

Ordrehistorik

Sikkerhed

  • Login ligger kun i styresystemets nøglering på din computer (eller i miljøvariabler).

  • Alle kald går gennem vagt.py, som kun tillader butikkernes egne adresser og afviser alt, der ligner bestilling, betaling eller valg af levering.

  • Navn, adresse, telefon og e-mail fjernes fra svarene, før Claude ser dem.

  • Lås altid installationen til en version (@v0.1.0), så koden ikke ændrer sig uden din viden.

Udvikling

uv sync
uv run pytest

Se LÆR.md for en gennemgang af, hvordan det hele hænger sammen.

MIT

Available Tools

9 tools
hent_opskriftB
Read-only

Varerne til en nemlig-opskrift (link eller id) for et antal personer, med pris. Varer markeret har_hjemme (salt, olie osv.) er ikke med i prisen.

NameRequiredDescriptionDefault
opskriftYes
personerNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add genuinely useful behavior beyond that: results carry prices and items flagged har_hjemme (salt, oil etc.) are excluded from the price — a non-obvious detail an agent could otherwise misreport. It says nothing about the return shape or what happens when 'personer' is omitted, so a 3.

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 short sentences with no filler, and the core output (items plus price) is front-loaded. The pricing caveat is well placed as a follow-up. Slightly cryptic phrasing ('Varer markeret har_hjemme') costs a little clarity.

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 simple read-only tool with no output schema and only two parameters, the description covers what the result conceptually contains and one important pricing rule. It leaves gaps around the missing 'personer' default and the structure of the returned items, which matter given there is no output schema to fall back on.

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 0%, so the description must carry the load; it does clarify that 'opskrift' accepts a link or an id, which the bare string type does not say. It also ties 'personer' to the scaling of quantities. However, it never states the default when 'personer' is null (the schema default), which is the one behavioral ambiguity an agent most needs resolved.

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 concrete verb and resource: it returns the ingredient list ('Varerne') for a specific nemlig recipe, priced for a given number of people. That is enough to tell it apart from the sibling soeg_opskrifter, which searches rather than fetches. It stops short of explicitly naming that relationship, so a 4 rather than 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 Guidelines3/5

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

Usage is only implied: the required 'opskrift' parameter takes a link or id, which hints that a search step (soeg_opskrifter) must come first, but no alternative or precondition is stated. There is no guidance on when to prefer this over other siblings like sammenlign_liste or saet_antal_i_kurv. Adequate context, no explicit routing.

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

leveringstiderB
Read-only

Ledige leveringstider med pris. Kun til orientering: brugeren vælger selv tiden.

NameRequiredDescriptionDefault
dageNo
butikNonemlig

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds that prices accompany the slots and that results are advisory only, which is useful context beyond the annotations, but says nothing about how many slots come back, for which store, or how the defaults (5 days, 'nemlig') shape the result.

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 short sentences, front-loaded with the resource and closed with the usage caveat; no filler. It is terse to the point of under-specification, but nothing is redundant.

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

Completeness2/5

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

For a tool with no output schema and 0% schema description coverage, the definition should explain what a returned slot looks like (time window, price, availability) and what the two parameters do. It leaves both gaps open, so an agent can call it but cannot reason about the arguments or the response.

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%, so the description must carry parameter meaning, and it does not: neither 'dage' (days ahead) nor 'butik' (store) is mentioned or explained. Only an indirect hint exists ('leveringstider' implies a time window), leaving an agent to guess what the integer and the store string control.

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 the resource precisely: available delivery slots together with price ('Ledige leveringstider med pris'), which is distinct from the cart, order and search siblings. It lacks an explicit verb (list/hent), so the agent must infer that it is a retrieval tool, and it does not explicitly contrast itself with any sibling.

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?

'Kun til orientering: brugeren selv vælger tiden' gives a real usage constraint – present the slots but let the user make the choice. However, it does not say when to call this versus the order/cart siblings, nor whether it should be called before or after items are in the cart.

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

saet_antal_i_kurvA
Idempotent

Sæt antal af varer i kurven: {"varenummer": antal}. Antallet er det samlede antal (ikke et tillæg), og 0 fjerner varen. Ændrer KUN kurven. Spørg brugeren først.

NameRequiredDescriptionDefault
antalYes
butikYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare mutation, idempotency and non-destructiveness; the description adds the crucial semantics that the number is a total rather than an increment (explaining the idempotentHint) and that 0 removes the line. 'Ændrer KUN kurven' is valuable scoping — it reassures the agent that no order is placed — though it does not say what happens when the item number is invalid or the cart is empty.

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?

Four short clauses, all load-bearing, with the operation and format front-loaded before the behavioral caveats. The inline JSON fragment is slightly awkward inside a sentence but conveys the expected input compactly.

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 write tool with a nested-object parameter and no output schema, the definition covers the key semantics but leaves the required 'butik' parameter and the failure/return behavior unexplained. An agent could invoke it on a simple path but would be guessing about the store argument.

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 0%, so the description must carry all parameter meaning. It does explain the nested map parameter well (key = varenummer, value = total quantity, 0 = removal), but the required 'butik' parameter is never mentioned anywhere, leaving one of two parameters completely undefined.

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?

Names a specific verb and resource ('Sæt antal af varer i kurven') and even shows the expected shape, {"varenummer": antal}, so the operation is unambiguous. It stops short of naming or contrasting any sibling (e.g. vis_kurv for reading the basket), so differentiation is left to the reader.

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?

'Spørg brugeren først' gives one concrete precondition for invoking the tool, which is genuinely useful for an agent acting on a shared cart. However, there is no guidance on when this tool is preferable to alternatives such as vis_kurv or soeg_varer, and no statement of when not to use it.

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

sammenlign_listeA
Read-only

Prissæt en indkøbsliste i flere butikker, med gebyrer, og find den billigste. varer er fx ["letmælk 1 l", "hakkede tomater", "pasta"], antal samme rækkefølge (standard 1). Usikre match er markeret og bør tjekkes, før kurven fyldes.

NameRequiredDescriptionDefault
antalNo
varerYes
butikkerNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real context on top — that prices include store fees, that the cheapest option is selected, and that uncertain matches are flagged in the result and need verification. It does not explain what happens when `butikker` is omitted (all stores?) or how results are shaped.

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 short sentences, front-loaded with the core action and followed by the parameter hints and the verification caveat. No wasted wording, though the example list makes the middle slightly dense.

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 read-only comparison tool with no output schema, the description covers the essential action and the item-list format but omits the `butikker` parameter entirely and says nothing about what the comparison returns (per-store totals, fee breakdown, cheapest flag). 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 description coverage is 0%, so the description must compensate. It does well for two of three parameters — `varer` gets a concrete example showing free-text item strings with embedded quantities ('letmælk 1 l'), and `antal` is explained as positional with default 1 — but `butikker` is never mentioned at all, leaving a third of the surface undocumented.

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 opens with a specific verb and resource: price a shopping list across several stores, include fees, and return the cheapest. That is clearly distinct from siblings like soeg_varer (item search) or vis_kurv (basket view), 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 Guidelines3/5

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

Usage is implied rather than stated: you price a whole list, and uncertain matches 'should be checked before the basket is filled', which hints at a workflow step. There is no explicit when-to-use or when-not-to-use guidance relative to soeg_varer or vis_kurv.

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

soeg_opskrifterA
Read-only

Søg i nemligs opskrifter. Giver navn og link. Brug hent_opskrift for varer og pris.

NameRequiredDescriptionDefault
antalNo
tekstYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety and open-web profile is covered by structured data. The description adds genuine value by disclosing the return shape (name and link), but says nothing about result limits, ranking, or what happens when nothing matches.

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

Conciseness5/5

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

Three short sentences in Danish, front-loaded with the purpose and followed immediately by return value and the routing hint. Nothing is redundant or padded.

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 simple read-only two-parameter search it covers purpose, output, and the sibling hand-off, which is most of what an agent needs. The undocumented 'antal' cap and query behavior leave a real gap given there is no output schema to fall back on.

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%, so the description must carry the burden, and it does not: neither 'tekst' (search query semantics, matching behavior) nor 'antal' (result cap, default 5) is mentioned. Only the implicit idea of searching is conveyed.

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?

"Søg i nemligs opskrifter" names a concrete verb (search) and resource (recipes), and the follow-up sentence states the return payload (name and link). It also names the sibling hent_opskrift that handles the deeper case, so an agent can separate the two tools without reading either schema.

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?

"Brug hent_opskrift for varer og pris" gives an explicit alternative and the condition (ingredients and price) that selects it. What is missing is guidance on when this search tool itself is appropriate versus e.g. soeg_varer, and no exclusion is stated.

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

soeg_varerB
Read-only

Søg efter varer i én butik (nemlig eller bilka). Giver pris, enhedspris, tilbud og lager.

NameRequiredDescriptionDefault
antalNo
butikNonemlig
tekstYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by disclosing the return payload (pris, enhedspris, tilbud, lager) and the single-store restriction, but says nothing about result limits, empty-result behavior, or failures for unsupported store values.

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

Conciseness5/5

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

Two short sentences with zero filler: the action and scope come first, the returned fields second. Nothing could be removed without losing information.

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

Completeness4/5

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

For a read-only, open-world lookup with no output schema, the description covers the essentials: what is searched, where, and what comes back. The remaining gap is result sizing and the meaning of 'antal', which matters given a default of 10 results.

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%, so the description must carry parameter meaning. It does clarify that butik takes one of two values (nemlig/bilka), which the schema does not express as an enum, but the required 'tekst' parameter and especially 'antal' (default 10, presumably result count) are left completely undefined.

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?

"Søg efter varer i én butik" gives a specific verb (søg) and resource (varer) plus a scope constraint limited to a single store, and the parenthetical enumerates the two supported stores. It is clearly distinguishable from siblings like ugens_tilbud and soeg_opskrifter, though it never names those alternatives explicitly.

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?

Usage is only implied: the word "Søg" signals a query-style tool and "i én butik" hints that cross-store comparison belongs elsewhere (sammenlign_liste). There is no explicit when-to-use/when-not guidance, no prerequisite statement, and no mention of what to do if the product is absent.

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

tidligere_ordrerB
Read-only

Tidligere ordrer. Med ordre_id: varerne i den ordre (godt til 'det vi plejer at købe').

NameRequiredDescriptionDefault
antalNo
butikNonemlig
ordre_idNo

TDQS

B3.4/5.0
Behavior3/5

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

Beyond the read-only annotation, the description usefully discloses that the tool's behavior changes from previous orders to the contents of one order when ordre_id is supplied. It remains basic because it says nothing about account or session requirements, ordering or recency of results, empty results, or store-specific behavior.

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 text is compact and front-loads the general resource, then immediately presents the conditional mode and a practical example. Its fragmentary style is easy to scan, although it is too terse to cover several invocation-relevant details.

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?

An agent can make a basic no-argument call and understands the special ordre_id mode, making the definition minimally usable. However, with no output schema and no parameter descriptions, the omission of ID discovery, antal and butik semantics, result ordering, and expected contents for each mode leaves clear gaps.

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?

With 0% schema description coverage, the description only compensates for ordre_id by explaining its effect and giving a use case. It does not clarify whether antal limits orders or items, how results are selected, or which values butik accepts beyond the schema's default.

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 identifies the resource as previous orders and adds a useful second mode: supplying ordre_id returns the items in that order. The opening phrase largely restates the tool name and no sibling differentiation is provided, but the overall purpose is clear.

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 explicitly conditions the item-level mode on ordre_id and gives the concrete shopping intent 'det vi plejer at købe'. It does not explain the likely workflow of first listing orders to obtain an ID, nor when another sibling tool would be preferable.

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

ugens_tilbudC
Read-only

Ugens tilbud i én butik. nemlig: Skarp pris, Priskup, Dagstilbud og Undgå madspild.

NameRequiredDescriptionDefault
antalNo
butikNonemlig

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one useful constraint — offers are retrieved for one store at a time ('i én butik') — but says nothing about result ordering, page size behavior, or what the offer categories mean for the returned data.

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

Conciseness3/5

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

It is short and front-loaded with the scope constraint, so nothing is bloated. But the second sentence is under-specified jargon rather than efficient information, so brevity comes at the cost of clarity.

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

Completeness2/5

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

With no output schema, no parameter descriptions, and only read-only/open-world annotations, the description should explain what an offer record contains and what 'antal' controls. Neither is present, leaving an agent able to invoke the tool but unable to predict or interpret its results.

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%, so the description must carry the burden for both parameters. 'i én butik' loosely gestures at the 'butik' parameter and the 'nemlig:' token hints at its default, but 'antal' (result count, default 25) is never mentioned, and no valid store values or limits are given.

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

Purpose3/5

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

The first sentence identifies the resource (weekly offers) and scopes it to a single store, which lets an agent distinguish it from product/recipe search siblings. However, there is no explicit verb (fetch/list) and the second sentence is a cryptic colon-list of Danish offer categories ('Skarp pris, Priskup, Dagstilbud og Undgå madspild') whose relation to the tool's output is left implicit.

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

Usage Guidelines2/5

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

No guidance on when to use this versus soeg_varer or sammenlign_liste, no prerequisites, and no exclusions. An agent must infer that this returns promotional offers rather than searchable catalog items.

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

vis_kurvC
Read-only

Kurvens linjer, gebyrer, total, minimumskøb og valgt leveringstid.

NameRequiredDescriptionDefault
butikNonemlig

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description's genuine contribution is naming what comes back (lines, fees, total, minimum purchase, selected delivery time), which matters because there is no output schema. It still omits whether a session/login is required, what happens with an empty basket, or that the store is selectable.

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

Conciseness3/5

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

It is short and front-loaded, but the single comma-separated field list is not a well-formed sentence and gives no structure beyond enumeration. Nothing is wasted, yet the fragment form makes it feel like a stub rather than a definition.

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 simple read-only tool with one optional parameter and no output schema, the field list does cover the essentials of the return value. It remains incomplete about preconditions (empty basket, authentication) and about the store parameter, which are the two things an agent would still need to call it confidently.

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?

There is only one optional parameter ('butik', defaulting to 'nemlig'), which is close to the zero-parameter baseline. However, schema description coverage is 0% and the description never mentions store selection, so the agent gets no confirmation that the basket can be viewed for a different store.

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

Purpose2/5

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

The description is a noun-phrase fragment ('Kurvens linjer, gebyrer, total, minimumskøb og valgt leveringstid') with no verb, so it never states that the tool retrieves or displays the basket. It expands the name 'vis_kurv' into a list of returned fields rather than declaring an action, leaving the agent to infer 'read the cart' from the name plus readOnlyHint.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives such as saet_antal_i_kurv or leveringstider. The agent must deduce on its own that this is the read-side counterpart to the basket-mutation sibling.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedhent_opskrift
    • First observedleveringstider
    • First observedsaet_antal_i_kurv
    • First observedsammenlign_liste
    • First observedsoeg_opskrifter
    • First observedsoeg_varer
    • First observedtidligere_ordrer
    • First observedugens_tilbud
    • First observedvis_kurv

TDQS

B3.3/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a clear distinct resource: product search, weekly offers, recipe search, recipe detail, list price comparison, cart view, cart modification, delivery times, and order history. The closest pair is soeg_varer vs ugens_tilbud and soeg_opskrifter vs hent_opskrift, but descriptions clearly delineate search vs. detail/offers. Minor overlap only, easily resolved.

Naming Consistency4/5

All names are consistently snake_case and in the same language, with action tools using verb_noun (soeg_varer, hent_opskrift, sammenlign_liste, vis_kurv). A few query tools are bare noun phrases (leveringstider, tidligere_ordrer, ugens_tilbud), a minor deviation from the verb-first convention but still readable and predictable.

Tool Count5/5

Nine tools is well within the ideal 3-15 range and each maps to a genuine grocery-shopping workflow stage (search, offers, recipes, comparison, cart, delivery, history). No tool appears redundant or trivial.

Completeness3/5

Coverage spans discovery, pricing, cart management, and history, but there is no checkout/place-order or explicit add-item tool, so an agent can build a cart but cannot finalize an order through the surface. The set supports browsing and planning well but has a notable lifecycle gap at the ordering end.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to compare prices, track budgets, and find promotional deals across major Dutch supermarkets and drugstores. It supports automated shopping list optimization, meal planning, and price history alerts for stores like Albert Heijn, Jumbo, and Kruidvat.
    20
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Enables cross-store price comparison and recipe-driven cart automation for Israeli grocery stores Shufersal and Tiv Taam, with an extensible architecture for additional stores.
    14
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables searching products, viewing product details, managing the basket, and accessing order history on nemlig.com through natural language. It does not support placing orders or accessing payment cards.
    6
    28
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables grocery shopping at Nemlig.com via MCP, including product searches, basket management, and session-based authentication.
    MIT