Fast CLI for searching Portuguese legal jurisprudence (DGSI) and legislation (Diário da República)
Lauyer provides 7 tools with complete input schemas and descriptions. All tools are READ_ONLY and follow verb_noun naming (dgsi_search, dgsi_fetch, dr_search, etc.). Descriptions are present (avg ~80 chars) but lack depth on WHEN to use each tool or dependencies between them. Parameters have types and descriptions, but lack enums for constrained values (e.g., 'sort' accepts 'relevance or date' as free text, not enum). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. The health tool is a utility, not a domain tool. Overall: solid foundation, but missing LLM-optimization patterns around output documentation and error guidance.
List available Portuguese courts
Fetch a single court decision by URL
Search court decisions across Portuguese courts (DGSI)
Search Diário da República acts (Portuguese legislation)
Show acts published today in Diário da República
List available Diário da República act types
Health check endpoint
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Tests show responses exist (e.g., courts array with 'alias' and 'name' fields) but no formal schema is published in tool definitions.
Constrained parameters use free-text descriptions instead of enums. 'sort' accepts 'relevance or date' as string; 'format' accepts 'json or md' as string. LLMs may hallucinate invalid values. Should use JSON Schema enum constraints.
No pagination guidance. dgsi_search and dr_search accept 'limit' but no 'offset', 'page', or 'next_cursor' documented. Large result sets may blow context window. Tests show searches can return many results but no pagination strategy is visible.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Error handling lacks recovery guidance. Tests show 502 BAD_GATEWAY on upstream failure but no actionable error message. LLMs receive raw HTTP status with no hint on retry strategy or fallback.
Tool descriptions lack WHEN-to-use context. 'Search court decisions' does not explain when to call dgsi_search vs dgsi_courts vs dgsi_fetch, or how they compose. Agents cannot reason about tool selection.