LystBot: list app for AI agents

LystBot is a list app for AI agents and the people who use them. You and your assistant work on the same shared lists: ask it to add groceries or check off a task, then see the changes on your phone.

Connect through a local MCP server, the CLI or the REST API. All three use the same API key. The developer docs have the full reference.

npx lystbot add "Weekly Groceries" "500g cherry tomatoes; 3x avocados"
The same items in the LystBot app on the phone

Connect your assistant

Install the LystBot app for iOS or Android, then copy your API key from Settings → AI Agents. Choose the connection your assistant supports. ChatGPT uses an app pairing code instead of an API key.

Claude Desktop / Claude Code (MCP)

  1. Log in locally: npx lystbot login <API_KEY>.
  2. For Claude Desktop, copy the MCP configuration below into ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows, then restart Claude Desktop.
  3. For Claude Code, register the server: claude mcp add lystbot -- npx lystbot mcp.

For a Claude todo list, ask your assistant to read the list before making changes.

Cursor, Cline and other MCP clients

  1. Log in locally: npx lystbot login <API_KEY>.
  2. Copy the MCP configuration below into .cursor/mcp.json for Cursor. For Cline, use its MCP settings screen.
  3. For another client that can start a local stdio server, set the command to npx and the arguments to ["lystbot", "mcp"].

The server runs on your computer. A remote OAuth MCP endpoint is also available at https://lystbot.com/api/v1/mcp. The remote endpoint uses OAuth rather than the local server's API key; client compatibility and available tools differ.

Your own agents and scripts (CLI and REST API)

  1. For the CLI, log in with npx lystbot login <API_KEY>, then read your lists with npx lystbot lists.
  2. For REST, send your API key as a Bearer token. This request reads your lists:
curl https://lystbot.com/api/v1/lists \
  -H "Authorization: Bearer YOUR_API_KEY"

Replace the API key placeholder with your key. The REST API reference covers creating lists and changing items.

ChatGPT

Manage your LystBot lists right inside ChatGPT with the official LystBot plugin.

  1. In LystBot, open Settings → ChatGPT and generate a six-digit pairing code. In older app versions, use Settings → Alexa.
  2. Open the LystBot plugin in ChatGPT and select Connect.
  3. Enter the code on LystBot's authorization page and approve access. The code expires after 10 minutes and works once.
  4. Return to ChatGPT and ask: "Show my LystBot lists."

No API key is required. ChatGPT connects through remote OAuth MCP with seven tools: list_lists, get_list, list_reminders, create_list, add_items, update_item and create_reminder. Use update_item to check or uncheck an item. Delete and sharing tools are unavailable.

ChatGPT receives tool results from lists your connected device can access, including shared lists, and its reminders. OpenAI processes returned data under its policies and your ChatGPT settings. Disconnect in Settings → ChatGPT or in ChatGPT. Disconnecting revokes access but does not delete earlier chats. See the privacy policy and terms.

Alexa

  1. Enable the LystBot skill for Alexa.
  2. Link it with a pairing code from the app. No API key, no Amazon account linking.
  3. Say: "Alexa, tell LystBot to add milk to my shopping list."

CLI

Best for agents with a shell: OpenClaw, Grok Bot (on the bot's cloud computer), Devin, Aider, OpenCode and scripts. Install it with npm install -g lystbot, or put npx in front of every command as shown here.

# Log in once (the key is stored in ~/.lystbot/config.json)
npx lystbot login <API_KEY>

# Lists
npx lystbot lists                                   # all lists
npx lystbot show "Groceries"                        # one list with its items
npx lystbot create "Groceries" --type shopping --emoji "🛒"
npx lystbot delete "Old List" --force

# Items
npx lystbot add "Groceries" "Milk, Eggs, Bread"     # comma-separated
npx lystbot add "Groceries" "250g flour; 3x milk"   # amounts and units are parsed
npx lystbot check "Groceries" "Milk"
npx lystbot uncheck "Groceries" "Milk"
npx lystbot remove "Groceries" "Milk"

# Sections inside a list
npx lystbot categories "Groceries"
npx lystbot category add "Groceries" "Fruit"
npx lystbot add "Groceries" "Bananas" --category "Fruit"

# Reminders
npx lystbot reminders
npx lystbot remind "Take vitamins" --at "tomorrow 09:00" --timezone "Europe/Berlin"
npx lystbot reminder-delete <REMINDER_ID> --yes

# Sharing
npx lystbot share "Groceries"                       # get a share code
npx lystbot join <SHARE_CODE>

# Your name and emoji in shared lists
npx lystbot profile --name "TARS" --emoji "🤖"

# JSON output
npx lystbot show "Groceries" --json

All commands and flags: lystbot.com/docs/#cli


MCP server for your todo list

The CLI includes an MCP server. It runs locally over stdio (npx lystbot mcp), so it works with any MCP client that can start a local server. A remote OAuth MCP endpoint is also available at https://lystbot.com/api/v1/mcp. The remote endpoint uses OAuth rather than the local server's API key; client compatibility and available tools differ.

Log in first. Every setup below needs this:

npx lystbot login <API_KEY>

Claude Desktop

Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop:

{
  "mcpServers": {
    "lystbot": {
      "command": "npx",
      "args": ["lystbot", "mcp"]
    }
  }
}

Claude Code, Codex, Grok Build, OpenClaw

claude mcp add lystbot -- npx lystbot mcp     # Claude Code
codex mcp add lystbot -- npx lystbot mcp      # Codex
grok mcp add lystbot -- npx lystbot mcp       # Grok Build
openclaw mcp add lystbot -- npx lystbot mcp   # OpenClaw (or use the CLI directly)

Cursor, Devin Desktop, Antigravity, Cline

Add the same JSON as for Claude Desktop to the client's MCP config: .cursor/mcp.json for Cursor, ~/.config/devin/mcp_config.json for Devin Desktop (formerly Windsurf) and ~/.gemini/config/mcp_config.json for Antigravity. Cline has its own MCP settings screen.

Hermes Agent, Devin CLI, CrewAI

Local stdio MCP tools (26)

Remote ChatGPT MCP tools (7)

list_lists, get_list, list_reminders, create_list, add_items, update_item, create_reminder. Use update_item to check or uncheck an item. Delete and sharing tools are unavailable. Setup: ChatGPT.


REST API

For Microsoft Copilot Studio (REST API tool from an OpenAPI description), the Gemini API and the xAI API (function calling), Manus, AutoGPT, Apple Shortcuts and your own code.

Base URL: https://lystbot.com/api/v1

Authentication: Authorization: Bearer <API_KEY>

Unless stated otherwise, request and response bodies use Content-Type: application/json. Image uploads use multipart/form-data; image and thumbnail GETs return authenticated binary image responses. New lists and items need a client-generated UUID v4 as id. For reminders, id is optional on creation, generated by the server when omitted or empty. A supplied non-empty ID must be a valid UUID.

# Lists
GET    /lists                       # all lists
POST   /lists                       # create a list
       {"id": "<uuid>", "title": "Groceries", "type": "shopping", "emoji": "🛒"}
       type: shopping | todo | packing | generic (default: generic)
GET    /lists/:id                   # one list with items, sections and members
PUT    /lists/:id                   # {"title": "...", "emoji": "...", "hide_completed": false}
DELETE /lists/:id

# Items
POST   /lists/:id/items             # add an item
       {"id": "<uuid>", "text": "Milk", "quantity": 2, "unit": "1l", "category_id": null}
PUT    /lists/:id/items/:itemId     # change any of: text, checked, quantity, unit, position, category_id
       {"checked": true}
DELETE /lists/:id/items/:itemId     # remove an item
DELETE /lists/:id/items/checked     # remove all checked items

# Sharing
POST   /lists/:id/share             # returns {"share_code": "ABC123"}
POST   /lists/join                  # {"code": "ABC123"}
POST   /lists/:id/leave

# Reminders
GET    /reminders
POST   /reminders
       {"id": "<uuid>", "title": "Take vitamins", "scheduled_at": "2027-01-15 09:00",
        "timezone": "Europe/Berlin", "repeat": "none", "is_enabled": true}
       repeat: none | daily | weekly | biweekly | monthly | yearly
GET    /reminders/:id
PUT    /reminders/:id
DELETE /reminders/:id

# Your name and emoji in shared lists
PATCH  /agents/me                   # {"name": "TARS", "signature_emoji": "🤖"}

Rules: CLI and local MCP counts are integers in 1..99. REST quantity handling depends on unit: creation validates the applicable range, while updates clamp values to it. Do not infer REST limits from CLI limits. Weights and volumes go into unit, so 250 g of flour is "unit": "250g", not "quantity": 250. A list holds up to 300 items. Items without category_id go to the section Other. The API accepts one-time reminders ("repeat": "none") with a timestamp in the past. Replace scheduled_at with a future local date and time in the specified timezone.

Errors look like {"error": "not_found", "message": "..."}. Sections, attachments and favorites are in the full reference: lystbot.com/docs

System prompt block

Copy this into your agent's system prompt or context:

You can manage the user's LystBot lists through the REST API.
Base URL: https://lystbot.com/api/v1
Auth header: Authorization: Bearer <API_KEY>
New lists and items need a client-generated UUID v4 as "id".

Endpoints:
- GET    /lists                    - All lists
- POST   /lists                    - Create a list  {"id": "<uuid>", "title": "...", "type": "shopping|todo|packing|generic"}
- GET    /lists/:id                - One list with its items
- POST   /lists/:id/items          - Add an item    {"id": "<uuid>", "text": "...", "quantity": 1-99 (1-9999 with unit), "unit": "..."}
- PUT    /lists/:id/items/:itemId  - Change an item {"checked": true} or {"text": "..."}
- DELETE /lists/:id/items/:itemId  - Remove an item

When the user asks to add something to a list, add it.
When the user asks what's on a list, read the list first.
Tell the user what you changed.

What LystBot is

Supported clients

List types

shopping, todo, packing, generic


More ways to use your lists

Links

© 2026 TourAround UG (haftungsbeschränkt)