{"ok":true,"site":{"host":"letgitwebmcp.com","url":"https://letgitwebmcp.com/month-view","type":"live","desc":"A feature-rich calendar application built with Next.js, TypeScript, and Tailwind CSS. This project provides a modern, responsive interface for managing events and schedules with multiple viewing…","tools":[{"name":"calendar_show_history","kind":"answer","impl":"imperative","description":"Show the history of calendar changes with commit messages, authors, and timestamps.\nUse this to see what changes have been made and by whom.\n\nEach history entry can be used with calendar_undo to rollback to that state.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"limit":{"type":"number","default":10,"description":"Maximum number of history entries to return (default: 10)"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"currentBranch":{"type":"string","description":"Current git branch name"},"totalEntries":{"type":"number","description":"Total number of commits in history"},"entries":{"type":"array","items":{"type":"object","properties":{"position":{"type":"number","description":"Position in history (0 = current)"},"commitId":{"type":"string","description":"Git commit hash"},"message":{"type":"string","description":"Commit message"},"author":{"type":"string","description":"Author name (agent ID if from agent commit)"},"timestamp":{"type":"string","description":"ISO timestamp"},"canRollbackTo":{"type":"boolean","description":"Whether this commit can be rolled back to"},"changes":{"type":"object","properties":{"eventsAdded":{"type":"number"},"eventsRemoved":{"type":"number"},"eventsModified":{"type":"number"}},"required":["eventsAdded","eventsRemoved","eventsModified"],"additionalProperties":false,"description":"Change summary (if available from agent commit)"}},"required":["position","commitId","message","author","timestamp","canRollbackTo"],"additionalProperties":false},"description":"History entries"},"message":{"type":"string","description":"Human-readable summary"},"tip":{"type":"string","description":"Helpful tip for the user"}},"required":["currentBranch","totalEntries","entries","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_undo","kind":"act","impl":"imperative","description":"Undo calendar changes by rolling back to a previous state.\n\nYou can either:\n- Undo a number of steps: { \"steps\": 1 } to undo the last change\n- Rollback to a specific commit: { \"commitId\": \"abc123...\" }\n\nUse calendar_show_history first to see available states to rollback to.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"steps":{"type":"number","description":"Number of changes to undo (default: 1). Use this OR commitId, not both."},"commitId":{"type":"string","description":"Specific commit ID to rollback to (get from calendar_show_history)"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the undo was successful"},"message":{"type":"string","description":"Human-readable result message"},"rolledBackTo":{"type":"string","description":"Commit ID that was rolled back to"},"stepsUndone":{"type":"number","description":"Number of steps undone"}},"required":["success","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_compare_states","kind":"act","impl":"imperative","description":"Compare calendar states between two commits to see what changed.\n\nUseful for understanding the difference between the current state and a previous state,\nor between any two points in history.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"oldCommitId":{"type":"string","description":"The older commit to compare from (defaults to one step back)"},"newCommitId":{"type":"string","description":"The newer commit to compare to (defaults to current state)"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"hasChanges":{"type":"boolean","description":"Whether there are any differences"},"oldCommit":{"type":"string","description":"The older commit being compared"},"newCommit":{"type":"string","description":"The newer commit being compared"},"events":{"type":"object","properties":{"added":{"type":"array","items":{},"description":"Events added"},"removed":{"type":"array","items":{},"description":"Events removed"},"modified":{"type":"array","items":{},"description":"Events modified"}},"required":["added","removed","modified"],"additionalProperties":false,"description":"Event changes"},"message":{"type":"string","description":"Human-readable summary"}},"required":["hasChanges","oldCommit","newCommit","events","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_start_sandbox","kind":"act","impl":"imperative","description":"Start an isolated sandbox session for making calendar changes.\n\nWhen in a sandbox:\n- Your changes won't affect other agents or the main calendar\n- You can experiment freely and rollback if needed\n- Changes are only applied to main when you explicitly commit them\n\nUse this when you want to make multiple changes that should be reviewed together,\nor when multiple agents need to work on the calendar concurrently.","annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"agentName":{"type":"string","description":"A unique identifier for this agent session (e.g., 'claude-scheduler')"},"modelName":{"type":"string","default":"claude","description":"The AI model name (e.g., 'claude', 'gpt4', 'gemini'). Used for tracking."}},"required":["agentName"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether sandbox creation succeeded"},"message":{"type":"string","description":"Human-readable result message"},"branch":{"type":"string","description":"Git branch name for the sandbox"},"agentId":{"type":"string","description":"Unique agent identifier"},"tips":{"type":"array","items":{"type":"string"},"description":"Helpful tips for using the sandbox"}},"required":["success","message","branch","agentId","tips"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_preview_changes","kind":"act","impl":"imperative","description":"Preview what changes this agent has pending compared to the main calendar.\n\nShows:\n- Events that were added\n- Events that were removed\n- Events that were modified\n\nUse this before committing to review your changes.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"agentId":{"type":"string","description":"Agent ID or branch name to preview (defaults to current agent if in a sandbox)"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"hasChanges":{"type":"boolean","description":"Whether the agent has pending changes"},"agentId":{"type":"string","description":"Agent ID being previewed"},"currentBranch":{"type":"string","description":"Current branch name"},"summary":{"type":"object","properties":{"eventsAdded":{"type":"number"},"eventsRemoved":{"type":"number"},"eventsModified":{"type":"number"}},"required":["eventsAdded","eventsRemoved","eventsModified"],"additionalProperties":false,"description":"Summary of changes"},"message":{"type":"string","description":"Human-readable summary"},"tip":{"type":"string","description":"Helpful tip"}},"required":["hasChanges","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_commit_changes","kind":"act","impl":"imperative","description":"Commit your sandbox changes to the main calendar.\n\nThis merges all your pending changes into the shared calendar that everyone sees.\nUse calendar_preview_changes first to review what will be committed.","annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"agentId":{"type":"string","description":"Agent ID or branch name to commit (defaults to current agent)"},"message":{"type":"string","description":"Description of the changes being committed (for the audit log)"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the commit succeeded"},"message":{"type":"string","description":"Human-readable result message"},"committed":{"type":"object","properties":{"eventsAdded":{"type":"number"},"eventsRemoved":{"type":"number"},"eventsModified":{"type":"number"}},"required":["eventsAdded","eventsRemoved","eventsModified"],"additionalProperties":false,"description":"What was committed"},"tip":{"type":"string","description":"Helpful tip"}},"required":["success","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_list_agents","kind":"act","impl":"imperative","description":"See what AI agents are currently working on the calendar.\n\nShows all active sandbox sessions with their last activity time.\nUseful for coordination when multiple agents are making changes.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"agents":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Agent identifier"},"model":{"type":"string","description":"AI model name"},"branch":{"type":"string","description":"Git branch name"},"startedAt":{"type":"string","description":"ISO timestamp when session started"},"lastActivity":{"type":"string","description":"ISO timestamp of last activity"}},"required":["agentId","model","branch","startedAt","lastActivity"],"additionalProperties":false},"description":"List of active agents"},"totalActive":{"type":"number","description":"Total number of active agents"},"currentBranch":{"type":"string","description":"Currently active branch"},"message":{"type":"string","description":"Human-readable summary"},"tip":{"type":"string","description":"Helpful tip"}},"required":["agents","totalActive","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_switch_branch","kind":"act","impl":"imperative","description":"Switch to a different calendar branch.\n\nThis is an advanced tool for viewing what different agents have done.\n- Switch to an agent's branch to see their pending changes\n- Switch to \"main\" or \"default\" to see the shared calendar state","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"branch":{"type":"string","description":"Branch name to switch to ('main', 'default', or an agent branch name)"}},"required":["branch"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the switch succeeded"},"message":{"type":"string","description":"Human-readable result message"},"currentBranch":{"type":"string","description":"The branch that is now active"},"agent":{"type":"object","properties":{"id":{"type":"string"},"model":{"type":"string"}},"required":["id","model"],"additionalProperties":false,"description":"Agent info if switched to an agent branch"}},"required":["success","message","currentBranch"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_show_preview","kind":"act","impl":"imperative","description":"Show a visual preview of an agent's pending changes in the calendar UI.\n\nWhen activated:\n- Added events appear as green dashed \"phantom\" events\n- Modified events appear as amber dashed events showing the new state\n- Removed events appear as red dashed strikethrough events\n- A banner appears at the top with Accept/Reject buttons\n\nThis lets users visually review AI-proposed changes before approving them.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent whose changes to preview"}},"required":["agentId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether preview mode was activated"},"message":{"type":"string","description":"Human-readable result message"},"agentId":{"type":"string","description":"Agent being previewed"},"changes":{"type":"object","properties":{"added":{"type":"number"},"modified":{"type":"number"},"removed":{"type":"number"}},"required":["added","modified","removed"],"additionalProperties":false,"description":"Summary of pending changes"},"tip":{"type":"string","description":"Helpful tip for the user"}},"required":["success","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_hide_preview","kind":"act","impl":"imperative","description":"Exit the agent preview mode and return to normal calendar view.\n\nThis hides all phantom events and removes the preview banner.\nThe agent's changes are NOT affected - they remain on their branch.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether preview mode was deactivated"},"message":{"type":"string","description":"Human-readable result message"}},"required":["success","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_get_preview_status","kind":"answer","impl":"imperative","description":"Check if the calendar is currently in preview mode.\n\nReturns information about which agent is being previewed and what changes are pending.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"isPreviewMode":{"type":"boolean","description":"Whether preview mode is active"},"previewAgentId":{"type":["string","null"],"description":"ID of the agent being previewed"},"loading":{"type":"boolean","description":"Whether preview data is loading"},"pendingChanges":{"type":"object","properties":{"added":{"type":"number"},"modified":{"type":"number"},"removed":{"type":"number"},"total":{"type":"number"}},"required":["added","modified","removed","total"],"additionalProperties":false,"description":"Summary of pending changes"},"message":{"type":"string","description":"Human-readable status message"}},"required":["isPreviewMode","previewAgentId","loading","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_list_events","kind":"answer","impl":"imperative","description":"List all calendar events, optionally filtered by date range or user.\n\nReturns event IDs needed for update/delete operations.\nShows events from the current branch (main or agent sandbox).","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"startDate":{"type":"string","description":"Filter events starting from this date (YYYY-MM-DD)"},"endDate":{"type":"string","description":"Filter events ending before this date (YYYY-MM-DD)"},"userId":{"type":"string","description":"Filter events by user ID"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"color":{"type":"string"},"user":{"type":"string"},"description":{"type":"string"}},"required":["id","title","startDate","endDate","color","user"],"additionalProperties":false},"description":"List of events"},"count":{"type":"number","description":"Total number of events returned"}},"required":["events","count"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_update_event","kind":"act","impl":"imperative","description":"Update an existing calendar event. Provide only the fields you want to change.\n\nChanges are made on the current branch. Use calendar_commit_changes to save to main.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"eventId":{"type":"number","description":"The ID of the event to update"},"title":{"type":"string","description":"New event title"},"description":{"type":"string","description":"New event description"},"startDate":{"type":"string","description":"New start date/time (ISO format or 'YYYY-MM-DDTHH:MM')"},"endDate":{"type":"string","description":"New end date/time (ISO format or 'YYYY-MM-DDTHH:MM')"},"color":{"type":"string","enum":["blue","green","red","yellow","purple","orange","gray"],"description":"New event color"},"userId":{"type":"string","description":"New user ID"}},"required":["eventId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the update succeeded"},"message":{"type":"string","description":"Human-readable result message"},"event":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"color":{"type":"string"},"user":{"type":"string"}},"required":["id","title","startDate","endDate","color","user"],"additionalProperties":false,"description":"The updated event"}},"required":["success","message","event"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_delete_event","kind":"transact","impl":"imperative","description":"Delete a calendar event by ID.\n\nChanges are made on the current branch. Use calendar_commit_changes to save to main.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","properties":{"eventId":{"type":"number","description":"The ID of the event to delete"}},"required":["eventId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the deletion succeeded"},"message":{"type":"string","description":"Human-readable result message"},"deletedEvent":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"wasScheduledFor":{"type":"string"}},"required":["id","title","wasScheduledFor"],"additionalProperties":false,"description":"Information about the deleted event"}},"required":["success","message","deletedEvent"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_get_state","kind":"answer","impl":"imperative","description":"Get the current calendar state including view, date, filter, settings, and available users. Use this to understand the current context before making changes.","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_filter_by_user","kind":"act","impl":"imperative","description":"Filter calendar events to show only events for a specific user, or 'all' to show everyone. The view updates immediately to reflect the filter.","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID to filter by, or 'all' to show all users. Get user IDs from calendar_get_state."}},"required":["userId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_navigate","kind":"act","impl":"imperative","description":"Navigate the calendar to a specific view and/or date.\n\nAvailable views: day, week, month, year, agenda\n\nNOTE: Navigation happens AFTER this tool returns. The page will change but you'll\nstill receive the success response. This is expected behavior.\n\nExamples:\n- Show today in week view: { \"view\": \"week\", \"today\": true }\n- Go to specific date: { \"date\": \"2025-12-25\" }\n- Switch to month view: { \"view\": \"month\" }","annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["day","week","month","year","agenda"],"description":"Calendar view to switch to"},"date":{"type":"string","description":"Date to navigate to (YYYY-MM-DD format)"},"today":{"type":"boolean","description":"Set to true to navigate to today's date"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether navigation was initiated"},"message":{"type":"string","description":"Human-readable result message"},"navigatingTo":{"type":"object","properties":{"view":{"type":"string"},"date":{"type":"string"}},"required":["date"],"additionalProperties":false,"description":"Where the calendar is navigating to"}},"required":["success","message","navigatingTo"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_schedule_meeting","kind":"act","impl":"imperative","description":"Create a new calendar event. This is the PRIMARY way to create events.\n\nExample: Schedule a 1-hour meeting tomorrow at 2pm:\n{ \"title\": \"Team Sync\", \"date\": \"2025-12-08\", \"startTime\": \"14:00\", \"durationMinutes\": 60 }\n\nAfter creating events, use calendar_commit_changes to save them to the main calendar,\nor use calendar_show_preview to show the user what you've created.","annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"Meeting title"},"description":{"type":"string","default":"","description":"Meeting description (optional)"},"date":{"type":"string","description":"Date of the meeting (YYYY-MM-DD format, e.g., '2025-12-08')"},"startTime":{"type":"string","description":"Start time in 24h format (HH:MM, e.g., '14:00' for 2pm)"},"durationMinutes":{"type":"number","default":60,"description":"Duration in minutes (default: 60)"},"color":{"type":"string","enum":["blue","green","red","yellow","purple","orange","gray"],"default":"blue","description":"Event color (default: blue)"},"userId":{"type":"string","description":"User ID to assign (uses first user if not specified). Get IDs from calendar_get_state."}},"required":["title","date","startTime"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was created"},"message":{"type":"string","description":"Human-readable result message"},"event":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"color":{"type":"string"},"user":{"type":"string"}},"required":["id","title","startDate","endDate","color","user"],"additionalProperties":false,"description":"The created event"},"tip":{"type":"string","description":"Helpful next step"}},"required":["success","message","event"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"},{"name":"calendar_find_free_time","kind":"answer","impl":"imperative","description":"Find available time slots on a given day. Use this BEFORE scheduling to avoid conflicts.\n\nReturns a list of free time slots that meet the minimum duration requirement.\nChecks against all events on the current branch (main or agent sandbox).","annotations":{"readOnlyHint":true,"idempotentHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"date":{"type":"string","description":"Date to check (YYYY-MM-DD format, e.g., '2025-12-08')"},"durationMinutes":{"type":"number","default":60,"description":"Minimum duration needed in minutes (default: 60)"},"workingHoursOnly":{"type":"boolean","default":true,"description":"Only show slots during working hours 9am-5pm (default: true)"},"userId":{"type":"string","description":"Check availability for a specific user only"}},"required":["date"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"date":{"type":"string","description":"The date that was checked"},"freeSlots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","description":"Start time (HH:MM)"},"end":{"type":"string","description":"End time (HH:MM)"},"durationMinutes":{"type":"number","description":"Duration in minutes"}},"required":["start","end","durationMinutes"],"additionalProperties":false},"description":"Available time slots"},"totalFreeMinutes":{"type":"number","description":"Total free time in minutes"},"existingEventsCount":{"type":"number","description":"Number of existing events on this day"},"message":{"type":"string","description":"Human-readable summary"}},"required":["date","freeSlots","totalFreeMinutes","existingEventsCount","message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/month-view"}],"category":"Developer Tools","favicon":"/favicons/letgitwebmcp.com.png","apiSurface":"spec","toolCount":19}}