MCP server that provides access to Northeastern University calendar events
All 7 tools have basic descriptions (10-50 chars) and empty or minimal input schemas. Tool names follow verb_noun convention (get_*, search_*), which is good. However, descriptions are generic and lack context for LLM selection. Input parameters exist but lack type definitions and descriptions, only 2 of 7 tools have any schema detail. No output schemas documented. Error handling is absent from tool definitions. The server fetches external calendar data with caching but provides no guidance on failure modes or recovery.
Get all events from the Northeastern University calendar.
Get all events in a specific category at Northeastern University.
Get all events on a specific date at Northeastern University.
Get all events within a date range at Northeastern University.
Get all events at a specific location at Northeastern University.
Get all events happening today at Northeastern University.
Search for events by keyword at Northeastern University.
No output schemas documented. Tools return event objects but LLMs cannot infer structure (fields, types, nesting). Agents cannot plan downstream calls or extract required data reliably.
Descriptions are 30-50 characters, below the 50-200 char baseline for LLM-optimized descriptions. They lack context on WHEN to use each tool (e.g., 'Get all events happening today' does not explain when to call this vs get_events_by_date).
No pagination support. Tools return unbounded lists (all events matching criteria). Large result sets will blow context windows. No limit, offset, or cursor parameters documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No error handling guidance in tool definitions. fetch_calendar_data() can fail (network, parsing, cache stale) but tools do not document recovery steps. LLMs receive raw exceptions with no actionable next steps.
Date parameters (get_events_by_date, get_events_by_date_range) have descriptions but no format validation or constraint hints. LLMs may pass invalid formats (e.g., 'Jan 15' instead of 'YYYY-MM-DD'). No enum or pattern constraint visible.