You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Surface task location on reads and add parent_task_id to update_task
format_task now returns the Location property on all task reads (search,
snapshot, bulk, complete, etc.) when the Tasks DB defines one. update_task
gains a parent_task_id parameter, matching create_task and bulk_update_tasks.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
**Source layout:**`src/ultimate_brain_mcp/` with four modules:
47
47
48
-
- **`server.py`** — All 30 MCP tool definitions using `@mcp.tool()` decorators. Tools are grouped: Tasks (6), Projects (4), Notes (4), Tags (3), Goals (4), Cross-cutting (3: `daily_summary`, `archive_item`, `set_page_content`), Workflow consolidators (2: `daily_review_snapshot`, `bulk_update_tasks`), Generic (4: `query_database`, `get_page`, `get_page_content`, `update_page`). The 4 create tools (`create_task`, `create_note`, `create_project`, `create_goal`) accept an optional `content` parameter for page body content. `create_task` and `update_task` also accept optional `tag_ids` (Tag relation) and `location` (auto-detected from the live Tasks schema). `bulk_update_tasks` applies up to N task patches concurrently with per-row results, never raising on a single failure. Each tool uses `ToolAnnotations` to declare read-only vs destructive. Property builder helpers (`_prop_title`, `_prop_select`, `_build_location_payload`, etc.) construct Notion API property payloads. `_coerce_property()` auto-converts Python types to Notion property format for the generic `update_page` tool.
48
+
- **`server.py`** — All 30 MCP tool definitions using `@mcp.tool()` decorators. Tools are grouped: Tasks (6), Projects (4), Notes (4), Tags (3), Goals (4), Cross-cutting (3: `daily_summary`, `archive_item`, `set_page_content`), Workflow consolidators (2: `daily_review_snapshot`, `bulk_update_tasks`), Generic (4: `query_database`, `get_page`, `get_page_content`, `update_page`). The 4 create tools (`create_task`, `create_note`, `create_project`, `create_goal`) accept an optional `content` parameter for page body content. `create_task` and `update_task` also accept optional `parent_task_id` (Parent Task relation), `tag_ids` (Tag relation), and `location` (auto-detected from the live Tasks schema). `format_task` surfaces `location` on every task read (search/get/snapshot/bulk results) when the Tasks DB has a Location property — callers pass the discovered property name from `tasks_schema`. `bulk_update_tasks` applies up to N task patches concurrently with per-row results, never raising on a single failure. Each tool uses `ToolAnnotations` to declare read-only vs destructive. Property builder helpers (`_prop_title`, `_prop_select`, `_build_location_payload`, etc.) construct Notion API property payloads. `_coerce_property()` auto-converts Python types to Notion property format for the generic `update_page` tool.
49
49
50
50
-**`notion_client.py`** — Async httpx wrapper around Notion API v2025-09-03. Uses the data_sources query endpoint (not legacy database queries). Core methods: `query_all()` (paginated), `create_page()` (supports `children` for inline body content), `get_page()`, `update_page()`, `get_blocks()`, `append_blocks()`, `delete_block()`. Raises `NotionAPIError` with status-specific hints.
0 commit comments