Server has 4 tools with complete schemas and descriptions. All tools follow verb_noun naming (lookup_, search_, get_, validate_). Descriptions are adequate (100-200 chars, within baseline 194 avg). However, parameter descriptions lack detail on constraints and formats. Error handling is basic, returns JSON errors but lacks recovery guidance. Output schemas are not documented. No tool annotations (readOnlyHint). Search tool has 6 optional params but no guidance on mutual exclusivity or defaults. CNPJ validation logic is present but not exposed as a constraint in parameter descriptions.
Get a company's health score by CNPJ. Returns a score (0-100), grade (A-E), risk level, survival probability, and contributing factors. Data is in Portuguese.
Look up a Brazilian company by CNPJ. Returns full company data including name, status, address, CNAE codes, share capital, and more. Data is in Portuguese.
Search for Brazilian companies by name, CNAE code, state (UF), or municipality. Returns an array of matching companies. Data is in Portuguese.
Validate a CNPJ number and check if the company is active. Returns validity, active status, registration status, and company name.
Parameter descriptions lack format constraints. 'CNPJ number (14 digits, with or without formatting)' is stated but not enforced in schema. No regex pattern, length bounds, or character restrictions visible in Zod schema.
search_companies has 6 optional parameters with no documented mutual exclusivity or precedence. LLM may pass conflicting filters (query + name + cnae) without guidance on which takes priority.
Output schemas are not documented. Tools return JSON.stringify(data) but LLM has no schema for expected fields (razao_social, situacao_cadastral, etc.). Downstream tool chaining is unsupported.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Error handling returns raw API errors ('API error 404: ...') without recovery guidance. No actionable next steps for LLM when CNPJ not found or API fails.
No tool annotations (readOnlyHint). All tools are read-only but this is not declared in tool metadata, forcing LLM to infer safety from descriptions.