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. Claude.ai (web, desktop app, mobile) instead signs in to the MCP server via OAuth β no need to generate or copy a key, see Connect to Claude.ai.
| Token type | Lifetime | How to obtain |
|---|---|---|
ss_<40 hex chars> β API key |
Long-lived β valid until revoked | Generate in Account Settings β API tab |
ss_β¦ β OAuth-issued key |
Long-lived β valid until revoked | Created automatically when you connect Claude.ai (shown in the key list with the source βConnected appβ) |
π§ 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) |
include_notes | boolean | No | Set to false to get notes_preview (first line) and notes_chars instead of full notes β much smaller response, ideal for orchestration loops |
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 |
position | number | No | end of the column (max + 1000) |
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 |
position | number | No |
append_to_notes
Appends text to the end of a task's notes without resending the existing notes. The new text is separated by a blank line (if the notes are empty, only the new text is stored). The operation is atomic, so concurrent appends never overwrite each other. Returns the updated task.
| Parameter | Type | Required |
|---|---|---|
task_id | string (UUID) | Yes |
text | string (Markdown) | Yes |
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, invalid or revoked token. The MCP server additionally returns a WWW-Authenticate header pointing to the OAuth metadata. |
| 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
π How to connect
- β’ Claude.ai β web, desktop app, mobile: custom connector with OAuth sign-in, no API key β guide
- β’ Claude Code: config with an API key in the header, or OAuth sign-in β guide
- β’ n8n and other tools: HTTP MCP client with the header Authorization: Bearer ss_β¦ (key from Account Settings β API)
Connect to Claude.ai
Add Simple Stickers as a custom connector in Claude. You sign in with your Simple Stickers account and allow access β no API key to generate or paste anywhere. The connector then works in Claude on the web, in the desktop app and on mobile.
π Steps
- 1 In Claude, open Settings β Connectors and click Add custom connector
-
2
Enter any name (e.g. Simple Stickers) and the server URL:https://www.simplestickers.app/api/mcp
- 3 Click Connect β a Simple Stickers page opens
- 4 Sign in (with email or Google) and click Allow. You are taken back to Claude and the connector is connected.
β What next
- β’ The connector syncs to the Claude desktop app and to mobile β you set it up only once
- β’ In a conversation just write something like βWhat tasks do I have in the Website project?β
- β’ Claude has the same access as you: it can view, create, edit and delete your projects and tasks
π Disconnecting
- β’ In Simple Stickers, open Account Settings β API tab
- β’ Revoke the key with the source Connected app (named βClaudeβ) using the Revoke button
- β’ From then on Claude has no access to your account; to reconnect, just click Connect in Claude again
Claude Code Setup
Claude Code supports HTTP MCP servers natively β no proxy needed. Configure once globally or per project.
π Easiest: OAuth sign-in (no API key)
Add the server without a header, then sign in with /mcp β simplestickers β Authenticate. A browser opens with the same consent page as for Claude.ai.
For scripts and shared configs you can still use an API key in the header β see below.
π 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 12 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.