earlyon-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EARLYON_TZ | No | Timezone used for "today" and output times. | America/Toronto |
| EARLYON_COMP_ID | No | Widget instance id of the calendar on the page. | comp-mg88ldq7 |
| EARLYON_DB_PATH | No | SQLite file path for stored calendar data (default `earlyon.db`, or `/data/earlyon.db` in Docker). | earlyon.db |
| EARLYON_API_BASE | No | Source override for the API base URL. | |
| EARLYON_SITE_URL | No | Source override for the site URL. | |
| EARLYON_USER_AGENT | No | Source override for the HTTP User-Agent. | |
| EARLYON_BOOM_APP_ID | No | Source override for the Boom app id. | |
| EARLYON_HTTP_TIMEOUT | No | Source override for the HTTP timeout. | |
| EARLYON_CALENDAR_PAGE | No | Source override for the calendar page. | |
| EARLYON_EXPECTED_NAME | No | Expected calendar name used as a safety gate for refreshes. | |
| EARLYON_REFRESH_HOURS | No | Background refresh interval in hours. | 3 |
| EARLYON_MIN_MANUAL_REFRESH_MIN | No | Minimum gap in minutes for the `refresh_now` tool. | 10 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_eventsA | Programs happening on one day (time, type, venue) plus any closures that day. |
| get_weekC | A Monday-Sunday week of programs, grouped by day. |
| get_events_rangeB | Programs between two dates inclusive (past or future), sorted by time. |
| search_eventsC | Find occurrences of programs by name, place or topic. |
| get_event_detailsA | Full details for one occurrence: description text, links, venue, and the program's other upcoming dates. |
| list_program_typesB | The program categories (Morning Indoor, Wildwood Outdoor, Afternoon Indoor, Evening, ...) with counts. |
| get_closuresB | Closure notices (stat holidays, office/program closures) in a date range. |
| get_registrationsC | Special programs that require pre-registration (e.g. Infant Massage, ASQ Connection) with open/closed state. |
| get_recent_changesC | Upcoming programs that were added, removed (cancelled) or edited recently. |
| get_statusB | Data freshness and coverage (last refresh, earliest/latest dates, recent refresh outcomes). |
| refresh_nowA | Force a refresh from the website (rate limited; normally refreshes automatically every few hours). |
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 11 tools
Most tools are clearly distinct: search_events handles name/place/topic lookup, get_event_details handles a single occurrence, and the metadata tools (get_status, get_closures, get_registrations, get_recent_changes) each target a unique resource. The only mild overlap is the temporal-listing trio get_events (one day), get_week (one week), and get_events_range (arbitrary range), which an agent could plausibly confuse, though the descriptions make the granularity difference explicit.
All 11 tools use snake_case verb_noun form (get_events, list_program_types, search_events, refresh_now, etc.). The get_/list_/search_/refresh_ prefixes map predictably to retrieval vs enumeration vs query vs action.
Eleven tools is well within the sweet spot and each one covers a distinct retrieval shape (day, week, range, search, detail, metadata, maintenance). No tool feels redundant enough to remove.
The read surface is thorough for a scraped program-schedule domain: date-scoped listings, search, details, closures, registrations, change history, freshness status, and a manual refresh. Minor gaps remain — list_program_types returns categories with counts but there is no way to fetch events filtered by program type, and no venue/location listing tool.