AnyList API: a practical MCP alternative with LystBot
The reviewed sources establish community API access for AnyList, rather than an official public developer API. For MCP, the unofficial mplabs server requires your AnyList email and password.
| Route | Status | Login |
|---|---|---|
| AnyList Node.js wrapper | Community API access | Email and password |
| AnyList MCP | Unofficial server | Email and password |
| LystBot REST, CLI and MCP | Official interfaces; MCP has 26 tools | LystBot API key |
The sources reviewed for this guide do not establish an official public developer API. The documented programmatic routes here are community projects: the Node.js wrapper and MCP implementation. That's a narrower claim than saying the app cannot be automated. It can, through those projects. The question is whether you want that login model in your assistant setup.
LystBot takes a different route. Its official agent interface uses an API key for REST, the CLI and a local MCP server. This guide walks through a parallel trial before you decide whether moving any lists is worth the trouble.
What is worth keeping in your current setup?
Voice entry may already do the job. AnyList documents Siri support for adding items. Its Siri AI support is described on that page as an initial TestFlight beta, so don't treat that as a generally available replacement for a developer interface.
The Complete plan is listed at $9.99 a year for an individual or $14.99 a year for a household. Those are subscription prices from the product page, not evidence that a particular voice feature requires that plan. Check what you actually use before cancelling anything.
AnyList Alexa instructions need some care. The July 2024 support notice says direct synchronization with Alexa's lists ended after Amazon shut down the List Skill API. Commands must start with "ask AnyList" or "tell AnyList." A separate support notice describes widespread recognition problems beginning in March 2026. That is a documented issue, not a reason to dismiss everyone's existing voice workflow.
If your only goal is faster grocery entry, first check whether your current voice setup meets it. A developer connection becomes useful when you want another program to read a list, make a specific change and inspect the saved result.
What an AnyList MCP connector asks you to trust
The mplabs project explicitly builds on an unofficial wrapper and requires ANYLIST_EMAIL and ANYLIST_PASSWORD. The bobby060 implementation also requests the account password. These are community implementations, rather than a vendor-issued API-key path.
Read the connector's authentication instructions before you install it. Decide which machine will hold the credentials and who can read its configuration. A local process is still a process you trust with that login. This guide doesn't offer a password-based installation recipe or assume that every community project handles credentials in the same way.
For a LystBot trial, copy the API key from Settings, then AI Agents in the mobile app. The developer documentation describes that supported authentication path. An API key is a secret too. Keep it out of screenshots and shared transcripts; the benefit here is an official programmatic credential rather than another app's account password.
Try one list from the terminal
Use a small test list so that an incorrect command won't disrupt the household shop. You need a terminal where npx is available. The following commands come from the current CLI reference:
npx lystbot login YOUR_API_KEY
npx lystbot lists
Replace YOUR_API_KEY with the value from your own app. Login stores the credential locally in ~/.lystbot/config.json. The second command reads your lists. Stop here if the result doesn't match the lists you expect; a successful login message alone doesn't prove you're using the right data.
For a new trial, use the documented grocery example. If you already have a list with that name, read it before adding anything:
npx lystbot create "Groceries" --type shopping --emoji "🛒"
npx lystbot add "Groceries" "Milk, Eggs, Bread"
npx lystbot show "Groceries"
Open the same list on your phone and compare the item text. The useful result is three saved items in the intended list. If you see a different list or an unexpected duplicate, resolve that before connecting an assistant. The terminal guide gives more context for working with lists from a shell.
Add Claude after the manual check
The server is included in the CLI and runs locally over stdio. There is no hosted MCP URL to paste into a remote-only connector. For Claude Code, the documented registration command is:
claude mcp add lystbot -- npx lystbot mcp
Ask Claude to read the available lists, then read the intended grocery list. Only after that should you ask for a small change, such as adding one item you can easily recognize. Check it in the phone app. Treat "I added it" as a claim to verify, rather than the verification itself.
The server exposes 26 tools. They include list_lists, get_list, add_items and check_item, as well as sharing, categories, attachments and reminders. You don't need to use all of them. A useful first session reads one list and changes one item. The Claude grocery guide covers the household workflow in more detail.
Use HTTP when an assistant is unnecessary
A scheduled script doesn't need conversational reasoning just to read lists. The official REST example is:
curl https://lystbot.com/api/v1/lists \
-H "Authorization: Bearer YOUR_API_KEY"
This is a read request, so it is a good first check for an automation. Use the endpoint and Bearer header exactly as documented. For writes, follow the current REST reference, including its UUID requirements for new records. Avoid copying older examples that use another API hostname or a different payload shape.
Move a routine, then decide about the rest
This guide doesn't promise automatic import or synchronization between apps. Start by manually copying a short list of active items. Check quantities and item names yourself. Keep the old list available while you test, but agree which app holds the current version for that particular shopping trip. Two editable copies are easy to confuse.
Run the trial through an actual shop. Can the person in the store find the right list? Can you see whether milk was checked off? Does the assistant put additions in the list you named? A successful terminal command is useful evidence, but the routine has to work for the people using it.
Related credential questions appear in our OurGroceries integration guide and Google Keep integration guide. Those articles separate the documented access routes rather than treating every unofficial connector as the same thing.
FAQ
Is there an official public API in the reviewed sources?
The reviewed sources establish community access through a Node.js wrapper, rather than an official public developer interface. Choose based on that documented route, not an assumption that the wrapper is vendor-supported.
Can I keep using voice entry?
AnyList documents Siri entry and an Alexa command format. Check the separate Alexa issue notice when evaluating that route.
Will LystBot import or synchronize my existing lists?
No automatic migration or cross-app synchronization is established by the LystBot sources used here. The concrete trial in this guide is a manual copy of selected active items into a separate list.
Does LystBot have a hosted MCP endpoint?
No. The documented server starts with npx lystbot mcp and communicates over local stdio. Use the REST API for a client that cannot launch a local MCP process.
For HTTP workflows, see the shared grocery API examples.