{"schema_version":"1.0","server_info":{"name":"Goalpen SuperAgent","version":"1.0.0","description":"Goal and task management AI tools for Goalpen.","contact":"https://goalpen.com"},"tools":[{"name":"list_tasks","description":"Returns a filtered list of tasks and goals for this organisation. All results are scoped to the authenticated user's zCusId and permissions.","inputSchema":{"type":"object","properties":{"module":{"type":"string","enum":["task","goal"],"description":"Filter by type."},"status":{"type":"string","description":"Filter by status (e.g. \"In Progress\", \"Completed\")."},"assignee":{"type":"string","description":"Display name of the assignee to filter by."},"dueBefore":{"type":"string","description":"ISO date string — only items due on or before this date."},"dueAfter":{"type":"string","description":"ISO date string — only items due on or after this date."},"limit":{"type":"number","description":"Max results to return (default 50, max 200)."}},"required":[]}},{"name":"search_items","description":"Full-text fuzzy search across tasks, goals, notes, and channels by name or content.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search phrase."},"types":{"type":"array","items":{"type":"string","enum":["task","goal","note","channel"]},"description":"Item types to include (default: all)."},"limit":{"type":"number","description":"Max results per type (default 20)."}},"required":["query"]}},{"name":"get_task","description":"Returns full details for a single task or goal by its Firestore ID or name.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Firestore document ID (preferred)."},"name":{"type":"string","description":"Task/goal name (partial match — used if id is not supplied)."}},"required":[]}},{"name":"list_channels","description":"Returns channels, optionally filtered by the task or goal they are linked to.","inputSchema":{"type":"object","properties":{"linkedTo":{"type":"string","description":"Task/goal name (partial match) to filter channels by."},"limit":{"type":"number","description":"Max results (default 50)."}},"required":[]}},{"name":"list_notes","description":"Returns notes, optionally filtered by the task or goal they are linked to.","inputSchema":{"type":"object","properties":{"linkedTo":{"type":"string","description":"Task/goal name (partial match) to filter notes by."},"limit":{"type":"number","description":"Max results (default 50)."}},"required":[]}},{"name":"get_user","description":"Resolves a user display name to their Firestore user ID. Useful before calling create_task with assigneeName.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Display name (partial match)."}},"required":["name"]}},{"name":"create_task","description":"Creates a new task or goal. Set module=\"goal\" for goals (shown with flag icon). Supply parentName to nest under an existing task/goal — the executor sets zParentId, zParentType, and zLevel automatically.","inputSchema":{"type":"object","properties":{"module":{"type":"string","enum":["task","goal"],"description":"Type to create."},"taskName":{"type":"string","description":"Name of the task or goal."},"description":{"type":"string","description":"Body text (optional)."},"status":{"type":"string","description":"Status — defaults to the org's first configured status."},"dueOn":{"type":"string","description":"Due date (yyyy-MM-dd, optional)."},"important":{"type":"boolean","description":"Flag as important (optional)."},"parentName":{"type":"string","description":"Name of the parent task/goal to nest under (optional)."},"assigneeName":{"type":"string","description":"Display name of the user to assign (optional)."}},"required":["module","taskName"]}},{"name":"update_task","description":"Updates fields on an existing task or goal. Only supply the fields to change.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Firestore document ID."},"taskName":{"type":"string","description":"New name (optional)."},"status":{"type":"string","description":"New status (optional)."},"description":{"type":"string","description":"New body (optional)."},"dueOn":{"type":"string","description":"New due date yyyy-MM-dd (optional)."},"important":{"type":"boolean","description":"Toggle importance (optional)."},"assigneeName":{"type":"string","description":"Display name to reassign to (optional)."}},"required":["id"]}},{"name":"link_task","description":"Links (or re-links) a task to a new parent. Recursively updates zLevel on all descendants.","inputSchema":{"type":"object","properties":{"taskName":{"type":"string","description":"Partial name of the task to move."},"parentName":{"type":"string","description":"Partial name of the new parent. Omit to make it a root item."}},"required":["taskName"]}},{"name":"bulk_update_status","description":"Sets the status on a goal and every nested task at any depth (recursive). No per-item email notification is sent — use send_message afterwards for one consolidated alert.","inputSchema":{"type":"object","properties":{"goalName":{"type":"string","description":"Partial name of the goal."},"status":{"type":"string","description":"Target status (default \"Completed\")."}},"required":["goalName"]}},{"name":"send_message","description":"Posts a message to a channel. Channel is matched by task/goal name or channel name (fuzzy).","inputSchema":{"type":"object","properties":{"channelRef":{"type":"string","description":"Channel name, or the task/goal it is linked to."},"message":{"type":"string","description":"Message body."}},"required":["channelRef","message"]}},{"name":"create_channel","description":"Creates a new channel, optionally linked to a task or goal.","inputSchema":{"type":"object","properties":{"channelName":{"type":"string","description":"Name of the channel (max 30 chars)."},"linkedTo":{"type":"string","description":"Task/goal name to link to (optional)."}},"required":["channelName"]}},{"name":"create_note","description":"Creates a plain-text note, optionally linked to a task or goal.","inputSchema":{"type":"object","properties":{"noteTitle":{"type":"string","description":"Title."},"content":{"type":"string","description":"Body (optional)."},"linkedTo":{"type":"string","description":"Task/goal name to link to (optional)."},"important":{"type":"boolean","description":"Mark as important (optional)."}},"required":["noteTitle"]}},{"name":"update_note","description":"Updates an existing note by its title.","inputSchema":{"type":"object","properties":{"noteTitle":{"type":"string","description":"Current title (partial match)."},"newTitle":{"type":"string","description":"Rename to this title (optional)."},"content":{"type":"string","description":"Replace body (optional)."},"pin":{"type":"boolean","description":"Pin or unpin (optional)."},"checked":{"type":"boolean","description":"Mark as done (optional)."}},"required":["noteTitle"]}},{"name":"create_blog","description":"Creates a blog post (draft or published), optionally linked to a task or goal.","inputSchema":{"type":"object","properties":{"blogTitle":{"type":"string","description":"Title."},"excerpt":{"type":"string","description":"Short summary (optional)."},"content":{"type":"string","description":"Full body (optional)."},"status":{"type":"string","enum":["draft","published"],"description":"Default \"draft\"."},"linkedTo":{"type":"string","description":"Task/goal name to link to (optional)."}},"required":["blogTitle"]}}]}