The list app your AI can actually use.
Three ways to connect. Pick one:
| Method | Best for | Setup time |
|---|---|---|
| MCP Server | Claude Desktop, Cursor, Windsurf, Cline | 30 seconds |
| CLI | Terminal workflows, shell scripts, AI agents via exec | 1 minute |
| REST API | Custom integrations, any language, webhooks | 2 minutes |
Step 1: Install the LystBot app (iOS / Android)
Step 2: Go to Settings > AI Agents > Create API Key
Step 3: Pick your integration method below
Base URL: https://lystbot.com/api/v1
Two auth methods:
| Method | Header | Used by |
|---|---|---|
| Bearer Token | Authorization: Bearer YOUR_API_KEY | AI agents, CLI, external integrations |
| Device UUID | X-Device-UUID: YOUR_UUID | Mobile app |
Get a Bearer token: install the app, go to Settings > AI Agents > Create API Key.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/health | Health check (no auth) |
| POST | /api/v1/devices/register | Register device (no auth) |
| PATCH | /api/v1/devices/{uuid} | Update device |
| GET | /api/v1/devices/{uuid}/api-key | Get API key |
| GET | /api/v1/lists | Get all lists |
| POST | /api/v1/lists | Create list |
| GET | /api/v1/lists/{id} | Get list with items |
| PUT | /api/v1/lists/{id} | Update list |
| DELETE | /api/v1/lists/{id} | Delete list |
| POST | /api/v1/lists/{id}/items | Add item |
| PUT | /api/v1/lists/{id}/items/{itemId} | Update item |
| DELETE | /api/v1/lists/{id}/items/{itemId} | Delete item |
| POST | /api/v1/lists/{id}/share | Generate share code |
| POST | /api/v1/lists/join | Join shared list |
| POST | /api/v1/lists/{id}/leave | Leave shared list |
| GET | /api/v1/favorites | Get favorites |
| POST | /api/v1/favorites | Create favorite |
| PUT | /api/v1/favorites/{id} | Update favorite |
| DELETE | /api/v1/favorites/{id} | Delete favorite |
| POST | /api/v1/favorites/{id}/use | Add favorite to list |
| PATCH | /api/v1/agents/me | Update agent profile |
GET /api/v1/health
No authentication required.
curl https://lystbot.com/api/v1/health
{
"status": "ok"
}
POST /api/v1/devices/register
No authentication required. Registers a new device and returns a UUID.
curl -X POST https://lystbot.com/api/v1/devices/register \
-H "Content-Type: application/json" \
-d '{"name": "My Agent", "platform": "cli"}'
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "My Agent",
"platform": "cli",
"createdAt": "2026-03-13T09:00:00Z"
}
GET /api/v1/devices/{uuid}/api-key
curl https://lystbot.com/api/v1/devices/YOUR_UUID/api-key \
-H "X-Device-UUID: YOUR_UUID"
{
"apiKey": "lystbot_ak_xxxxxxxxxxxxxxxxxxxx"
}
GET /api/v1/lists
curl https://lystbot.com/api/v1/lists \
-H "Authorization: Bearer YOUR_API_KEY"
[
{
"id": 1,
"name": "Groceries",
"emoji": "🛒",
"itemCount": 5,
"checkedCount": 2,
"shared": true,
"createdAt": "2026-03-13T09:00:00Z",
"updatedAt": "2026-03-13T10:30:00Z"
}
]
POST /api/v1/lists
curl -X POST https://lystbot.com/api/v1/lists \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Groceries", "emoji": "🛒"}'
{
"id": 1,
"name": "Groceries",
"emoji": "🛒",
"itemCount": 0,
"checkedCount": 0,
"shared": false,
"createdAt": "2026-03-13T09:00:00Z",
"updatedAt": "2026-03-13T09:00:00Z"
}
GET /api/v1/lists/{id}
curl https://lystbot.com/api/v1/lists/1 \
-H "Authorization: Bearer YOUR_API_KEY"
{
"id": 1,
"name": "Groceries",
"emoji": "🛒",
"items": [
{
"id": 1,
"text": "Oat milk",
"checked": false,
"position": 0,
"createdAt": "2026-03-13T09:00:00Z"
},
{
"id": 2,
"text": "Bananas",
"checked": true,
"position": 1,
"createdAt": "2026-03-13T09:01:00Z"
}
],
"shared": true,
"shareCode": "ABC123",
"members": 2,
"createdAt": "2026-03-13T09:00:00Z",
"updatedAt": "2026-03-13T10:30:00Z"
}
PUT /api/v1/lists/{id}
curl -X PUT https://lystbot.com/api/v1/lists/1 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Weekly Groceries", "emoji": "🛒"}'
DELETE /api/v1/lists/{id}
curl -X DELETE https://lystbot.com/api/v1/lists/1 \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
POST /api/v1/lists/{id}/items
curl -X POST https://lystbot.com/api/v1/lists/1/items \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Coffee beans"}'
{
"id": 3,
"text": "Coffee beans",
"checked": false,
"position": 2,
"createdAt": "2026-03-13T09:05:00Z"
}
PUT /api/v1/lists/{id}/items/{itemId}
curl -X PUT https://lystbot.com/api/v1/lists/1/items/3 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Coffee beans (whole)", "checked": true}'
DELETE /api/v1/lists/{id}/items/{itemId}
curl -X DELETE https://lystbot.com/api/v1/lists/1/items/3 \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
POST /api/v1/lists/{id}/share
curl -X POST https://lystbot.com/api/v1/lists/1/share \
-H "Authorization: Bearer YOUR_API_KEY"
{
"shareCode": "ABC123",
"listId": 1,
"listName": "Groceries"
}
POST /api/v1/lists/join
curl -X POST https://lystbot.com/api/v1/lists/join \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"shareCode": "ABC123"}'
{
"id": 1,
"name": "Groceries",
"emoji": "🛒",
"itemCount": 5,
"shared": true
}
POST /api/v1/lists/{id}/leave
curl -X POST https://lystbot.com/api/v1/lists/1/leave \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
Reusable item templates. "Milk" that you add to your grocery list every week.
GET /api/v1/favorites
curl https://lystbot.com/api/v1/favorites \
-H "Authorization: Bearer YOUR_API_KEY"
[
{
"id": 1,
"text": "Milk",
"emoji": "🥛",
"useCount": 12,
"lastUsedAt": "2026-03-12T18:00:00Z"
}
]
POST /api/v1/favorites
curl -X POST https://lystbot.com/api/v1/favorites \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Milk", "emoji": "🥛"}'
POST /api/v1/favorites/{id}/use
curl -X POST https://lystbot.com/api/v1/favorites/1/use \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"listId": 1}'
PUT /api/v1/favorites/{id} # update
DELETE /api/v1/favorites/{id} # delete (returns 204)
PATCH /api/v1/agents/me
curl -X PATCH https://lystbot.com/api/v1/agents/me \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "TARS", "description": "Personal AI assistant"}'
The fastest way to connect your AI to LystBot. Works with any MCP-compatible client. Listed in the official MCP Registry.
npx lystbot login YOUR_API_KEYClaude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"lystbot": {
"command": "npx",
"args": ["lystbot", "mcp"]
}
}
}
Cursor / Windsurf / Cline: Same config format, add to your editor's MCP settings.
OpenClaw:
openclaw mcp add lystbot -- npx lystbot mcp
| Tool | Parameters | Description |
|---|---|---|
list_lists | (none) | Get all lists |
get_list | list_id or name | Get a list with all items |
create_list | name, emoji (opt) | Create a new list |
delete_list | list_id | Delete a list |
add_items | list_id, items[] | Add one or more items |
check_item | list_id, item_id or text | Check off an item |
uncheck_item | list_id, item_id or text | Uncheck an item |
remove_item | list_id, item_id or text | Remove item from list |
share_list | list_id | Generate a share code |
join_list | share_code | Join a shared list |
Manage lists from your terminal. Works standalone or as a tool for AI agents.
# Run directly (no install)
npx lystbot
# Or install globally
npm install -g lystbot
npx lystbot login YOUR_API_KEY
Credentials are stored in ~/.lystbot/config.json. You can also set LYSTBOT_API_KEY as env variable.
# Lists
npx lystbot lists # show all lists
npx lystbot create "Groceries" --category shopping
npx lystbot show "Groceries" # show items
npx lystbot delete "Groceries"
# Items
npx lystbot add "Groceries" "Milk" "Eggs" "Bread"
npx lystbot check "Groceries" "Milk"
npx lystbot uncheck "Groceries" "Milk"
npx lystbot remove "Groceries" "Milk"
# Sharing
npx lystbot share "Groceries" # get share code
npx lystbot join ABC123 # join shared list
# JSON output (for piping / AI agents)
npx lystbot show "Groceries" --json | jq '.items'
# MCP Server mode
npx lystbot mcp
| Flag | Description |
|---|---|
--json | Output as JSON |
--api-url | Override API base URL |
--version | Show version |
--help | Show help |
Copy this into your agent's system prompt or context file:
You have access to the user's LystBot lists.
## MCP (preferred)
If MCP is available, use these tools: list_lists, get_list, create_list,
delete_list, add_items, check_item, uncheck_item, remove_item, share_list, join_list.
## REST API (fallback)
Base URL: https://lystbot.com/api/v1
Auth: Authorization: Bearer API_KEY
Endpoints:
- GET /lists - List all lists
- POST /lists - Create list {"name": "...", "emoji": "..."}
- GET /lists/:id - Get list with items
- PUT /lists/:id - Update list
- DELETE /lists/:id - Delete list
- POST /lists/:id/items - Add item {"text": "..."}
- PUT /lists/:id/items/:itemId - Update item {"checked": true}
- DELETE /lists/:id/items/:itemId - Remove item
- POST /lists/:id/share - Get share code
- POST /lists/join - Join list {"shareCode": "..."}
## CLI
npx lystbot lists | show | add | check | uncheck | remove | share | join
When the user asks to add something to a list, do it.
When the user asks what's on a list, read it.
Always confirm what you did.
All errors return JSON:
{
"error": {
"code": "NOT_FOUND",
"message": "List not found"
}
}
| Code | Meaning |
|---|---|
400 | BAD_REQUEST - Invalid or missing parameters |
401 | UNAUTHORIZED - Missing or invalid authentication |
403 | FORBIDDEN - No access to this resource |
404 | NOT_FOUND - Resource not found |
409 | CONFLICT - Already exists (e.g. already joined) |
422 | VALIDATION_ERROR - Invalid request body |
429 | RATE_LIMITED - Slow down (Retry-After header included) |
500 | INTERNAL_ERROR - Server error |
100 requests per minute per API key. 429 responses include a Retry-After header.
© 2026 TourAround UG (haftungsbeschränkt) · Privacy · Imprint