Todo API: manage shared lists with LystBot
The LystBot todo API lets scripts read and update shared task lists at https://lystbot.com/api/v1. Start with curl https://lystbot.com/api/v1/lists -H "Authorization: Bearer YOUR_API_KEY" to read your lists before making a change.
| Request | Required input | Result |
|---|---|---|
GET /lists |
Bearer API key | Read all lists |
POST /lists |
id, title |
Create a list |
POST /lists/:id/items |
id, text |
Add one item |
PUT /lists/:id/items/:itemId |
checked |
Change checked state |
See the LystBot agent setup for the full reference. Related guides: grocery API automation examples, terminal commands for shared lists.
A list app with API access for todos
Copy your API key from Settings, then AI Agents. Send it as a Bearer token.
Then you talk to your lists like a normal person talks to a REST API:
# Create a list
curl -X POST https://lystbot.com/api/v1/lists \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id": "NEW_LIST_UUID", "title": "Groceries", "type": "shopping", "emoji": "๐"}'
# Add one item
curl -X POST https://lystbot.com/api/v1/lists/LIST_ID/items \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id": "NEW_ITEM_UUID", "text": "Flour", "quantity": 1, "unit": "500g"}'
# Check off an item
curl -X PUT https://lystbot.com/api/v1/lists/LIST_ID/items/ITEM_ID \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"checked": true}'
New lists and items require client-generated UUID v4 IDs. Replace each UUID placeholder before sending a write request.
It's a grocery list API you can call from anywhere: a cron job, a Home Assistant automation, a Slack bot, a recipe scraper. If it speaks HTTP, it speaks LystBot.
Full endpoint docs are at lystbot.com/agents.
MCP server
The CLI includes a local stdio MCP server with 26 tools. Authenticate with npx lystbot login YOUR_API_KEY before the client starts it. ChatGPT integration is coming soon.
Claude Desktop config:
{
"mcpServers": {
"lystbot": {
"command": "npx",
"args": ["lystbot", "mcp"]
}
}
}
Cursor / Windsurf: Same setup in your MCP config file.
Claude Code:
claude mcp add lystbot -- npx lystbot mcp
Once connected, you can say "find a carbonara recipe and add the ingredients to my grocery list." Claude reads the recipe, creates the items, and your phone buzzes with a push notification. The items are on your list when you walk into the store.
MCP and REST change the same saved lists.
CLI
Sometimes you don't need AI. You need a terminal.
npx lystbot login YOUR_API_KEY
npx lystbot lists
npx lystbot create "Moving Checklist" --emoji "๐ฆ"
npx lystbot add "Moving Checklist" "Cancel internet, Forward mail, Pack kitchen"
npx lystbot check "Moving Checklist" "Cancel internet"
Pipe JSON output into jq, feed it to other scripts, wire it into CI/CD. A shopping list CLI that plays nice with Unix pipes.
npx lystbot show "Groceries" --json | jq '.items'
No global install needed. npx pulls it from npm and runs it.
Collaborative lists and real-time sync
LystBot is still a proper list app. You share lists with family, roommates, whoever. Changes sync in real time across all devices.
Share codes make it easy to invite people. No account creation required for the person joining.
Push notifications tell you when someone adds or checks off items, whether that someone is your partner or your AI agent.
Open source and free
The CLI and MCP server are open source on GitHub. Read the code. Open issues. Send PRs. Every tool call your AI makes goes through code you can inspect.
The app is free during launch, with no account needed.
If you're looking for a programmable list app or a headless list management tool that doesn't fight you, this is the one.
Get LystBot
You get a list app with a real API, a CLI that respects your terminal, and an MCP server that turns your AI assistant into someone who can actually help with groceries. The CLI and MCP code are open source. The app is free during launch.
Download LystBot free on iOS App Store and Google Play.
FAQ
What does a new task need?
A REST item write needs a client-generated UUID v4 id and a text field. Send it to POST /lists/:id/items with your Bearer API key.
Can this API serve grocery lists too?
Yes. List types are shopping, todo, packing and generic. The same item endpoints work with these lists.
What if authentication fails?
A 401 response means the request was not authenticated. Check the API key from Settings, then AI Agents, and the Authorization: Bearer YOUR_API_KEY header before retrying.