list_projects
List every project the authenticated user can access.
MCP Documentation
logictree.space exposes a Model Context Protocol (MCP) endpoint so Claude Desktop, Cursor, ChatGPT, Gemini, and any MCP-compatible client can read and modify your projects directly — without copy-pasting JSON.
The server speaks JSON-RPC 2.0 over HTTP POST (Streamable HTTP transport). One endpoint, six tools, bearer-token auth.
https://logictree.space/api/mcpAuthorization: Bearer lt_mcp_…MCP 2024-11-05 / JSON-RPC 2.0lt_mcp_. Store it somewhere safe; we can't show it to you twice.Claude Desktop only speaks stdio MCP, so bridge to the HTTP endpoint through mcp-remote. npx downloads it on first run.
{
"mcpServers": {
"logictree": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://logictree.space/api/mcp",
"--header",
"Authorization: Bearer lt_mcp_YOUR_KEY_HERE"
]
}
}
}Config file location: macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop after editing.
URL: https://logictree.space/api/mcp
Header: Authorization: Bearer lt_mcp_YOUR_KEY_HEREPoint the client at https://logictree.space/api/mcp with header Authorization: Bearer lt_mcp_YOUR_KEY. All tools become available as remote MCP tools.
Ask your agent to "list my logictree projects". It should call list_projects and return your project list. If you see 401 Unauthorized, the key is wrong or was revoked.
Every request must include a bearer token tied to a single user account. The token has full read/write access to that user's projects — treat it like a password.
POST /api/mcp HTTP/1.1
Host: logictree.space
Authorization: Bearer lt_mcp_YOUR_KEY_HERE
Content-Type: application/json
{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }Six tools, enough to build and edit any tree. The MCP client usually exposes these automatically after the initial tools/list handshake.
List every project the authenticated user can access.
Fetch the whole tree in a compact token-efficient shape. Use it first so your agent has context before making changes.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | yes | Project ID returned by list_projects. |
Fetch full content blocks for specific nodes — useful when get_tree_structure's summary isn't enough detail.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| node_ids | string[] | yes | Node ids — short prefix (>=4 chars) or full UUID. |
Create a new node. Returns the new node's id.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| parent_id | string | null | yes | Parent node id, or null for a new root. |
| content | string (markdown) | yes | Markdown body. Headings, lists, images, tables, code blocks. |
| color | string | no | Optional CSS color, e.g. "#fef9c3". |
| checked | boolean | no | Task completion state. |
Update an existing node. Include only the fields you want to change.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| node_id | string | yes | Node ID to edit. |
| changes | object | yes | Subset of { content, color, checked, parent_id, collapsed }. |
| option | string | no | For parent_id changes: "attach" (default — children follow) or "detach_children" (children stay with the old parent). |
Delete a node.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| node_id | string | yes | Node ID to delete. |
| option | string | yes | "deleteall" to remove the node and all descendants, or "attach" to remove just this node and re-parent its children to its current parent. |
A node's content is an array of typed blocks. The first line of the first text block becomes the node title automatically — do not send a separate title field.
[
{ "type": "text", "value": "Revenue is declining\n\nMapped against the Q3 forecast…" },
{ "type": "code", "value": "SELECT SUM(amount) …", "language": "sql" },
{ "type": "link", "url": "https://…", "label": "Source" },
{ "type": "image", "url": "https://…" },
{ "type": "table", "value": "…" }
]Minimum valid content: a single text block with a non-empty value. All other block types are optional.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid Authorization header. |
| 403 | The project exists but the key's owner has no access to it. |
| 404 | Project or node id does not exist. |
| 400 | Malformed JSON-RPC request or invalid tool arguments. |
| 500 | Server error — retry. If persistent, contact support. |
The endpoint inherits standard Vercel serverless limits (function duration and payload size). No additional rate-limiting is applied beyond that today, but abusive usage may be throttled without notice.