Exposes the Hemklok real estate API as MCP tools for Grok (and any MCP-compatible AI). Provides Swedish property listings search and market pricing data.
Two tools with complete schemas and reasonable descriptions. Naming follows verb_noun convention (list_, get_). However, descriptions lack actionable context for LLM selection, parameter descriptions are minimal (many under 20 chars), and no output schema documentation. Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. Missing tool annotations (readOnlyHint). Schemas are well-formed JSON Schema with types, but lack constraints (enums, min/max bounds) that would prevent hallucinated values.
Get average sale price per m2 (kr/m2) from completed sales in the Booli dataset. Use to calibrate budgets and explain market pricing.
Search live Swedish property listings. Returns up to 10 results with BRF financials and school quality scores.
No output schema documentation. LLMs cannot plan downstream calls or extract fields without knowing what list_advertisements and get_avg_price_per_sqm return. Responses are JSON-stringified but structure is opaque.
Missing enum constraints on property_type and sort parameters. LLMs will hallucinate invalid values like 'apartment' instead of 'bostadsratt' or 'price_asc' instead of 'price_per_sqm_asc'. Enums are self-documenting and prevent invalid API calls.
No error handling guidance. If the Hemklok API returns 400 (invalid params), 404 (no results), or 500 (service down), the tool returns raw JSON with no recovery hints. LLMs cannot distinguish retryable from user-fixable errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Parameter descriptions are too brief (many under 20 chars). E.g., 'Min apartments in the BRF co-op' lacks context on why this matters or when to use it. Descriptions should explain WHAT, WHEN, and WHY for LLM selection.
Missing numeric bounds (min/max) on parameters like limit (1-10 stated in description but not in schema), min_price, max_price, radius_m. Unbounded numbers let LLMs pass absurd values (e.g., limit=999999, radius_m=-1).