Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:49:50 +08:00
commit adc4b2be25
147 changed files with 24716 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
mxcp: 1
tool:
name: get_calendar
title: Get Calendar Details
description: |
Get detailed information for a specific calendar by ID.
Returns calendar metadata including timezone, access role, and display properties.
Example usage:
- "Get details for my primary calendar"
- "Show me information about the work@company.com calendar"
- "What timezone is my calendar set to?"
tags:
- google-calendar
- calendars
- get
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: calendar_id
type: string
description: "Calendar identifier or 'primary' for main calendar"
default: "primary"
examples: ["primary", "work@company.com", "team@company.com"]
return:
type: object
description: "Calendar details and metadata"
properties:
id:
type: string
description: "Calendar identifier"
summary:
type: string
description: "Calendar name/title"
description:
type: string
description: "Calendar description"
timeZone:
type: string
description: "IANA timezone identifier"
accessRole:
type: string
description: "User's access level"
primary:
type: boolean
description: "Whether this is user's primary calendar"
backgroundColor:
type: string
description: "Background color hex code"
foregroundColor:
type: string
description: "Foreground color hex code"
selected:
type: boolean
description: "Whether calendar is selected in UI"
hidden:
type: boolean
description: "Whether calendar is hidden from list"
required: ["id", "summary", "timeZone", "accessRole"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,96 @@
mxcp: 1
tool:
name: get_event
title: Get Event Details
description: |
Retrieve detailed information for a specific event by ID.
Returns complete event data in simplified format optimized for LLM use.
Example usage:
- "Show me details for event abc123 in my primary calendar"
- "Get full information about that meeting I mentioned"
- "What are the attendees for event xyz789?"
tags:
- google-calendar
- events
- get
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: calendar_id
type: string
description: "Calendar containing the event"
examples: ["primary", "work@company.com", "team-calendar@company.com"]
- name: event_id
type: string
description: "Event identifier"
examples: ["abc123def456", "event_id_example", "recurring_event_20240115T090000Z"]
return:
type: object
description: "Complete event details"
properties:
id:
type: string
description: "Event identifier"
summary:
type: string
description: "Event title"
description:
type: string
description: "Event description"
location:
type: string
description: "Event location"
start_time:
type: string
format: date-time
description: "Event start time"
end_time:
type: string
format: date-time
description: "Event end time"
all_day:
type: boolean
description: "Whether this is an all-day event"
time_zone:
type: string
description: "Event timezone"
attendees:
type: array
description: "Event attendees"
items:
type: object
properties:
email:
type: string
description: "Attendee email"
displayName:
type: string
description: "Attendee name"
responseStatus:
type: string
description: "Response status"
status:
type: string
description: "Event status"
htmlLink:
type: string
description: "Google Calendar web URL"
created:
type: string
format: date-time
description: "Creation timestamp"
updated:
type: string
format: date-time
description: "Last update timestamp"
recurrence:
type: array
description: "Recurrence rules"
items:
type: string
required: ["id", "summary", "start_time", "end_time", "htmlLink", "status"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,83 @@
mxcp: 1
tool:
name: get_freebusy
title: Check Calendar Availability
description: |
Check free/busy status across multiple calendars for a specified time range.
Useful for finding meeting slots and checking availability before scheduling.
Example usage:
- "Check my availability tomorrow from 9 AM to 5 PM"
- "Find free time slots across my work and personal calendars"
- "When am I free for a meeting this week?"
- "Check availability for multiple team members' calendars"
tags:
- google-calendar
- freebusy
- availability
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: calendar_ids
type: array
description: "List of calendar IDs to check (use 'primary' for main calendar)"
items:
type: string
description: "Calendar identifier"
minItems: 1
examples: [["primary"], ["primary", "work@company.com"], ["team@company.com", "resources@company.com"]]
- name: time_min
type: string
format: date-time
description: "Start time for availability check (RFC3339 format)"
examples: ["2024-01-15T09:00:00Z", "2024-01-15T09:00:00-08:00"]
- name: time_max
type: string
format: date-time
description: "End time for availability check (RFC3339 format)"
examples: ["2024-01-15T17:00:00Z", "2024-01-15T17:00:00-08:00"]
return:
type: object
description: "Free/busy information for requested calendars"
properties:
time_min:
type: string
format: date-time
description: "Query start time"
time_max:
type: string
format: date-time
description: "Query end time"
calendars:
type: array
description: "Per-calendar availability information"
items:
type: object
properties:
calendar_id:
type: string
description: "Calendar identifier"
busy:
type: array
description: "Busy time periods"
items:
type: object
properties:
start:
type: string
format: date-time
description: "Busy period start"
end:
type: string
format: date-time
description: "Busy period end"
errors:
type: array
description: "API errors for this calendar"
items:
type: object
required: ["time_min", "time_max", "calendars"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,84 @@
mxcp: 1
tool:
name: list_calendars
title: List Google Calendars
description: |
List all calendars accessible to the authenticated user.
Returns calendars with their access permissions, timezones, and display properties.
Example usage:
- "Show me all my calendars"
- "List calendars I can write to" (with min_access_role: "writer")
- "What calendars do I have access to?"
- "Show me my work calendars" (then filter by name)
tags:
- google-calendar
- calendars
- list
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: show_hidden
type: boolean
description: "Include hidden calendars in results"
default: false
examples: [false, true]
- name: show_deleted
type: boolean
description: "Include deleted calendars in results"
default: false
examples: [false, true]
- name: max_results
type: integer
description: "Maximum number of calendars to return"
default: 100
minimum: 1
maximum: 250
examples: [10, 50, 100]
- name: min_access_role
type: string
description: "Filter by minimum access role"
enum: ["freeBusyReader", "owner", "reader", "writer"]
default: null
examples: ["reader", "writer", "owner"]
return:
type: array
description: "List of accessible calendars"
items:
type: object
properties:
id:
type: string
description: "Calendar identifier (email address or calendar ID)"
summary:
type: string
description: "Calendar name/title"
description:
type: string
description: "Calendar description"
timeZone:
type: string
description: "IANA timezone identifier"
accessRole:
type: string
description: "User's access level"
primary:
type: boolean
description: "Whether this is user's primary calendar"
backgroundColor:
type: string
description: "Background color hex code"
foregroundColor:
type: string
description: "Foreground color hex code"
selected:
type: boolean
description: "Whether calendar is selected in UI"
hidden:
type: boolean
description: "Whether calendar is hidden from list"
required: ["id", "summary", "timeZone", "accessRole"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,153 @@
mxcp: 1
tool:
name: list_events
title: List Calendar Events
description: |
List events from a specific calendar with optional time filtering and pagination.
Returns events in simplified format optimized for LLM consumption.
Example usage:
- "What's on my calendar today?" (with time_min/time_max for today)
- "Show me this week's meetings" (with time range for current week)
- "List all events in my work calendar" (with specific calendar_id)
- "What meetings do I have next month?" (with future time range)
tags:
- google-calendar
- events
- list
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: calendar_id
type: string
description: "Calendar to query ('primary' or specific calendar ID)"
default: "primary"
examples: ["primary", "work@company.com", "team-calendar@company.com"]
- name: time_min
type: string
format: date-time
description: "Lower bound for event start times (RFC3339 format)"
default: null
examples: ["2024-01-15T00:00:00Z", "2024-01-15T09:00:00-08:00"]
- name: time_max
type: string
format: date-time
description: "Upper bound for event start times (RFC3339 format)"
default: null
examples: ["2024-01-15T23:59:59Z", "2024-01-15T17:00:00-08:00"]
- name: max_results
type: integer
description: "Maximum number of events to return"
default: 250
minimum: 1
maximum: 2500
examples: [10, 50, 250]
- name: single_events
type: boolean
description: "Whether to expand recurring events into instances"
default: true
examples: [true, false]
- name: order_by
type: string
description: "Sort order for events"
enum: ["startTime", "updated"]
default: "startTime"
examples: ["startTime", "updated"]
- name: page_token
type: string
description: "Token for pagination"
default: null
examples: ["CAESGjBpNDd2Nmp2Zml2cXRwYjBpOXA", "next_page_token_example"]
return:
type: object
description: "Event search results with pagination"
properties:
events:
type: array
description: "Matching events"
items:
type: object
description: "Complete event information with simplified time handling"
properties:
id:
type: string
description: "Event identifier"
summary:
type: string
description: "Event title"
description:
type: string
description: "Event description"
location:
type: string
description: "Event location"
start_time:
type: string
format: date-time
description: "Event start time (timezone-aware)"
end_time:
type: string
format: date-time
description: "Event end time (timezone-aware)"
all_day:
type: boolean
description: "Whether this is an all-day event"
time_zone:
type: string
description: "Event timezone (if different from calendar)"
attendees:
type: array
description: "Event attendees"
items:
type: object
creator:
type: object
description: "Event creator"
organizer:
type: object
description: "Event organizer"
status:
type: string
description: "Event status"
htmlLink:
type: string
description: "Google Calendar web URL for this event"
created:
type: string
format: date-time
description: "Event creation timestamp (timezone-aware)"
updated:
type: string
format: date-time
description: "Last update timestamp (timezone-aware)"
recurrence:
type: array
description: "Recurrence rules in RRULE format"
items:
type: string
reminders:
type: object
description: "Reminder settings"
transparency:
type: string
description: "Event transparency"
visibility:
type: string
description: "Event visibility"
calendar_id:
type: string
description: "Calendar containing this event"
etag:
type: string
description: "Event ETag for change detection"
next_page_token:
type: string
description: "Token for pagination"
total_results:
type: integer
description: "Total number of matching events"
required: ["events"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,97 @@
mxcp: 1
tool:
name: search_events
title: Search Calendar Events
description: |
Search for events matching a text query. Searches across event titles, descriptions,
locations, and attendee information with optional time filtering.
Example usage:
- "Find all meetings with John" (q: "John")
- "Search for events about project Alpha" (q: "project Alpha")
- "Find meetings in the conference room" (q: "conference room")
- "Show me all standup meetings this month" (q: "standup" with time range)
tags:
- google-calendar
- events
- search
annotations:
readOnlyHint: true
idempotentHint: true
parameters:
- name: q
type: string
description: "Free text search query (searches title, description, location, attendees)"
examples: ["John Smith", "project Alpha", "conference room", "standup meeting"]
- name: calendar_id
type: string
description: "Calendar to search ('primary' or specific calendar ID)"
default: "primary"
examples: ["primary", "work@company.com", "team-calendar@company.com"]
- name: time_min
type: string
format: date-time
description: "Earliest event start time to include (RFC3339 format)"
default: null
examples: ["2024-01-15T00:00:00Z", "2024-01-15T09:00:00-08:00"]
- name: time_max
type: string
format: date-time
description: "Latest event start time to include (RFC3339 format)"
default: null
examples: ["2024-01-15T23:59:59Z", "2024-01-15T17:00:00-08:00"]
- name: max_results
type: integer
description: "Maximum number of events to return"
default: 250
minimum: 1
maximum: 2500
examples: [10, 50, 250]
- name: page_token
type: string
description: "Token for pagination"
default: null
examples: ["CAESGjBpNDd2Nmp2Zml2cXRwYjBpOXA", "next_page_token_example"]
return:
type: object
description: "Search results with matching events"
properties:
events:
type: array
description: "Matching events"
items:
type: object
properties:
id:
type: string
description: "Event identifier"
summary:
type: string
description: "Event title"
start_time:
type: string
format: date-time
description: "Event start time"
end_time:
type: string
format: date-time
description: "Event end time"
location:
type: string
description: "Event location"
description:
type: string
description: "Event description"
htmlLink:
type: string
description: "Google Calendar web URL"
next_page_token:
type: string
description: "Token for next page of results"
total_results:
type: integer
description: "Number of results in current page"
required: ["events"]
language: python
source:
file: ../python/google_calendar_client.py

View File

@@ -0,0 +1,53 @@
mxcp: 1
tool:
name: whoami
title: Current User Information
description: |
Get the current authenticated user's information (id, email, name) from Google OAuth context.
Use this tool to verify authentication status and get user profile data.
Example usage:
- "Who am I logged in as?"
- "What's my Google account information?"
- "Show me my user profile"
tags:
- google-calendar
- user
- auth
annotations:
readOnlyHint: true
idempotentHint: true
parameters: []
return:
type: object
description: Current user information from Google OAuth profile
properties:
id:
type: string
description: Google user ID (subject)
email:
type: string
description: User's email address
name:
type: string
description: User's full display name
given_name:
type: string
description: User's first name
family_name:
type: string
description: User's last name
picture:
type: string
description: User's profile picture URL
locale:
type: string
description: User's locale (e.g., 'en-US')
verified_email:
type: boolean
description: Whether email address is verified
required: ["id", "email", "name"]
language: python
source:
file: ../python/google_calendar_client.py
# NOTE: tests section omitted - OAuth tools cannot be tested via mxcp CLI