travel_times
Get real-time estimated travel times for Singapore expressway segments. This tool provides updated traffic data every 5 minutes to help plan routes and avoid congestion.
Instructions
Get estimated travel times on expressway segments. Updates every 5 minutes.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:267-294 (handler)Handler function that executes the travel_times tool by making an API request to LTA's estimated travel times endpoint and returning the response data or handling errors.case "travel_times": { try { const response = await axios.get('https://datamall2.mytransport.sg/ltaodataservice/EstTravelTimes', { headers: { 'AccountKey': process.env.LTA_API_KEY!, 'accept': 'application/json' } }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error) { if (axios.isAxiosError(error)) { return { content: [{ type: "text", text: `LTA API error: ${error.response?.data?.Message ?? error.message}` }], isError: true }; } throw error; } }
- src/index.ts:98-105 (schema)Tool schema definition including name, description, and input schema (no required parameters) returned by the ListTools handler.{ name: "travel_times", description: "Get estimated travel times on expressway segments. Updates every 5 minutes.", inputSchema: { type: "object", properties: {} // No parameters needed } },
- src/index.ts:47-130 (registration)The tool is registered by being included in the tools list returned by the ListToolsRequestSchema handler.this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [{ name: "bus_arrival", description: "Get real-time bus arrival information for a specific bus stop and optionally a specific service number. Returns estimated arrival times, bus locations, and crowding levels.", inputSchema: { type: "object", properties: { busStopCode: { type: "string", description: "The unique 5-digit bus stop code" }, serviceNo: { type: "string", description: "Optional bus service number to filter results" } }, required: ["busStopCode"] } }, { name: "station_crowding", description: "Get real-time MRT/LRT station crowdedness level for a particular train network line. Updates every 10 minutes.", inputSchema: { type: "object", properties: { trainLine: { type: "string", description: "Code of train network line (CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL)", enum: ["CCL", "CEL", "CGL", "DTL", "EWL", "NEL", "NSL", "BPL", "SLRT", "PLRT", "TEL"] } }, required: ["trainLine"] } }, { name: "train_alerts", description: "Get real-time train service alerts including service disruptions and shuttle services. Updates when there are changes.", inputSchema: { type: "object", properties: {} // No parameters needed } }, { name: "carpark_availability", description: "Get real-time availability of parking lots for HDB, LTA, and URA carparks. Updates every minute.", inputSchema: { type: "object", properties: {} // No parameters needed } }, { name: "travel_times", description: "Get estimated travel times on expressway segments. Updates every 5 minutes.", inputSchema: { type: "object", properties: {} // No parameters needed } }, { name: "traffic_incidents", description: "Get current road incidents including accidents, roadworks, and heavy traffic. Updates every 2 minutes.", inputSchema: { type: "object", properties: {} // No parameters needed } }, { name: "station_crowd_forecast", description: "Get forecasted MRT/LRT station crowdedness levels in 30-minute intervals.", inputSchema: { type: "object", properties: { trainLine: { type: "string", description: "Code of train network line (CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL)", enum: ["CCL", "CEL", "CGL", "DTL", "EWL", "NEL", "NSL", "BPL", "SLRT", "PLRT", "TEL"] } }, required: ["trainLine"] } }] }; });