Python SDK for the Aether-X Port Congestion Oracle API - provides predictive congestion signals and port risk metrics
This is a Python SDK client, not an MCP server. No MCP protocol implementation detected. Tool definitions exist in source code but lack MCP registration, schemas are minimal (only port_id/port_ids strings), and descriptions are in Portuguese without LLM-optimized English. The three tools are READ_ONLY API wrappers with no error recovery guidance, no pagination support, and no structured output documentation. Naming follows verb_noun convention (get_port_risk, get_ports_risk_async) but descriptions are brief (under 100 chars) and lack context on when to use each variant. No input validation, no permission gates, no audit trails, this is a thin HTTP client wrapper, not a production-grade agent tool.
Retorna o sinal preditivo de congestão para um porto.
Versão assíncrona de get_port_risk (requer o extra ``async``).
Consulta vários portos em paralelo via ``asyncio.gather``. Ideal para fundos quantitativos e bots que monitoram uma carteira de portos.
Not an MCP server, this is a Python SDK client library, not an MCP-compliant tool server. No MCP protocol implementation, no tool registration via MCP, no transport layer.
Descriptions are in Portuguese and under 100 characters; lack LLM-optimized English context on WHEN to use each tool variant (sync vs async vs batch). Baseline: 194 chars average for A+ tools.
Input schemas are minimal: only string type for port_id, no format constraints, no enum of valid UN/LOCODE codes, no min/max length. Baseline: A+ tools have detailed constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
Output schema (PortRisk model) is not documented in tool definitions. LLMs cannot plan downstream calls or extract fields without seeing the response structure.
No error recovery guidance. Calls raise requests.HTTPError or ImportError with no actionable next steps for the agent. No retry classification, no user-fixable vs fatal distinction.