API & MCP Docs
Integrate Simple Stickers with AI agents, Claude, and automation scripts
Authentication
Both the REST API and MCP server use Bearer token authentication via an API key.
| Token type | Lifetime | How to obtain |
|---|---|---|
ss_<40 hex chars> β API key |
Long-lived β valid until revoked | Generate in Account Settings β API tab |
π§ Generating an API Key
- 1 Open Simple Stickers and click your avatar in the top right
- 2 Go to Account Settings β API tab
- 3 Click Generate API Key, optionally give it a name
-
4
Copy the key immediately β it is shown only once
The key starts with ss_ followed by 40 hex characters.
π€ Using the Token
Pass the token in every request as a Bearer Authorization header:
API keys are scoped to the user who created them. All data operations return only that user's data.
REST API
π Endpoint
π¨ Request Body
All actions share the same JSON envelope:
π¬ Responses
- 200 OK Success β JSON data in body
- 4xx / 5xx Error β {"error": "message"}
Projects
list_projects
Returns all projects belonging to the authenticated user.
Response: array of {"id","name","created_at"} objects.
find_project
Case-insensitive partial name search. Returns an array of matching projects.
| Parameter | Type | Required |
|---|---|---|
name | string | Yes |
create_project
Creates a new project. Returns the created project object.
| Parameter | Type | Required |
|---|---|---|
name | string | Yes |
rename_project
Renames an existing project.
| Parameter | Type | Required |
|---|---|---|
project_id | string (UUID) | Yes |
name | string | Yes |
delete_project
Deletes a project and all its tasks (cascade). Returns {"success":true}.
Tasks
list_tasks
Returns tasks in a project, ordered by position. Optionally filtered by status.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string (UUID) | Yes | |
status | string | No | Filter by status value (see enum below) |
get_task
Returns a single task by ID, including its project_id.
create_task
Creates a new task in a project. Returns the created task object.
| Parameter | Type | Required | Default |
|---|---|---|---|
project_id | string (UUID) | Yes | |
text | string | Yes | |
status | string | No | backlog |
notes | string (Markdown) | No | null |
priority | boolean | No | false |
color | string | null | No | null (white) |
deadline | string (YYYY-MM-DD) | null | No | null |
update_task
Updates one or more fields of an existing task. At least one optional field must be provided.
| Parameter | Type | Required |
|---|---|---|
task_id | string (UUID) | Yes |
text | string | No |
status | string | No |
notes | string (Markdown) | null | No |
priority | boolean | No |
color | string | null | No |
deadline | string (YYYY-MM-DD) | null | No |
delete_task
Permanently deletes a task. Returns {"success":true}.
π Enum Values
status
- backlog
- in_progress
- review
- testing
- done
color
- yellow
- green
- blue
- null (white)
deadline
YYYY-MM-DD string, or null to clear.
priority
true = high priority
false = normal
Task Notes (Markdown)
Task notes are stored and transmitted as plain Markdown strings. The frontend renders them via react-markdown. Always write and read Markdown β not HTML.
| Syntax | Result |
|---|---|
**text** | Bold |
*text* | Italic |
~~text~~ | |
## Heading | H2 heading |
### Heading | H3 heading |
- item | Bullet list |
1. item | Numbered list |
`code` | Inline code |
```\ncode\n``` | Code block |
> text | Blockquote |
[text](url) | Hyperlink |
π Example note in create_task
Settings
get_column_settings
Returns the user's Kanban column visibility settings.
Example response:
columns is null if the user has not customised column visibility (all defaults apply).
Error Reference
| HTTP status | error value |
Meaning |
|---|---|---|
| 401 | Unauthorized |
Missing or invalid token |
| 400 | Missing <param> |
Required parameter not provided |
| 400 | Unknown action |
Action name not recognised |
| 403 | Key management requires JWT authentication |
Tried to manage keys with an API key token |
| 500 | varies | Unexpected server error |
MCP Integration
What is MCP?
MCP (Model Context Protocol) is a standard that lets AI clients (Claude Code, Claude Desktop, Cursorβ¦) connect to external tools. Unlike the REST API, the MCP server describes itself β the client asks which tools exist, then calls them directly without needing to know URLs or request formats.
β Use MCP whenβ¦
- β’ You want Claude to manage your tasks conversationally
- β’ You need the AI to discover available operations on its own
- β’ You prefer a plug-and-play integration with Claude Code / Claude Desktop
- β’ You want to use natural language instead of writing curl commands
π‘ Use REST API whenβ¦
- β’ You are building your own automation scripts or CI pipelines
- β’ You need fine-grained control over HTTP requests
- β’ You are integrating with systems that don't support MCP
- β’ You want to process responses programmatically
π οΈ Available MCP Tools
Claude Code Setup
Claude Code supports HTTP MCP servers natively β no proxy needed. Configure once globally or per project.
π Global config β ~/.claude/mcp.json
Applies to all Claude Code sessions on your machine:
π Per-project config β .mcp.json in project root
Same format as global config β applies only when working inside that directory:
β Verify the connection
After saving the config, open Claude Code and type:
You should see simplestickers listed with all 11 available tools. If the server shows as disconnected, click Reconnect.
Claude Desktop Setup
π macOS
Config file: ~/Library/Application Support/Claude/claude_desktop_config.json
πͺ Windows
Config file: %APPDATA%\Claude\claude_desktop_config.json
(typically C:\Users\<name>\AppData\Roaming\Claude\claude_desktop_config.json)
On Windows, Claude Desktop launches processes without a shell context, so npx must be wrapped in cmd /c:
Quick Examples
π‘ Complete REST workflow β find project β create task β update status
π€ MCP workflow in Claude Code
Once the MCP server is configured, you can talk to Claude naturally:
Claude uses the MCP tools automatically based on your natural language instructions.