Skip to main content
Glama

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
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • 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;
      }
    }
  • 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"]
          }
        }]
      };
    });

Latest Blog Posts

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/arjunkmrm/mcp-sg-lta'

If you have feedback or need assistance with the MCP directory API, please join our Discord server