Marketplace calendly-automation
Automate Calendly scheduling, event management, invitee tracking, availability checks, and organization administration via Rube MCP (Composio). Always search tools first for current schemas.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/sickn33/calendly-automation" ~/.claude/skills/aiskillstore-marketplace-calendly-automation && rm -rf "$T"
skills/sickn33/calendly-automation/SKILL.mdCalendly Automation via Rube MCP
Automate Calendly operations including event listing, invitee management, scheduling link creation, availability queries, and organization administration through Composio's Calendly toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Calendly connection via
with toolkitRUBE_MANAGE_CONNECTIONScalendly - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS - Many operations require the user's Calendly URI, obtained via
CALENDLY_GET_CURRENT_USER
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONScalendly - If connection is not ACTIVE, follow the returned auth link to complete Calendly OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. List and View Scheduled Events
When to use: User wants to see their upcoming, past, or filtered Calendly events
Tool sequence:
- Get authenticated user URI and organization URI [Prerequisite]CALENDLY_GET_CURRENT_USER
- List events scoped by user, organization, or group [Required]CALENDLY_LIST_EVENTS
- Get detailed info for a specific event by UUID [Optional]CALENDLY_GET_EVENT
Key parameters:
: Full Calendly API URI (e.g.,user
) - NOThttps://api.calendly.com/users/{uuid}"me"
: Full organization URI for org-scoped queriesorganization
:status
or"active""canceled"
/min_start_time
: UTC timestamps (e.g.,max_start_time
)2024-01-01T00:00:00.000000Z
: Filter events by invitee email (filter only, not a scope)invitee_email
:sort
or"start_time:asc""start_time:desc"
: Results per page (default 20)count
: Pagination token from previous responsepage_token
Pitfalls:
- Exactly ONE of
,user
, ororganization
must be provided - omitting or combining scopes failsgroup - The
parameter requires the full API URI, notuser
- use"me"
firstCALENDLY_GET_CURRENT_USER
is a filter, not a scope; you still need one of user/organization/groupinvitee_email- Pagination uses
+count
; loop untilpage_token
is absent for complete resultspage_token - Admin rights may be needed for organization or group scope queries
2. Manage Event Invitees
When to use: User wants to see who is booked for events or get invitee details
Tool sequence:
- Find the target event(s) [Prerequisite]CALENDLY_LIST_EVENTS
- List all invitees for a specific event [Required]CALENDLY_LIST_EVENT_INVITEES
- Get detailed info for a single invitee [Optional]CALENDLY_GET_EVENT_INVITEE
Key parameters:
: Event UUID (foruuid
)LIST_EVENT_INVITEES
+event_uuid
: Both required forinvitee_uuidGET_EVENT_INVITEE
: Filter invitees by email addressemail
:status
or"active""canceled"
:sort
or"created_at:asc""created_at:desc"
: Results per page (default 20)count
Pitfalls:
- The
parameter foruuid
is the event UUID, not the invitee UUIDCALENDLY_LIST_EVENT_INVITEES - Paginate using
until absent for complete invitee listspage_token - Canceled invitees are excluded by default; use
to see themstatus: "canceled"
3. Create Scheduling Links and Check Availability
When to use: User wants to generate a booking link or check available time slots
Tool sequence:
- Get user URI [Prerequisite]CALENDLY_GET_CURRENT_USER
- List available event types [Required]CALENDLY_LIST_USER_S_EVENT_TYPES
- Check available slots for an event type [Optional]CALENDLY_LIST_EVENT_TYPE_AVAILABLE_TIMES
- Generate a single-use scheduling link [Required]CALENDLY_CREATE_SCHEDULING_LINK
- View user's availability schedules [Optional]CALENDLY_LIST_USER_AVAILABILITY_SCHEDULES
Key parameters:
: Event type URI (e.g.,owner
)https://api.calendly.com/event_types/{uuid}
:owner_type
(default)"EventType"
: Must be exactlymax_event_count
for single-use links1
/start_time
: UTC timestamps for availability queries (max 7-day range)end_time
: Boolean to filter active/inactive event typesactive
: User URI for event type listinguser
Pitfalls:
can return 403 if token lacks rights or owner URI is invalidCALENDLY_CREATE_SCHEDULING_LINK
requires UTC timestamps and max 7-day range; split longer searchesCALENDLY_LIST_EVENT_TYPE_AVAILABLE_TIMES- Available times results are NOT paginated - all results returned in one response
- Event type URIs must be full API URIs (e.g.,
)https://api.calendly.com/event_types/...
4. Cancel Events
When to use: User wants to cancel a scheduled Calendly event
Tool sequence:
- Find the event to cancel [Prerequisite]CALENDLY_LIST_EVENTS
- Confirm event details before cancellation [Prerequisite]CALENDLY_GET_EVENT
- Check who will be affected [Optional]CALENDLY_LIST_EVENT_INVITEES
- Cancel the event [Required]CALENDLY_CANCEL_EVENT
Key parameters:
: Event UUID to canceluuid
: Optional cancellation reason (may be included in notification to invitees)reason
Pitfalls:
- Cancellation is IRREVERSIBLE - always confirm with the user before calling
- Cancellation may trigger notifications to invitees
- Only active events can be canceled; already-canceled events return errors
- Get explicit user confirmation before executing
CALENDLY_CANCEL_EVENT
5. Manage Organization and Invitations
When to use: User wants to invite members, manage organization, or handle org invitations
Tool sequence:
- Get user and organization context [Prerequisite]CALENDLY_GET_CURRENT_USER
- Get organization details [Optional]CALENDLY_GET_ORGANIZATION
- Check existing invitations [Optional]CALENDLY_LIST_ORGANIZATION_INVITATIONS
- Send an org invitation [Required]CALENDLY_CREATE_ORGANIZATION_INVITATION
- Revoke a pending invitation [Optional]CALENDLY_REVOKE_USER_S_ORGANIZATION_INVITATION
- Remove a member [Optional]CALENDLY_REMOVE_USER_FROM_ORGANIZATION
Key parameters:
: Organization UUIDuuid
: Email address of user to inviteemail
: Filter invitations bystatus
,"pending"
, or"accepted""declined"
Pitfalls:
- Only org owners/admins can manage invitations and removals; others get authorization errors
- Duplicate active invitations for the same email are rejected - check existing invitations first
- Organization owners cannot be removed via
CALENDLY_REMOVE_USER_FROM_ORGANIZATION - Invitation statuses include pending, accepted, declined, and revoked - handle each appropriately
Common Patterns
ID Resolution
Calendly uses full API URIs as identifiers, not simple IDs:
- Current user URI:
returnsCALENDLY_GET_CURRENT_USER
(e.g.,resource.uri
)https://api.calendly.com/users/{uuid} - Organization URI: Found in current user response at
resource.current_organization - Event UUID: Extract from event URI or list responses
- Event type URI: From
responseCALENDLY_LIST_USER_S_EVENT_TYPES
Important: Never use
"me" as a user parameter in list/filter endpoints. Always resolve to the full URI first.
Pagination
Most Calendly list endpoints use token-based pagination:
- Set
for page size (default 20)count - Follow
frompage_token
until absentpagination.next_page_token - Sort with
format (e.g.,field:direction
,start_time:asc
)created_at:desc
Time Handling
- All timestamps must be in UTC format:
yyyy-MM-ddTHH:mm:ss.ffffffZ - Use
/min_start_time
for date range filtering on eventsmax_start_time - Available times queries have a maximum 7-day range; split longer searches into multiple calls
Known Pitfalls
URI Formats
- All entity references use full Calendly API URIs (e.g.,
)https://api.calendly.com/users/{uuid} - Never pass bare UUIDs where URIs are expected, and never pass
to list endpoints"me" - Extract UUIDs from URIs when tools expect UUID parameters (e.g.,
)CALENDLY_GET_EVENT
Scope Requirements
requires exactly one scope (user, organization, or group) - no more, no lessCALENDLY_LIST_EVENTS- Organization/group scoped queries may require admin privileges
- Token scope determines which operations are available; 403 errors indicate insufficient permissions
Data Relationships
- Events have invitees (attendees who booked)
- Event types define scheduling pages (duration, availability rules)
- Organizations contain users and groups
- Scheduling links are tied to event types, not directly to events
Rate Limits
- Calendly API has rate limits; avoid tight loops over large datasets
- Paginate responsibly and add delays for batch operations
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Get current user | | (none) |
| Get user by UUID | | |
| List events | | , , |
| Get event details | | |
| Cancel event | | , |
| List invitees | | , , |
| Get invitee | | , |
| List event types | | , |
| Get event type | | |
| Check availability | | event type URI, , |
| Create scheduling link | | , |
| List availability schedules | | user URI |
| Get organization | | |
| Invite to org | | , |
| List org invitations | | , |
| Revoke org invitation | | org UUID, invitation UUID |
| Remove from org | | membership UUID |