MCP server for Kenya labour rights — minimum wages, dismissal guidance, maternity rights, trade unions, and labour court procedures. DEMO data only.
All 5 tools have descriptions and basic parameter schemas, but quality is inconsistent. Tool names lack action verbs (minimum_wage_lookup is acceptable, but unfair_dismissal_guide, maternity_paternity_rights, trade_union_directory, labour_court_guide are noun-heavy). Parameters are mostly optional with minimal constraints, no enums, no ranges, no validation guidance. Descriptions are generic ('DEMO' repeated 5 times) and lack actionable context for LLM selection. Output schemas are not documented. Error handling is absent. This is a demo/reference implementation, not production-grade.
Labour Relations Court and ELRC guidance in Kenya. DEMO.
Kenya maternity and paternity leave rights. DEMO.
Kenya minimum wage by sector and county. DEMO.
Kenya trade union directory and worker rights organizations. DEMO.
Kenya unfair dismissal rights under Employment Act 2007. DEMO.
Tool names lack action verbs. 'unfair_dismissal_guide', 'maternity_paternity_rights', 'trade_union_directory', 'labour_court_guide' are noun-heavy and do not signal what action the tool performs. LLMs infer intent from verb-first names like 'get_', 'search_', 'list_'.
Descriptions are generic and repetitive ('DEMO' appears in all 5 tool descriptions). They do not explain WHEN to use each tool, what distinguishes it from others, or what the LLM should expect. Descriptions should be 50 - 200 chars and answer: what does it do, when to call it, what does it return?
Parameters lack constraints. 'sector', 'county', 'situation', 'query' are all optional free-form strings with no enums, patterns, or validation guidance. LLMs will hallucinate invalid values. Use enums for known sets (e.g., sector: ['general_laborer', 'clerical_officer', 'security_guard', ...]).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Output schemas are not documented. Code returns dicts with fields like 'source', 'wages', 'guidance', 'unions', but LLMs cannot plan downstream calls without knowing the response structure. Document return types explicitly.
No error handling or recovery guidance. Tools return dicts on success but do not handle invalid inputs, missing data, or edge cases. Error responses should tell the LLM what to do next (e.g., 'Sector not found. Try: general_laborer, clerical_officer, ...').