{"ok":true,"site":{"host":"dosidequest.netlify.app","url":"https://dosidequest.netlify.app/","type":"live","desc":"Gamified productivity workspace designed for distraction-prone and nonlinear work styles.","tools":[{"name":"get_current_work_state","kind":"answer","impl":"imperative","description":"Provides a complete overview of the user's active productivity state: the current Main Quest, parent project, progress percentage, next micro-action, active focus session status, blockers, parked side quest count, and latest saved work context. Call this first to understand what the user is working on.","title":"Get Current Work State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_projects","kind":"answer","impl":"imperative","description":"Lists all active, non-archived projects with summary stats including project ID, name, progress percentage, total quest count, and completed quest count.","title":"List Projects","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_quests","kind":"answer","impl":"imperative","description":"Lists quests across all projects or filtered by a specific projectId. Returns quest ID, projectId, title, status, priority, progress percentage, nextAction, and whether it is the active Main Quest.","title":"List Quests","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"Optional project ID to filter quests"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_quest","kind":"answer","impl":"imperative","description":"Retrieves detailed information for a single quest, including its parent project, ordered step list, progress percentage, blocker, next action, and saved context snapshots.","title":"Get Quest Details","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The unique ID of the quest to inspect"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_quest","kind":"act","impl":"imperative","description":"Creates a new quest inside a designated project. Does not automatically make it the active Main Quest.","title":"Create Quest","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"The target project ID to create this quest in"},"title":{"type":"string","description":"Clear, actionable title of the quest"},"description":{"type":"string","description":"Optional notes or requirements"},"priority":{"type":"string","enum":["low","medium","high"],"description":"Priority level (default is medium)"},"estimatedMinutes":{"type":"number","minimum":1,"maximum":600,"description":"Estimated focus duration in minutes"},"nextAction":{"type":"string","description":"Immediate first next step"}},"required":["projectId","title"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_main_quest","kind":"act","impl":"imperative","description":"Sets one existing quest as the user's active Main Quest, guaranteeing exactly one Main Quest globally. Use this when the user explicitly chooses or asks to focus on a specific quest.","title":"Set Main Quest","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The unique ID of the quest to designate as Main Quest"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_quest_progress","kind":"act","impl":"imperative","description":"Manually updates progress percentage (0-100) for quests that do NOT use step-derived progress. If the quest has steps, you must use complete_quest_step instead.","title":"Update Quest Progress","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID to update"},"progress":{"type":"number","minimum":0,"maximum":100,"description":"New progress percentage from 0 to 100"}},"required":["questId","progress"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"complete_quest_step","kind":"act","impl":"imperative","description":"Marks a specific step within a quest as completed. Automatically advances the Next Action to the subsequent step, recalculates quest progress, and awards completion XP.","title":"Complete Quest Step","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The parent quest ID"},"stepId":{"type":"string","description":"The unique ID of the step to mark completed"}},"required":["questId","stepId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_quest_step","kind":"act","impl":"imperative","description":"Appends a new step or micro-action to a quest, updating the step sequence and Next Action.","title":"Add Quest Step","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID to attach this step to"},"title":{"type":"string","description":"Step action description"},"isTiny":{"type":"boolean","description":"Whether this is an ultra-small micro-step (<5 min)"}},"required":["questId","title"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"make_next_action_smaller","kind":"act","impl":"imperative","description":"Assists a stuck user by inserting an ultra-small, frictionless micro-step right before the current action (Unstuck mode).","title":"Make Next Action Smaller","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID"},"smallerAction":{"type":"string","description":"The ultra-simple, frictionless micro-action (e.g. 'Open terminal' or 'Read lines 1-10')"}},"required":["questId","smallerAction"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_quest_blocker","kind":"act","impl":"imperative","description":"Marks a quest as blocked with an obstacle explanation, making the obstacle prominent in the UI.","title":"Set Quest Blocker","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID"},"blocker":{"type":"string","description":"Description of what is blocking progress"}},"required":["questId","blocker"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_quest_blocker","kind":"act","impl":"imperative","description":"Clears an active blocker tag from a quest once the obstacle has been resolved.","title":"Clear Quest Blocker","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID to clear blocker from"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"park_side_quest","kind":"act","impl":"imperative","description":"Parks a distracting thought or tangential idea into the Side Quest Parking Lot without interrupting the active Main Quest or breaking focus momentum.","title":"Park Side Quest Idea","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"The distracting idea or side task title"},"sourceQuestId":{"type":"string","description":"Optional source quest ID during which this idea occurred"}},"required":["title"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_side_quests","kind":"answer","impl":"imperative","description":"Lists currently parked ideas and side quests in the Parking Lot.","title":"List Side Quests","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"promote_side_quest","kind":"act","impl":"imperative","description":"Converts a parked idea from the Side Quest Parking Lot into a formal quest inside a project. Does not automatically make it the Main Quest.","title":"Promote Side Quest to Quest","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sideQuestId":{"type":"string","description":"The parked side quest ID to promote"},"projectId":{"type":"string","description":"Target project ID"},"priority":{"type":"string","enum":["low","medium","high"],"description":"Initial priority for the promoted quest (default medium)"}},"required":["sideQuestId","projectId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"save_work_context","kind":"act","impl":"imperative","description":"Saves a work context bookmark for a quest, preserving current step, Next Action, progress, and an optional note before task switches or interruptions.","title":"Save Work Context","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID to save context for"},"note":{"type":"string","description":"Optional notes about current thoughts or stopping point"},"reason":{"type":"string","enum":["manual","task-switch","interruption","session-end"],"description":"Why the context is being saved"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_resumable_context","kind":"answer","impl":"imperative","description":"Retrieves the latest valid work context available for resuming work after a break or task switch.","title":"Get Resumable Context","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"Optional quest ID to retrieve context specifically for"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"resume_work_context","kind":"act","impl":"imperative","description":"Restores focus to a previously saved work context, setting the associated quest as the active Main Quest and restoring immediate Next Action orientation.","title":"Resume Work Context","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID of the saved context to resume"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"start_focus_session","kind":"act","impl":"imperative","description":"Starts a timed deep-work Focus Session for a specific quest. Returns a conflict error if a session is already actively running.","title":"Start Focus Session","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The quest ID to focus on"},"plannedMinutes":{"type":"number","minimum":5,"maximum":180,"description":"Planned focus duration in minutes (5 to 180, default 25)"}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_focus_state","kind":"answer","impl":"imperative","description":"Returns the current focus session state: timer status (idle/running/paused/completed), elapsed seconds, remaining seconds, overtime, active quest, and Next Action.","title":"Get Focus State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"pause_focus_session","kind":"act","impl":"imperative","description":"Pauses the currently running focus timer and automatically saves the current work context.","title":"Pause Focus Session","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"resume_focus_session","kind":"act","impl":"imperative","description":"Resumes a previously paused focus session timer.","title":"Resume Focus Session","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"end_focus_session","kind":"act","impl":"imperative","description":"Concludes the active or paused focus session, records elapsed focus metrics, generates session summary stats, and awards focus completion XP.","title":"End Focus Session","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_recovery_state","kind":"answer","impl":"imperative","description":"Inspects recovery status: whether recovery prompts are enabled, pending recovery prompts, minutes since last hydration or movement, and next recommended recovery action.","title":"Get Recovery State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_recovery","kind":"act","impl":"imperative","description":"Evaluates deterministic recovery needs (water, movement, stretch, eye rest) based on work duration and recovery history without providing medical advice.","title":"Suggest Recovery Action","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"log_recovery","kind":"act","impl":"imperative","description":"Logs an optional physical recovery action (water, movement, stretch, eyes, bio, break), protecting current combo streaks and awarding recovery XP.","title":"Log Recovery Activity","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["water","movement","stretch","eyes","bio","break"],"description":"Type of recovery activity to log"}},"required":["type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_player_state","kind":"answer","impl":"imperative","description":"Returns the user's gamification profile: level, rank title, total XP, XP needed for the next level, active combo streak, best combo streak, and unlocked achievements count.","title":"Get Player State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_session_summary","kind":"answer","impl":"imperative","description":"Returns summary metrics for the most recently completed focus session (focus duration, quest title, progress delta, steps completed, and recovery actions).","title":"Get Session Summary","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_today_loadout","kind":"answer","impl":"imperative","description":"Returns the user's Daily Mission Board for today: the assigned Daily Main Mission, up to 2 Side Missions, today's recovery goals, and whether daily completion bonus has been cleared.","title":"Get Today's Loadout","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_daily_main_mission","kind":"act","impl":"imperative","description":"Assigns a Quest as the Daily Main Mission on Today's Loadout board. Optionally also sets it as the active global Main Quest.","title":"Set Daily Main Mission","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The unique ID of the quest to assign as Daily Main Mission."},"setAsGlobalMainQuest":{"type":"boolean","description":"If true, also switches the application-wide Main Quest to this quest."}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_daily_side_mission","kind":"act","impl":"imperative","description":"Adds a Quest to today's Side Missions. Enforces the maximum 2 side missions constraint.","title":"Add Daily Side Mission","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"questId":{"type":"string","description":"The unique ID of the quest to add as a side mission."}},"required":["questId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_boss_state","kind":"answer","impl":"imperative","description":"Queries boss health, progress percentage, phase statuses, and defeat state for a given Project.","title":"Get Boss Battle State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID to check for Boss Battle mode."}},"required":["projectId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"toggle_boss_mode","kind":"act","impl":"imperative","description":"Enables or disables Boss Battle HUD view for a specific Project.","title":"Toggle Boss Mode","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"The unique ID of the project."},"enabled":{"type":"boolean","description":"True to enable boss mode, false to return to standard view."}},"required":["projectId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"start_challenge","kind":"act","impl":"imperative","description":"Initiates a voluntary short challenge (timed_action, step_count, main_quest_progress, or no_switch) on an active Quest.","title":"Start Work Challenge","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["timed_action","step_count","main_quest_progress","no_switch"],"description":"The challenge preset type."},"questId":{"type":"string","description":"Optional Quest ID to bind the challenge to. Defaults to Main Quest."},"durationSeconds":{"type":"number","description":"Optional duration for timed_action challenges (e.g. 600 for 10 min)."}},"required":["type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_challenge_state","kind":"answer","impl":"imperative","description":"Returns the active challenge HUD status, remaining countdown seconds, and progress percentage.","title":"Get Challenge State","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_skill_tree","kind":"answer","impl":"imperative","description":"Returns the complete 4-branch Skill Tree (Focus, Finishing, Resilience, Recovery), unlocked count, and next available skill nodes.","title":"Get Skill Tree Progress","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/dosidequest.netlify.app.svg","apiSurface":"spec","toolCount":36}}