handle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Dagligvarer fra nemlig.com og BilkaToGo. Beder brugeren om en madplan eller ugens indkøb af mad, så kald ugeplan_forloeb først og følg forløbet trin for trin. Er Telegram sat op, foregår al snak med husstanden der, ikke i chatten. Du kan søge, se tilbud og opskrifter, sammenligne priser og ændre antal i kurven. Du kan også huske, hvad brugerne har hjemme (beholdning), og tage højde for det i madplaner. Til madplaner: læs vis_profil (personer, ugebudget, præferencer, ting at undgå), vælg helst retter fra vis_opskrifter (retter brugerne stoler på), og sig til, hvis prisen går over ugebudgettet. Vær grundig, når du vælger varer: tag ikke bare første bedste eller opskriftens standardvare. Skriv mængden med i søgningen, prøv flere søgetekster, gå alternativerne igennem og vælg ud fra pris, mængde og kvalitet (rå varer, økologi hvis profilen siger det, ikke ultraforarbejdet). Fortæl kort, hvorfor du valgte som du gjorde. Du kan ALDRIG bestille, betale eller vælge leveringstid: det gør brugeren selv på butikkens hjemmeside. Spørg altid brugeren, før du ændrer kurven, og vis bagefter hvad der ligger i den.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| soeg_varerA | Søg efter varer i én butik (nemlig eller bilka). Giver pris, enhedspris, tilbud og lager.
Butikken sorterer efter popularitet, så de billigste varer er tit ikke i toppen. Sæt
|
| ugens_tilbudC | Ugens tilbud i én butik. nemlig: Skarp pris, Priskup, Dagstilbud og Undgå madspild. |
| soeg_opskrifterA | Søg i nemligs opskrifter. Giver navn og link. Brug hent_opskrift for varer og pris. |
| hent_opskriftB | 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. |
| sammenlign_listeA | Prissæt en indkøbsliste i flere butikker, med gebyrer, og find den billigste.
|
| vis_kurvC | Kurvens linjer, gebyrer, total, minimumskøb og valgt leveringstid. |
| saet_antal_i_kurvA | 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. |
| vis_beholdningA | Det I har hjemme (køleskab, fryser, skab), som I sidst har fortalt det.
|
| opdater_beholdningA | Gem hvad I har hjemme. Ændrer kun en lokal liste, aldrig butikkernes kurv.
|
| koebsmoensterA | Hvad husstanden faktisk køber, ud fra gemte kvitteringer (i dag fra Coop/Brugsen):
basisvarer med typisk interval og dage siden sidst ( |
| vis_profilA | Husstandens profil (personer, ugebudget, præferencer, ønsker til varer og måltider m.m.).
|
| opdater_profilA | Ret husstandens profil. |
| vis_opskrifterA | Jeres egen opskriftssamling: retter I kender og stoler på. Vælg retter herfra til
madplaner, før du foreslår nye. |
| gem_opskriftA | Gem en ret i jeres opskriftssamling. Findes navnet, erstattes den. Brug link til nemlig-opskrifter (hent_opskrift kan så give varerne). Ingredienser er fri tekst, fx "500 g hakket oksekød". Gem kun det, brugeren beder om. |
| fjern_opskriftB | Fjern en ret fra opskriftssamlingen. Spørg brugeren først. |
| ugeplan_forloebA | KALD DENNE FØRST, når brugeren beder om en madplan eller ugens indkøb af mad (fx "lav madplan"). Er Telegram sat op, sender den selv det første spørgsmål til husstanden på Telegram. Giver det faste forløb trin for trin: køleskab, menu med prisskøn, pris i den billigste butik eller fordeling, og "bestil". Følg det præcist. |
| vent_paa_svarA | Vent på svar fra husstanden på Telegram (højst 55 sekunder pr. kald). Giver de nye svar, eller {"ingen_svar_endnu": true}. Kald den igen, mens I venter. Svar fra "handle-botten" fortæller, at kurven er fyldt efter et "bestil" (eller hvorfor den ikke blev det). |
| hent_opskrift_fra_linkA | Hent en opskrift fra et link på husstandens opskriftssider: Valdemarsro, Arla, DR Mad, Madens Verden, HelloFresh og Årstiderne. Giver navn, antal personer, tid og ingredienser med mængder. Find linket med websøgning på de sider. Gem retter, de kan lide, med gem_opskrift. |
| send_beskedA | Send en besked til husstandens telefoner via jeres Telegram-bot (kun tilkoblede telefoner). Brug den til ugeplanen: spørgsmålet om køleskabet, og planens sms_tekst til godkendelse. Send ikke andet, og ikke flere gange end nødvendigt. Højst 4000 tegn. |
| vis_beskederC | Svar fra husstanden via Telegram (fx hvad der er i køleskabet), nyeste sidst. Markerer dem som læst. "OK UGE-xxxx" står ikke her: dem klarer lytteren selv ved at fylde kurven. |
| gem_madplanA | Gem ugens madplan og den præcise indkøbsliste til godkendelse. Giver en kode (fx UGE-4821)
og en kort |
| vis_madplanA | En gemt madplan med varer, pris, status og sms_tekst. Uden kode: den nyeste. |
| fyld_kurv_fra_madplanA | Læg PRÆCIS varerne fra en godkendt madplan i butikkens kurv. Ændrer kun kurven.
Brug det KUN, når brugeren selv har godkendt: med koden ("OK UGE-4821") eller et kort
"bestil"/"ok"/"ja", når planen er den eneste ventende. |
| leveringstiderB | Ledige leveringstider med pris. Kun til orientering: brugeren vælger selv tiden. |
| tidligere_ordrerB | Tidligere ordrer. Med ordre_id: varerne i den ordre (godt til 'det vi plejer at købe'). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ugeplan | Ugens madplan: køleskab, menu, pris og 'bestil' via Telegram |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
Most tools map to a distinct resource+action (beholdning, profil, madplan, kurv), but the recipe cluster is muddy: hent_opskrift (nemlig recipe products) vs hent_opskrift_fra_link (external sites) vs soeg_opskrifter (nemlig search) vs vis_opskrifter (own collection) differ mainly by data source rather than by name. Similarly vent_paa_svar, vis_beskeder and send_besked all revolve around Telegram replies, and soeg_varer vs sammenlign_liste vs ugens_tilbud all answer 'what does this cost', so an agent must read descriptions carefully to pick correctly.
The dominant pattern is Danish verb_noun in snake_case (vis_beholdning, opdater_profil, gem_opskrift, fjern_opskrift, soeg_varer, send_besked, saet_antal_i_kurv), applied predictably to CRUD pairs. A handful of tools are noun-only (koebsmoenster, leveringstider, tidligere_ordrer, ugens_tilbud, ugeplan_forloeb), which is a minor deviation but still readable and predictable enough.
25 tools sits at the heavy end of the scale; the domain is genuinely broad (pantry, recipes, price comparison, meal plans, cart, Telegram, profile, receipts), so most tools earn their place. Still, several near-duplicates (hent_opskrift vs hent_opskrift_fra_link, vis_beskeder vs vent_paa_svar) suggest the surface could be consolidated to around 18-20 without losing capability.
Coverage is strong: full pantry CRUD, recipe CRUD, profile read/update, meal-plan create/read/fill, cart view/modify/qty-set, price search + offers + delivery slots + past orders, plus the Telegram interaction loop. Gaps are minor and mostly intentional (no checkout/payment by design, no explicit meal-plan delete or cart-clear, recipe search only for nemlig), which agents can work around.