Install
openclaw skills install @chrischall/skylight-mcpRead and manage your Skylight Calendar family hub — calendar events, chores and reward stars, shared lists (grocery/to-do), and meal plans. Triggers on phrases like "check Skylight", "what's on the family calendar", "add an event to Skylight", "what chores does [kid] have", "mark [chore] done", "add milk to the grocery list", "what's on our shopping list", "what's for dinner", "what's on the meal plan", "who's on the Skylight frame", or any request involving the Skylight frame, family calendar, chores, rewards, shared lists, or meals. Works against your own signed-in Skylight account via email + password.
openclaw skills install @chrischall/skylight-mcpMCP server for Skylight Calendar — 114 tools across calendar events, chores & rewards, shared lists, meals, messages & photo albums, photo/video upload, AI auto-creation, and frame/device/member settings.
Skylight authenticates with your account email + password (OAuth2 authorization-code flow under the hood — no browser extension or API key needed). Add an env block to .mcp.json (project) or ~/.claude/mcp.json (global):
{
"mcpServers": {
"skylight": {
"command": "npx",
"args": ["-y", "skylight-mcp"],
"env": {
"SKYLIGHT_EMAIL": "you@example.com",
"SKYLIGHT_PASSWORD": "your-password"
}
}
}
}
The server logs in once at startup, then talks to the Skylight API directly with the returned bearer token (refreshed automatically).
Optional env:
SKYLIGHT_FRAME_ID — pick a frame when your account has more than one (see skylight_list_frames). Otherwise the single frame is auto-discovered.SKYLIGHT_NAME — friendly label shown in diagnostics (defaults to your email).Requires a Skylight email + password login — Google/Apple/SSO-only accounts aren't supported.
Everything is scoped to a frame (your family hub); pass an optional frameId to any tool, or let it auto-resolve.
| Domain | Tools |
|---|---|
| Frames & devices (read) | skylight_list_frames, skylight_get_frame, skylight_list_frame_members, skylight_list_devices |
| Calendar events | skylight_list_events, skylight_get_event, skylight_create_event, skylight_update_event, skylight_delete_event, skylight_list_categories, skylight_list_source_calendars |
| Shared lists | skylight_list_lists, skylight_get_list_items, skylight_create_list, skylight_add_list_item, skylight_update_list_item, skylight_delete_list_item |
| Chores & rewards | skylight_list_chores, skylight_create_chore, skylight_complete_chore, skylight_list_rewards |
| Meals | skylight_list_meals, skylight_list_recipes, skylight_get_recipe, skylight_create_recipe, skylight_plan_meal, skylight_update_meal, skylight_delete_meal, skylight_add_recipe_to_grocery_list |
| Health | skylight_healthcheck — is this connector working? Reports which credential resolved, whether Skylight accepted it, and what to fix. Start here when another tool fails: an empty result can mean "no data" or "never authenticated", and only this separates them. |
Four tools return a dry-run instead of acting when their apply_to reaches
past the occurrence you named:
The four do NOT share one vocabulary, so they are listed separately — an
earlier version of this table grouped the chore tools and named
this_and_future for skylight_delete_chore, which that tool's schema rejects
outright.
| tool | apply_to accepts | gates at | acts immediately at |
|---|---|---|---|
skylight_update_meal | one | future | all (required) | future, all | one |
skylight_delete_meal | one | future | all (required) | future, all | one |
skylight_update_chore | this | this_and_future | all (optional) | this_and_future, all | this, omitted |
skylight_delete_chore | one | all (optional) | all | one, omitted |
A scope that acts immediately affects exactly what you named, so it costs no extra round-trip.
When gated, the response is {"dryRun": true, ...} and no request was made.
Re-issue the same call with confirm: true to perform it. Do NOT report the
dry-run as if the change happened: the sitting or chore is still there.
The rule is blast radius, not irreversibility — skylight_delete_recipe is just
as permanent and is ungated, because it destroys only what you named. An
apply_to write can reach occurrences you did not name: all includes ones
previously split off the series, and future truncates the series' UNTIL and
takes the whole tail with it.
skylight_complete_chore marks a chore complete; completing a single occurrence of a recurring chore isn't separately exposed.skylight_list_chores requires after and before dates (chores are date-scoped).