voyage-and-consumption-mcp-server
Version:
Voyage and consumption management server handling vessel voyages, fuel consumption, performance monitoring, and operational data with ERP access for data extraction
539 lines • 26.3 kB
JavaScript
export const listToolsRequestSchema = {
type: "object",
properties: {
category: {
type: "string",
description: "Optional category to filter tools by",
enum: ["voyage", "consumption", "performance", "vessel", "user"]
},
search: {
type: "string",
description: "Optional search term to filter tools by name or description"
},
include_deprecated: {
type: "boolean",
description: "Whether to include deprecated tools in the response",
default: false
}
},
additionalProperties: false
};
export const toolDefinitions = [
{
name: "get_live_position_from_navtor",
description: "Use this tool to obtain through Navtor API a vessel's current live position (latitude/longitude) and its estimated time of arrival (ETA) to the next scheduled port. Supply the vessel's IMO number to get real-time tracking data including GPS position, next port of call, and calculated ETA.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_fuel_consumption_rob",
description: "Use this tool to retrieve the most recent fuel consumption and Remaining On Board (ROB) data for a specific vessel. Supply the vessel's IMO number to get the latest fuel consumption data and ROB information including consumption rates for different fuel types and current quantities remaining on board.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_eta_cargo_activity",
description: "Use this tool to get the vessel itinerary and cargo activity details from vessel Noon report emails, AIS and Shippalm position report. The answer will indicate whether the vessel is sailing, at anchorage/drifting, or in port, along with next port of call and ETA/ETB/ETD information.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_voyage_details_from_shippalm",
description: "Use this tool to obtain a vessel's latest voyage information from the MongoDB database, where a complete, pre-computed answer is already stored. Provide the vessel's IMO number to get the full structured voyage record.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_me_cylinder_oil_consumption_and_rob",
description: "Use this tool to fetch a vessel's most recent main-engine (ME) cylinder-lubricating-oil data from the MongoDB database. Provide the vessel's IMO number to get cylinder oil ROB and consumption data for the last 24 hours.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_mecc_aecc_consumption_and_rob",
description: "Use this tool to retrieve a vessel's most recent main-engine crankcase (MECC) and auxiliary-engine crankcase (AECC) lubricating-oil data from the MongoDB database. Provide the vessel's IMO number to get complete MECC and AECC oil ROBs and daily consumption figures.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_fresh_water_status",
description: "Use this tool to obtain a vessel's most recent fresh-water statistics (production, consumption and remaining-on-board) from the MongoDB database. Supply the vessel's IMO number to get fresh water production, consumption and ROB data.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_charter_party_compliance_status",
description: "Use this tool to retrieve a vessel's latest charter-party compliance assessment from the MongoDB database. Provide the vessel's IMO number to get the full structured compliance status and charter-party terms assessment.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_fuel_consumption_history",
description: "Use this tool to retrieve historical fuel consumption data for a vessel from the MongoDB fuel database. Provides comprehensive fuel consumption records including daily consumption for each fuel type. Optionally filter by date range for specific time periods to analyze consumption patterns, bunker planning, environmental compliance reporting, and fuel efficiency analysis.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
},
start_date: {
type: "string",
description: "Optional start date for filtering fuel consumption records (YYYY-MM-DD format). Filter will include consumption data from this date onwards"
},
end_date: {
type: "string",
description: "Optional end date for filtering fuel consumption records (YYYY-MM-DD format). Filter will include consumption data up to this date"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_fresh_water_history",
description: "Use this tool to retrieve historical fresh water consumption and production data for a vessel from the MongoDB database. Provides comprehensive fresh water records including daily consumption, water maker production rates, tank levels. Optionally filter by date range for analyzing consumption patterns and water maker performance.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
},
start_date: {
type: "string",
description: "Optional start date for filtering fresh water records (YYYY-MM-DD format). Filter will include data from this date onwards"
},
end_date: {
type: "string",
description: "Optional end date for filtering fresh water records (YYYY-MM-DD format). Filter will include data up to this date"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_mecc_history",
description: "Use this tool to retrieve historical Main Engine Crankcase Oil (MECC) consumption data for a vessel from the MongoDB database for data analysis. Optionally filter by date range for specific time periods. Use this for main engine crankcase lube oil consumption trend analysis based on time.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
},
start_date: {
type: "string",
description: "Optional start date for filtering MECC records (YYYY-MM-DD format). Filter will include data from this date onwards"
},
end_date: {
type: "string",
description: "Optional end date for filtering MECC records (YYYY-MM-DD format). Filter will include data up to this date"
}
},
required: ["imo"]
}
},
{
name: "meclo_historical_data",
description: "Use this tool to retrieve historical cylinder oil consumption and performance data for a vessel from the MongoDB database. Provides comprehensive cylinder oil records including daily consumption rates. Optionally filter by date range for analyzing consumption patterns and cylinder oil efficiency trends.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
},
start_date: {
type: "string",
description: "Optional start date for filtering cylinder oil records (YYYY-MM-DD format). Filter will include data from this date onwards"
},
end_date: {
type: "string",
description: "Optional end date for filtering cylinder oil records (YYYY-MM-DD format). Filter will include data up to this date"
}
},
required: ["imo"]
}
},
{
name: "get_vessel_aecc_history",
description: "Use this tool to retrieve historical Auxiliary Engine Crankcase Oil (AECC) consumption data for a vessel from the MongoDB database for data analysis. Optionally filter by date range for specific time periods. Use this for auxiliary engine crankcase lube oil consumption trend analysis based on time.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the vessel"
},
start_date: {
type: "string",
description: "Optional start date for filtering AECC records (YYYY-MM-DD format). Filter will include data from this date onwards"
},
end_date: {
type: "string",
description: "Optional end date for filtering AECC records (YYYY-MM-DD format). Filter will include data up to this date"
}
},
required: ["imo"]
}
},
{
name: "get_live_weather_by_coordinates",
description: "Use this tool to retrieve the current (or nearest-in-time) weather conditions at a specific geographic position. Required workflow: 1) Call get_live_position_from_navtor with vessel's IMO to get latitude, longitude, and timestamp. 2) Pass all three values to this tool to get weather data for that exact time and location. Response includes air temperature, wind speed, wind direction, pressure, humidity, and time (UTC).",
inputSchema: {
type: "object",
required: ["latitude", "longitude", "timestamp"],
properties: {
latitude: {
type: "number",
description: "Latitude extracted from the information given by get_live_position_from_navtor tool"
},
longitude: {
type: "number",
description: "Longitude extracted from the information given by get_live_position_from_navtor tool"
},
timestamp: {
type: "string",
description: "ISO UTC timestamp of the position fix extracted from the information given by get_live_position_from_navtor tool"
}
}
}
},
// {
// name: "get_vessel_details",
// description: "Retrieves vessel details including IMO number, vessel name, class, flag, DOC and the ERP version for a specific vessel. Use this tool when you need to look up basic vessel information by vessel name.",
// inputSchema: {
// type: "object",
// properties: {
// query: {
// type: "string",
// description: "Pass the vessel name to search for the IMO number"
// }
// },
// required: ["query"]
// }
// },
{
name: "universal_voyage_search",
description: "Universal search tool for vessel voyage data across all operational reports and performance analytics. This is a fallback tool - use ONLY when other focused search tools (like get_live_position_from_navtor, get_vessel_fuel_consumption_rob, get_vessel_eta_cargo_activity, etc.) fail to find the requested information. Searches broadly across voyage reports, fuel consumption, cargo operations, and vessel performance data using natural language queries.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "Natural language or keyword query. This is matched against the fields vesselName, event, eventtype, fromport, toport, location, vesselActivity, vesselstatus, headcharterer, and data fields containing cargo, fuel, lube oil, fresh water, and weather information. Use '*' to match all records.",
default: "*"
},
filters: {
type: "object",
description: "Optional filters to narrow the search results. Only use this if exact field values are known.",
properties: {
imo: {
type: "integer",
description: "IMO number of the vessel"
},
vesselName: {
type: "string",
description: "Exact or partial name of the vessel"
},
event: {
type: "string",
description: "Operational event onboard (e.g., BUNKERING, ARRIVAL). Use only when the user names a specific event"
},
eventtype: {
type: "string",
description: "Report category under which the event is logged (e.g., REPORT, CORRECTION). Use only when user specifies a type"
},
fromport: {
type: "string",
description: "Port of departure for current voyage leg"
},
toport: {
type: "string",
description: "Destination port for current voyage leg"
},
location: {
type: "string",
description: "Current geographical location or position of vessel"
},
vesselActivity: {
type: "string",
description: "Current activity status of the vessel (e.g., steaming, at anchor, loading)"
},
vesselstatus: {
type: "string",
description: "Current operational status of the vessel"
},
atPort: {
type: "string",
description: "Indicates if vessel is currently at port"
},
headcharterer: {
type: "string",
description: "Head charterer information"
},
timeZone: {
type: "string",
description: "Time zone of the vessel location during reporting"
},
reportdate_range: {
type: "object",
description: "Filter by report date range",
properties: {
start_date: {
type: "string",
format: "date-time",
description: "Start date-time (YYYY-MM-DDTHH:MM:SS)"
},
end_date: {
type: "string",
format: "date-time",
description: "End date-time (YYYY-MM-DDTHH:MM:SS)"
}
}
},
steamingTime_range: {
type: "object",
description: "Filter by steaming hours during reporting period",
properties: {
min_hours: {
type: "integer",
description: "Minimum steaming hours"
},
max_hours: {
type: "integer",
description: "Maximum steaming hours"
}
}
}
}
},
sort_by: {
type: "string",
description: "Field to sort results by. 'relevance' sorts by internal match quality (applies to keyword searches only). Other fields must be sortable in the underlying index.",
enum: ["relevance", "imo", "reportdate", "steamingTime", "steaminghours"],
default: "relevance"
},
sort_order: {
type: "string",
description: "Sorting order of the results",
enum: ["asc", "desc"],
default: "desc"
},
max_results: {
type: "integer",
description: "Maximum number of results to return",
default: 10,
minimum: 1,
maximum: 100
}
},
required: ["query"]
}
},
{
name: "get_fleet_eta_cargo_activity",
description: "Use this tool to get the fleet vessels itinerary and cargo activity details from vessel Noon report emails. The answer is table will indicate whether the vessels belonging to the fleet are sailing, at anchorage/drifting, or in port, along with next port of call and ETA/ETB/ETD information.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the fleet"
}
},
required: ["imo"]
}
},
{
name: "get_fleet_vessels_cii_rating",
description: "Use this tool to retrieve CII rating for all vessel's in the fleet from the MongoDB database. Provide the fleet's IMO number to get the full structured CII rating of the vessels in the fleet",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the fleet"
}
},
required: ["imo"]
}
},
{
name: "get_fleet_charter_party_compliance_status",
description: "Use this tool to retrieve latest charter-party compliance assessment for all vessel's in the fleet from the MongoDB database. Provide the fleet's IMO number to get the full structured compliance status and charter-party terms assessment.",
inputSchema: {
type: "object",
properties: {
imo: {
type: "string",
description: "IMO number of the fleet"
}
},
required: ["imo"]
}
}
// {
// name: "write_casefile_data",
// description: "Creates or updates casefile-related data. Supports two distinct operations: write_casefile (create or update casefile metadata) and write_page (add or update a page under an existing casefile). Only pass arguments explicitly required or allowed for the chosen operation.",
// inputSchema: {
// type: "object",
// properties: {
// operation: {
// type: "string",
// enum: ["write_casefile", "write_page"],
// description: "Specifies the writing operation: 'write_casefile' for creating new casefile or 'write_page' for page content of already existing casefile."
// },
// casefile_url: {
// type: "string",
// description: "The unique identifier of the casefile, direct casefile url link. Required for 'write_page'."
// },
// casefileName: {
// type: "string",
// enum: ["Charter Party"],
// description: "Required for 'write_casefile'. Name of the casefile"
// },
// category: {
// type: "string",
// enum: ["charterParty"],
// description: "Required for 'write_casefile'. Category of the casefile"
// },
// currentStatus: {
// type: "string",
// description: "Current status of the casefile, it will be of 4-5 words. Required for 'write_casefile' and 'write_page'."
// },
// casefileSummary: {
// type: "string",
// description: "Required for 'write_casefile'. Summary or high-level description of the casefile. Optional for 'write_page'."
// },
// importance: {
// type: "number",
// minimum: 0,
// maximum: 100,
// description: "Importance score of the casefile (0–100). Required for 'write_casefile' and 'write_page'."
// },
// imo: {
// type: "integer",
// description: "Required for 'write_casefile'. IMO number of the associated vessel."
// },
// role: {
// type: "string",
// enum: ["incident", "legal", "regulatory", "other"],
// description: "Required for 'write_casefile'. Role/category of the casefile."
// },
// summary: {
// type: "string",
// description: "Required for 'write_page'. Detailed content or summary of the new page."
// },
// topic: {
// type: "string",
// description: "Required for 'write_page'. It is of 4-8 words about what this document is about."
// },
// facts: {
// type: "string",
// description: "Required for 'write_page'. It will have the highlighted facts/information from the database."
// },
// detailed_report: {
// type: "string",
// description: "Required for 'write_page'. It will have the detailed report of the casefile in markdown format."
// },
// links: {
// type: "array",
// items: {
// type: "string"
// },
// description: "Required for 'write_page'. Relevant links you want to add to the case file."
// }
// },
// required: ["operation"]
// }
// },
// {
// name: "retrieve_casefile_data",
// description: "Retrieves data from casefiles. Supports the operation get_casefiles: List all casefiles for a vessel matching a text query. Only pass arguments explicitly required or allowed for the chosen operation.",
// inputSchema: {
// type: "object",
// properties: {
// imo: {
// type: "integer",
// description: "Required for 'get_casefiles'. IMO number of the vessel."
// },
// query: {
// type: "string",
// description: "Search query to filter casefiles based on the context and user query."
// },
// category: {
// type: "string",
// enum: ["charterParty"],
// description: "Required for 'get_casefiles'. Category of the casefile."
// }
// },
// required: ["imo", "category", "query"]
// }
// }
];
//# sourceMappingURL=schema.js.map