MCP server for searching Swiss real-estate listings with ranked results and interactive map visualization
Single tool 'search_listings' has a well-structured schema with proper type definitions, clear descriptions, and appropriate constraints (limit 1-100, offset ≥0). Tool name follows verb_noun pattern. Description is concise (118 chars, within 10-1024 baseline). Input schema uses Pydantic with validation. However, output schema is not documented in the visible code, only structuredContent is mentioned without field definitions. Tool annotations are present (readOnlyHint=true). Error handling and recovery guidance are not visible in the provided code.
Search Swiss real-estate listings from the harness and render a ranked list with map pins.
Output schema not documented. The tool returns structuredContent with a payload dict containing 'listings' array, but field types, structure, and required fields are not declared. LLMs cannot plan downstream operations without knowing the response shape.
No error handling or recovery guidance visible. Tool description does not explain failure modes (e.g., invalid query, API timeout, no results) or what the LLM should do if the call fails.
Parameter descriptions lack format/constraint details. 'query' is described as 'Natural-language property search query' but does not specify length limits, forbidden characters, or examples of valid queries. This invites hallucinated or malformed inputs.
No pagination guidance in tool description. While limit and offset parameters exist, the description does not explain how to iterate through large result sets or what happens if offset exceeds total count.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2026-07-28+ | v2 |
Tool response does not document which fields are returned or their types. The 'listings' array structure is unknown, does each item have id, title, price, location, coordinates? Without this, agents cannot extract or chain data.