LystBot

OurGroceries API: an official-key MCP alternative

The reviewed OurGroceries user guide and FAQ do not document an official public developer API. The community OurGroceries API routes described here sign in with your account email and password. LystBot is our product, and if you want a key you can give to a script or to Claude, it's the route we'd pick: REST, a CLI and a local MCP server behind one API key.

OurGroceries API alternative: groceries beside a phone checklist and an unlocked door
Route Status Login
Python wrapper Unofficial Username and password
OurGroceries MCP Community project Email and password, then a saved cookie and team ID
LystBot REST, CLI and MCP Official, 26 MCP tools LystBot API key

The official user guide and FAQ used for this comparison do not document a public developer API. The community projects described here log in as you. If you want to see how other list apps handle this, our list app API and MCP study puts their login requirements side by side.

What OurGroceries already does well

OurGroceries reaches the shopper through plenty of doors: Alexa, Siri, Google Assistant on a phone, a computer, Apple Watch and Wear OS. The overview page leads with Alexa for updating lists. For a household that adds milk by voice and checks it off on a watch, that routine is hard to beat.

Siri is the weak spot. The FAQ notes problems after iOS 16.4 and watchOS 9.4, so Siri users should look there first if voice adds stop working.

Home Assistant users have one more option. The OurGroceries integration in Home Assistant Core polls the cloud and adds a to-do entity for each shopping list. That's a Home Assistant integration, not proof of an official vendor developer API or an MCP connection. If you already run Home Assistant, it is still worth considering on its own terms.

On price, a purchased upgrade covers every device on the same account. We left out a figure because we couldn't confirm a current price.

The community OurGroceries API routes

The Python wrapper calls itself unofficial. The OurGroceries MCP server signs in interactively with your email and password, then saves an authentication cookie and a team ID for later calls.

A saved cookie is still a credential. Swapping a password prompt for a cached session means you now have to trust the machine that holds the file and the code that reads it. This is a question about the documented authentication model, not a claim that the community projects have a security defect.

Say you search for "our groceries api" and land on a handful of repositories. A connector that can add an item may be convenient, but convenience alone doesn't tell you whether its credential model fits your setup. Where they differ is the login instructions, and that's the part worth comparing first.

OurGroceries unofficial tool using account email and password, compared with LystBot API-key access to REST, CLI and local MCP

Password-based community access next to LystBot's API-key route. Possible breakage is a risk assessment, not a documented incident.

Set up the API-key route with one list

Your key lives in the LystBot app under Settings → AI Agents. The same key drives the CLI, the MCP server and REST, as the developer docs explain. Treat it like a password and keep it out of public issues and shared chat logs.

npx lystbot login YOUR_API_KEY
npx lystbot lists

With your key in place of the placeholder, the CLI saves it to ~/.lystbot/config.json and prints your lists. They should match what you see in the app.

A fresh list makes the cleanest test. Skip the create line if you already have a list called Groceries:

npx lystbot create "Groceries" --type shopping --emoji "🛒"
npx lystbot add "Groceries" "Milk, Eggs, Bread"
npx lystbot show "Groceries"

show should list Milk, Eggs and Bread. Then open the app on your phone and look for the same three items on the same list. A command that finishes without errors tells you something happened; the phone tells you where it landed. Our terminal shopping list walkthrough goes further with this workflow, no assistant involved.

Connect Claude to the same list

For Claude Code, one command registers the server:

claude mcp add lystbot -- npx lystbot mcp

Claude Code then starts the LystBot server locally over stdio. It is not a hosted URL, so a client that accepts only remote MCP endpoints needs another route. LystBot's REST API is the documented option for HTTP integrations.

A good first conversation reads before it writes: ask Claude which lists exist, then what's on Groceries. If two lists have similar names, this is where you notice. The first write should be one item on a named list, something you can confirm in the app right away. A whole recipe can wait until that works.

The server has 26 tools, among them list_lists, get_list, add_items and check_item, plus tools for categories and reminders. Our Claude grocery list post shows what everyday use looks like.

Keep fixed jobs in scripts

When a script needs your lists every morning, REST is simpler than an assistant:

curl https://lystbot.com/api/v1/lists \
  -H "Authorization: Bearer YOUR_API_KEY"

With a valid key, the response contains your lists.

Writes take more care. New records need client-generated UUIDs, and the endpoint reference in the developer docs covers the rest. Rerunning an add that may have gone through can leave duplicate items, so a script should read the list again when it isn't sure.

Claude earns its place when the input is messy, like "something with chicken on Tuesday, pasta Friday." A fixed command wins when you already know the operation. Both work against the same lists, and our grocery API examples show the HTTP side in more detail.

Switching without chaos

Nothing in this setup touches your OurGroceries lists, and there's no import step. Moving means copying items by hand, so this week's list is a good place to start. The old list can stay where it is until the new routine has survived a real shopping trip.

The real risk is two apps in play at once. One person checks off eggs in OurGroceries while another adds eggs in LystBot, and no MCP connection can sort that out. Agree on one active list per trip and give the trial a week.

How we checked: we read the OurGroceries user guide, FAQ and overview, the two community repositories, the Home Assistant integration page and LystBot's developer docs.

Which route fits you

Create a LystBot API key and connect your lists to your AI assistant. The two login commands above are enough to see your first list in the terminal.