A WebMCP telestrator that draws an analyst's fantasy-hockey reads onto a persistent screen. The analyst decides, the agent draws, the screen has no opinions.
Sepiola is a WebMCP telestrator for fantasy hockey analysis. Tool definitions are present but severely underdeveloped. Naming is domain-specific but cryptic (cue_roster, read_ice, circle, replay, split, cut_to, cue_board, wipe). Descriptions exist but are terse, jargon-heavy, and assume deep domain knowledge (e.g., 'ice quality under the skates', 'badges', 'games in hand'). Input schemas are visible but lack proper type definitions for most parameters, many are typed as 'string' or 'array' with minimal constraint. No output schemas documented. Error handling absent. Parameters lack validation guidance. Domain terminology ('rink', 'skater', 'analyst', 'prospect') is never explained for LLMs unfamiliar with fantasy hockey.
Spotlight one skater with the reason pinned above. Without a reason, the analyst's own line is used.
Put up the draft board: the analyst's tiers by position from last season, one note per prospect, and where each position thins out. Give `drafted_text`, the players already taken by anyone (one per line, any format), and the analyst crosses them off. Give `mine_text`, your own picks, and the analyst also says who to take next: its top three are marked on the board in its order. `playoff_start_week` and `playoff_end_week` (your league's fantasy playoff weeks; week 1 opens with the NHL season and, when that is mid-week, runs to the second Sunday, as Yahoo counts it) let that pick weigh each club's games in them. `categories`, the league's scoring categories as its settings list them (e.g. "G, A, +/-, PPP, SOG, HIT, BLK; W, GAA, SV%, SO"), has the analyst rank the board and the pick for them instead of points. `fixture` loads a saved board.
Load a roster onto the rink. Give `text`, the pasted lineup (any format, one player per line), when an analyst is configured; or `fixture`, the name of a read in fixtures/. `opponent_text`, the other side's lineup, gives games in hand its second bar.
Bring a window forward: rink, panel, hand, replay, or console.
Reveal the read: ice quality under the skates, badges, the calls, games in hand. `start` (YYYY-MM-DD) moves the window; the analyst defaults to today.
Descriptions are domain-jargon-heavy and assume expert knowledge. 'Ice quality under the skates', 'badges', 'games in hand' are never defined. LLMs unfamiliar with fantasy hockey cannot determine when to call these tools.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. What does read_ice return? What fields does circle produce?
Parameter descriptions are minimal or missing context. 'Array of skater IDs' (circle) does not explain what a skater ID looks like, how to obtain one, or what happens when an invalid ID is passed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | 2026-07-28+ | v2 |
Stage the reasoning behind one skater: his week, the analyst's line, his projected points, and the call if the analyst made one.
Two skaters' weeks side by side, then the analyst's call on who gets the start, if the analyst made one.
Clean the screen. The roster stays cued; the read, the circle, and the replay are cleared.
No error handling guidance. If cue_roster fails to parse a lineup, what error is returned? Can the agent retry? Should it ask the user to reformat?
Tool names are domain-specific but not verb-noun patterns. 'cue_roster', 'read_ice', 'cut_to' are cryptic. Standard patterns like 'load_roster', 'get_game_state', 'switch_view' would be clearer.