Skip to main content
Glama

calendar_get_today_events

Retrieve today's scheduled events from macOS Calendar to help users stay organized and manage their daily agenda.

Instructions

Get today's events across all calendars

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler for 'calendar_get_today_events' tool. Executes AppleScript via osascript to fetch all events starting today across all calendars, formats them with calendar name and start time, and returns the list or error message.
    case 'calendar_get_today_events': try { const command = `osascript -e 'tell application "Calendar" set todayEvents to {} set todayStart to (current date) set time of todayStart to 0 set todayEnd to todayStart + (24 * 60 * 60) - 1 repeat with aCal in calendars set calName to title of aCal repeat with anEvent in events of aCal set eventStart to start date of anEvent if eventStart ≥ todayStart and eventStart ≤ todayEnd then set eventSummary to summary of anEvent set eventTime to (eventStart as string) set end of todayEvents to (eventSummary & " (" & calName & ") - " & eventTime) end if end repeat end repeat return todayEvents as string end tell'`; const { stdout, stderr } = await execAsync(command); if (stderr.trim()) { return { content: [ { type: 'text', text: `Error getting today's events: ${stderr.trim()}`, }, ], }; } const output = stdout.trim(); if (!output || output === '') { return { content: [ { type: 'text', text: 'No events scheduled for today', }, ], }; } return { content: [ { type: 'text', text: `Today's Events:\n${output}`, }, ], }; } catch (error: any) { return { content: [ { type: 'text', text: `Error executing today's events command: ${error.message}`, }, ], }; }
  • Schema definition for the 'calendar_get_today_events' tool in the ListTools response, including name, description, and empty input schema (no parameters required).
    { name: 'calendar_get_today_events', description: 'Get today\'s events across all calendars', inputSchema: { type: 'object', properties: {}, }, },
  • src/index.ts:27-358 (registration)
    Tool registration within the ListToolsRequestSchema handler, where 'calendar_get_today_events' is listed among available tools.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'discover_apps', description: 'Discover AppleScript capabilities of a macOS application', inputSchema: { type: 'object', properties: { app_name: { type: 'string', description: 'Name of the macOS application to discover', }, method: { type: 'string', description: 'Discovery method: basic, dictionary, properties, system_events, comprehensive', }, destination: { type: 'string', description: 'Directory path to save discovery results', }, }, required: ['app_name', 'method', 'destination'], }, }, { name: 'finder_get_selection', description: 'Get currently selected files/folders in Finder', inputSchema: { type: 'object', properties: {}, }, }, { name: 'finder_get_current_folder', description: 'Get path of currently viewed folder in frontmost Finder window', inputSchema: { type: 'object', properties: {}, }, }, { name: 'mail_get_accounts', description: 'Get list of all Mail account names', inputSchema: { type: 'object', properties: {}, }, }, { name: 'mail_get_inbox_count', description: 'Get unread message count in inbox', inputSchema: { type: 'object', properties: {}, }, }, { name: 'mail_get_total_inbox_count', description: 'Get total message count in inbox', inputSchema: { type: 'object', properties: {}, }, }, { name: 'contacts_search_people', description: 'Search for people by name in Contacts', inputSchema: { type: 'object', properties: { search_term: { type: 'string', description: 'Name or part of name to search for', }, }, required: ['search_term'], }, }, { name: 'contacts_get_person_info', description: 'Get detailed information for a specific person', inputSchema: { type: 'object', properties: { person_name: { type: 'string', description: 'Full name of the person to get info for', }, }, required: ['person_name'], }, }, { name: 'reminders_get_lists', description: 'Get all reminder lists with reminder counts', inputSchema: { type: 'object', properties: {}, }, }, { name: 'reminders_get_incomplete_reminders', description: 'Get incomplete reminders across all lists', inputSchema: { type: 'object', properties: { limit: { type: 'number', description: 'Maximum number of reminders to return (default: 10)', }, }, }, }, { name: 'notes_get_folders', description: 'Get all note folders with note counts', inputSchema: { type: 'object', properties: {}, }, }, { name: 'notes_get_recent_notes', description: 'Get recently modified notes', inputSchema: { type: 'object', properties: { limit: { type: 'number', description: 'Maximum number of notes to return (default: 10)', }, }, }, }, { name: 'notes_search_notes', description: 'Search notes by title or content', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for note title or content', }, }, required: ['query'], }, }, { name: 'notes_create_note', description: 'Create new note with title and content', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Note title', }, content: { type: 'string', description: 'Note content/body', }, folder: { type: 'string', description: 'Target folder name (optional, defaults to "Notes")', }, }, required: ['title', 'content'], }, }, { name: 'textedit_get_documents', description: 'Get list of open TextEdit documents', inputSchema: { type: 'object', properties: {}, }, }, { name: 'textedit_create_document', description: 'Create new TextEdit document with optional content', inputSchema: { type: 'object', properties: { content: { type: 'string', description: 'Optional initial content for the document', }, }, }, }, { name: 'calendar_get_calendars', description: 'Get all calendars with event counts', inputSchema: { type: 'object', properties: {}, }, }, { name: 'calendar_create_event', description: 'Create new calendar event', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Event title/summary', }, start_datetime: { type: 'string', description: 'Start date and time (YYYY-MM-DD HH:MM format)', }, end_datetime: { type: 'string', description: 'End date and time (YYYY-MM-DD HH:MM format)', }, calendar: { type: 'string', description: 'Target calendar name (optional, defaults to "Calendar")', }, notes: { type: 'string', description: 'Event notes/description (optional)', }, }, required: ['title', 'start_datetime', 'end_datetime'], }, }, { name: 'calendar_get_today_events', description: 'Get today\'s events across all calendars', inputSchema: { type: 'object', properties: {}, }, }, { name: 'calendar_get_upcoming_events', description: 'Get upcoming events in date range', inputSchema: { type: 'object', properties: { days: { type: 'number', description: 'Number of days ahead to look (default: 7)', }, }, }, }, { name: 'workflow_contact_to_textedit', description: 'Get contact information and create formatted TextEdit document', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Person name to look up', }, title: { type: 'string', description: 'Document title (optional)', }, }, required: ['name'], }, }, { name: 'mail_create_message', description: 'Create new email message with recipients, subject, and body', inputSchema: { type: 'object', properties: { to: { type: 'string', description: 'Recipient email address', }, subject: { type: 'string', description: 'Email subject', }, body: { type: 'string', description: 'Email body content', }, cc: { type: 'string', description: 'CC recipient email address (optional)', }, }, required: ['to', 'subject', 'body'], }, }, { name: 'mail_send_message', description: 'Send the most recently created message', inputSchema: { type: 'object', properties: {}, }, }, { name: 'reminders_create_reminder', description: 'Create new reminder with title, optional due date and list', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Reminder title', }, due_date: { type: 'string', description: 'Due date in format YYYY-MM-DD (optional)', }, list: { type: 'string', description: 'Target reminder list name (optional, defaults to "Reminders")', }, notes: { type: 'string', description: 'Reminder notes/body (optional)', }, }, required: ['title'], }, }, ], }; });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/samicokar/mcp-mac'

If you have feedback or need assistance with the MCP directory API, please join our Discord server