{
  "title": "Grocery basket comparison",
  "human_url": "https://happytails.ai/en/calculators/grocery-basket-comparison/",
  "agent_url": "https://happytails.ai/agents/en/calculators/grocery-basket-comparison/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/calculators/grocery-basket-comparison.md",
  "content": "Grocery basket comparison\nCompare pack-rounded grocery costs from quantities and store offers you enter. See complete store totals, missing items and a split shopping plan.\nHow to use Grocery basket comparison\nList each exact item and needed quantity with a supported unit.\nEnter one offer per store and item, including pack size, price, currency and whether it is available.\nCompare complete store totals, partial totals, and the split plan; download the offer and shopping-plan CSV files.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nUseful next steps\nUnit price calculator\nMeal cost comparison\nPack counts round up\nEach available offer is rounded to the number of whole packs needed. A 500 g need with 250 g packs requires two packs, and the total uses both pack prices.\nComplete and split baskets\nA store total is complete only when every requested item is available. A split plan selects the lowest exact line cost for each item. Incomplete stores show partial subtotals and list missing items; unavailable offers are not treated as free.\nPrices are your inputs\nEnter one currency code for all offers. Prices and availability are not fetched or verified. No tax, delivery or discount adjustments are added.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Unit price calculator",
      "url": "https://happytails.ai/en/business-tools/unit-price-calculator/"
    },
    {
      "name": "Meal cost comparison",
      "url": "https://happytails.ai/en/calculators/meal-cost-comparison/"
    }
  ],
  "tool": {
    "id": "grocery-basket-comparison",
    "category": "calculators",
    "built": true,
    "requirements": "Enter up to 200 exact item names, 20 stores and 1,000 offers in the stated CSV formats. Units must match the same quantity kind, and all entered prices must use one three-letter currency code. No store prices, coupons, delivery fees, tax or availability are looked up or inferred. Incomplete store and split subtotals are partial and never called complete totals. Results are calculated in your browser; entered prices are not verified current prices.",
    "implementation": {
      "fields": [
        {
          "key": "needsCsv",
          "label": "Items and quantities needed",
          "value": "item,quantity,unit\nFlour,500,g\nMilk,1000,mL",
          "type": "textarea",
          "maxLength": 200000,
          "help": "Use exact headers: item,quantity,unit. Use a supported unit such as g, kg, mL, L or item. Item names are matched exactly."
        },
        {
          "key": "offersCsv",
          "label": "Store offers",
          "value": "store,item,pack_quantity,unit,price,currency,available\nMarket A,Flour,1,kg,2.40,EUR,true\nMarket A,Milk,1,L,1.10,EUR,true\nMarket B,Flour,250,g,0.80,EUR,true\nMarket B,Milk,,,,EUR,false",
          "type": "textarea",
          "maxLength": 200000,
          "help": "Use exact headers: store,item,pack_quantity,unit,price,currency,available. Availability is true or false. For unavailable offers, leave pack_quantity, unit and price empty. Every price must use the same three-letter currency code."
        },
        {
          "key": "precision",
          "label": "Currency decimal places",
          "value": "2",
          "type": "select",
          "values": [
            "0",
            "2",
            "3",
            "4"
          ]
        }
      ],
      "input": false,
      "presentation": "metrics",
      "inputMaxLength": 200000,
      "note": "Compare store totals and find the cheapest split shopping plan. Enter your own quantities and prices. Calculations stay on your device.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 200000,
        "inputMode": "text",
        "label": "Your text",
        "placeholder": "Type or paste your input…",
        "help": "Up to 200,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Grocery basket comparison\n\n- Human page: https://happytails.ai/en/calculators/grocery-basket-comparison/\n- Markdown: https://happytails.ai/en/calculators/grocery-basket-comparison.md\n- Structured JSON: https://happytails.ai/agents/en/calculators/grocery-basket-comparison/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `grocery-basket-comparison` |\n| Category | calculators |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nCompare store totals and find the cheapest split shopping plan. Enter your own quantities and prices. Calculations stay on your device.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `needsCsv` | Items and quantities needed | textarea | \"item,quantity,unit\\nFlour,500,g\\nMilk,1000,mL\" |  |\n| `offersCsv` | Store offers | textarea | \"store,item,pack_quantity,unit,price,currency,available\\nMarket A,Flour,1,kg,2.40,EUR,true\\nMarket A,Milk,1,L,1.10,EUR,true\\nMarket B,Flour,250,g,0.80,EUR,true\\nMarket B,Milk,,,,EUR,false\" |  |\n| `precision` | Currency decimal places | select | \"2\" | Allowed: 0, 2, 3, 4 |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nEnter up to 200 exact item names, 20 stores and 1,000 offers in the stated CSV formats. Units must match the same quantity kind, and all entered prices must use one three-letter currency code. No store prices, coupons, delivery fees, tax or availability are looked up or inferred. Incomplete store and split subtotals are partial and never called complete totals. Results are calculated in your browser; entered prices are not verified current prices.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"grocery-basket-comparison\",\n  \"category\": \"calculators\",\n  \"built\": true,\n  \"requirements\": \"Enter up to 200 exact item names, 20 stores and 1,000 offers in the stated CSV formats. Units must match the same quantity kind, and all entered prices must use one three-letter currency code. No store prices, coupons, delivery fees, tax or availability are looked up or inferred. Incomplete store and split subtotals are partial and never called complete totals. Results are calculated in your browser; entered prices are not verified current prices.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"needsCsv\",\n        \"label\": \"Items and quantities needed\",\n        \"value\": \"item,quantity,unit\\nFlour,500,g\\nMilk,1000,mL\",\n        \"type\": \"textarea\",\n        \"maxLength\": 200000,\n        \"help\": \"Use exact headers: item,quantity,unit. Use a supported unit such as g, kg, mL, L or item. Item names are matched exactly.\"\n      },\n      {\n        \"key\": \"offersCsv\",\n        \"label\": \"Store offers\",\n        \"value\": \"store,item,pack_quantity,unit,price,currency,available\\nMarket A,Flour,1,kg,2.40,EUR,true\\nMarket A,Milk,1,L,1.10,EUR,true\\nMarket B,Flour,250,g,0.80,EUR,true\\nMarket B,Milk,,,,EUR,false\",\n        \"type\": \"textarea\",\n        \"maxLength\": 200000,\n        \"help\": \"Use exact headers: store,item,pack_quantity,unit,price,currency,available. Availability is true or false. For unavailable offers, leave pack_quantity, unit and price empty. Every price must use the same three-letter currency code.\"\n      },\n      {\n        \"key\": \"precision\",\n        \"label\": \"Currency decimal places\",\n        \"value\": \"2\",\n        \"type\": \"select\",\n        \"values\": [\n          \"0\",\n          \"2\",\n          \"3\",\n          \"4\"\n        ]\n      }\n    ],\n    \"input\": false,\n    \"presentation\": \"metrics\",\n    \"inputMaxLength\": 200000,\n    \"note\": \"Compare store totals and find the cheapest split shopping plan. Enter your own quantities and prices. Calculations stay on your device.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 200000,\n      \"inputMode\": \"text\",\n      \"label\": \"Your text\",\n      \"placeholder\": \"Type or paste your input…\",\n      \"help\": \"Up to 200,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCompare pack-rounded grocery costs from quantities and store offers you enter. See complete store totals, missing items and a split shopping plan.\n\n### How to use Grocery basket comparison\n\n1. List each exact item and needed quantity with a supported unit.\n2. Enter one offer per store and item, including pack size, price, currency and whether it is available.\n3. Compare complete store totals, partial totals, and the split plan; download the offer and shopping-plan CSV files.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n## Useful next steps\n\n- [Unit price calculator](https://happytails.ai/en/business-tools/unit-price-calculator/) ([Markdown](https://happytails.ai/en/business-tools/unit-price-calculator.md))\n\n- [Meal cost comparison](https://happytails.ai/en/calculators/meal-cost-comparison/) ([Markdown](https://happytails.ai/en/calculators/meal-cost-comparison.md))\n\n## Pack counts round up\n\nEach available offer is rounded to the number of whole packs needed. A 500 g need with 250 g packs requires two packs, and the total uses both pack prices.\n\n### Complete and split baskets\n\nA store total is complete only when every requested item is available. A split plan selects the lowest exact line cost for each item. Incomplete stores show partial subtotals and list missing items; unavailable offers are not treated as free.\n\n### Prices are your inputs\n\nEnter one currency code for all offers. Prices and availability are not fetched or verified. No tax, delivery or discount adjustments are added.\n"
}