Skip to main content
Glama

ugeplan-mcp

Ugens madplan for hele husstanden, direkte på telefonen. Din AI-assistent laver planen, I retter den i Telegram, og kurven bliver fyldt hos nemlig.com eller BilkaToGo. I betaler selv.

Tests MIT Python 3.12+ MCP

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.

Sådan ser en uge ud

  1. Søndag: I skriver "lav madplan" til jeres AI-assistent. Botten spørger på begge jeres telefoner: "Hvad har I i køleskabet?" I svarer, som det passer jer, også indtalt.

  2. Menu: Assistenten laver en menu ud fra jeres profil, det I har hjemme, ugens tilbud og jeres favoritretter, med et prisskøn mod ugens budget. I retter i Telegram ("ikke fisk tirsdag", "billigere").

  3. Pris: Hele listen prissættes i begge butikker, med levering, poser og minimumskøb. Den billigste vinder, eller begge, hvis det kan betale sig.

  4. "bestil": Kurven bliver fyldt med præcis de godkendte varer. Botten sender ugens menu med links til opskrifterne og fastgør den øverst i chatten. Den sender også den billigste leveringstid, der når første aftensmad, og hvornår I senest skal bestille.

  5. I betaler i butikkens app.

I kan se hinandens svar, og I behøver ikke vente på hinanden.

Eksempel med opdigtede navne og priser. Teksterne er dem, botten sender.

Related MCP server: Israel Grocery MCP

Det, der adskiller den

  • Hele husstanden på Telegram. Flere telefoner, svar ses af alle, gratis og uden AI-udgifter i botten.

  • Den husker jeres hjem. Køleskab, fryser og skab. Køleskabsvarer forsvinder af sig selv efter en uge, og fryservarer bliver brugt, når det passer.

  • Den kender leveringsreglerne. Frister hos nemlig og Bilka, kun hjemlevering. Varer, der kommer senest kl. 17, rækker til samme aften. Aftenerne før levering trækkes fra køleskabet af sig selv.

  • Jeres regler, ikke vores. Budget, økologi, ting I ikke spiser, faste måltider og bestemte varer ("chokolade mindst 85 %") står i jeres egen profil. I ændrer den ved bare at sige det i Telegram ("husk, vi ikke kan lide fennikel").

  • Grundige varevalg. Mængden tæller ("500 g hakket oksekød"), pakker og tilbud regnes ud, og rå varer foretrækkes frem for færdigretter, panerede eller frosne varer.

  • Opskrifter fra danske sider: Valdemarsro, Arla, DR Mad, Madens Verden, HelloFresh, Årstiderne og nemlig.

Brug hele den eller kun dele af den

Det eneste krav er en AI-app, der kan bruge MCP-servere (se Virker med nedenfor). Resten vælger du til.

Det har du

Det får du

Ingen butikskonto

Menu, opskrifter, indkøbsliste og nemligs priser (som gæst). Du handler selv.

nemlig.com eller BilkaToGo

Det hele i den ene butik, inkl. fyldt kurv, levering og købsmønster.

Begge butikker

Prissammenligning og deling mellem butikkerne, når det kan betale sig.

+ Telegram

Hele husstanden svarer fra telefonen. Uden Telegram foregår det i chatten.

+ andre MCP-servere

Fx data fra et sportsur, så maden følger træningen. Bruges, hvis de findes.

Værktøjerne kan også bruges hver for sig uden ugeplanen, fx "hvad koster den her indkøbsliste i nemlig og Bilka?" eller "find en lasagneopskrift og læg varerne i kurven".

Hvad kræver hvad (udstyr)

Intet kører i skyen. Alt kører på din egen maskine, og Telegram-botten svarer kun, mens AI-appen er åben.

Dit udstyr

Det virker

En computer med AI-appen åben, når I laver madplan

Madplan, priser, kurv, opskrifter og profil.

+ Telegram

Husstanden svarer fra telefonen, mens planen laves. Beskeder imellem bliver hentet, når appen er åben igen, hvis de er under et døgn gamle (Telegrams grænse).

+ en maskine, der altid er tændt med appen åben (fx en Mac mini, se docs/MAC.md)

Botten svarer altid, og beholdningen kan opdateres fra telefonen hver dag. Intet går tabt.

+ Garmin-ur og Garmin-delen ([garmin], se docs/GARMIN.md)

Menuen lægges efter jeres træningsmønster, og AI'en kan se søvn, træning og skridt.

+ Garmin-login på maskinen, der altid er tændt

Agil plan efter træning: botten foreslår at bytte retter, når en dag bliver hårdere eller roligere end planlagt. Se nedenfor.

Agil plan efter træning

Med Garmin-data (kun for dem, der har sagt ja i profilen) følger planen den træning, der faktisk sker:

  • Når planen laves, lægges retter rige på protein og energi på de dage, I plejer at træne, inden for jeres kost. Fersk fisk ligger tidligt i ugen, så resten er nem at bytte rundt i.

  • I løbet af ugen tjekker botten hver halve time mellem kl. 6 og 21, uden AI. Bliver dagen hård, og dagens ret ikke passer til det, skriver den fx "Hård dag i dag: byt fredagens nakkekoteletter og dagens shakshuka? Svar ja". Træner I efter aftensmad, gælder forslaget morgendagens ret. Er en planlagt hård dag rolig, foreslår den at gemme den hårde ret.

  • Første "ja" afgør det. Botten bytter retterne og opdaterer den fastgjorte ugemenu. Intet svar inden aftensmad betyder, at intet sker.

  • Fersk fisk flyttes aldrig, og noget, der skal tøs op, flyttes aldrig til i dag. Der kommer højst ét forslag om dagen, og kl. 20 en påmindelse, hvis noget skal op af fryseren til i morgen.

  • I ser kun "hård dag" eller "rolig dag", aldrig tal fra uret.

Opsætning: svar ja til Garmin i ugeplan-mcp opsaet, log ind én gang pr. person med garmin-mcp login --person <navn>, og sig til AI'en, hvem der må bruges, fx "Anna må bruge sine Garmin-data". Detaljer og værktøjer: docs/GARMIN.md. Uden Garmin opfører planen sig som altid.

Beholdningen fra telefonen

Skriv til botten, når noget kommer i huset, også midt i ugen. Botten opdaterer selv beholdningen og svarer med det samme, uden AI:

  • "skudt et rådyr, ligger i fryseren", "har 2 kg kartofler", "tilføj mælk og 10 æg"

  • "fortryd", hvis den forstod det forkert

  • "fjern mælk" kan bruges, men er aldrig nødvendigt. I siger, hvad der er, og AI'en regner selv ud, hvad planen har brugt. Det, den går ud fra, at I har, står under "Tjek, at I har" i menubeskeden.

Mens en madplan er i gang, går beskederne til AI'en i stedet.

Kom i gang

Du skal bruge en AI-app med MCP (se Virker med), uv og Git. Testet på Windows. Mac og Linux burde virke.

1. Kør guiden i en terminal. Den tager dig gennem butikker, Telegram og din AI-app, ét trin ad gangen, og alt kan springes over:

uvx --from git+https://github.com/JuliusTorpLarsenPrivat/ugeplan-mcp@v0.38.0 ugeplan-mcp opsaet

Login gemmes kun i styresystemets nøglering. Til sidst vælger du din AI-app, og guiden viser præcis, hvad du skal sætte ind og hvor.

2. Genstart AI-appen, så den finder serveren.

3. Skriv "lav madplan" til assistenten. Første gang stiller den 4 korte runder spørgsmål om jeres husstand: hvor mange I er og budget, hvad I kan lide og ikke spiser, faste måltider og bestemte varer, og jeres favoritretter. Svarene gemmes i profilen, og bagefter kommer ugens plan.

Profilen kan rumme alt fra "kød altid økologisk" til "chokolade mindst 85 %". Du ændrer den ved bare at sige det, fx "husk, vi ikke kan lide fennikel", eller ved at skrive "gennemgå vores profil". docs/PROFIL.md forklarer felterne, giver gode råd og viser et eksempel på en profil.

Guiden kan køres igen når som helst. ugeplan-mcp status viser, hvad der er sat op.

Virker med

ugeplan-mcp er en almindelig MCP-server, så den er ikke bundet til én AI. Guiden har vejledning til:

App

Status

Claude Desktop

Brugt hver uge. Det er den, forløbet er finpudset med.

Claude Code

Virker. Én kommando: claude mcp add.

Cursor, VS Code (Copilot), Windsurf m.fl.

Bør virke: de starter lokale MCP-servere på samme måde. Ikke testet hver uge.

Apps, der kun kan forbinde over nettet

Brug Over netværket nedenfor. Det kræver, at appen kan sende en adgangsnøgle.

Forløbet er en lang samtale med mange værktøjskald. Jo bedre modellen er til at følge instrukser og bruge værktøjer, jo bedre bliver planen. Prøver du en anden app, så fortæl gerne, hvordan det gik, i et issue.

Værktøjer

Værktøj

Ændrer noget?

Hvad

ugeplan_forloeb

nej

Ugeplanens faste forløb, som assistenten følger

soeg_varer

nej

Pris, enhedspris, tilbud og lager. billigst_foerst=True gennemsøger flere hits og ugens tilbud

ugens_tilbud

nej

Ugens tilbud i én butik

sammenlign_liste

nej

Prissætter en liste i begge butikker med gebyrer og anbefaler den billigste løsning

soeg_opskrifter / hent_opskrift

nej

nemligs opskrifter og varerne til dem

hent_opskrift_fra_link

nej

Opskrift fra Valdemarsro, Arla, DR Mad, Madens Verden, HelloFresh eller Årstiderne

vis_kurv

nej

Kurv, gebyrer og minimumskøb

saet_antal_i_kurv

ja, kun kurven

Sætter antal af en vare

fyld_kurv_fra_madplan

ja, kun kurven

Lægger præcis den godkendte plans varer i kurven

leveringstider

nej

Ledige tider og pris

tidligere_ordrer

nej

Ordrehistorik

koebsmoenster

nej

Basisvarer, favoritter og forbrug ud fra tidligere køb

vis_beholdning / opdater_beholdning

kun lokalt

Det, I har hjemme

vis_profil / opdater_profil

kun lokalt

Personer, budget, præferencer, ting at undgå, faste måltider

vis_opskrifter / gem_opskrift / fjern_opskrift

kun lokalt

Jeres favoritretter

gem_madplan / vis_madplan

kun lokalt

Ugens plan med kode og præcis indkøbsliste

send_besked / vent_paa_svar / vis_beskeder

sender til jeres Telegram

Snakken med husstanden

Sikkerhed og privatliv

  • Login og botnøgle ligger kun i styresystemets nøglering.

  • Profil, beholdning, opskrifter og planer er JSON-filer på din egen computer i %LOCALAPPDATA%\handle-mcp\. De sendes aldrig til butikkerne.

  • 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 AI'en ser dem.

  • Det, AI'en ser, sendes til den AI-udbyder, din app bruger (fx Anthropic, OpenAI eller GitHub), som en del af samtalen.

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

Begrænsninger

  • Uofficiel. Den bruger butikkernes egne hjemmeside-API'er og kan holde op med at virke uden varsel.

  • Ikke tilknyttet nemlig.com, Salling Group eller Anthropic.

  • Kun hjemlevering, ikke afhentning.

  • BilkaToGo kræver login. nemlig kan søges uden, men kurven kræver login.

  • Telegram-botten kører, så længe AI-appen er åben, og planen bliver kun lavet videre, mens AI'en arbejder. Se Hvad kræver hvad ovenfor.

Over netværket (HTTP)

Til en maskine, der altid er tændt, fx en mini-pc. Hver forespørgsel kræver en adgangsnøgle.

ugeplan-mcp http-noegle               # laver nøglen og viser den én gang
ugeplan-mcp http 100.x.y.z 8765       # fx maskinens Tailscale-adresse

Stil den aldrig åbent på internettet. Brug et privat netværk som Tailscale.

Udvikling

uv sync
uv run pytest

Ændringer i logikken bruges med det samme, uden genstart (genindlaes.py). Nye værktøjer og ændringer i server.py kræver en genstart af AI-appen. LÆR.md gennemgår, hvordan det hænger sammen. Bidrag er velkomne: se CONTRIBUTING.md.

Python-pakken hedder internt stadig handle_mcp, og kommandoen handle-mcp virker stadig.

Tak

Inspireret af NJohansen/handle-mcp af Niclas Johansen, som viste, at nemlig og BilkaToGo kan bruges fra en AI-agent. Kendskabet til butikkernes API'er bygger delvist på hans research. Koden er skrevet fra bunden.

Licens

MIT © 2026 Julius Torp Larsen

Available Tools

25 tools
fjern_opskriftB
Destructive

Fjern en ret fra opskriftssamlingen. Spørg brugeren først.

Inputs: navn (required).

fyld_kurv_fra_madplanA
Idempotent

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. godkendelse er brugerens egne ord, ordret. Er det ikke en klar godkendelse ("ja, men uden laks"), sker der intet. En plan kan kun bruges én gang. Er kurven ikke tom, stopper den, medmindre brugeren har sagt, at det er i orden (kurven_maa_have_andet=True). Bestiller og betaler ALDRIG: brugeren vælger selv leveringstid og betaler i butikkens app. Vis bagefter kurven og evt. advarsler.

Inputs: kode (required), godkendelse (required), kurven_maa_have_andet.

gem_madplanA
Destructive

Gem ugens madplan og den præcise indkøbsliste til godkendelse. Giver en kode (fx UGE-4821) og en kort sms_tekst. Ændrer ikke kurven. butik: nemlig, bilka eller begge (så har hver linje "butik"). retter: fx ["Man: Ovnbagt laks med kartofler", "Tir: ..."]. linjer: de varer du har valgt: [{"vare_id": "5026540", "navn": "Hakket grisekød 8-12%", "antal": 2, "pris": 70.0}], hvor antal er antal pakker og pris linjens samlede pris. gebyrer: alle gebyrer i kr. valg: ekstra valg, som madplanens forløb beskriver (fx {"ugebudget_kr": 1286}). Vis planen og sms_tekst for brugeren bagefter.

Inputs: butik (required), linjer (required), retter (required), note, +2 more.

gem_opskriftA
Destructive

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.

Inputs: navn (required), link, note, tags, +2 more.

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.

Inputs: opskrift (required), personer.

koebsmoensterA
Read-only

Hvad husstanden faktisk køber, ud fra gemte kvitteringer (i dag fra Coop/Brugsen): basisvarer med typisk interval og dage siden sidst (snart_tom), favoritter pr. madkategori, hvad pengene går til, øko-andel og forbrug pr. uge. andel_af_indkoeb er hvor stor en del af indkøbene kvitteringerne dækker (se profilens note, fx 0.7), så det samlede budget kan skønnes. Brug det til madplaner (retter med det, de kan lide), til at foreslå basisvarer der snart er tomme, og til at sammenligne ugebudgettet med det faktiske forbrug.

Inputs: andel_af_indkoeb.

leveringstiderB
Read-only

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

Inputs: dage, butik.

opdater_beholdningA
Destructive

Gem hvad I har hjemme. Ændrer kun en lokal liste, aldrig butikkernes kurv. tilfoej: [{"navn": "løg", "maengde": "2 stk", "sted": "køleskab"}]. Findes navnet, rettes det. fjern: navne på varer der er brugt op. erstat_alt=True: listen er hele beholdningen (fx efter et kig i køleskabet), og alt andet slettes. Spørg, hvis det er uklart om noget er brugt op, og vis bagefter den nye beholdning.

Inputs: fjern, tilfoej, erstat_alt.

opdater_profilA
Destructive

Ret husstandens profil. aendringer er kun de felter, der skal ændres, fx {"ugebudget_kr": 1500} eller {"varepraeferencer": [...], "fra_husstanden": []}. De mulige felter står under felter i vis_profil. Lister erstattes helt, så send hele den nye liste. Brug den, når husstanden siger, at noget skal huskes til fremover.

Inputs: aendringer (required).

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.

Inputs: antal (required), butik (required).

sammenlign_listeA
Read-only

Prissæt en indkøbsliste i flere butikker, med gebyrer, og find den billigste. varer er fx ["500 g hakket oksekød", "1 l letmælk", "2 stk løg", "pasta"]. Skriv mængden med, når du kender den: så vælges de pakker, der dækker behovet billigst, i stedet for den laveste kg-pris (som kan være en alt for stor pakke). antal ganger hele linjen (standard 1). oekologisk=True lader økovarer koste op til 50 % mere og stadig blive valgt. Hver linje har op til 4 alternativer. Valget er kun et forslag ud fra pris og ord: GÅ ALTERNATIVERNE IGENNEM og vælg selv ud fra kvalitet (rå vare frem for færdigret, ikke ultraforarbejdet, rigtig vare frem for smagsvariant, profilens præferencer). Usikre linjer skal altid tjekkes, evt. med en bedre søgetekst, før kurven fyldes. anbefaling siger, hvor det samlet er billigst med levering, pakning og minimumskøb: én butik, eller begge, når det kan betale sig. Følg den, medmindre kvaliteten taler imod.

Inputs: varer (required), antal, butikker, oekologisk.

send_beskedA
Idempotent

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.

Inputs: tekst (required).

soeg_opskrifterA
Read-only

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

Inputs: tekst (required), antal.

soeg_varerA
Read-only

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 billigst_foerst=True for at gennemsøge flere hits og ugens tilbud og få de relevante varer på lager sorteret efter det billigste køb. Står der en mængde i teksten ("500 g hakket oksekød"), sorteres efter prisen for at dække den. Brug det, når prisen betyder noget, og prøv flere søgetekster (fx "kyllingebryst øko", "kyllingeinderfilet"), før du vælger.

Inputs: tekst (required), antal, butik, oekologisk, +1 more.

tidligere_ordrerB
Read-only

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

Inputs: antal, butik, ordre_id.

ugens_tilbudC
Read-only

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

Inputs: antal, butik.

ugeplan_forloebA
Idempotent

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.

Inputs: no named parameters.

vent_paa_svarA
Read-only

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).

Inputs: sekunder.

vis_beholdningA
Read-only

Det I har hjemme (køleskab, fryser, skab), som I sidst har fortalt det. noteret er hvornår hver vare sidst blev opdateret: gamle varer kan være brugt eller for gamle. Brug den til madplaner og indkøbslister, så I ikke køber det, I allerede har.

Inputs: no named parameters.

vis_beskederC
Read-only

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.

Inputs: kun_nye.

vis_kurvC
Read-only

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

Inputs: butik.

vis_madplanA
Read-only

En gemt madplan med varer, pris, status og sms_tekst. Uden kode: den nyeste.

Inputs: kode.

vis_opskrifterA
Read-only

Jeres egen opskriftssamling: retter I kender og stoler på. Vælg retter herfra til madplaner, før du foreslår nye. tag fx "hverdag" eller "vegetar", soeg et ord i navn, ingredienser eller note.

Inputs: tag, soeg.

vis_profilA
Read-only

Husstandens profil (personer, ugebudget, præferencer, ønsker til varer og måltider m.m.). felter i svaret forklarer hvert felt. Alle felter gælder. Læs den, før du laver madplan eller indkøbsliste.

Inputs: no named parameters.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 25 tools

    Disambiguation3/5

    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.

    Naming Consistency4/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community 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.
      21
      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
      C
      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
      41
      MIT