VesselAPI MCP Server
VesselAPI MCP Server
Сервер MCP (Model Context Protocol), который предоставляет морские данные из VesselAPI для ИИ-ассистентов, таких как Claude Desktop, Cursor, Windsurf и Claude Code.
Предварительные требования
Зарегистрируйтесь на dashboard.vesselapi.com
Создайте API-токен в своей панели управления
Используйте токен как
VESSELAPI_API_KEYв конфигурации ниже
Ресурсы: Документация | API Explorer | Панель управления | Связаться с поддержкой
Related MCP server: @globalfishingwatch/gfw-mcp-js
Возможности
19 инструментов, охватывающих суда, порты, поиск по местоположению и выбросы
Поиск судов, позиции (одиночные и пакетные), ETA, выбросы и аварии
Поиск портов, детали, события порта (прибытия/отправления) и глобальный поиск событий порта
Географический поиск судов (ограничивающая рамка и радиус)
Ручная пагинация для контроля использования квоты API
Размещённое развёртывание
Размещённое развёртывание доступно на Fronteir AI.
Быстрый старт
Установка не требуется. Настройте свой ИИ-клиент с помощью npx:
{
"mcpServers": {
"vesselapi": {
"command": "npx",
"args": ["-y", "vesselapi-mcp"],
"env": {
"VESSELAPI_API_KEY": "your-api-key"
}
}
}
}Конфигурация
Добавьте приведённый выше JSON в файл конфигурации вашего клиента:
Клиент | Файл конфигурации |
Claude Desktop |
|
Cursor |
|
Claude Code |
|
Windsurf |
|
Инструменты
Инструменты для судов
Инструмент | Описание |
| Поиск судов по названию, IMO, MMSI, флагу, типу, позывному или году постройки |
| Получить подробную информацию о судне |
| Получить текущую позицию судна (широта/долгота, скорость, курс) |
| Получить расчетное время прибытия судна |
| Получить данные о выбросах (CO2, расход топлива) |
| Получить записи о морских авариях |
| Получить позиции для нескольких судов одновременно (с опциональным диапазоном времени) |
Инструменты для портов
Инструмент | Описание |
| Поиск портов по названию, стране, типу, размеру, региону, размеру гавани или использованию гавани |
| Получить детали порта по UN/LOCODE |
| Получить суда, направляющиеся в порт в пределах окна ETA |
| Получить прибытия/отправления для порта |
| Получить события порта для судна |
| Перечислить события порта глобально с фильтрами по времени, стране, порту, судну или типу события |
| Поиск событий порта по названию порта |
| Поиск событий порта по названию судна |
| Получить самое последнее событие порта для судна |
Инструменты для выбросов
Инструмент | Описание |
| Перечислить глобальные данные о выбросах судов с опциональным фильтром по году |
Инструменты для местоположения
Инструмент | Описание |
| Найти суда в ограничивающей рамке (с опциональным диапазоном времени) |
| Найти суда в радиусе от точки (с опциональным диапазоном времени) |
Пагинация
Все конечные точки списков поддерживают параметры limit и nextToken для ручной пагинации. Когда существует больше результатов, ответ включает nextToken. Передайте его в следующем вызове, чтобы получить следующую страницу.
Разработка
git clone https://github.com/vessel-api/vesselapi-mcp.git
cd vesselapi-mcp
npm install
npm run buildnpm run build # Build the server
npm run typecheck # Type-check without emitting
npm run clean # Remove build artifactsТестирование с MCP Inspector
VESSELAPI_API_KEY=your-key npx @modelcontextprotocol/inspector node dist/index.jsИсточники данных и атрибуция
Данные о выбросах и авариях: © Европейский союз. Источник: Европейское агентство по безопасности на море (EMSA): THETIS-MRV (EU MRV, Регламент (ЕС) 2015/757) и Европейская платформа информации о морских авариях (EMCIP). Используется повторно в соответствии с уведомлением Европейской комиссии о повторном использовании (Решение Комиссии 2011/833/ЕС), которое разрешает повторное использование в коммерческих и некоммерческих целях с указанием источника. Данные могут быть преобразованы и объединены; EMSA не поддерживает этот сервис.
Лицензия
MIT
Available Tools
19 toolsget_portA
Get detailed information about a specific port by UN/LOCODE
| Name | Required | Description | Default |
|---|---|---|---|
| unlocode | Yes | UN/LOCODE of the port (e.g. NLRTM for Rotterdam) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only indicates a read operation ('Get detailed information'), but lacks disclosure of behavioral traits such as authentication needs, rate limits, or what constitutes 'detailed information'. More detail is needed.
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?
The description is a single, concise sentence with no redundant words. It front-loads the purpose and is appropriately sized for the tool's simplicity.
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?
Given the tool has only one parameter and no output schema, the description is adequate but could be more complete. It does not specify what kind of information is returned (e.g., location, facilities, depth), which would help an agent anticipate the response.
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 description adds meaningful context beyond the schema by specifying 'by UN/LOCODE' and providing an example format 'e.g. NLRTM for Rotterdam'. With 100% schema coverage, this additional guidance helps the agent understand the parameter.
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 description clearly states the verb 'Get detailed information' and the resource 'port by UN/LOCODE'. It distinguishes from sibling tools like search_ports, which is about searching for ports, and get_port_events, which focuses on events.
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?
The description implies when to use the tool (when you have a UN/LOCODE), but does not provide explicit guidance on when not to use it or mention alternatives like search_ports. No prerequisites or contextual cues are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_port_eventsA
Get port events (arrivals/departures) for a specific port. Covers only the last 2 hours unless timeFrom is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| timeTo | No | End of the time window, RFC3339. Defaults to now. | |
| timeFrom | No | Start of the time window, RFC3339. Without it the service returns only the last 2 hours. | |
| unlocode | Yes | UN/LOCODE of the port | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a significant behavioral trait: the default 2-hour window unless timeFrom is given. This is valuable information. However, it says nothing about authentication, rate limits, or the nature of the response (e.g., pagination, ordering). For a read-only tool, some behavior is disclosed, but not comprehensively.
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?
The description is two sentences, both essential. The first sentence states the purpose, the second clarifies a critical default behavior. No redundant filler or repetition of schema info. The content is front-loaded and appropriately sized for the tool's complexity.
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?
Given 5 parameters all documented in the schema and no output schema, the description provides the key missing context: the default time window. The tool is moderately simple, and the description covers the main behavioral nuance. It doesn't discuss the return structure, but without an output schema that is expected. The presence of many siblings could have been handled with differentiation, but that's a minor gap.
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?
Schema description coverage is 100%, so the schema already describes all parameters. The description adds no parameter-specific syntax or meaning beyond what the schema provides. It mentions timeFrom in relation to the default window, but that is already stated in the schema's description for timeFrom. Thus, the description adds no meaningful supplemental parameter semantics.
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 description states the action clearly: 'Get port events (arrivals/departures) for a specific port.' It specifies the resource (port) and the type of data (events). While it distinguishes from vessel-specific event tools like get_port_events_by_vessel, it doesn't explicitly differentiate from list_port_events or search_port_events_by_port, which are similar port-event tools. The verb 'Get' and resource 'port events' are specific enough, but sibling differentiation is incomplete.
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?
The description implicitly advises on a key usage condition: 'Covers only the last 2 hours unless timeFrom is given.' That hints at when to set timeFrom. However, it provides no explicit guidance on when to choose this tool over alternatives like list_port_events or search_port_events_by_port, nor any exclusions. The context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_port_events_by_vesselA
Get port events (arrivals/departures) for a specific vessel
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| idType | No | Identifier type: imo (default) or mmsi | |
| timeTo | No | End time (ISO 8601 format) | |
| timeFrom | No | Start time (ISO 8601 format) | |
| vesselId | Yes | Vessel identifier (IMO number by default) | |
| eventType | No | Filter by event type. Omit for both arrivals and departures | |
| nextToken | No | Pagination token from previous response | |
| sortOrder | No | Sort order by timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior, but it only restates the function without noting default sorting, pagination, or filtering capabilities. The input schema covers parameter details, so the bar is lowered, but the description adds no extra behavioral context beyond what the name implies.
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?
The description is a single, direct sentence that is appropriately front-loaded with the verb and object. It is concise and to the point without unnecessary details.
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?
Given the tool's complexity (8 parameters, pagination, filtering, sorting) and the absence of an output schema, the description is insufficient. It does not explain what the response contains (e.g., a list of events, fields returned) or mention pagination behavior. The description should provide more context about the returned data and usage examples.
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 schema has 100% parameter description coverage, so the baseline is 3. The description itself does not add any additional meaning to the parameters; it merely repeats the vessel focus. It does not clarify any ambiguous fields or provide context beyond the schema.
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 description clearly states the action ('Get') and the resource ('port events') with a specific scope ('for a specific vessel'). It effectively distinguishes from siblings like 'get_port_events' (which likely targets a port) and 'search_port_events_by_vessel' (which implies search semantics vs direct retrieval).
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?
The description implies when to use it: when you have a known vessel identifier and need its port events. However, it does not explicitly mention alternatives or situations where this tool should be avoided (e.g., when searching with flexible criteria, use 'search_port_events_by_vessel'). The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_port_inboundA
Get vessels heading to a specific port within an ETA arrival window
| Name | Required | Description | Default |
|---|---|---|---|
| etaTo | No | End of ETA arrival window (RFC3339). Omit to default to 72 hours ahead. | |
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| timeTo | No | AIS position time range end (RFC3339 format) | |
| etaFrom | No | Start of ETA arrival window (RFC3339). Omit to default to now. | |
| timeFrom | No | AIS position time range start (RFC3339 format) | |
| unlocode | Yes | UN/LOCODE of the destination port (e.g. NLRTM for Rotterdam) | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states the high-level purpose and does not describe pagination behavior, default windows, return shape, or any safety/permission considerations. This leaves key behavioral details undisclosed.
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?
The description is a single efficient sentence with no filler. It is concise and front-loaded, though slightly too sparse to fully carry behavioral context on its own.
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?
For a tool with 7 parameters and no output schema or annotations, the description alone is only minimally complete. It states the core use case, and the schema supplies parameter details, but return behavior, pagination semantics, and the meaning of the AIS time range in the overall flow are not described.
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 input schema covers 100% of the parameters with useful descriptions, including defaults, ranges, and RFC3339 formats. The description itself adds little beyond the schema, so the baseline moderate score is appropriate.
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 description uses a specific verb and resource: 'Get vessels heading to a specific port within an ETA arrival window.' This clearly defines the tool's scope and distinguishes it from sibling tools that focus on individual vessels, positions, or port events.
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?
The description provides a clear usage context: querying port-bound vessels by ETA window. It does not explicitly list alternatives or exclusions, but the stated port-and-ETA focus gives enough direction to choose this tool over vessel-position or port-event siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vesselC
Get detailed information about a specific vessel
| Name | Required | Description | Default |
|---|---|---|---|
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Get detailed information'. It does not mention read-only behavior, response shape, error handling, or any prerequisites, leaving significant behavioral ambiguity.
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?
The description is a single, front-loaded sentence with no filler. It is efficient, though somewhat generic and under-specified compared to stronger examples that also provide usage context.
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?
There is no output schema, no annotations, and many sibling vessel tools, yet the description does not explain what 'detailed information' returns or how it relates to the siblings. It is minimally viable but insufficient for confident tool selection in this context.
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?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter semantics beyond the schema, but the schema already documents vesselId and idType, including the imo default, so no major gap exists.
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 description states a clear action ('Get') and resource ('detailed information about a specific vessel'). This distinguishes it by implication from sibling tools like get_vessel_position or get_vessel_eta, but it never explicitly defines what 'detailed information' includes or names alternatives.
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?
No guidance is provided about when to use this tool instead of tools like get_vessel_position, get_vessel_eta, get_vessel_emissions, or get_vessel_casualties. The intended usage is only implied by the generic phrase 'detailed information', with no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_casualtiesC
Get marine casualty records for a vessel
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only states that records are retrieved, but does not disclose pagination behavior, read-only nature, potential response structure, or any side effects. The description adds minimal value beyond the name.
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?
The description is a single sentence, concise and front-loaded. There is zero wasted text or redundancy. It is appropriately minimal, which is a strength given the low complexity of the tool.
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?
The description lacks necessary context for a tool with no output schema and no annotations. It does not explain what casualty records include, the return format, or any specific behavioral aspects. Given the complexity (4 parameters, pagination), a richer description is warranted to make the tool fully usable without external documentation.
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 description does not add any parameter information beyond the schema. Schema coverage is 100%, with clear descriptions for limit, idType, vesselId, and nextToken. The phrase 'for a vessel' corresponds to vesselId, but the description adds nothing extra, so the baseline 3 for high schema coverage applies.
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 description clearly states the action (Get) and the resource (marine casualty records) with a scope (for a vessel). It is distinct from sibling tools like get_vessel_position or get_vessel_emissions, as the resource type is unique. However, it lacks specificity on what 'casualty records' entails, so it doesn't fully distinguish edge cases.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention any prerequisites, limitations, or alternatives. The one-line description offers no context for selection among the many sibling vessel-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_emissionsB
Get emissions data for a vessel (CO2, fuel consumption)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get emissions data,' which implies a read operation, but does not disclose pagination behavior (nextToken), default identifier type, rate limits, or any other behavioral traits. The description adds no context beyond the action itself.
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?
The description is a single concise sentence with a clear verb and purpose, front-loaded with 'Get emissions data.' No wasted words, though it could include sibling differentiation or usage hints without becoming verbose.
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 output schema and no annotations, the description is adequate but minimal. It does not mention pagination tokens, identifier defaults, or how this tool compares to list_emissions. For a tool with four parameters and many siblings, richer context would help, but the schema already covers parameter meanings.
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?
Schema description coverage is 100% (all four parameters have descriptions), so the baseline is 3. The description does not add parameter-level meaning beyond the schema; it mentions data fields (CO2, fuel consumption) but not how parameters affect the output. No credit is needed beyond the schema's existing coverage.
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 description clearly states the action ('Get'), the resource ('emissions data for a vessel'), and the data scope ('CO2, fuel consumption'). This distinguishes it from sibling vessel tools like get_vessel_position and get_vessel_eta, and the 'for a vessel' qualifier separates it from list_emissions.
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?
No guidance is given about when to use this tool versus alternatives. The sibling list_emissions likely provides fleet-level emissions data, but the description does not mention trade-offs or exclusions. There is no 'when not to use' or reference to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_etaB
Get the estimated time of arrival for a vessel
| Name | Required | Description | Default |
|---|---|---|---|
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but adds nothing beyond the name's implication. It does not disclose return format, units, calculation basis, failure scenarios, or any other behavioral trait. It is effectively a tautology of the tool name.
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 sentence with no filler. The core purpose is stated clearly and immediately with minimal words.
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?
Despite the tool's apparent simplicity, there is no output schema and no annotation to compensate. The description leaves the agent without information about what the ETA response looks like, whether units are hours/dates, or how it differs from related position/port tools. This is too sparse for reliable tool selection and invocation.
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?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter details, but the schema already documents both vesselId and idType well, including the enum values and defaults.
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 description uses a specific verb 'Get' with a precise resource 'estimated time of arrival for a vessel'. This directly differentiates it from sibling tools like get_vessel_position or get_vessel_emissions by focusing on ETA.
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?
No guidance is given on when to use this tool versus alternatives. Sibling tools like get_vessel_position and get_vessel_emissions are not mentioned, nor are any exclusions or contextual triggers provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_last_port_eventB
Get the most recent port event (arrival or departure) for a vessel
| Name | Required | Description | Default |
|---|---|---|---|
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('Get') but does not explain behavior in edge cases (e.g., no events found, invalid vessel ID), whether the result is a single event or a list, or what fields are returned. This is insufficient for a tool with no schema annotations.
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?
The description is a single concise sentence that fully conveys the core action without any unnecessary words. It is front-loaded and efficient, earning the highest score for conciseness and structure.
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?
The tool is relatively simple with only two parameters, and the description adequately captures the primary intent. However, since there is no output schema, the description does not specify the shape or content of the returned event, which would improve completeness. Given the simplicity, this is still acceptable but leaves some ambiguity.
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 schema description coverage is 100% as both parameters (idType and vesselId) have descriptions in the schema. Per the rubric, when coverage is high, the baseline score is 3. The tool description itself adds no extra meaning to the parameters beyond what the schema already provides, so no bonus is warranted.
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 description clearly states the tool's purpose: getting the most recent port event (arrival or departure) for a vessel. It uses a specific verb and resource, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like get_port_events_by_vessel or list_port_events, so it misses the full mark for sibling distinction.
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?
The description provides no guidance on when to use this tool versus alternatives. It offers no context about scenarios where this tool is preferred or when other tools should be used. There is no mention of exclusions, prerequisites, or alternative approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_positionB
Get the current position of a vessel (latitude, longitude, speed, heading)
| Name | Required | Description | Default |
|---|---|---|---|
| sat | No | Fall back to a satellite position when no recent terrestrial one exists. Charged per call against a prepaid balance, so use it only when a stored position is genuinely insufficient. | |
| idType | No | Identifier type: imo (default) or mmsi | |
| vesselId | Yes | Vessel identifier (IMO number by default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions satellite fallback is charged per call (via the 'sat' parameter), which is useful, but it doesn't disclose the default behavior (e.g., what happens if no terrestrial position exists without sat=true? Does it return null or error?). It also doesn't mention data freshness or potential delays. The description adds minimal behavioral context beyond the schema.
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?
The description is a single concise sentence that front-loads the purpose. Zero waste, effectively communicates the core function. The schema handles parameter details.
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?
This is a moderately simple read operation with no output schema and full schema parameter coverage. The description covers the return value but doesn't discuss edge cases (e.g., no position available, satellite fallback behavior) or whether it's a direct lookup vs. historical. With no annotations, it could benefit from a note on default behavior, but it's adequate for basic selection.
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?
Schema description coverage is 100%, so the schema already explains all parameters. The description adds value by explicitly listing the returned fields (latitude, longitude, speed, heading), which helps agents understand the output. The 'sat' parameter guidance about prepaid balance is also valuable. Baseline 3, plus extra context, justifies 4.
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 description clearly states the tool returns current position data (latitude, longitude, speed, heading) for a specific vessel. It distinguishes from siblings like get_vessel (general info) and get_vessel_eta (estimated arrival), though it doesn't explicitly name alternatives.
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?
The schema's 'sat' parameter includes guidance on when to use satellite fallback (only when stored position is insufficient), which implies usage context. However, the description itself doesn't specify when to use this tool versus alternative position tools like get_vessel_positions_batch or get_vessels_in_area. The description lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessel_positions_batchA
Get positions for multiple vessels at once by MMSI or IMO numbers
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Comma-separated list of MMSI or IMO numbers | |
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| idType | No | Identifier type: imo (default) or mmsi | |
| timeTo | No | End time filter in RFC3339 format (defaults to current time) | |
| timeFrom | No | Start time filter in RFC3339 format (defaults to 2 hours ago) | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral transparency. It only states what the tool does without disclosing details such as pagination (nextToken), default time ranges, limits on batch size, or potential rate limits. This is a significant gap for a batch operation.
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?
The description is a single, concise sentence that is front-loaded with the core purpose. It avoids redundancy and is well-structured, every word adds value.
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?
Given the tool's batch nature and lack of output schema, the description provides only the bare minimum. It does not explain that the response will contain positions for each requested vessel or mention pagination, which are relevant for a batch API. The schema partially compensates, but the description could be more complete.
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 input schema already provides descriptions for all parameters (100% coverage), so the baseline is 3. The description adds minimal extra meaning beyond the schema (e.g., 'by MMSI or IMO numbers' is already in the ids parameter description). No contradictions or additional insights.
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 description clearly states the tool's purpose: 'Get positions for multiple vessels at once by MMSI or IMO numbers'. It specifies the action (get positions), the resource (multiple vessels), and the identifier types, which distinguishes it from sibling tools like get_vessel_position (single vessel) and search_vessels.
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?
The description implies usage for batch position retrieval ('multiple vessels at once'), which contrasts with single-vessel tools in the sibling list. However, it does not explicitly state when not to use this tool or reference alternatives. The context is clear but not prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessels_in_areaA
Find all vessels within a rectangular bounding box (latitude/longitude)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| latMax | Yes | Northern boundary latitude | |
| latMin | Yes | Southern boundary latitude | |
| lonMax | Yes | Eastern boundary longitude | |
| lonMin | Yes | Western boundary longitude | |
| timeTo | No | End of the time window, RFC3339. Defaults to now. The window may not exceed 4 hours. | |
| timeFrom | No | Start of the time window, RFC3339. Defaults to 2 hours ago. The window may not exceed 4 hours. | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description implies a read-only operation ('Find') without explicitly stating side effects, permissions, or return values. While it likely does not modify data, the lack of clarity about outputs or potential restrictions limits transparency.
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?
The description is a single concise sentence that accurately summarizes the tool's primary function without redundancy. It omits details that are appropriately captured in the schema, maintaining a clean and focused structure.
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?
While the description and schema cover the inputs well, the tool lacks an output schema, and the description does not specify what the response contains (e.g., vessel IDs, full details). The presence of pagination and time window parameters suggests additional context, but the lack of response documentation reduces completeness.
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?
All parameters are listed and described in the schema, including their purpose and constraints (e.g., limit has maximum 50, time window limits). The bounding box and pagination fields are clearly explained, and the required parameters are self-evident. This provides excellent parameter clarity.
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 tool name 'get_vessels_in_area' and description unambiguously specify the operation: retrieving vessels within a rectangular bounding box defined by latitude/longitude. The description is concise and direct, making the purpose immediately clear.
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?
The description explains what the tool does but does not explicitly state when to use it relative to other similar tools like 'get_vessels_in_radius' or 'search_vessels'. It also does not mention prerequisites or typical use cases, leaving some ambiguity for a user choosing between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vessels_in_radiusA
Find all vessels within a radius of a point. The radius is in METRES, not nautical miles or kilometres.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| radius | Yes | Search radius in METRES, maximum 100000 (100 km). One nautical mile is 1852 metres. | |
| timeTo | No | End of the time window, RFC3339. Defaults to now. The window may not exceed 4 hours. | |
| latitude | Yes | Center latitude | |
| timeFrom | No | Start of the time window, RFC3339. Defaults to 2 hours ago. The window may not exceed 4 hours. | |
| longitude | Yes | Center longitude | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the unit requirement (METRES) and implies a read-only operation (find), but does not mention pagination, time window constraints, or any side effects. The description adds some value beyond the schema by emphasizing units, but lacks deeper behavioral context like rate limits or data freshness.
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?
The description is a single, focused sentence that front-loads the core purpose and adds a critical unit warning. No wasted words, perfectly concise.
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?
Given the tool has 7 parameters, no output schema, and no annotations, the description is minimal. It covers the core purpose and unit, but does not address pagination, time window behavior, or result format. For a tool with this complexity, more context would be helpful, but the schema covers parameter details. The description is adequate but not comprehensive.
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?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds the critical unit clarification for radius, which is valuable. However, it does not explain the relationship between parameters (e.g., timeFrom/timeTo window) beyond what the schema provides. Baseline 3 is appropriate given high schema coverage.
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 description clearly states the tool's function: 'Find all vessels within a radius of a point.' It specifies the resource (vessels) and the action (find within radius), and the emphasis on units (METRES) adds precision. It distinguishes from siblings like get_vessels_in_area by the radius-based search, though it doesn't explicitly name the alternative.
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?
The description implies usage for radius-based vessel search but does not provide explicit guidance on when to use this tool versus alternatives like get_vessels_in_area or search_vessels. The unit clarification is helpful but not a usage guideline. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emissionsB
List global vessel emissions data with optional year filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| period | No | Reporting year filter (e.g. 2024) | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It mentions filtering but does not disclose pagination behavior beyond the schema's nextToken parameter, nor does it explain whether the output includes aggregated or per-vessel details, whether results are sorted, or if any data is excluded. For a list operation with pagination, this is a notable gap in behavioral transparency.
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?
The description is a single, concise sentence that is front-loaded with the main action ('List global vessel emissions data') and immediately identifies the key parameter ('optional year filter'). Every word earns its place; there is zero redundancy or filler.
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?
Given that there is no output schema and no annotations, the description provides only a basic overview. It successfully communicates the core purpose and the main filter, but it omits details about pagination semantics (other than the schema's nextToken) and what constitutes 'emissions data' (e.g., CO2, NOx). For a list tool with no output schema, the description could be more complete to guide agents on expected results.
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 schema covers 100% of parameters with descriptions (limit, period, nextToken). The description adds the insight that 'period' is a reporting year filter, which aligns with the schema, and it mentions the year filter as the key optional feature. However, it does not add detail beyond the schema's own parameter descriptions, so the baseline of 3 is appropriate.
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 description 'List global vessel emissions data with optional year filter' clearly states the verb (list), resource (global vessel emissions data), and key capability (optional year filter). It distinguishes itself from sibling tools like get_vessel_emissions (which likely targets a specific vessel) by explicitly saying 'global', though it does not directly name an alternative. Thus it's clear but slightly short of fully differentiating from related emission tools.
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?
The description implies usage for listing emissions data, and the 'optional year filter' hints at when to apply filtering. However, it does not provide explicit guidance on when to use this tool versus alternatives like get_vessel_emissions for a specific vessel or search_vessels. There are no exclusions or alternative tool names, so it's adequate but lacks explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_port_eventsA
List port events (arrivals/departures) globally with optional filters for time, country, port, vessel, or event type
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| timeTo | No | End time (RFC3339 format) | |
| country | No | Filter by port country (case-insensitive) | |
| portName | No | Filter by port name (full-text search) | |
| timeFrom | No | Start time (RFC3339 format) | |
| unlocode | No | Filter by port UN/LOCODE | |
| eventType | No | Filter by event type. Omit for both arrivals and departures | |
| nextToken | No | Pagination token from previous response | |
| vesselName | No | Filter by vessel name (full-text search) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses global scope and that the events are arrivals/departures, and 'List' implies a read-only operation. However, it does not mention pagination, default time behavior, ordering, or response contents, which are important for a 9-parameter filter tool.
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?
The description is a single sentence that front-loads the verb and resource, then compactly summarizes the optional filter groups. There is no filler, redundancy, or repetition of schema details.
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?
The description conveys core purpose and filter categories, and the schema covers all parameter details. However, there is no output schema and the description omits operational details such as pagination semantics, time-range behavior, and what fields are returned for each event, leaving some important context for the agent to infer.
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?
Schema description coverage is 100%, so the schema fully documents all 9 parameters with descriptions. The tool description only summarizes filter categories (time, country, port, vessel, event type) without adding meaning beyond the schema, which matches the baseline for high schema coverage.
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 description uses a specific verb ('List') with a clear resource ('port events') and scope ('globally'), and enumerates the main filter categories: time, country, port, vessel, and event type. This clearly distinguishes it from sibling tools like get_port_events or search_port_events_by_vessel, which target a single port or vessel.
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?
The phrase 'globally' provides clear context that this tool is for cross-port event searches rather than port-specific or vessel-specific lookups. It does not explicitly name sibling alternatives or state when not to use it, but the global scope plus optional filters gives an agent enough context to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_port_events_by_portA
Search port events by port name. Covers only the last 2 hours unless timeFrom is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| timeTo | No | End of the time window, RFC3339. Defaults to now. | |
| portName | Yes | Port name to search for | |
| timeFrom | No | Start of the time window, RFC3339. Without it the service returns only the last 2 hours. | |
| nextToken | No | Pagination token from previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It usefully discloses a non-obvious time-window default ('only the last 2 hours unless timeFrom is given'), which is important. But it omits other behavioral details such as result ordering, output shape, or explicit read-only confirmation, so it is adequate but incomplete.
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?
The description is a single, front-loaded sentence with no wasted words. It states the core action and the most important behavioral caveat efficiently.
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?
The tool is relatively simple with no output schema and 5 parameters. The description covers the primary search behavior and the key time-window caveat, but it does not describe return values, pagination behavior, or how this relates to similar sibling tools, leaving some context gaps.
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?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds little beyond the schema, though it reinforces the relationship between timeFrom and the 2-hour default already present in the schema.
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 description uses a specific verb ('Search'), names the resource ('port events'), and identifies the filtering dimension ('by port name'). This clearly distinguishes it from sibling tools like search_port_events_by_vessel.
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?
The description implies usage when looking up port events by port name, and it notes the 2-hour default window. However, it does not explicitly mention alternatives or when not to use this tool, leaving selection guidance mostly to the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_port_events_by_vesselA
Search port events by vessel name. Covers only the last 2 hours unless timeFrom is given.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| timeTo | No | End of the time window, RFC3339. Defaults to now. | |
| timeFrom | No | Start of the time window, RFC3339. Without it the service returns only the last 2 hours. | |
| nextToken | No | Pagination token from previous response | |
| vesselName | Yes | Vessel name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the full burden. The description adds the crucial behavior about the 2-hour default window, which is not exposed elsewhere in the schema (the schema only says 'without it the service returns only the last 2 hours' in timeFrom, but that is part of schema). The description also states 'Covers only the last 2 hours unless timeFrom is given' which reinforces that. However, it does not disclose other behaviors like pagination, rate limits, whether the search supports partial matching, or if it might be slow. Given the schema already mentions the time window in the timeFrom parameter description, the description adds little beyond that; it repeats the schema's info. With no annotations, a score of 3 is appropriate because it adds some context (emphasizing the default window) but lacks deeper behavioral disclosure such as ordering, filtering, or error cases.
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?
The description is one sentence, but it's front-loaded with the core purpose and then adds a critical qualifier about the time window. It's efficient with no waste. However, it might have been more structured with a second sentence on usage context, but given its brevity, it's well-organized. It earns a 4 because it is concise but slightly dense; it could have been split for clarity, but it's not a problem.
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?
Given the tool's moderate complexity (5 params, 1 required), the description is sufficient for basic usage but lacks some completeness. It tells the agent the basic action and the time default, but it doesn't specify the output structure (no output schema), nor does it mention if there are any prerequisites (e.g., requiring a valid vessel name) or any limitations like only covering certain types of port events. With no output schema, a description of return value would be valuable but is absent. The schema covers parameters well, but the tool's behavior around the search (e.g., does it return events in chronological order? Does it support wildcard?) is missing. So 3 is fair.
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?
Schema coverage is 100%, so the schema already describes all five parameters: vesselName, timeFrom, timeTo, limit, nextToken. The description adds minimal parameter semantics beyond what's in the schema; it highlights the timeFrom dependency for extending beyond 2 hours, but that is also in the schema. It doesn't explain the relationship between timeFrom and timeTo or how pagination works, but the schema covers that. With full schema coverage, the baseline is 3, and the description offers no extra depth about parameter usage, so 3 is correct.
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 description clearly states the tool's function: 'Search port events by vessel name.' The verb 'search' specifies the action, the resource 'port events' is specified, and the parameter 'vessel name' distinguishes it from the sibling tools like 'get_port_events_by_vessel' (which may imply a different retrieval mode) and 'search_vessels' (which searches for vessel details). It uniquely targets port events filtered by vessel name, which is not covered by other siblings such as 'get_vessel' or 'get_port_events'.
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?
The description implies usage for searching port events filtered by vessel name, and it provides a significant usage context: the default time window is only the last 2 hours unless 'timeFrom' is provided. This guides the agent on when to use it (e.g., for recent events or specific time range with timeFrom) and implicitly contrasts with tools like 'get_vessel_last_port_event' or 'get_port_inbound' that might retrieve specific events. However, it doesn't explicitly mention when not to use it or list alternatives, but the time window caveat is very useful for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_portsB
Search for ports by name, country, type, size, region, harbor size, or harbor use
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Port name (partial match) | |
| size | No | Port size classification | |
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| region | No | Geographic region (partial match) | |
| country | No | Country (ISO code) | |
| portType | No | Port type classification | |
| harborUse | No | Primary harbor use | |
| nextToken | No | Pagination token from previous response | |
| harborSize | No | Harbor size classification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not mention pagination, result limits, partial matching behavior, or any side effects. The schema includes limit and nextToken, but the description does not clarify that this is a paginated listing or how results are structured.
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?
The description is a single, concise sentence that directly states the tool's purpose without padding. Every word contributes meaning.
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?
Given the lack of an output schema and the tool's complexity (9 optional parameters), the description is adequate but incomplete. It does not explain the return format, pagination workflow, or any constraints beyond the schema. An agent might infer pagination from limit/nextToken but there is no explicit guidance.
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?
Schema coverage is 100%, so baseline is 3. The description restates the parameters in natural language but adds no additional semantic meaning beyond what the schema provides (e.g., data formats, examples, or dependencies). It does not compensate for any gaps.
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 description clearly states the action (search) and the resource (ports) and lists the search criteria (name, country, type, size, region, harbor size, harbor use). It is specific and verb-driven, distinguishing it from tools like get_port which fetch individual 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?
No mention of when to use this tool versus alternatives (e.g., get_port, search_vessels) or any context on typical use cases. The description provides no guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vesselsA
Search for vessels. Use q when you have an identifier but do not know which kind it is; use the specific filters to narrow a fleet.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search across name, IMO, MMSI, ENI and callsign. Use this when the type of identifier is unknown. | |
| eni | No | ENI number, used for inland waterway vessels | |
| imo | No | IMO number | |
| flag | No | Flag state (ISO country code) | |
| mmsi | No | MMSI number | |
| name | No | Vessel name (partial match) | |
| limit | No | Results per page, 1 to 50. Defaults to 20. | |
| callsign | No | Radio callsign | |
| nextToken | No | Pagination token from previous response | |
| vesselType | No | Vessel type | |
| yearBuiltMax | No | Maximum year built | |
| yearBuiltMin | No | Minimum year built |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It does not disclose pagination behavior, return format, or any side effects. It only explains search semantics; for a read-only search this is minimal, but safety implications are left unstated.
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?
The description is two sentences with clear front-loading: 'Search for vessels.' followed by targeted usage guidance. Every word earns its place.
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?
The tool has many optional parameters and no output schema. The description is brief but the schema covers parameter details. Missing info on pagination or response structure, though limit/nextToken are in schema. It orients the user but is not fully complete.
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 schema provides 100% coverage of all 12 parameters with descriptions, so the baseline is 3. The description adds strategic semantics about q for unknown identifiers and specific filters for narrowing a fleet, adding value beyond the schema.
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 description clearly states the action: 'Search for vessels.' It also distinguishes between using 'q' for unknown identifiers and specific filters for narrowing a fleet, which helps differentiate from sibling get_vessel* tools that fetch by known IDs.
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?
Provides explicit usage guidance: use 'q' when the identifier type is unknown, and use specific filters to narrow a fleet. However, it does not mention alternatives like get_vessel for known IDs or compare with other sibling search tools, so it's clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
23 tool updates
v2.0.0- Removed
get_navtex_messages - Changed
get_port_events6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / timeFromAdded value: +{ + "description": "Start of the time window, RFC3339. Without it the service returns only the last 2 hours.", + "type": "string" +} - added
Input schema / properties / timeToAdded value: +{ + "description": "End of the time window, RFC3339. Defaults to now.", + "type": "string" +}
- Changed
get_port_events_by_vessel10 fields changed- changed
Input schema / properties / eventType / descriptionPrevious value: -"Filter by event type (arrival, departure)"New value: +"Filter by event type. Omit for both arrivals and departures" - added
Input schema / properties / eventType / enumAdded value: +[ + "arrival", + "departure", + "all" +] - changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / sortOrder / descriptionPrevious value: -"Sort order by timestamp (asc or desc)"New value: +"Sort order by timestamp" - added
Input schema / properties / sortOrder / enumAdded value: +[ + "asc", + "desc" +]
- Changed
get_port_inbound7 fields changed- changed
Input schema / properties / etaFrom / descriptionPrevious value: -"Start of ETA arrival window (RFC3339 format, e.g. 2026-03-07T00:00:00Z)"New value: +"Start of ETA arrival window (RFC3339). Omit to default to now." - changed
Input schema / properties / etaTo / descriptionPrevious value: -"End of ETA arrival window (RFC3339 format, e.g. 2026-03-14T00:00:00Z)"New value: +"End of ETA arrival window (RFC3339). Omit to default to 72 hours ahead." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / requiredPrevious value: -[ - "unlocode", - "etaFrom", - "etaTo" -]New value: +[ + "unlocode" +]
- Changed
get_vessel2 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +]
- Changed
get_vessel_casualties6 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Removed
get_vessel_classification - Changed
get_vessel_emissions6 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
get_vessel_eta2 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +]
- Removed
get_vessel_inspection_detail - Removed
get_vessel_inspections - Changed
get_vessel_last_port_event2 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +]
- Removed
get_vessel_ownership - Changed
get_vessel_position3 fields changed- changed
Input schema / properties / idType / descriptionPrevious value: -"Identifier type: imo (default), mmsi, or vesselId"New value: +"Identifier type: imo (default) or mmsi" - added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +] - added
Input schema / properties / satAdded value: +{ + "description": "Fall back to a satellite position when no recent terrestrial one exists. Charged per call against a prepaid balance, so use it only when a stored position is genuinely insufficient.", + "type": "boolean" +}
- Changed
get_vessel_positions_batch5 fields changed- added
Input schema / properties / idType / enumAdded value: +[ + "imo", + "mmsi" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
get_vessels_in_area6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / timeFrom / descriptionPrevious value: -"Start time filter in RFC3339 format (defaults to 2 hours ago)"New value: +"Start of the time window, RFC3339. Defaults to 2 hours ago. The window may not exceed 4 hours." - changed
Input schema / properties / timeTo / descriptionPrevious value: -"End time filter in RFC3339 format (defaults to current time)"New value: +"End of the time window, RFC3339. Defaults to now. The window may not exceed 4 hours."
- Changed
get_vessels_in_radius7 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / radius / descriptionPrevious value: -"Radius in nautical miles"New value: +"Search radius in METRES, maximum 100000 (100 km). One nautical mile is 1852 metres." - changed
Input schema / properties / timeFrom / descriptionPrevious value: -"Start time filter in RFC3339 format (defaults to 2 hours ago)"New value: +"Start of the time window, RFC3339. Defaults to 2 hours ago. The window may not exceed 4 hours." - changed
Input schema / properties / timeTo / descriptionPrevious value: -"End time filter in RFC3339 format (defaults to current time)"New value: +"End of the time window, RFC3339. Defaults to now. The window may not exceed 4 hours."
- Changed
list_emissions4 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
list_port_events6 fields changed- changed
Input schema / properties / eventType / descriptionPrevious value: -"Filter by event type (arrival, departure)"New value: +"Filter by event type. Omit for both arrivals and departures" - added
Input schema / properties / eventType / enumAdded value: +[ + "arrival", + "departure", + "all" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
search_port_events_by_port6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / timeFromAdded value: +{ + "description": "Start of the time window, RFC3339. Without it the service returns only the last 2 hours.", + "type": "string" +} - added
Input schema / properties / timeToAdded value: +{ + "description": "End of the time window, RFC3339. Defaults to now.", + "type": "string" +}
- Changed
search_port_events_by_vessel6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / timeFromAdded value: +{ + "description": "Start of the time window, RFC3339. Without it the service returns only the last 2 hours.", + "type": "string" +} - added
Input schema / properties / timeToAdded value: +{ + "description": "End of the time window, RFC3339. Defaults to now.", + "type": "string" +}
- Changed
search_ports4 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
search_vessels8 fields changed- removed
Input schema / properties / classSocietyRemoved value: -{ - "description": "Classification society (case-insensitive)", - "type": "string" -} - added
Input schema / properties / eniAdded value: +{ + "description": "ENI number, used for inland waterway vessels", + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results per page"New value: +"Results per page, 1 to 50. Defaults to 20." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - removed
Input schema / properties / ownerRemoved value: -{ - "description": "Owner name (partial match, case-insensitive)", - "type": "string" -} - added
Input schema / properties / qAdded value: +{ + "description": "Free-text search across name, IMO, MMSI, ENI and callsign. Use this when the type of identifier is unknown.", + "type": "string" +}
24 tool updates
v1.3.0- Added
get_navtex_messages - Added
get_port - Added
get_port_events - Added
get_port_events_by_vessel - Added
get_port_inbound - Added
get_vessel - Added
get_vessel_casualties - Added
get_vessel_classification - Added
get_vessel_emissions - Added
get_vessel_eta - Added
get_vessel_inspection_detail - Added
get_vessel_inspections - Added
get_vessel_last_port_event - Added
get_vessel_ownership - Added
get_vessel_position - Added
get_vessel_positions_batch - Added
get_vessels_in_area - Added
get_vessels_in_radius - Added
list_emissions - Added
list_port_events - Added
search_port_events_by_port - Added
search_port_events_by_vessel - Added
search_ports - Added
search_vessels
TDQS
Several tools have heavily overlapping purposes, especially the port event family: search_port_events_by_vessel, get_port_events_by_vessel, search_port_events_by_port, get_port_events, and list_port_events all query similar event data with only subtle filter differences. get_vessel_last_port_event, get_vessel_position, and get_vessel_positions_batch also create boundary confusion. An agent could easily select the wrong tool despite the descriptions.
The tools mostly use snake_case verb_noun naming with get_, search_, and list_ prefixes, but the mix of verbs is inconsistent for similar actions. For example, port events are exposed as get_port_events, search_port_events_by_vessel, get_port_events_by_vessel, and list_port_events, making the naming pattern feel arbitrary. Still, the convention is readable and not chaotic.
Nineteen tools is on the heavy side for a vessel/port data API, especially since several tools appear to cover nearly the same port event queries. The core domain is broad enough to justify many endpoints, but the overlapping tools inflate the count and make the surface feel larger than necessary.
The server covers the main read-only vessel and port domain well: vessel lookup, positions, ETA, emissions, casualties, port details, port events, and area/radius queries are all present. Minor gaps exist, such as no historical vessel track or port call summary endpoint, but agents can generally accomplish core workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server giving AI agents one-connection access to supply-chain & logistics data: AIS vessel track
AI-powered laytime, demurrage and despatch calculator for chartering professionals.
Multi-carrier shipping for AI agents: compare rates, buy labels, track packages, validate addresses
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and analyze NOAA electronic navigational charts with S-57 format parsing, supporting coordinate-based chart discovery, navigation feature extraction, and maritime safety queries.201ISC
- AlicenseNot gradedqualityDmaintenanceAccess Global Fishing Watch data from any MCP-compatible AI assistant or terminal: search vessels, retrieve fishing activity and port events, look up marine regions, and compute aggregate statistics.401Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides real-time maritime weather data, tropical cyclone warnings, and route calculations for AI agents.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI assistants to access real-time vessel tracking, port information, and maritime data through the Datalastic Marine AIS Data API.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vessel-api/vesselapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server