MCP server providing read-only access to Brazilian public data on ports, waterways, foreign trade, regulatory enforcement, and official publications from ANTAQ, ONTL, and Comex Stat. Serves 250+ data panels with ~350k rows, 141.8M Comex records, official publications with full PDF text extraction, and normative corpus.
Server has 17 tools with basic descriptions and partial schemas. Naming is inconsistent (verb_noun for some, noun-only for others like 'paineis_disponiveis', 'normas'). Most tools lack explicit input schema definitions in visible code, schemas are inferred from parameter lists in docstrings rather than formally registered. Output schemas are undocumented. Error handling is minimal. All tools are READ_ONLY, which is good for safety, but descriptions lack actionable recovery guidance. Parameter descriptions exist but are terse (avg ~40 chars, below 72-char baseline). No tool annotations (readOnlyHint, etc.) despite all being read-only.
Query accident data and waterway information with specific quadro selection to handle multiple accident data sources
Aggregate data from a panel table with grouping and aggregation functions
Query Comex Stat foreign trade data (1989-present) by product, country, state, transport mode, and customs unit
Get Comex Stat product codes (NCM), countries, states, and transport modes with descriptions
Query data from a specific panel table with filtering, sorting, and pagination
Get comprehensive company dossier by CNPJ or business name, showing presence across all data collections
Query ANTAQ enforcement actions and fines with specific quadro selection to ensure data consistency
Input schemas not formally visible in source code. Parameter definitions appear in docstrings only; no explicit JSON Schema registration detected in mcp_server/*.py files. Cannot verify type constraints, required fields, or enum values.
Inconsistent naming: 'paineis_disponiveis', 'normas', 'publicacoes' are noun-only; others use verb_noun (consultar, agregar). Noun-only names do not signal action to LLMs. 'paineis_disponiveis' should be 'list_paineis' or 'get_paineis_disponiveis'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Get vessels and navigation authorizations for a company by CNPJ, including vessel age, authorization periods, and routes
Query port movement and transport data with specific quadro selection to avoid ambiguity between multiple movement data sources
Search the normative corpus (laws, decrees, ANTAQ resolutions, manuals, terminology) by keyword or semantic similarity
List all available data panels with their metadata
Get the structure of a specific panel including tables, columns, filters, and curation notes
Get key indicators and metrics for a specific panel
Link Comex Stat customs units to ANTAQ port installations and reconcile trade volume differences between sources
Search ANTAQ official publications (acts, resolutions, ordinances, deliberations, minutes, terms) with full PDF text extraction from 2015-2025
Query port terminal contracts and tariff data with specific quadro selection
Get distinct values for a specific field/column with optional filtering
Output schemas undocumented. No visible schema definitions for return types. LLMs cannot plan downstream tool calls or extract fields without knowing what each tool returns.
No tool annotations despite all tools being read-only. FastMCP supports readOnlyHint; adding it would help agents understand safety and retry behavior.
Parameter descriptions are terse (avg ~40 chars vs 72-char baseline). 'Panel identifier', 'Table name', 'Column name' lack context on format, constraints, or when to use each tool. No enum constraints visible for categorical parameters like 'tipo' in comex_codigos.