get_tide_predictions
Retrieve tide prediction data for specific stations using station ID, date range, units, and output format. Access accurate water level information via the LocalTides MCP Server.
Instructions
Get tide prediction data
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| begin_date | No | Start date (YYYYMMDD or MM/DD/YYYY) | |
| date | No | Date to retrieve data for ("today", "latest", "recent", or specific date) | |
| datum | No | Datum to use (MLLW, MSL, etc.) | |
| end_date | No | End date (YYYYMMDD or MM/DD/YYYY) | |
| format | No | Output format (json, xml, csv) | |
| interval | No | Interval (hilo, hl, h, or a number for minutes) | |
| range | No | Number of hours to retrieve data for | |
| station | Yes | Station ID | |
| time_zone | No | Time zone (gmt, lst, lst_ldt) | |
| units | No | Units to use ("english" or "metric") |
Implementation Reference
- src/services/noaa-service.ts:84-89 (handler)Core handler function that fetches tide predictions from NOAA API by setting product to 'predictions' and calling fetchDataApi.async getTidePredictions(params: Record<string, any>): Promise<any> { return this.fetchDataApi({ ...params, product: 'predictions' }); }
- src/server/mcp-server.ts:44-51 (registration)Registration of the 'get_tide_predictions' tool in McpServer, including name, description, input schema, and handler delegating to noaaService.const getTidePredictions: MCPTool = { name: "get_tide_predictions", description: "Get tide prediction data", inputSchema: GetTidePredictionsSchema, handler: async (params) => { return this.noaaService.getTidePredictions(params); } };
- src/interfaces/noaa.ts:33-47 (schema)Zod input schema for validating parameters to the get_tide_predictions tool.export const GetTidePredictionsSchema = z.object({ station: StationSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, date: DateSchema, range: RangeSchema, datum: DatumSchema, units: UnitsSchema, time_zone: TimeZoneSchema, interval: IntervalSchema, format: FormatSchema, }).refine( data => (data.date || (data.begin_date && data.end_date) || (data.begin_date && data.range) || (data.end_date && data.range) || data.range), { message: "You must provide either 'date', 'begin_date' and 'end_date', 'begin_date' and 'range', 'end_date' and 'range', or just 'range'" } );
- src/tools/water-tools.ts:53-79 (registration)Alternative registration of 'get_tide_predictions' tool using FastMCP server.addTool with inline schema and execute handler.server.addTool({ name: 'get_tide_predictions', description: 'Get tide prediction data', parameters: z.object({ station: StationSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, date: DateSchema, range: RangeSchema, datum: DatumSchema, units: UnitsSchema, time_zone: TimeZoneSchema, interval: IntervalSchema, format: FormatSchema, }).refine(refineDateParams, { message: dateRefinementMessage }), execute: async (params) => { try { const result = await noaaService.getTidePredictions(params); return JSON.stringify(result); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get tide predictions: ${error.message}`); } throw new Error('Failed to get tide predictions'); } } });