Caly: Managing Bookings
Reviews and changes the user's Caly bookings: lists upcoming, past, cancelled or unconfirmed meetings, looks one up by attendee or time, reschedules it to a free slot, or cancels i…
Devino Solutions
@devino
Install
$ openclaw skills install @devino/caly-managing-bookingsCaly: managing bookings
Find the right booking, then read, move or cancel it without surprising anyone.
Connecting and calling the tools
Every tool in this skill comes from the caly MCP server, the Caly connector, and is written here as caly:<tool>.
- Tools listed by name: call them directly, for example
caly:list_bookings. - Only
caly:search_toolsandcaly:execute_typescriptlisted (Code Mode, the default): callcaly:search_toolsfirst, then call each tool insidecaly:execute_typescriptasexternal_<tool>(for exampleexternal_list_bookings); the program mustreturnits result. - "Tool not found": switch to the Code Mode route instead of retrying the direct call.
- No
calytools at all: Caly is not connected yet. Add the server as shown in https://github.com/DevinoSolutions/mcp-servers/tree/main/caly#install; it signs in with OAuth on first use.
A refused call throws an Error whose message starts with its code, for example CONFIRMATION_REQUIRED:.
Tools you will use
caly:whoami: the account and its time zone.caly:list_bookings: the user's bookings, filtered bystatus(upcoming, past, cancelled, unconfirmed, recurring),attendeeEmail,attendeeName,eventTypeId, or a window (afterStart,beforeEnd). Paginated withtakeandskip; checkpagination.hasNextPage.caly:get_booking: one booking bybookingUid, with attendees, hosts, location and any cancellation or rescheduling details.caly:find_available_slots: free start times; passbookingUidToReschedulewhen moving a booking so its own slot counts as free.caly:reschedule_booking: moves a booking to a newstart(UTC ISO 8601), with an optionalreschedulingReason. Caly creates a new booking with a newuidand notifies the attendees.caly:cancel_booking: cancels a booking and notifies its attendees. It cannot be undone and takes two calls (see the workflow).
Workflow
Reviewing bookings
- Call
caly:whoamifor the time zone, thencaly:list_bookingswith the filters that match the question ("tomorrow" →status: ["upcoming"]plus a window; "with Sam" →attendeeNameorattendeeEmail). - Follow
pagination.hasNextPagewithskipuntil the window is covered, or tell the user how many more there are. - List each booking with its time in the user's time zone, title, attendees and status. Call
caly:get_bookingonly when the user wants one booking's details.
Rescheduling
- Identify exactly one booking and its
uid. If several match, list them and ask which one. - Call
caly:find_available_slotsfor its event type and the new day, passingbookingUidToReschedule. Use only a start time from the result. - Confirm with the user: the booking, the old time, the new time (in the user's and the attendee's time zone), and that Caly will notify the attendees. Wait for an explicit yes.
- Call
caly:reschedule_bookingonce. Report the new time and the newuid.
Cancelling
- Identify exactly one booking and its
uid, and ask for a reason if the user has one. - Call
caly:cancel_bookingwith thebookingUid(andcancellationReason). The first call does not cancel: it returnsCONFIRMATION_REQUIREDwith aconfirmToken. - Show the user which booking will be cancelled (title, time, attendees) and that the attendees will be emailed. Wait for an explicit yes.
- Call
caly:cancel_bookingagain with the SAME arguments plus theconfirmToken. Report that it is cancelled.
Rules
- Never reschedule or cancel without the user's explicit yes to a summary that names the booking.
- Never pass a
confirmTokenthe user has not seen the booking for, and never reuse one for a different booking. - Set
cancelSubsequentBookingsonly when the user clearly asks to cancel the rest of a recurring series. - Always state the time zone next to every time you show.
Top skills in this category
Playwright MCP
@spiceman161Browser automation via Playwright MCP server. Navigate websites, click elements, fill forms, extract data, take screenshots, and perform full browser automation workflows.
YouTube
@byungkyuYouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a YouTube connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a YouTube action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with YouTube examples; they add no YouTube capability - YouTube is not an event source, a trigger cannot read YouTube data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
Peekaboo
@steipeteCapture and automate macOS UI with the Peekaboo CLI.
google-slides
@byungkyuGoogle Slides API integration with managed OAuth. Create presentations, add slides, insert content, and manage slide formatting. Use this skill when users want to interact with Google Slides. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Google Slides connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Google Slides action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Google Slides examples; they add no Google Slides capability - Google Slides is not an event source, a trigger cannot read Google Slides data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
百度网盘
@wscats百度网盘(Baidu Drive, pan.baidu.com)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹、删除(高风险,需用户确认)。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户消息明确提及"百...