albert-heijn-mcp 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -47,6 +47,8 @@ Ask in Dutch, English or any language your assistant speaks:
47
47
 
48
48
  > *"Plan three weeknight dinners around what's on bonus this week."*
49
49
 
50
+ > *"Put everything for the recipes in my AH meal planner on my shopping list."*
51
+
50
52
  **Save money**
51
53
 
52
54
  > *"Which products I usually buy are on bonus this week?"*
@@ -55,11 +57,19 @@ Ask in Dutch, English or any language your assistant speaks:
55
57
 
56
58
  > *"Is next week's bonus out yet? If not, when does it appear?"*
57
59
 
60
+ > *"Which of my personal offers are worth activating this week?"*
61
+
62
+ > *"How many koopzegels do I have, and what are they worth?"*
63
+
58
64
  > *"What's in the 2+1 gratis kaas deal?"*
59
65
 
60
66
  **Shop**
61
67
 
62
- > *"Put the products I've had delivered at least three times back on my list."*
68
+ > *"Put the products I buy most back on my list."*
69
+
70
+ > *"What's this product, and is it on bonus?"* (with a photo of its barcode)
71
+
72
+ > *"What's the cheapest cheese at AH right now?"*
63
73
 
64
74
  > *"Find organic, gluten-free pasta, cheapest first."*
65
75
 
@@ -354,7 +364,7 @@ Tools that return data also return it as [structured output](https://modelcontex
354
364
  |---|---|
355
365
  | `ah_login` | Log in: opens a login window on your computer, or returns AH's login link and completes the login with the code you paste back. |
356
366
  | `ah_logout` | Delete the stored tokens, to switch accounts or reset a session. |
357
- | `ah_get_member_profile` | Name, masked email, and bonus card number (last 4 digits). |
367
+ | `ah_get_member_profile` | Name, masked email, bonus card number (last 4 digits), and your savings: koopzegels (stamps, and what they're worth with interest) and Air Miles. |
358
368
 
359
369
  </details>
360
370
 
@@ -363,8 +373,9 @@ Tools that return data also return it as [structured output](https://modelcontex
363
373
 
364
374
  | Tool | Description |
365
375
  |---|---|
366
- | `ah_search_products` | Search one or more keywords at once; Dutch terms work best. Filter by `bonus=true` or by `filters` (organic, vegan, gluten_free and other diets, allergens and labels), and `sort` by price, what you buy most, or Nutri-Score. |
367
- | `ah_get_products` | Details for one or more products. `include_nutritional_info=true` adds the nutrition table. |
376
+ | `ah_search_products` | Search one or more keywords at once; Dutch terms work best. Filter by `bonus=true` or by `filters` (organic, vegan, gluten_free and other diets, allergens and labels), and `sort` by price, what you buy most, or Nutri-Score. `category_id` limits it to one category, or lists the category on its own. |
377
+ | `ah_get_products` | Details for one or more products, by product ID or by `barcodes` (the number under a barcode). `include_nutritional_info=true` adds the nutrition table. |
378
+ | `ah_get_categories` | AH's product categories and their subcategories, for `category_id` in `ah_search_products`. |
368
379
  | `ah_get_product_alternatives` | Similar products and substitutes AH suggests for a product. |
369
380
  | `ah_get_bonus_offers` | This week's bonus offers, or next week's with `period=next`. `previously_bought=true` limits them to products you bought before (AH's "Eerder gekocht"). Can filter by keyword. |
370
381
  | `ah_get_bonus_group_products` | The individual products behind a group deal such as "2+1 gratis". |
@@ -382,6 +393,7 @@ Tools that return data also return it as [structured output](https://modelcontex
382
393
  |---|---|
383
394
  | `ah_search_recipes` | Search Allerhande recipes; Dutch terms work best. `filters` narrows by diet, course, cuisine, occasion, season or cooking method (e.g. `vegetarian`, `quick`, `italian`), and works without a query too; `sort` orders by relevance, newest or popular. |
384
395
  | `ah_get_recipe` | Ingredients, steps, and nutrition per serving. `servings` scales the ingredients. |
396
+ | `ah_get_meal_plan` | What's planned in the AH app's weekplanner for the next two weeks: recipes, products and notes. |
385
397
  | `ah_add_recipe_to_shopping_list` | Match a recipe's ingredients to products and add them to the list in one step. It prefers products on bonus (`prefer_bonus=false` turns that off); `skip` leaves out what you have, and `dry_run=true` previews the matches. |
386
398
 
387
399
  </details>
@@ -428,7 +440,7 @@ Choosing a delivery or pick-up slot in the AH app moves your shopping list into
428
440
  | `ah_get_order_details` | Products in one order. |
429
441
  | `ah_get_frequent_items` | The products you buy most, counted over your delivery orders and in-store receipts of the last few months (`months`, default 3). `source` limits it to `online` or `in_store`. |
430
442
  | `ah_get_receipts` | Recent in-store receipts (kassabonnen). |
431
- | `ah_get_receipt_details` | Items, discounts and payment for one receipt. |
443
+ | `ah_get_receipt_details` | Items, deposit, discounts, koopzegels bought and payment for one receipt, with its total. |
432
444
 
433
445
  </details>
434
446
 
@@ -436,8 +448,8 @@ Choosing a delivery or pick-up slot in the AH app moves your shopping list into
436
448
 
437
449
  - **Delivery orders can't be started through the API.** `ah_get_delivery_slots` lists the windows, but booking one, which starts the order, happens in the AH app or on ah.nl. While the order is active, AH doesn't serve the shopping list; the tools say so and point to the order tools.
438
450
  - **Ticking off shopping-list items isn't supported:** the API returns no usable item IDs.
439
- - **Bonus Box**, AH's personal weekly deals, is not available: its API is unknown.
440
- - **Limits per call:** at most 99 of a product, 50 items, and 100 characters for a free-text item or list name.
451
+ - **Recipes can't be planned in the meal planner:** `ah_get_meal_plan` reads it, but AH's API refuses to add recipes, so planning happens in the AH app.
452
+ - **Limits per call:** at most 99 of a product, 50 items, 100 characters for a free-text item or list name, and details for 20 products.
441
453
 
442
454
  ## Development
443
455
 
@@ -62,9 +62,15 @@ export function wrapError(message, err) {
62
62
  }
63
63
  /** The errors array of a GraphQL response. */
64
64
  export class GraphQLError extends Error {
65
- constructor(messages) {
65
+ /** Top-level fields the errors belong to, where AH says. */
66
+ fields;
67
+ /** Some error came without a field, so it may belong to any. */
68
+ unattributed;
69
+ constructor(messages, fields = [], unattributed = false) {
66
70
  super(`AH GraphQL error: ${messages.join("; ")}`);
67
71
  this.name = "GraphQLError";
72
+ this.fields = fields;
73
+ this.unattributed = unattributed;
68
74
  }
69
75
  logText() {
70
76
  return "AH GraphQL error";
@@ -131,7 +137,9 @@ export class AhClient {
131
137
  });
132
138
  return {
133
139
  data: res.data ?? undefined,
134
- errors: res.errors?.length ? new GraphQLError(res.errors.map((e) => e.message)) : undefined,
140
+ errors: res.errors?.length
141
+ ? new GraphQLError(res.errors.map((e) => e.message), res.errors.flatMap((e) => (typeof e.path?.[0] === "string" ? [e.path[0]] : [])), res.errors.some((e) => typeof e.path?.[0] !== "string"))
142
+ : undefined,
135
143
  };
136
144
  }
137
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ahapi/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ahapi/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { log } from "../log.js";
1
2
  /** "First Last", as AH shows it. */
2
3
  export function fullName(m) {
3
4
  return `${m.firstName} ${m.lastName}`.trim();
@@ -24,4 +25,43 @@ export async function getMember(c) {
24
25
  function isComplete(a) {
25
26
  return Boolean(a?.street && a.houseNumber && a.postalCode && a.city && a.countryCode);
26
27
  }
28
+ export async function getSavings(c) {
29
+ const query = `query Savings {
30
+ purchaseStampBalance {
31
+ points { totalPoints fullBooklets }
32
+ money { invested { amount } interest { amount } payout { amount } }
33
+ }
34
+ milesBalance { balance errorState }
35
+ }`;
36
+ // One balance failing leaves the other.
37
+ const { data, errors } = await c.graphqlPartial(query);
38
+ if (!data)
39
+ throw errors ?? new Error("AH returned no savings");
40
+ const k = data.purchaseStampBalance;
41
+ const m = data.milesBalance;
42
+ if (errors)
43
+ log.warn("some savings could not be fetched", { err: errors });
44
+ // A balance with an error of its own, at any depth, is unavailable or incomplete; an error AH gives no
45
+ // field for may be any balance's. A null balance without an error: the member just has none.
46
+ const failed = (field) => errors !== undefined && (errors.fields.includes(field) || errors.unattributed);
47
+ const unavailable = [];
48
+ if (failed("purchaseStampBalance"))
49
+ unavailable.push("koopzegels");
50
+ if (failed("milesBalance"))
51
+ unavailable.push("air_miles");
52
+ const koopzegels = {
53
+ stamps: k?.points?.totalPoints ?? undefined,
54
+ fullBooklets: k?.points?.fullBooklets ?? undefined,
55
+ invested: k?.money?.invested?.amount,
56
+ interest: k?.money?.interest?.amount,
57
+ payout: k?.money?.payout?.amount,
58
+ };
59
+ return {
60
+ // Absent, not empty, when AH sent no koopzegel figures at all.
61
+ koopzegels: Object.values(koopzegels).some((v) => v !== undefined) ? koopzegels : undefined,
62
+ // With an error state AH's balance (often 0) isn't the member's real balance.
63
+ airMiles: m ? { balance: m.errorState ? undefined : (m.balance ?? undefined), error: m.errorState ?? undefined } : undefined,
64
+ unavailable,
65
+ };
66
+ }
27
67
  //# sourceMappingURL=member.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/ahapi/member.ts"],"names":[],"mappings":"AAsBA,oCAAoC;AACpC,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,CAAW;IACzC,MAAM,KAAK,GAAG;;;;;;;EAOd,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAOlC,KAAK,CAAC,CAAC;IACV,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;QAC5B,KAAK,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;QAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE;QACvC,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACrC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAA4C;IAC9D,OAAO,OAAO,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/ahapi/member.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { hasStatus } from "./client.js";
1
2
  /**
2
3
  * Regular price, and the bonus price for products on bonus (else 0). Deals like
3
4
  * "2 voor 1.19" have no single bonus price: AH sends the regular price as both.
@@ -62,6 +63,8 @@ export async function searchProducts(c, query, size, opts = {}) {
62
63
  else if (filterBonus)
63
64
  fetch = Math.min(Math.max(size * 4, 40), MAX_PAGE);
64
65
  const params = new URLSearchParams({ query, page: "0", size: String(fetch), sortOn: opts.sort ?? "RELEVANCE" });
66
+ if (opts.categoryId)
67
+ params.set("taxonomyId", String(opts.categoryId));
65
68
  // Several properties go comma-separated, which AH combines with AND.
66
69
  if (properties.length)
67
70
  params.set("filters", `property=${properties.join(",")}`);
@@ -125,4 +128,65 @@ export async function convertPosIds(c, posIds) {
125
128
  });
126
129
  return out;
127
130
  }
131
+ /**
132
+ * The code AH looks a barcode up by: its digits, a 12-digit UPC-A padded to the EAN-13 it is; undefined
133
+ * unless that is an EAN-8, EAN-13 or GTIN-14.
134
+ */
135
+ export function normalizeBarcode(barcode) {
136
+ // Only digits with spaces or dashes between them, as printed: other text ("x2") would change the number.
137
+ if (!/^[\d\s-]+$/.test(barcode.trim()))
138
+ return undefined;
139
+ const digits = barcode.replace(/\D/g, "");
140
+ // A 14-digit GTIN starting with 0 is the EAN-13 behind it: one form, so both share a lookup.
141
+ const code = digits.length === 12 ? `0${digits}` : digits.length === 14 && digits[0] === "0" ? digits.slice(1) : digits;
142
+ return [8, 13, 14].includes(code.length) ? code : undefined;
143
+ }
144
+ /**
145
+ * Whether a normalized barcode's last digit is its GS1 check digit; a digit misread from a photo fails this.
146
+ * 8-digit codes pass unchecked: a UPC-E has a different check digit than an EAN-8 of the same length.
147
+ */
148
+ export function hasValidCheckDigit(code) {
149
+ if (code.length === 8)
150
+ return true;
151
+ const digits = [...code].map(Number);
152
+ const check = digits.pop();
153
+ // From the right: weights 3, 1, 3, 1, ...
154
+ const sum = digits.reverse().reduce((acc, d, i) => acc + d * (i % 2 === 0 ? 3 : 1), 0);
155
+ return (10 - (sum % 10)) % 10 === check;
156
+ }
157
+ /** Webshop id of the product with this barcode (EAN/GTIN), or undefined if AH sells none. Throws on a malformed barcode. */
158
+ export async function productIdByBarcode(c, barcode) {
159
+ const code = normalizeBarcode(barcode);
160
+ if (!code)
161
+ throw new Error(`${barcode} is not a barcode number: barcodes have 8, 12, 13 or 14 digits`);
162
+ if (!hasValidCheckDigit(code))
163
+ throw new Error(`${barcode} is not a valid barcode (its check digit doesn't match): re-read the number`);
164
+ try {
165
+ const p = await c.request(`/mobile-services/product/search/v1/gtin/${code}`);
166
+ return p?.webshopId || undefined;
167
+ }
168
+ catch (err) {
169
+ // AH answers any number it doesn't know with 404.
170
+ if (hasStatus(err, 404))
171
+ return undefined;
172
+ throw err;
173
+ }
174
+ }
175
+ /** Top-level categories, or the subcategories of parentId. */
176
+ export async function getCategories(c, parentId) {
177
+ if (!parentId) {
178
+ const res = await c.request("/mobile-services/v1/product-shelves/categories");
179
+ return (res ?? []).map(({ id, name }) => ({ id, name }));
180
+ }
181
+ try {
182
+ const res = await c.request(`/mobile-services/v1/product-shelves/categories/${parentId}/sub-categories`);
183
+ return (res?.children ?? []).map(({ id, name }) => ({ id, name }));
184
+ }
185
+ catch (err) {
186
+ // A leaf category, or an id that isn't one.
187
+ if (hasStatus(err, 404))
188
+ return [];
189
+ throw err;
190
+ }
191
+ }
128
192
  //# sourceMappingURL=products.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/ahapi/products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/ahapi/products.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,11 @@ export async function getReceipt(c, id) {
16
16
  const query = `query Receipt($id: String!) {
17
17
  posReceiptDetails(id: $id) {
18
18
  id
19
- products { name quantity price { amount } amount { amount } }
19
+ products { name quantity price { amount } amount { amount } deposit { amount } }
20
20
  discounts { name amount { amount } }
21
+ stamps { quantity amount { amount } }
21
22
  payments { method amount { amount } }
23
+ total { amount }
22
24
  }
23
25
  }`;
24
26
  const { posReceiptDetails: d } = await c.graphql(query, { id });
@@ -29,9 +31,14 @@ export async function getReceipt(c, id) {
29
31
  quantity: p.quantity,
30
32
  unitPrice: p.price?.amount,
31
33
  total: p.amount?.amount ?? 0,
34
+ deposit: p.deposit?.amount || undefined,
32
35
  })),
33
36
  discounts: (d.discounts ?? []).map((x) => ({ name: x.name, amount: x.amount?.amount ?? 0 })),
37
+ stamps: d.stamps?.quantity || d.stamps?.amount?.amount
38
+ ? { quantity: d.stamps.quantity ?? 0, amount: d.stamps.amount?.amount ?? 0 }
39
+ : undefined,
34
40
  payments: (d.payments ?? []).map((x) => ({ method: x.method, amount: x.amount?.amount ?? 0 })),
41
+ total: d.total?.amount,
35
42
  };
36
43
  }
37
44
  const RECEIPT_PAGE = 100;
@@ -1 +1 @@
1
- {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/ahapi/receipts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/ahapi/receipts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { log } from "../log.js";
1
2
  const AH_WEB = new URL("https://www.ah.nl/");
2
3
  export function recipeUrl(id, slug) {
3
4
  return new URL(`/allerhande/recept/R-R${id}/${encodeURIComponent(slug)}`, AH_WEB).href;
@@ -13,7 +14,8 @@ function decodeEntities(s) {
13
14
  return s.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (m, e) => {
14
15
  if (e[0] === "#") {
15
16
  const code = e[1] === "x" || e[1] === "X" ? parseInt(e.slice(2), 16) : parseInt(e.slice(1), 10);
16
- return Number.isFinite(code) ? String.fromCodePoint(code) : m;
17
+ // Beyond Unicode, fromCodePoint throws: leave such an entity as written.
18
+ return Number.isFinite(code) && code <= 0x10ffff ? String.fromCodePoint(code) : m;
17
19
  }
18
20
  return named[e.toLowerCase()] ?? m;
19
21
  });
@@ -61,4 +63,63 @@ export async function getRecipe(c, id, servings) {
61
63
  preparation: r.preparation && { steps: r.preparation.steps?.map(decodeEntities) },
62
64
  };
63
65
  }
66
+ /**
67
+ * The planner from today, one entry per day (AH returns two weeks), with what is planned on it.
68
+ * incomplete: AH failed on some days or entries, so the plan may be missing some.
69
+ */
70
+ export async function getMealPlan(c) {
71
+ const query = `query MealPlan {
72
+ recipeWeekPlannerOverview {
73
+ days {
74
+ date
75
+ items {
76
+ __typename
77
+ ... on WeekPlannerRecipeItem { recipeId recipeTitle recipe { slug } }
78
+ ... on WeekPlannerMemberRecipeItem { recipeId recipeTitle }
79
+ ... on WeekPlannerNoteItem { text }
80
+ ... on WeekPlannerProductItem { productId productTitle }
81
+ }
82
+ }
83
+ }
84
+ }`;
85
+ // An entry AH fails to resolve (e.g. an unpublished recipe) comes back null without losing the other days.
86
+ const { data, errors } = await c.graphqlPartial(query);
87
+ const days = data?.recipeWeekPlannerOverview?.days;
88
+ // With errors, no days, or days that all failed, is a failed fetch; an empty list is an empty plan.
89
+ if (!data || (errors && (!days || (days.length > 0 && !days.some(Boolean)))))
90
+ throw errors ?? new Error("AH returned no meal plan");
91
+ if (errors)
92
+ log.warn("some meal plan entries could not be fetched", { err: errors });
93
+ // undefined when AH sent no title.
94
+ const titleOf = (t) => (t ? decodeEntities(t) : undefined);
95
+ const toItem = (i) => {
96
+ if (!i)
97
+ return { kind: "other" };
98
+ switch (i.__typename) {
99
+ case "WeekPlannerRecipeItem":
100
+ if (i.recipeId) {
101
+ return { kind: "recipe", recipeId: i.recipeId, title: titleOf(i.recipeTitle), slug: i.recipe?.slug ?? undefined };
102
+ }
103
+ break;
104
+ case "WeekPlannerMemberRecipeItem":
105
+ if (i.recipeId)
106
+ return { kind: "own_recipe", recipeId: i.recipeId, title: titleOf(i.recipeTitle) };
107
+ break;
108
+ case "WeekPlannerProductItem":
109
+ if (i.productId)
110
+ return { kind: "product", productId: i.productId, title: titleOf(i.productTitle) };
111
+ break;
112
+ case "WeekPlannerNoteItem":
113
+ return { kind: "note", text: decodeEntities(i.text ?? "") };
114
+ }
115
+ // A kind this server doesn't know, or an entry missing its id: shown, not hidden.
116
+ const title = i.recipeTitle ?? i.productTitle ?? i.text;
117
+ return { kind: "other", title: title ? decodeEntities(title) : undefined };
118
+ };
119
+ // No planner yet (never used) is an empty plan; a day AH fails to resolve comes back null and is left out.
120
+ return {
121
+ days: (days ?? []).flatMap((d) => (d ? [{ date: d.date, items: (d.items ?? []).map(toItem) }] : [])),
122
+ incomplete: Boolean(errors),
123
+ };
124
+ }
64
125
  //# sourceMappingURL=recipes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/ahapi/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/ahapi/recipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAsChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAE7C,MAAM,UAAU,SAAS,CAAC,EAAU,EAAE,IAAY;IAChD,OAAO,IAAI,GAAG,CAAC,yBAAyB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,oEAAoE;AACpE,SAAS,cAAc,CAAC,CAAS;IAC/B,MAAM,KAAK,GAA2B,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACtG,OAAO,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE;QACjE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChG,yEAAyE;YACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAwBD,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAW,EAAE,IAAY,EAAE,IAAY,EAAE,IAAyB;IACpG,MAAM,KAAK,GAAG;;;;;;EAMd,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAE7C,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,aAAa,EAAE,IAAI,CAAC,mBAAmB,IAAI,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,CAAW,EAAE,EAAU,EAAE,QAAiB;IACxE,MAAM,KAAK,GAAG;;;;;;;;;;;;EAYd,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAElC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5B,OAAO;QACL,GAAG,CAAC;QACJ,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5B,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;SACjD,CAAC,CAAC;QACH,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE;KAClF,CAAC;AACJ,CAAC;AAWD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAW;IAC3C,MAAM,KAAK,GAAG;;;;;;;;;;;;;EAad,CAAC;IAUD,2GAA2G;IAC3G,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,cAAc,CAE5C,KAAK,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC;IACnD,oGAAoG;IACpG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,MAAM,IAAI,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACpI,IAAI,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,mCAAmC;IACnC,MAAM,OAAO,GAAG,CAAC,CAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,CAAC,CAAiB,EAAe,EAAE;QAChD,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACjC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;gBACpH,CAAC;gBACD,MAAM;YACR,KAAK,6BAA6B;gBAChC,IAAI,CAAC,CAAC,QAAQ;oBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnG,MAAM;YACR,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,CAAC,SAAS;oBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpG,MAAM;YACR,KAAK,qBAAqB;gBACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,kFAAkF;QAClF,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7E,CAAC,CAAC;IACF,2GAA2G;IAC3G,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;KAC5B,CAAC;AACJ,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
- import { fullName, getMember, LOGIN_URL } from "../ahapi/index.js";
2
+ import { fullName, getMember, getSavings, LOGIN_URL } from "../ahapi/index.js";
3
3
  import { openInDefaultBrowser } from "../auth/browser.js";
4
4
  import { extractCode, manualLoginSteps, STALE_LOGIN } from "../auth/login.js";
5
5
  import { log } from "../log.js";
6
- import { addAuthedTool, addTool, structured, text } from "./common.js";
6
+ import { addAuthedTool, addTool, nonFatal, structured, text, withRetry } from "./common.js";
7
7
  export function registerAccountTools(server, ctx) {
8
8
  addTool(server, {
9
9
  name: "ah_login",
@@ -93,16 +93,55 @@ export function registerAccountTools(server, ctx) {
93
93
  name: "ah_get_member_profile",
94
94
  title: "Albert Heijn: Member Profile",
95
95
  kind: "readOnly",
96
- output: { name: z.string(), email: z.string().optional(), bonus_card_number: z.string().optional() },
97
- description: "Get your Albert Heijn member profile. " +
98
- "Returns name, email (masked), and bonus_card_number (last 4 digits only).",
96
+ output: {
97
+ name: z.string(),
98
+ email: z.string().optional(),
99
+ bonus_card_number: z.string().optional(),
100
+ koopzegels: z
101
+ .object({
102
+ stamps: z.number().optional(),
103
+ full_booklets: z.number().optional(),
104
+ invested: z.number().optional(),
105
+ interest: z.number().optional(),
106
+ payout_value: z.number().optional(),
107
+ })
108
+ .optional(),
109
+ air_miles: z.number().optional(),
110
+ air_miles_error: z.string().optional(),
111
+ savings_error: z.string().optional(),
112
+ },
113
+ description: "Get your Albert Heijn member profile and savings. " +
114
+ "Returns name, email (masked), bonus_card_number (last 4 digits only), " +
115
+ "koopzegels (savings stamps: stamps saved, full booklets, euros invested, interest earned, and payout_value " +
116
+ "they are worth now), and the air_miles balance.",
99
117
  }, async (c) => {
100
- const m = await getMember(c);
118
+ const [m, savings] = await Promise.all([
119
+ // Not the member cache: the profile should show changes made in the AH app right away.
120
+ getMember(c),
121
+ // The profile still comes back if the balances can't.
122
+ nonFatal(() => withRetry("ah_get_member_profile", () => getSavings(c)), (err) => {
123
+ log.warn("could not fetch savings", { tool: "ah_get_member_profile", err });
124
+ // The details stay in the log: an AH error can quote a whole response body.
125
+ return { unavailable: ["koopzegels", "air_miles"] };
126
+ }),
127
+ ]);
101
128
  const card = m.bonusCardNumber;
129
+ const k = savings.koopzegels;
102
130
  return structured({
103
131
  name: fullName(m),
104
132
  email: maskEmail(m.email) || undefined,
105
133
  bonus_card_number: card ? (card.length > 4 ? `****${card.slice(-4)}` : card) : undefined,
134
+ koopzegels: k && {
135
+ stamps: k.stamps,
136
+ full_booklets: k.fullBooklets,
137
+ invested: k.invested,
138
+ interest: k.interest,
139
+ payout_value: k.payout,
140
+ },
141
+ air_miles: savings.airMiles?.balance,
142
+ air_miles_error: savings.airMiles?.error,
143
+ // A balance listed here may be missing or incomplete.
144
+ savings_error: savings.unavailable.length ? `could not fully fetch: ${savings.unavailable.join(", ")}` : undefined,
106
145
  });
107
146
  });
108
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/tools/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/tools/account.ts"],"names":[],"mappings":"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"}
@@ -32,12 +32,16 @@ export class TtlCache {
32
32
  }
33
33
  this.#entries.set(key, { value, expiresAt: now + this.#ttlMs });
34
34
  }
35
- /** The cached value, or load()'s result, which is then cached. */
36
- async getOrLoad(key, load) {
35
+ /**
36
+ * The cached value, or load()'s result, which is then cached if keep allows (default: always), e.g. not
37
+ * an empty list that may be a hiccup.
38
+ */
39
+ async getOrLoad(key, load, keep = () => true) {
37
40
  if (this.has(key))
38
41
  return this.get(key);
39
42
  const value = await load();
40
- this.set(key, value);
43
+ if (keep(value))
44
+ this.set(key, value);
41
45
  return value;
42
46
  }
43
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tools/cache.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,wCAAwC;AACxC,MAAM,OAAO,QAAQ;IACV,MAAM,CAAS;IACxB,0FAA0F;IACjF,QAAQ,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEvE,YAAY,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,+EAA+E;IAC/E,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW;gBAAE,MAAM;YAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAsB;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tools/cache.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,wCAAwC;AACxC,MAAM,OAAO,QAAQ;IACV,MAAM,CAAS;IACxB,0FAA0F;IACjF,QAAQ,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEvE,YAAY,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,+EAA+E;IAC/E,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW;gBAAE,MAAM;YAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAsB,EAAE,IAAI,GAA0B,GAAG,EAAE,CAAC,IAAI;QAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -26,8 +26,10 @@ export function newToolContext(session, { remote, hosted }) {
26
26
  searches: new TtlCache(5 * 60_000),
27
27
  products: new TtlCache(10 * 60_000),
28
28
  nutrition: new TtlCache(60 * 60_000),
29
+ barcodes: new TtlCache(60 * 60_000),
29
30
  bonuses: new TtlCache(10 * 60_000),
30
31
  bonusPeriods: new TtlCache(10 * 60_000),
32
+ categories: new TtlCache(60 * 60_000),
31
33
  members: new TtlCache(30 * 60_000),
32
34
  };
33
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { getNutrition, getProduct, getProductAlternatives, searchProducts, } from "../ahapi/index.js";
2
+ import { getNutrition, getProduct, getCategories, getProductAlternatives, hasValidCheckDigit, normalizeBarcode, productIdByBarcode, searchProducts, } from "../ahapi/index.js";
3
3
  import { addAuthedTool, nonFatal, orDefault, parallel, structured, withRetry } from "./common.js";
4
4
  import { detailProduct, productDetail, productSummary, summarizeProduct } from "./views.js";
5
5
  const MAX_QUERIES = 10;
@@ -52,10 +52,13 @@ export function registerProductTools(server, ctx) {
52
52
  "or free from an allergen (gluten_free, lactose_free, milk_free, egg_free, nut_free, peanut_free, soy_free, " +
53
53
  "fish_free, shellfish_free, sesame_free, celery_free, mustard_free, lupin_free, sulphite_free). " +
54
54
  "sort orders results: relevance (default), price_low_high, price_high_low, most_bought (by this user), nutriscore. " +
55
+ "category_id (from ah_get_categories) limits results to one category; with category_id, queries may be left " +
56
+ "out to list the category itself, e.g. the cheapest products in it. " +
55
57
  "Returns, per query: id, title, price, bonus_price, unit, is_bonus, bonus_mechanism, image_url.",
56
58
  input: {
57
59
  queries: z
58
60
  .array(z.string())
61
+ .optional()
59
62
  .describe('Search queries in Dutch or English, e.g. ["melk"] or ["melk", "kaas", "brood"] (max 10)'),
60
63
  limit: z
61
64
  .number()
@@ -71,14 +74,18 @@ export function registerProductTools(server, ctx) {
71
74
  .enum(Object.keys(SORTS))
72
75
  .optional()
73
76
  .describe("Result order (default relevance)"),
77
+ category_id: z.number().int().positive().optional().describe("Only products in this category, from ah_get_categories"),
74
78
  },
75
79
  output: {
76
80
  searches: z.array(z.object({ query: z.string(), results: z.array(productSummary), error: z.string().optional() })),
77
81
  },
78
- }, async (c, { queries, limit, bonus, filters, sort }) => {
79
- const qs = queries.filter(Boolean).slice(0, MAX_QUERIES);
82
+ }, async (c, { queries, limit, bonus, filters, sort, category_id }) => {
83
+ let qs = (queries ?? []).map((q) => q.trim()).filter(Boolean).slice(0, MAX_QUERIES);
84
+ // A category alone lists the category: one search with no words.
85
+ if (qs.length === 0 && category_id)
86
+ qs = [""];
80
87
  if (qs.length === 0)
81
- throw new Error("provide at least one search query");
88
+ throw new Error("provide at least one search query, or a category_id");
82
89
  const perQuery = Math.min(orDefault(limit, qs.length > 1 ? 5 : 10), 30);
83
90
  const results = qs.map((query) => ({
84
91
  query,
@@ -89,6 +96,7 @@ export function registerProductTools(server, ctx) {
89
96
  bonus: Boolean(bonus),
90
97
  properties: [...new Set(filters ?? [])].map((f) => FILTERS[f]).sort(),
91
98
  sort: SORTS[sort ?? "relevance"],
99
+ categoryId: category_id,
92
100
  };
93
101
  await parallel(qs.length, 3, async (i) => {
94
102
  const r = results[i];
@@ -107,31 +115,112 @@ export function registerProductTools(server, ctx) {
107
115
  description: "Get detailed information about one or more Albert Heijn products by ID (max 20). " +
108
116
  "Returns title, brand, category, description, price, unit size, bonus info, NutriScore, property icons. " +
109
117
  "Set include_nutritional_info=true to also return calories, fat, protein, etc. " +
110
- "Get product IDs from ah_search_products.",
118
+ "Get product IDs from ah_search_products, or pass barcodes: the EAN number under a product's barcode " +
119
+ "(8, 12, 13 or 14 digits, e.g. read from a photo of the pack). A barcode AH doesn't sell returns an error for it.",
111
120
  input: {
112
121
  product_ids: z
113
122
  .array(z.number().int())
114
- .describe("Product IDs from ah_search_products, e.g. [123456] or [123456, 789012] (max 20)"),
123
+ .max(50)
124
+ .optional()
125
+ .describe("Product IDs from ah_search_products, e.g. [123456] or [123456, 789012]; at most 20 products are fetched per call (max 50 ids)"),
126
+ barcodes: z
127
+ .array(z.string())
128
+ .max(50)
129
+ .optional()
130
+ .describe('Barcode (EAN) numbers, e.g. ["8710400058519"]; counted in the max of 20 products (max 50 barcodes)'),
115
131
  include_nutritional_info: z.boolean().optional().describe("Include nutritional values (default false)"),
116
132
  },
117
133
  output: {
118
- products: z.array(z.union([productDetail, z.object({ id: z.number(), error: z.string() })])),
134
+ products: z.array(z.union([
135
+ productDetail.extend({ barcode: z.string().optional() }),
136
+ z.object({ id: z.number().optional(), barcode: z.string().optional(), error: z.string() }),
137
+ ])),
119
138
  },
120
- }, async (c, { product_ids, include_nutritional_info }) => {
121
- const ids = product_ids.filter((id) => id > 0).slice(0, MAX_PRODUCT_IDS);
122
- if (ids.length === 0)
123
- throw new Error("provide at least one product ID");
124
- const results = new Array(ids.length);
125
- await parallel(ids.length, 5, async (i) => {
126
- const id = ids[i];
139
+ }, async (c, { product_ids, barcodes, include_nutritional_info }) => {
140
+ const skipped = `not fetched: at most ${MAX_PRODUCT_IDS} products per call`;
141
+ // 1. Barcodes to product ids, each barcode number once; cached, as a barcode's product never changes.
142
+ // Only the first MAX_PRODUCT_IDS valid barcodes are looked up.
143
+ // First scan of each barcode number, to answer repeats.
144
+ const firstScan = new Map();
145
+ let lookups = 0;
146
+ const scans = (barcodes ?? []).map((barcode) => {
147
+ const code = normalizeBarcode(barcode);
148
+ const repeat = Boolean(code) && firstScan.has(code);
149
+ // Only barcodes that will reach AH count toward the lookups.
150
+ const skip = Boolean(code) && hasValidCheckDigit(code) && !repeat && ++lookups > MAX_PRODUCT_IDS;
151
+ const scan = { barcode, code, skip, repeat, id: undefined, error: undefined };
152
+ if (code && !repeat)
153
+ firstScan.set(code, scan);
154
+ return scan;
155
+ });
156
+ await parallel(scans.length, 5, async (i) => {
157
+ const s = scans[i];
158
+ if (s.skip || s.repeat)
159
+ return;
160
+ await nonFatal(async () => {
161
+ // productIdByBarcode rejects a malformed barcode itself.
162
+ const lookup = () => withRetry("ah_get_products", () => productIdByBarcode(c, s.barcode));
163
+ // "Not sold" isn't kept: AH may list the product later.
164
+ const code = s.code;
165
+ s.id = code ? ctx.barcodes.get(code) : undefined;
166
+ if (s.id === undefined) {
167
+ s.id = await lookup();
168
+ if (code && s.id !== undefined)
169
+ ctx.barcodes.set(code, s.id);
170
+ }
171
+ if (!s.id)
172
+ s.error = `Albert Heijn sells no product with barcode ${s.barcode}`;
173
+ }, (err) => {
174
+ s.error = err.message;
175
+ });
176
+ });
177
+ // 2. One entry per product, barcodes first: a product_id a barcode already found is not fetched again.
178
+ const results = [];
179
+ const wanted = [];
180
+ const seenIds = new Set();
181
+ const skippedIds = new Set();
182
+ const add = (id, barcode) => {
183
+ if (seenIds.has(id)) {
184
+ // A repeat gets its own entry, so every barcode and id asked for is answered.
185
+ results.push({ id, barcode, error: skippedIds.has(id) ? skipped : "same product as an earlier entry; see that entry" });
186
+ return;
187
+ }
188
+ seenIds.add(id);
189
+ if (wanted.length >= MAX_PRODUCT_IDS) {
190
+ skippedIds.add(id);
191
+ results.push({ id, barcode, error: skipped });
192
+ return;
193
+ }
194
+ wanted.push({ id, barcode, at: results.length });
195
+ results.push({ id, barcode, error: "" });
196
+ };
197
+ for (const s of scans) {
198
+ if (s.repeat) {
199
+ results.push({ barcode: s.barcode, error: firstScan.get(s.code).skip ? skipped : "same barcode as an earlier entry; see that entry" });
200
+ }
201
+ else if (s.skip)
202
+ results.push({ barcode: s.barcode, error: skipped });
203
+ else if (s.id)
204
+ add(s.id, s.barcode);
205
+ else
206
+ results.push({ barcode: s.barcode, error: s.error });
207
+ }
208
+ for (const id of product_ids ?? [])
209
+ if (id > 0)
210
+ add(id);
211
+ if (results.length === 0)
212
+ throw new Error("provide at least one product ID or barcode");
213
+ // 3. Product details.
214
+ await parallel(wanted.length, 5, async (i) => {
215
+ const { id, barcode, at } = wanted[i];
127
216
  const key = String(id);
128
- results[i] = await nonFatal(async () => {
217
+ results[at] = await nonFatal(async () => {
129
218
  const p = await ctx.products.getOrLoad(key, () => withRetry("ah_get_products", () => getProduct(c, id)));
130
219
  const nutrition = include_nutritional_info
131
220
  ? await ctx.nutrition.getOrLoad(key, () => withRetry("ah_get_products", () => getNutrition(c, id)))
132
221
  : undefined;
133
- return detailProduct(p, nutrition);
134
- }, (err) => ({ id, error: err.message }));
222
+ return { ...detailProduct(p, nutrition), barcode };
223
+ }, (err) => ({ id, barcode, error: err.message }));
135
224
  });
136
225
  return structured({ products: results });
137
226
  });
@@ -155,6 +244,30 @@ export function registerProductTools(server, ctx) {
155
244
  const message = alternatives.length ? undefined : `AH suggests no alternatives for product ${args.product_id}.`;
156
245
  return structured({ products: alternatives.map(summarizeProduct) }, message);
157
246
  });
247
+ addAuthedTool(server, ctx, {
248
+ name: "ah_get_categories",
249
+ title: "Albert Heijn: Product Categories",
250
+ kind: "readOnly",
251
+ description: "List Albert Heijn's product categories (the aisles of ah.nl), e.g. 'Groente, aardappelen' or 'Kaas'. " +
252
+ "Without parent_id returns the top-level categories; with a parent_id, its subcategories. " +
253
+ "Pass a category id as category_id to ah_search_products to search or list products in it.",
254
+ input: {
255
+ parent_id: z.number().int().positive().optional().describe("Category id whose subcategories to list"),
256
+ },
257
+ output: { categories: z.array(z.object({ id: z.number(), name: z.string() })) },
258
+ }, async (c, { parent_id }) => {
259
+ const categories = await ctx.categories.getOrLoad(String(parent_id ?? ""), () => withRetry("ah_get_categories", () => getCategories(c, parent_id)),
260
+ // Not kept when empty: at the top level that's likely a hiccup at AH, and for a parent_id AH answers a
261
+ // leaf and a wrong id alike.
262
+ (list) => list.length > 0);
263
+ let message;
264
+ if (!categories.length) {
265
+ message = parent_id
266
+ ? `Category ${parent_id} has no subcategories (or is not a category id).`
267
+ : "AH returned no product categories.";
268
+ }
269
+ return structured({ categories }, message);
270
+ });
158
271
  }
159
272
  /** Cached, retried product search. */
160
273
  export function search(ctx, c, query, limit, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
@@ -23,13 +23,21 @@ export function registerReceiptTools(server, ctx) {
23
23
  kind: "readOnly",
24
24
  output: {
25
25
  id: z.string(),
26
- items: z.array(z.object({ name: z.string(), quantity: z.number().optional(), unit_price: z.number().optional(), total: z.number() })),
26
+ items: z.array(z.object({
27
+ name: z.string(),
28
+ quantity: z.number().optional(),
29
+ unit_price: z.number().optional(),
30
+ total: z.number(),
31
+ deposit: z.number().optional(),
32
+ })),
27
33
  discounts: z.array(z.object({ name: z.string(), amount: z.number() })).optional(),
34
+ koopzegels: z.object({ quantity: z.number(), amount: z.number() }).optional(),
28
35
  payments: z.array(z.object({ method: z.string(), amount: z.number() })).optional(),
36
+ total_amount: z.number().optional(),
29
37
  },
30
38
  description: "Get full details of a single Albert Heijn in-store receipt (kassabon) by its id. " +
31
- "Returns all purchased items with name, quantity, unit price and line total, " +
32
- "plus any discounts and payment method. " +
39
+ "Returns all purchased items with name, quantity, unit price, line total and deposit (statiegeld), " +
40
+ "plus any discounts, koopzegels (savings stamps) bought, payment method and total_amount. " +
33
41
  "Get the id from ah_get_receipts first.",
34
42
  input: { id: z.string().describe("Receipt transaction ID from ah_get_receipts") },
35
43
  }, async (c, { id }) => {
@@ -43,9 +51,12 @@ export function registerReceiptTools(server, ctx) {
43
51
  quantity: it.quantity || undefined,
44
52
  unit_price: it.unitPrice || undefined,
45
53
  total: it.total,
54
+ deposit: it.deposit,
46
55
  })),
47
56
  discounts: r.discounts.length ? r.discounts : undefined,
57
+ koopzegels: r.stamps,
48
58
  payments: r.payments.length ? r.payments : undefined,
59
+ total_amount: r.total,
49
60
  });
50
61
  });
51
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/tools/receipts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/tools/receipts.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { z } from "zod";
2
- import { addProductsToShoppingList, ahPageUrl, getRecipe, recipeUrl, searchRecipes, } from "../ahapi/index.js";
2
+ import { addProductsToShoppingList, ahPageUrl, getMealPlan, getRecipe, productUrl, recipeUrl, searchRecipes, } from "../ahapi/index.js";
3
3
  import { addAuthedTool, nonFatal, orDefault, parallel, structured, wrapError } from "./common.js";
4
4
  import { search } from "./products.js";
5
5
  import { listCall } from "./shoppingList.js";
6
6
  import { productSummary, summarizeProduct } from "./views.js";
7
+ /** Title of a planner entry AH sent without one. */
8
+ const UNTITLED = "(untitled; see the AH app)";
7
9
  const num = z.number().optional();
8
10
  const str = z.string().optional();
9
11
  const strs = z.array(z.string()).optional();
@@ -375,6 +377,61 @@ export function registerRecipeTools(server, ctx) {
375
377
  dry_run: Boolean(args.dry_run),
376
378
  });
377
379
  });
380
+ addAuthedTool(server, ctx, {
381
+ name: "ah_get_meal_plan",
382
+ title: "Albert Heijn: Meal Plan",
383
+ kind: "readOnly",
384
+ description: "Get the user's meal plan from the Albert Heijn app's weekplanner, per day from today (about two weeks): " +
385
+ "planned Allerhande recipes, their own recipes, products and notes. " +
386
+ "Use the recipe_id of a planned Allerhande recipe with ah_get_recipe or ah_add_recipe_to_shopping_list, " +
387
+ "e.g. to shop for the week's dinners; the user's own recipes (own_recipe_id) can't be opened with those tools. " +
388
+ "incomplete=true means AH failed on some days or entries, so some may be missing or shown as type other. Planning recipes is done in the AH app.",
389
+ input: {
390
+ include_empty_days: z.boolean().optional().describe("Also list days with nothing planned (default false)"),
391
+ },
392
+ output: {
393
+ incomplete: z.boolean().optional(),
394
+ days: z.array(z.object({
395
+ date: z.string(),
396
+ items: z.array(z.object({
397
+ type: z.enum(["recipe", "own_recipe", "product", "note", "other"]),
398
+ title: z.string(),
399
+ recipe_id: z.number().optional(),
400
+ own_recipe_id: z.number().optional(),
401
+ product_id: z.number().optional(),
402
+ url: z.string().optional(),
403
+ })),
404
+ })),
405
+ },
406
+ }, async (c, args) => {
407
+ const { days: plan, incomplete } = await getMealPlan(c);
408
+ const days = plan
409
+ .filter((d) => args.include_empty_days || d.items.length > 0)
410
+ .map((d) => ({
411
+ date: d.date,
412
+ items: d.items.map((i) => {
413
+ switch (i.kind) {
414
+ case "recipe":
415
+ return { type: i.kind, title: i.title ?? UNTITLED, recipe_id: i.recipeId, url: i.slug ? recipeUrl(i.recipeId, i.slug) : undefined };
416
+ case "own_recipe":
417
+ return { type: i.kind, title: i.title ?? UNTITLED, own_recipe_id: i.recipeId };
418
+ case "product":
419
+ // Without a title there's no slug; the id alone still finds the product.
420
+ return { type: i.kind, title: i.title ?? UNTITLED, product_id: i.productId, url: productUrl(i.productId, i.title) };
421
+ case "note":
422
+ return { type: i.kind, title: i.text || "(empty note)" };
423
+ case "other":
424
+ return { type: i.kind, title: i.title ?? "an entry this server can't show; see the AH app" };
425
+ }
426
+ }),
427
+ }));
428
+ const range = plan.length ? ` from ${plan[0].date} to ${plan.at(-1).date}` : "";
429
+ return structured({ days, incomplete: incomplete || undefined }, plan.some((d) => d.items.length)
430
+ ? undefined
431
+ : incomplete
432
+ ? "Some of the meal plan could not be loaded from AH, and the rest is empty; check the AH app."
433
+ : `The meal plan is empty${range}. Recipes are planned in the AH app.`);
434
+ });
378
435
  }
379
436
  function rating(r) {
380
437
  return r?.average && r.count ? `${r.average.toFixed(1)}/5 (${r.count})` : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/tools/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/tools/recipes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albert-heijn-mcp",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Unofficial MCP server for Albert Heijn: products, bonus deals, Allerhande recipes, your shopping list and orders in any AI assistant",
5
5
  "keywords": [
6
6
  "mcp",
@@ -43,7 +43,7 @@
43
43
  "start": "node dist/index.js"
44
44
  },
45
45
  "dependencies": {
46
- "@modelcontextprotocol/sdk": "^1.32.1",
46
+ "@modelcontextprotocol/sdk": "^1.32.2",
47
47
  "zod": "^4.6.7"
48
48
  },
49
49
  "devDependencies": {