Skylight MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SKYLIGHT_EMAIL | No | Deprecated. Email used for fallback email/password login (replays Skylight's web login form). Prefer the stored OAuth credential. | |
| SKYLIGHT_TOKEN | No | Explicit API token; overrides the stored OAuth credential. | |
| SKYLIGHT_FRAME_ID | No | Your household frame ID (the number in https://ourskylight.com/my-skylight/<number>). Treat it as a secret. | |
| SKYLIGHT_PASSWORD | No | Deprecated. Password used for fallback email/password login. Stored in plaintext in your MCP client config; prefer the stored OAuth credential. | |
| SKYLIGHT_TIMEZONE | No | Default timezone used for date/time calculations. | America/New_York |
| SKYLIGHT_AUTH_TYPE | No | Auth type for SKYLIGHT_TOKEN: 'bearer' (default) or 'basic' (only with SKYLIGHT_TOKEN). | bearer |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_calendar_eventsA | Get calendar events from Skylight. Use this to answer questions like:
Returns a list of events with their titles, times, and details. |
| get_source_calendarsA | Get connected calendar sources synced to Skylight. Use this to answer:
Returns a list of connected calendar sources (Google, iCloud, etc.). |
| create_calendar_eventA | Create a new calendar event in Skylight. Use this when:
Parameters:
Returns: The created event details. Related: Use get_family_members to get category IDs for assignments. |
| update_calendar_eventA | Update an existing calendar event. Use this when:
Parameters:
Returns: The updated event details. |
| delete_calendar_eventA | Delete a calendar event from Skylight. Use this when:
Parameters:
Note: This permanently removes the event. For recurring events, this may only delete one instance. |
| get_choresA | Get chores from Skylight. Use this to answer:
Returns chores with their assignees, due dates, and completion status. |
| create_choreB | Add a new chore to Skylight. Use this when the user wants to:
The chore will appear on the Skylight display. |
| update_choreA | Update an existing chore in Skylight. Use this when:
Parameters:
Returns: The updated chore details. |
| delete_choreA | Delete a chore from Skylight. Use this when:
Parameters:
Note: This permanently removes the chore. For recurring chores, this may only delete one instance. |
| get_listsA | Get all lists from Skylight (grocery lists, to-do lists, etc.). Use this to see what lists are available before adding items. Returns list names, types (shopping/to_do), and item counts. |
| get_list_itemsA | Get items from a specific Skylight list. Use this to answer:
Returns items organized by section with their completion status. |
| create_listA | Create a new list in Skylight. Use this when:
Parameters:
Returns: The created list details. |
| update_listA | Update an existing list's name or settings. Use this when:
Parameters:
Returns: The updated list details. |
| delete_listA | Delete a list from Skylight. Use this when:
Parameters:
Note: This permanently deletes the list and all its items. |
| create_list_itemA | Add an item to a Skylight list. Use this when:
Parameters:
If no list is specified, adds to the default grocery list. Returns: Confirmation of the added item. Related: Use get_lists to see available lists and their IDs. |
| update_list_itemA | Update a list item (mark complete, rename, move to section). Use this when:
Parameters:
Returns: The updated item details. |
| delete_list_itemA | Remove an item from a list. Use this when:
Parameters:
Note: This permanently removes the item. Use update_list_item with status="completed" to check it off instead. |
| create_taskA | Add a task to the Skylight task box. The task box holds unscheduled tasks that can later be assigned to specific dates. Use this when the user says:
The task will appear on the Skylight display in the task box. |
| get_family_membersA | Get family members/profiles from Skylight. Shows who can be assigned chores and their profile details. Use this to answer:
|
| get_frame_infoA | Get Skylight household/frame information. Useful for setup verification and debugging. Use this to answer:
|
| get_devicesA | List Skylight devices in the household. Use this to answer:
|
| get_avatarsA | Get available avatar options for Skylight profiles. Use this when:
Returns: List of available avatars with their IDs and details. |
| get_colorsA | Get available color options for Skylight profiles and lists. Use this when:
Returns: List of available colors with their IDs and hex values. |
| get_messagesA | Get messages (Skylight calls them "nudges") shown on the family frame. Use this when:
Returns: Messages grouped by day with time, text, recipients and sender. Defaults to the last 7 days through the next 7 days. Max 31 days. |
| send_messageA | Post a message to the family frame (shown to everyone, on all devices, now). PERMANENT: Skylight has no way to delete a message, and it appears on the family frame for the whole household immediately. Two-step by design. Called without confirm it only previews and posts nothing. Show the user the exact text and get a clear yes, then call again with confirm: true. Never pass confirm: true on the first call, and never invent message text the user did not ask for. Read aloud is OFF by default; enable it only if the user asked. Check get_messages first to avoid posting a duplicate. |
| update_messageA | Edit the text (and optionally the sender) of a message already on the frame. Only messages sent to everyone on all devices and not repeating can be edited; anything else must be edited in the Skylight app. Delivery time and read-aloud setting are kept. The edit is visible on the frame immediately. Get the message ID from get_messages (looks within 31 days either side of today). |
| get_week_overviewA | One compact view of the family's week: calendar events, chores and tasks (with status and assignee), planned meals, and list summaries, day by day, plus any scheduling conflicts. Use this first when planning anything (dinners, errands, who drives). It replaces separate calls to get_calendar_events, get_chores, get_meal_sittings and get_lists for the same range. Parameters:
|
| find_conflictsA | Find calendar events that overlap in time within a date range. All-day events never count as conflicts. Returns each overlapping pair with the overlap window, or "none". |
| find_free_slotsA | Find free time of at least a given length on each day, between an earliest and latest time, around the calendar's timed events. All-day events are not treated as busy. Use for "when could we do X this week?" questions. |
| plan_week_mealsA | Schedule several meals in one call - Plus subscription required. Each entry names a date, a meal (category name like "Dinner", default Dinner), and either a free-text summary ("Thai green curry") or a saved recipeId. A slot that already has a meal is skipped and reported, never overwritten. Use dryRun first to see what would change. Parameters:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Most tools target clearly distinct resources and actions, and descriptions explicitly clarify boundaries like create_task vs create_chore vs create_list_item. The main overlap is get_week_overview duplicating individual getters for calendar, chores, and lists, plus possible confusion between dedicated conflict/free-slot tools and overview features.
Names consistently use snake_case and a predictable verb_noun pattern: get_*, create_*, update_*, delete_*, plus send_message and plan_week_meals. The special verbs still fit the resource-oriented convention and do not introduce inconsistent casing or styles.
The server covers several distinct domains (calendar, chores, lists, messages, meals, profiles/devices), so many CRUD tools are justified. However, 30 tools is heavy for an MCP surface, and some metadata getters or aggregate/individual overlaps could likely be consolidated.
Calendar events, chores, lists, and list items have full CRUD coverage, and messages are well covered given the permanent-post limitation. Notable gaps remain around tasks (create only, with no standalone update/delete) and meals (planning exists, but retrieval/update/delete lifecycle is thin).