Initial commit
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user