Get Ports
get_portsFind ferry ports, harbors, maritime terminals, port IDs, codes, and geographic locations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ports | Yes |
get_portsFind ferry ports, harbors, maritime terminals, port IDs, codes, and geographic locations.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
| Name | Required | Description | Default |
|---|---|---|---|
| ports | Yes |
Changes observed during successful MCP inspections.
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"Output schema / (root)Previous value: -nullNew value: +{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false,
+ "properties": {
+ "ports": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "code": {
+ "description": "The unique code of the port",
+ "type": "string"
+ },
+ "countryName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "countryName",
+ "code"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ports"
+ ],
+ "type": "object"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint and openWorldHint already establish the safety profile, and an output schema exists to describe the return shape. The description adds only a taxonomy of result fields, which the output schema covers, and it omits the meaningful behavior: this is an unfiltered full-catalog fetch with no input criteria.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource. It drifts into a comma-separated synonym dump ('ferry ports, harbors, maritime terminals'), which is slightly wasteful but not confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no params, an output schema, and read-only annotations, the definition is close to sufficient. The remaining gap is scope disclosure: an agent cannot tell from the text whether this is a filtered search or a full listing, which affects how it plans a port-ID lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. What is missing is only the implication that the call returns everything rather than a search result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb is 'Find' and the resource is enumerated as ferry ports, harbors, maritime terminals, IDs, codes and locations, so the domain is clear. But it reads as a keyword list rather than a statement of what the call actually returns (an unfiltered port catalog), and it offers no differentiation from siblings like get_direct_connections_for_ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus search_trips, search_ferry_trips, or get_direct_connections_for_ports, and no statement that it takes no arguments and can be used as a reference lookup to resolve port IDs before other calls. The agent must infer all of this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.