MCP Server for Gale-Shapley Deferred Acceptance Matching Skill - Pure Python Standard Library implementation of the Gale-Shapley Deferred Acceptance algorithm. Produces a provably stable bipartite matching (no blocking pairs) between proposing agents and receiving resource/task units according to strict ordinal preference lists.
Single tool with adequate naming but critical gaps in description depth, parameter documentation, and output schema specification. Tool name 'compute_stable_matching' is clear and verb-based, but description (145 chars) lacks actionable context for LLM selection. Input parameters have type info but descriptions are generic and lack constraints. No output schema documented. No error handling guidance. Fails multiple critical checks from rubric section D (Schemas & Output) and E (Error Handling).
Run Deferred Acceptance algorithm until all proposers are matched or exhausted. Produces a provably stable bipartite matching (no blocking pairs) between proposing agents and receiving resource/task units according to strict ordinal preference lists.
Output schema not documented. Tool returns dict with 'matches_by_proposer', 'matches_by_acceptor', 'is_stable' but LLM has no visibility into field types, structure, or semantics. Violates pattern:tool requirement that output schema be documented.
Parameter descriptions are minimal and lack actionable constraints. 'Dictionary mapping proposer identifiers to their preference lists' does not specify: required format (list of strings?), valid identifier format, preference list length bounds, or what happens if preferences are invalid. Violates pattern:tool-description and pattern:constrained-input.
No error handling or recovery guidance. Tool has no documented error cases: What if proposer_prefs is empty? What if an acceptor appears in preferences but not in acceptor_prefs? What if preferences contain cycles or invalid identifiers? LLM receives no guidance on failure modes or remediation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool description lacks WHEN/WHY context. Current description states WHAT (runs Deferred Acceptance algorithm) but not WHEN to use it (bipartite matching problems, stable assignment scenarios) or WHY (provably stable, no blocking pairs). LLM cannot determine when to select this tool vs alternatives.
No input validation or constraint documentation. Parameters accept arbitrary dicts with no validation of identifier format, preference list structure, or mutual consistency. Tool silently handles edge cases (exhausted proposers, missing acceptors) without documenting behavior or returning error details.