An MCP server for privacy-preserving human-at-the-desk presence checks.
Two tools with complete schemas and descriptions. Both have proper input/output schemas with Zod validation and tool annotations (readOnlyHint, destructiveHint, idempotentHint). Descriptions are clear and actionable (140-180 chars, within baseline 34-392 range). Parameters have type constraints and descriptions. However, error handling lacks recovery guidance, errors return raw messages without suggesting next steps. Output schemas are documented but minimal. No batch operations or pagination patterns despite potential multi-device scenarios.
Return true when the configured person's YubiKey is connected and all local presence signals are positive. On Windows this also requires the session to be unlocked. Serial numbers remain private inside the server vault.
Set up human-at-the-desk presence. Call this when the user says "set me up". If several YubiKeys are returned, ask which serial is theirs and optionally ask for their name, then call setup again with that serial.
Error responses lack recovery guidance. Errors return raw messages (e.g., 'No YubiKey was detected') without suggesting next steps or actionable remediation paths.
Tool naming lacks action verb clarity. 'is_at_desk' is a predicate (returns boolean) rather than imperative verb form. Consider 'check_desk_presence' for consistency with agent tool patterns.
Output schemas are minimal (single boolean or enum). No pagination, metadata, or chaining IDs returned. If multiple devices are configured, responses should include device identifiers for downstream tool calls.
Parameter 'name' in is_at_desk is optional but underdocumented regarding behavior when multiple devices exist. Description says 'omit when only one device is configured' but does not explain what happens if omitted with multiple devices.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2025-06-18+ | v2 |
No batch or multi-device operations. If an agent needs to check presence for multiple configured users, it must call is_at_desk N times. A batch variant would reduce token waste and latency.