Browse workflows

Families in Denmark

Weekly family meal plan with Danish supermarket offers, Spoonacular, and Turso

Build a weekly lunch and dinner plan from this week's Danish supermarket offers, kid-friendly Spoonacular recipes, and meals you have not cooked recently.

Outcome: A 7-day lunch and dinner plan that uses current offers, stays vegetarian and kid-friendly, and skips meals already stored from previous weeks

Example questions

Try asking your AI client

  • Using my private gateway, build this week's family meal plan. Pull current Danish supermarket offers near 2100, check Turso for lunches and dinners we already cooked in the last 3 weeks, then find vegetarian kid-friendly Spoonacular recipes that use this week's offers. Give lunch and dinner for 7 days plus a shopping list. Do not save to Turso until I approve.

  • What lunches and dinners did we already cook in the last 3 weeks according to Turso, and which of this week's supermarket offers would repeat those meals?

  • We are a vegetarian family with a 6-year-old and a 3-year-old. Find this week's cheapest protein and vegetable offers, then pick Spoonacular recipes the whole family can eat. Skip anything already stored in Turso.

  • Turn this week's accepted meal plan into a shopping list and optimize it across at most two stores. Do not write anything to Turso.

  • Friday dinner was too similar to last week. Check Turso, pick a different vegetarian Spoonacular recipe that still uses this week's supermarket offers, and show the swap before saving.

The problem

Weekly meal planning in Denmark means three separate jobs: checking this week's supermarket flyers, finding recipes the whole family will eat, and remembering what you already cooked. Offers change every week. Kids refuse leftovers of the same pasta. Spreadsheets go stale.

How the loop works

  1. Turso first - read lunches and dinners you already served in the last 2 to 4 weeks. Turso is only a meal-history notebook. Do not store recipes, flyers, or shopping lists there.
  2. Danish supermarket offers - search this week's prices near your postal code (Bilka, føtex, Netto clearances, REMA 1000, Lidl). Coop is not included.
  3. Spoonacular - find vegetarian, kid-friendly recipes that use those offer ingredients, then pull servings and step-by-step instructions.
  4. Approve, then remember - review the week grid and shopping list. After you accept it, write this week's meals back to Turso so next Sunday does not repeat them.

Copy the example SKILL.md on this page into Skills so the assistant already knows the household (family of four, vegetarian, lunch and dinner, kid-friendly). The skill is the family profile. Turso is only the history of what you already had.

Gateway tool bundle

Use namespaced tools on the private gateway:

Danish Supermarket Offers (read-only)

  • supermarket-offers__list_chains to see which sources are available
  • supermarket-offers__search_offers for this week's flyers and clearances near a postal code
  • supermarket-offers__compare_prices or supermarket-offers__find_cheapest when two stores carry the same item
  • supermarket-offers__optimize_shopping_list to split the week's groceries across at most two stores

Spoonacular (read-only)

  • spoonacular__search_recipes with diet=vegetarian, a short ready time, and offer ingredients in include_ingredients
  • spoonacular__search_recipes_by_ingredients when the offer list is the fridge
  • spoonacular__get_recipe_information for servings, diets, and the ingredient list
  • spoonacular__get_analyzed_recipe_instructions for cook steps

Turso (history only)

  • turso__get_schema_metadata / turso__get_database_info to see whether a cooked-meals table already exists
  • turso__execute_sql to read recent meals, create the table if needed, and insert this week's plan after you approve

Start with list-services-tool if you are unsure which integrations are active.

Token scope recommendations

Private gateway (household)

  • Scope API tokens to mcp:private-gateway.
  • Offers and Spoonacular stay read-only. Turso needs write access so the assistant can save cooked meals after you approve.

Least-privilege example

{
  "abilities": [
    "mcp:private-gateway"
  ]
}

Instruct agents to search and compare offers, search recipes, and read Turso freely. Ask before any INSERT or UPDATE on cooked meals.

Integrations checklist

  1. Activate Danish Supermarket Offers - set a default postal code so offer search is location-aware. Optionally add your own Salling API token to bypass the shared hub quota.
  2. Activate Spoonacular - use the hub key, or paste a personal Spoonacular API key if you want your own quota.
  3. Activate Turso - one click; stackgate.ai provisions a private database. No Turso account required.
  4. Add the example SKILL.md - paste it into Skills and run stackgate skills sync so Cursor, Claude, or Codex loads the household rules.
  5. Issue a private-gateway token and run one of the example questions. Confirm Turso stays empty until you approve the week.

Governance

  • Offers are a snapshot: prices and stock change. Confirm in the store before you depend on a clearance.
  • Recipes may be US-centric: swap Spoonacular brand names for the Danish products on offer this week.
  • Turso is meal history only: do not store children's names, schools, addresses, or full recipes there. Disconnecting Turso permanently deletes that history.
  • Filters are not automatic: vegetarian and kid-friendly rules live in the skill and your prompts. Review every plan before you cook.
  • Coop is out of scope for the supermarket offers integration.

Example SKILL.md

Paste this into Skills so your assistant follows this playbook every time.

---
name: danish-family-mealplan
description: Plan weekly vegetarian lunch and dinner for a Danish family of four using supermarket offers and skipping meals already cooked in recent weeks.
---

# Danish family weekly meal plan

## Household

- Four people: two adults and two children, ages 6 and 3.
- Everybody is vegetarian. Do not suggest meat, poultry, fish, or hidden animal gelatin.
- Lunch and dinner are shared. The whole family eats the same meal, so it has to be kid-friendly.
- Kid-friendly means mild flavors, familiar shapes, food that is easy to chew, and no choking hazards for a 3-year-old (no whole nuts, whole grapes, or large chunks).
- Avoid very spicy food, alcohol in cooking if a milder swap exists, and recipes the 6-year-old would refuse as "too green" unless you can hide vegetables in pasta, tacos, pizza, pancakes, or soup they already like.

## Goal

Build a 7-day plan with lunch and dinner (14 meals) that:

1. Starts from this week's Danish supermarket offers.
2. Uses Spoonacular for recipes that match those offers and the household rules.
3. Checks Turso for meals already cooked in previous weeks and does not repeat them.
4. Ends with a shopping list you can optimize across stores.

## Tools

1. Turso first: read cooked meals from the last 2 to 4 weeks. If the table is missing, create it.
2. Danish Supermarket Offers: search and compare current offers near the family's postal code.
3. Spoonacular: search vegetarian recipes that use offer ingredients, then fetch instructions for the chosen meals.
4. Turso last: after the family accepts the plan, save this week's meals. Do not store recipes, offers, or shopping lists in Turso.

## Turso schema

Use Turso only as a meal history notebook.

```sql
CREATE TABLE IF NOT EXISTS cooked_meals (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  week_start TEXT NOT NULL,
  weekday TEXT NOT NULL,
  meal_slot TEXT NOT NULL,
  title TEXT NOT NULL,
  recipe_id INTEGER,
  main_ingredients TEXT,
  created_at TEXT NOT NULL
);
```

`week_start` is the Monday date (YYYY-MM-DD). `meal_slot` is `lunch` or `dinner`.

## Output

Return a week grid (Mon-Sun, lunch and dinner), why each meal fits the offers, which recent meals you skipped, and a store-split shopping list. Ask before writing to Turso.

Connect via private gateway

Activate the integrations above, create an API token scoped to mcp:private-gateway, then add this config to your MCP client.

Config file: ~/.cursor/mcp.json

{
    "mcpServers": {
        "stackgate-private-gateway": {
            "url": "https://stackgate.ai/mcp/private",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}