MCP server for the Turkish Higher Education Atlas (YÖKATLAS) tercih kılavuzu JSON API. Provides smart-search over bachelor's and associate-degree programs (4-year stats per program), Net Sihirbazı (last-placed candidate's exam net counts) search, and lookup tables for universities, program groups, and cities.
The server implements two well-structured tools with comprehensive parameter schemas and detailed descriptions. Both tools follow proper naming conventions (search_* pattern) and include extensive parameter documentation with types, enums, and constraints. However, there are notable gaps: no error handling guidance in descriptions, no output schema documentation, and missing tool annotations (readOnlyHint, idempotentHint). The descriptions are well-written but could be more concise for LLM processing. Schema quality is strong with proper enums and validation constraints visible in source code.
Search the Net Sihirbazı: the last-placed candidate's exam net counts (son yerleşen kişinin netleri) per program/uni across multiple years and score types.
Search YÖKATLAS programs with smart fuzzy matching across the whole tercih kılavuzu (lisans + önlisans). Each result already contains 4-year statistics (current year + 3 historical years): kontenjan, yerlesen, min_puan, basari_sirasi, KPSS scores, academic-staff counts. Use `kilavuz_kodu` to fetch a single program.
Missing output schema documentation. Neither tool describes what fields are returned or their types. LLMs cannot plan downstream operations without knowing the response structure.
No error handling guidance in tool descriptions. Error responses from the underlying API are caught and formatted, but descriptions do not guide LLMs on recovery actions when errors occur (e.g., 'Try with a different program name' for lookup failures).
Missing tool annotations. Neither tool declares readOnlyHint=true despite being query-only (search) operations. This prevents LLMs from safely composing these tools in loops or retry scenarios with full confidence.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Descriptions exceed optimal length (194-char baseline). search_programs description is ~280 chars; search_netler is ~150 chars. While accurate, longer descriptions waste tokens and may dilute signal for LLM tool selection.
Parameter 'sort_by' accepts a free-form string (camelCase field names) rather than an enum. While documentation lists common values (basariSirasi, minPuan, kontenjan, gkY), LLMs may hallucinate invalid field names. Should constrain to a closed enum or validate with clear error messages.