Legal automation & contract analysis for Belgian law firms
Four tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling. Tool names follow verb_noun convention (analyze_, draft_, check_, assess_) but descriptions are generic (avg 80 chars, below 194-char baseline). Parameters lack descriptions for complex objects (parties, key_terms in draft_contract_belgian). No documented output schemas, pagination support, or error recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Schemas present but incomplete, object parameters lack property definitions.
Analyze contract clauses and identify key terms
Assess contract risks and provide scoring
Draft a Belgian contract based on template
Check legal compliance for contracts
Object parameters lack property definitions. draft_contract_belgian accepts 'parties' and 'key_terms' as objects but provides no schema for their internal structure (required keys, types, constraints). LLMs cannot construct valid payloads without explicit property documentation.
No output schemas documented. Tools return results but callers cannot know what fields to expect. This breaks tool chaining, if analyze_contract_clauses returns clause data, downstream tools cannot reference it without guessing field names.
Parameter descriptions are missing or trivial. 'Type of contract (employment, service, nda, etc.)' repeats the parameter name; it does not explain when to use each type or what the tool does differently for each. Descriptions should be 50-200 chars and explain WHAT, WHEN, and WHY.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
No error handling or recovery guidance. If a contract exceeds page limits (LiteEngine enforces max_pages=20), the tool returns a ValueError. LLMs receive no actionable guidance, should they retry, ask the user, or call a different tool? No error classification (retryable vs user-fixable vs fatal).
No tool annotations. draft_contract_belgian is destructive (WRITE risk) but lacks destructiveHint annotation. analyze_contract_clauses, legal_compliance_check, and contract_risk_assessment are READ_ONLY but lack readOnlyHint. Annotations help LLMs reason about side effects and retry safety.