Documentation
Product guidance, keyboard shortcuts, and external integrations.
Memo / Todo MCP integration guide
Memo and Todo share the Streamable HTTP endpoints /mcp and /mcp/readonly. A credential's scopes determine which tools the client can see and call.
Quick start
- Open Settings → Access tokens, create a token, and copy it immediately. It cannot be displayed again.
- Select
memo:readortodo:readfor read access. Add the matching*:writescope for create, update, and delete operations. - Use
https://<your-host>/mcp/readonlyfor read-only clients, orhttps://<your-host>/mcpwhen writes are needed. - Add
Authorization: Bearer <your-token>to the client configuration. The client performsinitializeand manages the session.
Tokens expire after 90 days by default; 30-day and non-expiring options may also be available. Revoke a token immediately if it may have leaked.
Cursor example
{
"mcpServers": {
"MeSQ-readonly": {
"url": "https://<your-host>/mcp/readonly",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}
Access model
| Goal | Endpoint | Required scope |
|---|---|---|
| Read memos | /mcp/readonly |
memo:read |
| Write memos | /mcp |
memo:read memo:write |
| Read Todo | /mcp/readonly |
todo:read |
| Write Todo | /mcp |
todo:read todo:write |
The X-MCP-Readonly: true header also forces read-only mode. OAuth and personal access tokens support the same Memo and Todo scopes.
Sessions
The response header Mcp-Session-Id identifies the session. Send it on later requests. Inactive sessions expire after about 30 minutes. Multi-instance deployments must route a session consistently by this ID.
Memo tools
Memo tools cover listing, keyword and semantic search, reading, creating, updating, soft deletion, tag management, and attachment upload/read. Use upload_memo_resource first, then pass its path to create_memo when creating a memo with attachments.
MCP attachment resources use memo://resource/{encodedPath}. Base64 reads are intended for files up to 5 MB; larger supported files should be read through MCP resources or their authenticated preview URL.
Todo tools
Use get_todo_context to discover spaces, columns, boards, and inboxes. Use create_todo_inbox_item for quick capture and create_todo_task for a specific board column. Todo attachments use todo://attachment/{encodedPath}.
Toolsets can be narrowed with X-MCP-Toolsets, including todos, todo-spaces, todo-columns, todo-inbox, todo-attachments, and todo-trash.
Content limits
| Item | Limit |
|---|---|
| Memo body | 3,000 characters |
| Images per memo | 9 |
| Image | 20 MB or the lower account limit |
| File | 50 MB |
| Direct MCP base64 read | 5 MB |
Troubleshooting
| Status | Typical cause | Action |
|---|---|---|
| 401 | Invalid, expired, or revoked credential | Create a new token and update the client |
| 403 | Missing scope or write call on a read-only connection | Check the token scopes and endpoint |
| 400 | Missing session ID after initialization | Reconnect and include Mcp-Session-Id |
| 404 | Expired session or incorrect multi-instance routing | Reconnect and verify sticky routing |
| 429 | Rate limit exceeded | Wait for the Retry-After interval |
The server does not currently expose MCP prompts or resources/subscribe. User-created Memo and Todo content is always returned in its original language.
REST API guide
Use REST for scripts and iPhone Shortcuts that call MeSQ without an MCP client. Create an access credential in Settings → Access credentials first, then replace the placeholders below.
- Base URL:
https://<your-host> - Authentication header:
Authorization: Bearer <your-credential> - Listing and reading require
memo:read - Creating requires
memo:write - Updating and moving to trash normally require both
memo:readandmemo:write, because the latest revision must be read before writing
List memos
curl -s 'https://<your-host>/api/toolkit/memo?deviceTimeZone=Asia/Shanghai' \
-H 'Authorization: Bearer <your-credential>'
Read one memo
The response includes the memo's current revision. Use that value as expectedRevision for the next update or soft delete.
curl -s 'https://<your-host>/api/toolkit/memo/<memo-id>?deviceTimeZone=Asia/Shanghai' \
-H 'Authorization: Bearer <your-credential>'
Create a memo
Use a new idempotency key for each logical create operation so a retry does not create a duplicate.
curl -s -X POST 'https://<your-host>/api/toolkit/memo' \
-H 'Authorization: Bearer <your-credential>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: <unique-key>' \
-d '{"content":"Captured through the API","contentSource":"api"}'
In iPhone Shortcuts, configure Get Contents of URL with the same URL, POST method, headers, and JSON body.
Update a memo
Replace 123 with the latest positive integer revision returned by a read or previous write.
curl -s -X PATCH 'https://<your-host>/api/toolkit/memo/<memo-id>' \
-H 'Authorization: Bearer <your-credential>' \
-H 'Content-Type: application/json' \
-d '{"content":"Updated content","expectedRevision":123}'
Move a memo to trash
curl -s -X DELETE 'https://<your-host>/api/toolkit/memo/<memo-id>' \
-H 'Authorization: Bearer <your-credential>' \
-H 'Content-Type: application/json' \
-d '{"expectedRevision":123}'
Permanent deletion remains available in the authenticated MeSQ interface. Access credentials cannot call permanent-deletion endpoints.
Memo
Quick capture
- Publish with ⌘ + Enter / Shift + Enter
- Enter inserts a line break when tag suggestions are closed.
Tag suggestions (shown after typing #)
- Use ↑ / ↓ to choose a suggestion
- Press Enter or Tab to insert the selected suggestion
- Press Esc to close suggestions
- ⌘ + Enter or Shift + Enter still publishes while suggestions are open.
Launcher
Open Launcher from the rocket button in the bottom dock. In Launcher settings, bind a valid shortcut containing a modifier or function key. The shortcut is saved to your account and cached on this device.