{"id":5989,"date":"2026-06-25T15:38:00","date_gmt":"2026-06-25T13:38:00","guid":{"rendered":"https:\/\/engel-wolf.com\/?p=5989"},"modified":"2026-11-08T21:56:51","modified_gmt":"2026-11-08T19:56:51","slug":"grocery-shopping-mcp","status":"publish","type":"post","link":"https:\/\/engel-wolf.com\/?p=5989","title":{"rendered":"Weekly grocery shopping in 20 minutes: Claude, two MCPs and a household skill"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I do my entire weekly grocery shopping in 20 minutes, standing in front of my fridge, talking to Claude. It sounds like magic. Here is what is behind it: two MCP servers, a small OAuth proxy, an ngrok tunnel, one skill file with our household rules, and a fair amount of debugging.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"1284\" src=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call.jpg\" class=\"wp-image-5985 sew-ai\" alt=\"Comic of a man with glasses leaning on an open fridge, talking into his phone\" srcset=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call.jpg 1280w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-300x300.jpg 300w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-1021x1024.jpg 1021w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-150x150.jpg 150w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-768x770.jpg 768w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-100x100.jpg 100w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-299x300.jpg 299w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-01-grocery-fridge-call-120x120.jpg 120w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption>The planning meeting. Attendees: me, the fridge, Claude.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Before<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m a dad of two in Munich. A week needs a meal plan, mostly dinners for three to four people. Our plan lives in a Microsoft To Do list called &#8222;Supermarkt&#8220;: one task per dish, prefixed with the weekday, ticked off when it&#8217;s eaten. That list goes back years, thousands of entries. Groceries come from Knuspr, the German brand of the Czech delivery service Rohlik. The annoying part was the translation in between: from &#8222;Daal on Friday&#8220; to lentils (we have), coconut milk (probably), coriander (no), and then searching each item in the app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The setup: two MCPs and a proxy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I did not write either MCP server. Both are open source: <code>rohlik-mcp<\/code> by Tom\u00e1\u0161 Pavl\u00edn (search products, cart, order history, frequent items, delivery slots) and <code>microsoft-todo-mcp-server<\/code> by Jordan Burke. My first prompt was simply:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nI wanna use the knuspr mcp that is available on Github. Can you set this up running on this computer, place a proper AUTH in front such that I can use this with claude website &quot;integrations&quot; such that in runs in all my claudes. Use ngrok with token &lt;ngrok-token&gt; to make my local mcp accessible. Would that work?  here is the repo: https:\/\/github.com\/tomaspavlin\/rohlik-mcp\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">&#8222;In all my claudes&#8220; was the point: I wanted it on the phone app, not only in a terminal. Remote connectors on claude.ai need OAuth, and both servers only speak stdio. So Claude wrote a small Express gateway that spawns one MCP process per session, exposes it over SSE and puts a minimal OAuth 2.0 server in front (discovery document, authorize page, token endpoint, PKCE). The first attempt answered claude.ai&#8217;s login redirect with &#8222;Cannot GET \/authorize&#8220;, which is how I learned what claude.ai expects. Then I asked for the second server:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nok. you need proper proxying for the todo. The standard proxy runs on 3000 and projects sse to knuspr. But todo must go to \/todo\/sse route i guess\n\nand of course we need authorization again\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The result is one port, two routes, one OAuth client. These are the relevant lines of the gateway:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ OAuth discovery so claude.ai can log in\napp.get(&#039;\/.well-known\/oauth-authorization-server&#039;, ...);\napp.get(&#039;\/authorize&#039;, ...);          \/\/ tiny approve page, checks client_id + PKCE\napp.post(&#039;\/oauth\/token&#039;, ...);\n\n\/\/ Knuspr \/ Rohlik: spawns rohlik-mcp\/dist\/index.js per session\napp.get(&#039;\/sse&#039;,      requireAuth, makeSSEHandler(rohlikSessions, spawnRohlik, &#039;\/message&#039;));\napp.post(&#039;\/message&#039;, requireAuth, makeMessageHandler(rohlikSessions));\n\n\/\/ Microsoft To Do: spawns microsoft-todo-mcp-server\/dist\/cli.js per session\napp.get(&#039;\/todo\/sse&#039;,      requireAuth, makeSSEHandler(todoSessions, spawnTodo, &#039;\/todo\/message&#039;));\napp.post(&#039;\/todo\/message&#039;, requireAuth, makeMessageHandler(todoSessions));\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">A <code>start.sh<\/code> loads the credentials from a local <code>.env<\/code>, starts the gateway, starts ngrok and prints the two connector URLs to paste into claude.ai under Settings, Integrations: <code>https:\/\/&lt;tunnel&gt;\/sse<\/code> for Knuspr and <code>https:\/\/&lt;tunnel&gt;\/todo\/sse<\/code> for To Do, both with the same OAuth client ID and secret.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The To Do side needs an app registration in Azure, which works with a private Microsoft account. That took two evenings: an invalid redirect URI (the local auth helper listens on its own port and the callback must match exactly), a login error as soon as I picked &#8222;personal account&#8220;, and a bundled server that crashed with <code>Dynamic require of \"fs\" is not supported<\/code> under Node 25. Claude fixed each one, but only because I pasted the exact error every time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Months later I found the shortcut for the desktop. In Claude Code you don&#8217;t need any of the proxy, because stdio servers can be registered directly:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nHi, in this repo there are two MCPs running locally which both now require auth for integration in claude (you). But can&#039;t you use there outputs right in the console here if you spin them up yourself? Or spin them up in non-auth mode?\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# Knuspr \/ Rohlik (credentials are your Knuspr login)\nclaude mcp add rohlik -s local \\\n  -e ROHLIK_USERNAME=&lt;email&gt; -e ROHLIK_PASSWORD=&lt;password&gt; \\\n  -e ROHLIK_BASE_URL=https:\/\/www.knuspr.de \\\n  -- node \/path\/to\/rohlik-mcp\/dist\/index.js\n\n# Microsoft To Do (tokens.json comes from the one-time OAuth login)\nclaude mcp add mstodo -s local \\\n  -e MSTODO_TOKEN_FILE=\/path\/to\/tokens.json \\\n  -- node \/path\/to\/microsoft-todo-mcp-server\/dist\/cli.js\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">So today: the phone goes through the tunnel, the laptop talks to the servers directly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1382\" height=\"1600\" src=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today.jpg\" class=\"wp-image-5986\" alt=\"Diagram: the phone reaches the MCP servers via tunnel and gateway, Claude Code on the laptop talks to them directly over stdio\" srcset=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today.jpg 1382w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today-259x300.jpg 259w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today-884x1024.jpg 884w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today-768x889.jpg 768w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-mcp-today-1327x1536.jpg 1327w\" sizes=\"auto, (max-width: 1382px) 100vw, 1382px\" \/><figcaption>Two ways in: the phone through tunnel and gateway, the laptop straight over stdio.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The skill: our household in one file<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The MCPs give Claude hands. What makes the output useful is a skill called <code>wocheneinkauf-pruefen<\/code> (&#8222;check the weekly shop&#8220;), which grew over months of corrections. It contains:<br><br><br>* the household size<br>* what is always in stock and never goes on a list (olive oil, spices, canned tomatoes, pasta, tahini)<br>* a stock table from &#8222;low&#8220; to &#8222;very high&#8220;<br>* rules for checking against what we have<br>* product IDs of our regulars or favorites<br>* brand preferences<br>* a fixed output format; and a list of known friction points.<br><br>The rules section, translated:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n- Stock check: only the current cart or the last 3 Knuspr orders can be used\n  to judge the plan. Only count long-life food (cheese, eggs, tins) from more\n  than one order back - not lettuce, fresh berries, avocado.\n- Product lookup: use get_frequent_items to see which products we buy.\n- Bread is always bought fresh at the bakery -&gt; put it on the list anyway,\n  marked &quot;bakery&quot;.\n- Every salad and every sandwich needs bread.\n- Items ordered in the last 3 days or already in the cart -&gt; NOT on the list.\n- Merge identical ingredients across dishes (not 3x garlic).\n&#x5B;\u2026]\nKnown friction points:\n- TODO MCP goes offline periodically (ngrok tunnel) -&gt; silent fail, not an\n  auth problem. Ask Sebastian to restart the server.\n- Knuspr rate limiting on get_order_detail: start with the newest order.\n- Cart duplicates: always call get_cart_content before add_to_cart.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">None of this was designed upfront. It is what you get when you correct the same thing twice (&#8222;no, the sugo is here, the mozzarella too&#8220;) and then write it down.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">My favourite part: the finance check<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every answer ends with a \ud83d\udcb0 finance check. The basis: Claude analysed eleven Knuspr orders from May and sorted every product we buy into three tiers, by price per kilo and by &#8222;supply or treat&#8220;: <strong>sensible<\/strong>, <strong>OK<\/strong>, <strong>luxury<\/strong>. Bananas at 1.95 \u20ac\/kg are sensible. Cheese turned out to be 39 % of everything we spent in the fridge section, with a small French soft cheese at 56.90 \u20ac\/kg on top. The skill gets a format, thresholds and one tone rule (translated):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n## \ud83d\udcb0 Finance check\n- Sensible \u2705: X items  |  OK \ud83d\udfe1: Y items  |  Luxury \ud83d\udd34: Z items (\u2248 N \u20ac)\n- &#x5B;concrete observation if something stands out]\n- &#x5B;alternative if relevant]\n\nName things only if: luxury &gt; 25 % of the items, OR luxury total &gt; 15 \u20ac,\nOR \u2265 2 products from the same luxury group (e.g. 2x premium cheese).\nIf everything is sensible\/OK -&gt; one positive line (&quot;solid, no luxury&quot;), done.\n\nDo not moralise - Sebastian knows what he buys. Only concrete facts\n(\u20ac\/kg, number of premium items, alternative product ID).\nActively flag deviations from memory: salmon brand != Fjoru, eggs above plan.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">And this is what a real one looked like on an evening in October (translated):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n## \ud83d\udcb0 Finance check\n- Luxury \ud83d\udd34: salmon Fish?Fresh x2 (11.06 \u20ac, + wrong brand) \u00b7 Picandou (4.79 \u20ac)\n  \u00b7 bakery bread (8.18 \u20ac). Cheese variety: Picandou, cheddar, grated mozzarella,\n  Grana, cream cheese.\n- Cost drivers are salmon and bread; the salmon is also the wrong brand.\n\nShall I (1) swap the salmon for Fjoru, (2) add fresh mozzarella,\n(3) burger mince and (4) a second bag of flour? Then the week is complete.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">It has never stopped us from buying the good cheese. But once a week a robot tells me in two lines what the good cheese costs, and who put the wrong salmon in the cart. That is exactly the amount of financial advice I want from my groceries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The prompts of a normal week<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Most of my weekly prompts are German and dictated; I translated them here. Three kinds of weeks, three kinds of prompts.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. There already is a plan<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nThere already is a plan, 3 recipes are in TODO, shop for those. In addition we need buttermilk for pancakes\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Claude read the three dishes from To Do, took the last deliveries as a baseline and put ten items in the cart. Then I pasted a link to a fig and goat&#8217;s cheese quiche. The site blocked it, so Claude rebuilt the ingredients from an equivalent recipe and added only what was missing. Ten minutes later I switched to a tarte flamb\u00e9e. Claude swapped the cream for cr\u00e8me fra\u00eeche and bases, ran the finance check (&#8222;solid, no luxury&#8220;) and asked for a delivery slot.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. It is sunny outside<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nHey, it is sunny outside, propose sunny recipes, I choose 5 and we map them to the weekdays according to amount of work for the recipe and the people in the household\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">A summer week at the end of August went like this. Before proposing anything, Claude pulled our whole To Do history: 4,074 ticked-off supermarket items back to 2017. So the summer proposals were dishes we actually cook. I picked a chicken couscous bowl for Wednesday, a feta salad for Thursday (plus Schupfnudeln, because the kids never eat much salad) and couscous-carrot patties for Friday. Eleven of twelve items landed in the cart; the missing vine tomatoes became a packaged tray, because loose produce cannot be added through the API.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. The whole week in one message<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nHello, next week we&#039;d like to cook - broccoli mushroom pasta \u00e0 la Ottolenghi (pasta here), salad with goat&#039;s cheese (Picandou, salad seeds), salmon bowl with edamame (shelled) and avocado, vegetable omelette, bolognese (Friday) with frozen mince 2x, hamburgers with homemade brioche, piadina (homemade) with broccoli, tomatoes, mozzarella, prosciutto.\n\nMilk is badly missing right now.\nI guess bowl is Wednesday, salad Thursday, bolo Fri, piadina Sat, burger Sun\nVegetable omelette is for lunch (small portion)\nI need vegetables for the kids\n&#x5B;\u2026]\nLet&#039;s go - please fill in TODO as well\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">When I already know the plan, one dictated message does it all. Claude checked cart and last delivery, put 16 of 20 items in and found alternatives for the four that were sold out (&#8222;pod edamame, you&#8217;ll have to shell them&#8220;). Eight dishes went into To Do. Then I shopped around in the app myself and just said &#8222;check&#8220;. It found the wrong salmon brand, no mince left for the burgers and only grated mozzarella for the piadina. That was the finance check you saw above.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"799\" src=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery.jpg\" class=\"wp-image-5987 sew-ai\" alt=\"Comic of a friendly delivery driver carrying many grocery bags full of vegetables\" srcset=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery.jpg 800w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery-300x300.jpg 300w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery-150x150.jpg 150w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery-768x767.jpg 768w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery-100x100.jpg 100w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-02-grocery-delivery-120x120.jpg 120w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Next morning.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">What went wrong<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>The tunnel dies, Claude doesn&#8217;t notice.<\/strong> When ngrok drops, the phone app doesn&#8217;t throw an error. Once Claude politely told me it &#8222;can&#8217;t see any Microsoft To Do tools in this session&#8220; and asked me to paste the recipes by hand. That&#8217;s why the skill now says: silent fail means tunnel, not auth.<\/li><li><strong>The order history was broken.<\/strong> <code>get_order_detail<\/code> returned &#8222;Unknown price \/ Unknown date&#8220; and quantity 1 for everything: the server read fields that Knuspr&#8217;s API no longer returns. Claude fixed the mapping, added optional categories and retry with backoff on HTTP 429, and I opened a pull request upstream. By then the maintainer had fixed the mapping independently, so the PR shrank to the parts that were really new.<\/li><li><strong>Rate limits.<\/strong> When I asked whether a soda maker would pay off, Claude had to read every past order and ran into 429s. It ended up dumping all orders, about a year&#8217;s worth, to local JSON at one request per second. That archive has been useful ever since.<\/li><li><strong>Loose produce.<\/strong> Items sold by weight could not be added reliably through the cart API. Claude now picks the packaged variant.<\/li><li><strong>We share one account.<\/strong> Twice Claude reported that items appeared in the cart that it had not added: three packs of mince instead of one, extra courgettes. Someone else in the family was shopping at the same time. Funny, and a good reason for the rule &#8222;always read the cart before writing to it&#8220;.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">If you want to try this<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Start in Claude Code with stdio servers. You only need the OAuth proxy and a tunnel if you want it on your phone.<\/li><li>Keep your meal history somewhere an MCP can read. Years of ticked-off dishes are the best recipe recommender you have.<\/li><li>Write the skill from your corrections, not upfront. Each &#8222;no, we always have that&#8220; becomes a rule.<\/li><li>Do not paste tokens into prompts. I did, in the very first one. Put them in a <code>.env<\/code>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"798\" src=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done.jpg\" class=\"wp-image-5988 sew-ai\" alt=\"Comic of a cheering man with glasses and beard, both fists in the air\" srcset=\"https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done.jpg 800w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-300x300.jpg 300w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-150x150.jpg 150w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-768x766.jpg 768w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-100x100.jpg 100w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-301x300.jpg 301w, https:\/\/engel-wolf.com\/wp-content\/uploads\/tech-grocery-shopping-mcp-03-grocery-done-120x120.jpg 120w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Meal plan, shopping and fridge: 20 to 30 minutes.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Meal planning, shopping and putting things in the fridge now take 20 to 30 minutes a week. The servers were written by other people, the glue by Claude, and the household knowledge by us, one correction at a time.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>How I wired Microsoft To Do and Knuspr\/Rohlik into Claude with two open-source MCP servers, an OAuth proxy and a skill full of household rules, with the real prompts of a normal week and everything that broke along the way. <a href=\"https:\/\/engel-wolf.com\/?p=5989\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":5991,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"sew_ai_header":false,"footnotes":""},"categories":[1],"tags":[381],"class_list":["post-5989","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","tag-technical"],"_links":{"self":[{"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/posts\/5989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5989"}],"version-history":[{"count":1,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/posts\/5989\/revisions"}],"predecessor-version":[{"id":5990,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/posts\/5989\/revisions\/5990"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=\/wp\/v2\/media\/5991"}],"wp:attachment":[{"href":"https:\/\/engel-wolf.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engel-wolf.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}