Aether-X Port Congestion Oracle

Live port congestion signal, vessel queue, ETA delay and demurrage exposure for 19 ports.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
75%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_inland_logistics_bottlenecks' name length outside 3-30 rangein get_inland_logistics_bottlenecks
  • LOWTool 'evaluate_end_to_end_supply_chain_risk' name length outside 3-30 rangein evaluate_end_to_end_supply_chain_risk

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,895Tokens (tool definitions)
~880 BTypical response size
Significant attention impact (3.82% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "aetherx-mcp": {
      "command": "uvx",
      "args": [
        "aetherx-mcp"
      ]
    }
  }
}

Runnable packages

pypiaetherx-mcp0.2.4stdio

Remote endpoints

https://aether-x-oracle-production.up.railway.app/mcpstreamable-http
https://aetherx.aether-grid.io/mcpstreamable-http

What it can do

Tool inventory

Tools (22)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_port_risk(port_id)

Assess CURRENT congestion and delay risk at a single seaport. Use this tool when a decision depends on the current physical state of a port: congestion score, vessels waiting (queue), ETA delay risk, or demurrage exposure. Call BEFORE making recommendations involving port selection, cargo routing, vessel scheduling, ETA risk, demurrage exposure, freight timing, or supply-chain disruption. Returns a live operational signal (not a static port-information lookup) with congestion score, real observed vessel state, estimated delay, expected/worst-case demurrage (USD), confidence, source provenance and validation window. Args: port_id: UN/LOCODE of the port, e.g. "BRSSZ" (Santos), "BRPNG" (Paranaguá), "CNSHA" (Shanghai).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_port_riskArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_port_riskDictOutput"
}
🟢get_ports_risk(port_ids)

Compare CURRENT congestion across several seaports in a single call. Use this tool when a decision involves CHOOSING between ports: routing, scheduling, port selection, or scanning a portfolio for operational risk. Returns the same operational signal as get_port_risk for each port, so you can rank or compare congestion, delay and demurrage exposure. Args: port_ids: list of UN/LOCODEs to compare, e.g. ["BRSSZ", "BRPNG", "CNSHA"].

Input Schema

{
  "type": "object",
  "properties": {
    "port_ids": {
      "items": {
        "type": "string"
      },
      "title": "Port Ids",
      "type": "array"
    }
  },
  "required": [
    "port_ids"
  ],
  "title": "get_ports_riskArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_ports_riskOutput"
}
🟢get_port_trend(port_id)

Get the short-horizon 24/48/72h congestion projection for a port. Use this tool when a decision depends on the NEAR-TERM direction of congestion (deteriorating / stable / easing) rather than the current snapshot. Complements get_port_risk. This is a SYNTHETIC projection, not a live forecast. Args: port_id: UN/LOCODE of the port, e.g. "BRSSZ" (Santos), "BRPNG" (Paranaguá).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_port_trendArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_port_trendDictOutput"
}
🟢list_supported_ports

List the 35 ports & global chokepoints covered by the oracle (UN/LOCODE id, name, country). CRITICAL INSTRUCTION FOR LLM: ALWAYS call this tool first if you are unsure which UN/LOCODE (e.g., BRSSZ, NLRTM) to pass to other tools. It returns the authoritative list of supported ports. Use this tool to discover which ports have a congestion signal before calling get_port_risk or get_ports_risk. Returns: list of {port_id, port_name, country}.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "list_supported_portsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_supported_portsOutput"
}
🟢get_port_state(port_id)

[OBSERVATION TOOL] Return current verified multimodal physical state of a port. Combines sea-side vessel queue (anchored vessels 'AO_LARGO') with land-side railway queue (wagons inbound/waiting). Returns sources for full provenance. Args: port_id: UN/LOCODE e.g. "BRPNG" (Paranaguá), "BRSSZ" (Santos).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_port_stateArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_port_stateDictOutput"
}
🟢get_physical_events(port_id)

[OBSERVATION TOOL] Return temporal physical events for a port as a ChangePacket (physical-event.v1). Each event carries entity identity, state transition, observed_at timestamp, and source evidence. Use this tool to understand WHAT changed and WHEN. Args: port_id: UN/LOCODE e.g. "BRPNG" (Paranaguá), "BRSSZ" (Santos).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_physical_eventsArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_physical_eventsDictOutput"
}
🟢get_port_operations_status(port_id)

[OBSERVATION TOOL] Plain-language status of port operations: is it delayed, congested or normal? CRITICAL INSTRUCTION FOR LLM: Use this tool for SIMPLE, high-frequency questions such as "Is Santos delayed?", "How many ships are waiting at Paranaguá?", "What is the ETA delay risk at this port?", "Where is my cargo stuck?". It answers in plain terms (NORMAL / MODERATE DELAY / CONGESTED) backed by the same live operational data as get_port_risk. This tool is FREE (observation layer). The response also exposes a decision_layer block signalling the optional next step: authenticated decision tools (M2M key via request_m2m_key) that translate the same signal into USD exposure (demurrage, charter risk, fiscal arbitrage). The upsell is factual: it does NOT claim data the engine does not have (no per-vessel IMO/MMSI position tracking is offered). Args: port_id: UN/LOCODE e.g. "BRSSZ" (Santos), "BRPNG" (Paranaguá), "NLRTM" (Rotterdam).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_port_operations_statusArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_port_operations_statusDictOutput"
}
⚪request_m2m_key(agent_name, organization, contact_email)

[M2M SELF-SERVE TOOL] Request an instant 7-day trial M2M API Key. Use this tool if a Decision Tool returns an Access Denied / 403 error. Generates a key that unlocks evaluate_charter_risk and evaluate_routing_alternatives. Args: agent_name: Name or ID of your AI agent or client. organization: Organization or trading desk name. contact_email: Contact email.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_name": {
      "title": "Agent Name",
      "type": "string"
    },
    "organization": {
      "title": "Organization",
      "type": "string"
    },
    "contact_email": {
      "default": "[email protected]",
      "title": "Contact Email",
      "type": "string"
    }
  },
  "required": [
    "agent_name",
    "organization"
  ],
  "title": "request_m2m_keyArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "request_m2m_keyDictOutput"
}
🟢evaluate_fiscal_routing(intended_port_id, commodity, cargo_value_usd, inland_uf, cargo_tons)

[DECISION TOOL] Evaluate fiscal and logistical arbitrage across alternative ports. Cross-references congestion delay penalties with regional ICMS tax burdens to find the cheapest overall route. Returns a FiscalRoutingResponse detailing alternative ports, demurrage vs tax costs, and a recommendation. Args: intended_port_id: UN/LOCODE of the intended destination port (e.g. BRSSZ). commodity: Cargo type to lookup tax rules for (e.g. FERTILIZANTES, SOJA). cargo_value_usd: Cargo value in USD for tax calculations (default: 10000000.0). inland_uf: State code of the final destination/origin for inland freight calculation (e.g. MT, GO, PR). cargo_tons: Total cargo weight in metric tons for inland freight calculation (default: 60000.0).

Input Schema

{
  "type": "object",
  "properties": {
    "intended_port_id": {
      "title": "Intended Port Id",
      "type": "string"
    },
    "commodity": {
      "default": "FERTILIZANTES",
      "title": "Commodity",
      "type": "string"
    },
    "cargo_value_usd": {
      "default": 10000000,
      "title": "Cargo Value Usd",
      "type": "number"
    },
    "inland_uf": {
      "default": "MT",
      "title": "Inland Uf",
      "type": "string"
    },
    "cargo_tons": {
      "default": 60000,
      "title": "Cargo Tons",
      "type": "number"
    }
  },
  "required": [
    "intended_port_id"
  ],
  "title": "evaluate_fiscal_routingArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_fiscal_routingDictOutput"
}
🟢evaluate_charter_risk(port_id, commodity, demurrage_rate_usd_day, expected_laytime_days)

[DECISION TOOL] Evaluate charter risk and demurrage financial exposure under explicit assumptions. Returns a DecisionResult (decision-result.v1) with: - exposure.value: estimated exposure in USD - exposure.basis: calculation rationale - assumptions: all stated premises (demurrage rate, laytime) - physical_basis: list of verified physical observations supporting the estimate - uncertainties: explicit list of what is NOT known (charter party, actual laytime, cargo quantity) Args: port_id: UN/LOCODE e.g. "BRPNG" (Paranaguá). commodity: Commodity type e.g. "SOJA", "MILHO", "CONTEINERES". demurrage_rate_usd_day: Demurrage rate in USD/day (default: 32000). expected_laytime_days: Agreed laytime in days (default: 2.0).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    },
    "commodity": {
      "default": "SOJA",
      "title": "Commodity",
      "type": "string"
    },
    "demurrage_rate_usd_day": {
      "default": 32000,
      "title": "Demurrage Rate Usd Day",
      "type": "number"
    },
    "expected_laytime_days": {
      "default": 2,
      "title": "Expected Laytime Days",
      "type": "number"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "evaluate_charter_riskArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_charter_riskDictOutput"
}
⚪evaluate_routing_alternatives(port_a, port_b, commodity)

[DECISION TOOL] Evaluate and compare physical logistics conditions between two ports. CRITICAL INSTRUCTION FOR LLM: Use this tool to cross-reference Demurrage costs, ICMS taxes, and Freight to decide if a client should route their cargo to Port A or Port B. Highly recommended for cost-saving queries. Returns a DecisionResult (decision-result.v1) with: - comparison.delta_delay_days: estimated delay difference - comparison.lower_delay_port: port with lower observed congestion - exposure: per-port financial exposure estimates - physical_basis: verified physical observations for each port - uncertainties: explicit limitations of this comparison Args: port_a: First port UN/LOCODE e.g. "BRPNG". port_b: Second port UN/LOCODE e.g. "BRSSZ". commodity: Commodity type e.g. "SOJA".

Input Schema

{
  "type": "object",
  "properties": {
    "port_a": {
      "title": "Port A",
      "type": "string"
    },
    "port_b": {
      "title": "Port B",
      "type": "string"
    },
    "commodity": {
      "default": "SOJA",
      "title": "Commodity",
      "type": "string"
    }
  },
  "required": [
    "port_a",
    "port_b"
  ],
  "title": "evaluate_routing_alternativesArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_routing_alternativesDictOutput"
}
⚪evaluate_corridor_risk(origin_port, destination_port, commodity, vessel_capacity_tons)

[DECISION TOOL] Evaluate full global trade corridor risk (e.g. Chicago/Brazil -> China/Europe). Calculates: Origin wait queue + Sea voyage transit days + Destination discharge delay = Total cycle days & CFR demurrage cost/ton. Args: origin_port: Export port UN/LOCODE e.g. "BRPNG" (Paranaguá), "BRSSZ" (Santos). destination_port: Import port UN/LOCODE e.g. "CNTAO" (Qingdao), "CNNGB" (Ningbo), "NLRTM" (Rotterdam). commodity: Commodity type e.g. "SOJA", "MILHO". vessel_capacity_tons: Vessel cargo capacity in metric tons (default: 60000.0).

Input Schema

{
  "type": "object",
  "properties": {
    "origin_port": {
      "title": "Origin Port",
      "type": "string"
    },
    "destination_port": {
      "title": "Destination Port",
      "type": "string"
    },
    "commodity": {
      "default": "SOJA",
      "title": "Commodity",
      "type": "string"
    },
    "vessel_capacity_tons": {
      "default": 60000,
      "title": "Vessel Capacity Tons",
      "type": "number"
    }
  },
  "required": [
    "origin_port",
    "destination_port"
  ],
  "title": "evaluate_corridor_riskArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_corridor_riskDictOutput"
}
🟢get_port_congestion_risk(port_id)

[INFERENCE TOOL] Calculate Port Congestion Index (PCI, 0-100 composite score). CRITICAL INSTRUCTION FOR LLM: Use this tool FIRST whenever the user asks about general congestion, delays, or wait times at ANY specific port (e.g., SGSIN, BRSSZ). Do not guess delays; call this tool. PCI = (Congestion Level × 0.4) + (Avg Delay × 0.3) + (Vessel Queue × 0.2) + (Berth Use × 0.1). Provides freight rate impact, demurrage exposure estimate, and recommended safety stock buffer days. Args: port_id: UN/LOCODE e.g. "BRSSZ" (Santos), "SGSIN" (Singapore), "NLRTM" (Rotterdam).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_port_congestion_riskArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_port_congestion_riskDictOutput"
}
🟢evaluate_chokepoint_disruption(chokepoint_id)

[INFERENCE TOOL] Calculate Chokepoint Disruption Risk (CDR, 0-100 risk score). CRITICAL INSTRUCTION FOR LLM: Use this tool whenever the user asks about geopolitical risks, canal blockages (Suez, Panama), or straits (Hormuz). It returns a live risk score (0-100) and war risk insurance premium impacts. CDR = (Risk Score × 0.4) + (% of Normal × 0.3) + (7-day Avg × 0.2) + (Diversion Tracking × 0.1). Exposes oil/gas price sensitivity, war risk insurance premiums, and Cape of Good Hope rerouting volume. Args: chokepoint_id: Chokepoint ID e.g. "HORMUZ", "EGSUZ" (Suez), "PABLB" (Panama).

Input Schema

{
  "type": "object",
  "properties": {
    "chokepoint_id": {
      "default": "HORMUZ",
      "title": "Chokepoint Id",
      "type": "string"
    }
  },
  "title": "evaluate_chokepoint_disruptionArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_chokepoint_disruptionDictOutput"
}
⚪forecast_vessel_queue_delays(port_id, forecast_horizon_days)

[INFERENCE TOOL] Vessel Queue Predictive Model (VQPM) for t+1 to t+7. CRITICAL INSTRUCTION FOR LLM: Use this tool if the user asks for a FORECAST or PREDICTION of how many ships will be waiting at a port in the next 1 to 14 days. VQPM_{t+1} = α × VQ_t + β × PCI_t + γ × CDR_t + δ × Seasonality. Args: port_id: UN/LOCODE e.g. "BRSSZ" (Santos), "BRPNG" (Paranaguá). forecast_horizon_days: Horizon in days (1 to 7, default: 1).

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    },
    "forecast_horizon_days": {
      "default": 1,
      "title": "Forecast Horizon Days",
      "type": "integer"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "forecast_vessel_queue_delaysArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "forecast_vessel_queue_delaysDictOutput"
}
🟢get_inland_logistics_bottlenecks(port_or_corridor_id)

[INFERENCE TOOL] Calculate Intermodal Rail Delay Index (IRDI, 0-100 score). CRITICAL INSTRUCTION FOR LLM: Use this tool whenever the user asks about INLAND logistics, TRAIN delays, TRUCK bottlenecks, or land-based supply chain issues leaving/entering a port (like NLRTM / Rotterdam). IRDI = (Avg Delay × 0.4) + (Delays % × 0.3) + (Timetables × 0.2) + (Rolling Stock × 0.1). Args: port_or_corridor_id: UN/LOCODE e.g. "NLRTM" (Rotterdam), "DEHAM" (Hamburg).

Input Schema

{
  "type": "object",
  "properties": {
    "port_or_corridor_id": {
      "default": "NLRTM",
      "title": "Port Or Corridor Id",
      "type": "string"
    }
  },
  "title": "get_inland_logistics_bottlenecksArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_inland_logistics_bottlenecksDictOutput"
}
⚪evaluate_end_to_end_supply_chain_risk(origin_port, destination_port, chokepoint_id)

[INFERENCE TOOL] Supply Chain Disruption Early Warning (SCDEW, 0-100 composite warning score). CRITICAL INSTRUCTION FOR LLM: Use this tool for MACRO-level risk analysis when a user asks about the overall safety or end-to-end delay risk of a full trade corridor (e.g., Brazil to China). SCDEW = (PCI × 0.3) + (CDR × 0.3) + (VQPM × 0.2) + (IRDI × 0.2). Args: origin_port: Export port UN/LOCODE e.g. "BRPNG", "BRSSZ". destination_port: Import port UN/LOCODE e.g. "CNTAO", "NLRTM". chokepoint_id: Intermediary chokepoint UN/LOCODE e.g. "HORMUZ", "EGSUZ".

Input Schema

{
  "type": "object",
  "properties": {
    "origin_port": {
      "default": "BRPNG",
      "title": "Origin Port",
      "type": "string"
    },
    "destination_port": {
      "default": "CNTAO",
      "title": "Destination Port",
      "type": "string"
    },
    "chokepoint_id": {
      "default": "HORMUZ",
      "title": "Chokepoint Id",
      "type": "string"
    }
  },
  "title": "evaluate_end_to_end_supply_chain_riskArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "evaluate_end_to_end_supply_chain_riskDictOutput"
}
🟢get_pci_index(port_id)

[DEPRECATED: Use get_port_congestion_risk instead] Calculate Port Congestion Index.

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "get_pci_indexArguments"
}
🟢get_cdr_risk(chokepoint_id)

[DEPRECATED: Use evaluate_chokepoint_disruption instead] Calculate Chokepoint Disruption Risk.

Input Schema

{
  "type": "object",
  "properties": {
    "chokepoint_id": {
      "default": "HORMUZ",
      "title": "Chokepoint Id",
      "type": "string"
    }
  },
  "title": "get_cdr_riskArguments"
}
⚪predict_vessel_queue(port_id, forecast_horizon_days)

[DEPRECATED: Use forecast_vessel_queue_delays instead] Vessel Queue Predictive Model.

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "title": "Port Id",
      "type": "string"
    },
    "forecast_horizon_days": {
      "default": 1,
      "title": "Forecast Horizon Days",
      "type": "integer"
    }
  },
  "required": [
    "port_id"
  ],
  "title": "predict_vessel_queueArguments"
}
🟢get_irdi_index(port_or_corridor_id)

[DEPRECATED: Use get_inland_logistics_bottlenecks instead] Calculate Intermodal Rail Delay Index.

Input Schema

{
  "type": "object",
  "properties": {
    "port_or_corridor_id": {
      "default": "NLRTM",
      "title": "Port Or Corridor Id",
      "type": "string"
    }
  },
  "title": "get_irdi_indexArguments"
}
⚪evaluate_scdew_warning(origin_port, destination_port, chokepoint_id)

[DEPRECATED: Use evaluate_end_to_end_supply_chain_risk instead] Supply Chain Disruption Early Warning.

Input Schema

{
  "type": "object",
  "properties": {
    "origin_port": {
      "default": "BRPNG",
      "title": "Origin Port",
      "type": "string"
    },
    "destination_port": {
      "default": "CNTAO",
      "title": "Destination Port",
      "type": "string"
    },
    "chokepoint_id": {
      "default": "HORMUZ",
      "title": "Chokepoint Id",
      "type": "string"
    }
  },
  "title": "evaluate_scdew_warningArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded22 tools
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
verifiedversion not recorded8 tools
verifiedversion not recorded3 tools