{"status":"pass","category":"SDK","severity":"medium","evidence":["pydantic 2.13.4 (>=2.0.0 in pyproject.toml) — Pydantic v2.","src/swiss_environment_mcp/server.py:387-422 — ResponseEnvelope(BaseModel) mit source, provenance, count, match_type (Literal exact/fuzzy/none), results, note, query; _envelope_json() als konsistenter Serializer fuer Such-/Listen-Tools im JSON-Modus.","Alle Tools haben explizite Return-Annotation (-> str); 17/18 via grep 'async def env_.*-> str', das 18. ebenfalls -> str (Mehrzeilen-Signatur).","MatchType Literal statt str (server.py:384); Field(default_factory=list) fuer results (server.py:398) — kein Mutable-Default-Bug."],"gaps":["Tools geben str (Markdown-Default) bzw. JSON-String zurueck statt direkt das ResponseEnvelope-BaseModel — bewusste Design-Entscheidung (Markdown als menschenlesbares Default). FastMCP exponiert daher kein strukturiertes Output-Schema, aber der Envelope ist konsistent und typgeprueft. Kein Fail-Kriterium."],"evaluator_notes":"Pydantic v2, konsistenter Provenance-Envelope mit source/provenance/count/match_type, Literal-Types, Field-Defaults. Return-Annotationen vorhanden. Pass."}
