Model Context Protocol server giving AI agents tools for workforce attendance, overtime, overnight handling, rosters, and wage-and-hour compliance via @attendance-engine/core.
Strong domain-specific tool set with clear naming (verb_noun pattern: resolve_day, audit_period_compliance) and comprehensive descriptions (avg 180 chars, well above 10-char minimum). All 8 tools have explicit input schemas with type definitions and parameter descriptions. Output schemas are documented in descriptions. However, several parameters lack granular descriptions (e.g., 'policy' object in resolve_day has no field-level guidance), and error handling lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY. Schemas are present but could be more detailed for complex nested objects.
Produce a rounded view of a resolved day's worked & overtime minutes without losing the exact-minute result. Useful for the California-style 'exact-minute is the baseline; rounding must be provably neutral' pattern — keep both views and compare across populations.
Run a wage-and-hour compliance audit across multiple days. For each day, resolves attendance and evaluates meal/rest compliance under the chosen jurisdiction rule pack. Returns per-day breakdown plus period totals: hours of premium owed (meal + rest), days at risk, days with rebuttable-presumption exposure, and a flag-count heatmap. Use this for monthly payroll review, pre-audit triage, or a manager dashboard.
Triage raw clock punches before trusting them: count, sort, dedup, surface duplicates / odd-punch counts / round-number bias, report longest and shortest gaps, and (when an expected shift is provided) flag punches that fall outside it. Returns a recommendation: 'usable', 'review', or 'reject'.
Analyse meal & rest period compliance for a duty day under a jurisdiction rule pack. v0.1 ships the California pack (Labor Code §§ 226.7, 512; IWC wage orders). Returns per-meal/rest analysis, premium hours owed at the regular rate, waiver issues, and rebuttable-presumption risk per Donohue v. AMN.
Complex nested objects (policy, shift, leave, waivers) lack field-level descriptions. LLMs cannot infer what 'pairing', 'treatMissingOutAs', 'midnightCutover' mean without explicit guidance.
No tool annotations despite all 8 tools being READ_ONLY. Missing readOnlyHint metadata prevents clients from optimizing caching and retry logic.
Error handling lacks recovery guidance. No tool documents what errors are possible, whether they are retryable, or what the LLM should do next (e.g., 'Invalid jurisdiction: only CA supported. More jurisdictions coming in v0.3').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Generate a rotating roster from a built-in pattern ('2-2-3', '4-on-4-off', 'dupont', 'pitman') or a custom day cycle. Returns one assignment per calendar date with shift label and HH:MM window, or null on rest days.
List bundled jurisdiction rule packs (meal/rest compliance). Returns each pack with id, human label, citation source, and full rule definitions.
Resolve a single duty day from raw clock punches and a shift definition. Returns a structured DayResult with status, worked minutes, lateness, early-out, overtime, overnight handling, breaks-deducted minutes, data-integrity flags, and the resolved in/out segments.
Resolve a sequence of duty days (a week, a pay period, a month). Returns per-day DayResult entries; optionally include an aggregated PeriodSummary with attendance rate and flag counts.
Parameter constraints not fully specified. 'days' in generate_roster accepts '>= 0' but no upper bound documented; 'dedupeSeconds' in diagnose_punches has no range guidance. Unbounded numbers risk absurd LLM inputs.
Output schemas documented in descriptions but not formally declared in tool registration. Clients cannot parse response structure without reading prose descriptions.