Singapore Location Intelligence MCP
Provides Singapore-focused location intelligence and navigation with Google Maps-quality turn-by-turn directions, multi-modal journey planning, and weather-aware routing for public transport and walking.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Singapore Location Intelligence MCPplan a route from Orchard MRT to Marina Bay Sands"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Singapore Location Intelligence MCP πΈπ¬
As the creator of this project, I, Siva (Sivasubramanian Ramanathan), developed this comprehensive Singapore Location Intelligence Platform to explore the capabilities of the Model Context Protocol (MCP). My goal was to test how MCP could be leveraged to help AI accurately plan routes, while also showcasing my ability to work with various APIs and my expertise in the technologies involved.
What began as an experiment with MCP integration evolved into a sophisticated, real-world application that demonstrates the power of this exciting new protocol to create tools that can rival commercial solutions. This platform provides enterprise-grade transport routing, postal code resolution, and location intelligence with Google Maps-level detailed navigation instructions, all optimized for Singapore's unique transport ecosystem.
π Key Features
π― NEW in v0.3.0 - MRT Exit Integration & Landmarks Tool Fix
π MRT Exit Recommendations - Google Maps-level precision with specific exit codes
ποΈ Enhanced Location Resolution - Fixed JSON string parsing and coordinate validation
π Exit-Level Navigation - "Use Exit E (14m walk, 1 min)" for optimal station navigation
π§ Robust Input Handling - All location formats now work correctly
π― Singapore-Optimized - Proper coordinate bounds and postal code validation
π― v0.2.7 - Weather Service Fixes & Enhanced Reliability
π¦οΈ Robust Weather Integration - Fixed all weather API inconsistencies and crashes
π§ Production-Ready Error Handling - Graceful degradation when weather APIs fail
π― Singapore Weather API Compatibility - Supports all 5 official weather endpoints
β‘ Enhanced Journey Planning - Weather-aware routing with resilient fallbacks
π‘οΈ Zero-Crash Guarantee - Weather service failures no longer break journey planning
π― NEW in v0.2.1 - Weather Intelligence
π¦οΈ Standalone Weather Tools - Comprehensive weather conditions and activity-specific advisories
π― Activity Recommendations - Tailored advice for walking, cycling, sports, photography, dining
π‘οΈ Comfort Analysis - Intelligent comfort level assessment with travel impact
β° Best Time Recommendations - Optimal timing for outdoor activities based on weather
π― NEW in v0.2.0 - Enhanced Intelligence
π Advanced Fuzzy Search - "Opp Blk 910" β finds "Opposite Block 910" with 95% accuracy
π¦οΈ Weather-Aware Routing - Real-time weather impact on walking times and route suggestions
π Transfer Minimization - Smart algorithms to reduce transfers in multi-modal journeys
πΊοΈ Google Maps-Quality Directions - "Turn Left To Stay On Thomson Road" level instructions
π Comprehensive Stop Details - Nearby amenities, accessibility info, and location context
π― Core Features
π― Advanced Postal Code Intelligence - 95% accuracy resolution for all Singapore postal codes
πΊοΈ Professional Navigation Instructions - Turn-by-turn directions like "Turn Left To Stay On Thomson Road"
π Multi-Modal Transport Planning - Seamless integration of MRT, LRT, buses, and walking
β° Singapore Time Intelligence - Business hours, rush hour detection, and timing optimization
π Intelligent Location Search - Fuzzy matching, typo tolerance, and smart suggestions
π Comprehensive Geocoding - Forward and reverse geocoding with Singapore-specific accuracy
π Real-Time Transport Data - Live bus arrivals, train status, and service disruptions
π‘ Context-Aware Routing - Peak hour optimization, last train warnings, night bus alternatives
Related MCP server: OneMap MCP Server
π― Real-World Problem Solved
Before: Basic transport tools with failed postal code resolution After: Enterprise-grade location intelligence platform with weather-aware routing

INPUT: "How to get to Suntec City from Little India MRT during heavy rain?"
OUTPUT:
β
Postal Code 039594 β SUNTEC CITY
π§οΈ Heavy rain detected - prefer covered routes
π Route: DT Line (8 min) β Covered walkway (6 min)
π° Cost: $1.55 | π Duration: 32 minutes (adjusted for weather)
π Step-by-step: "Walk 246m via covered walkway to ROCHOR MRT β Take DT Line from Rochor to Promenade β Use underground connection to Suntec City"
β οΈ Weather Advisory: Allow extra 5 minutes for walking segmentsπ Quick Start
Installation
npx @siva-sub/mcp-public-transportClaude Desktop Setup
Add to your claude_desktop_config.json:
{
"mcpServers": {
"singapore-transport": {
"command": "npx",
"args": ["-y", "@siva-sub/mcp-public-transport"],
"env": {
"LTA_ACCOUNT_KEY": "your_lta_api_key_here",
"ONEMAP_TOKEN": "your_onemap_token_here",
"ONEMAP_EMAIL": "your_onemap_email@example.com",
"ONEMAP_PASSWORD": "your_onemap_password"
}
}
}
}βοΈ Configuration
Required Environment Variables
LTA_ACCOUNT_KEY: Required. Your LTA DataMall API key (Get here)
Optional Environment Variables
ONEMAP_TOKEN: OneMap API token for enhanced features (Register here)ONEMAP_EMAIL: OneMap account email for authenticationONEMAP_PASSWORD: OneMap account password for authenticationCACHE_DURATION: Cache duration in seconds (default:300)LOG_LEVEL: Logging level (default:info)
π οΈ Available Tools
π NEW - Enhanced Location Intelligence
search_bus_stopsβ - Advanced fuzzy search with Singapore abbreviationsSupports: "Opp Blk 910", "Bef Jurong East MRT", "CP near Orchard"
Intelligent pattern recognition and typo tolerance
Distance-based ranking and confidence scoring
get_bus_stop_detailsβ - Comprehensive stop informationReal-time service information and nearby amenities
Accessibility details and location context
Walking distances to nearby stops
plan_comprehensive_journeyβ - Complete multi-modal journey planningTransfer minimization algorithms
Real-time disruption handling
Google Maps-quality turn-by-turn directions
Weather impact on walking segments
Supports all input types: addresses, postal codes, coordinates
π Location Intelligence
search_location- Enhanced with fuzzy search capabilitiesresolve_postal_code- High-accuracy Singapore postal code resolution (95% success rate)reverse_geocode- Convert coordinates to addresses with Singapore-specific accuracy
π Public Transport
get_bus_arrival- Real-time bus arrival times with crowding informationfind_bus_stops- Find bus stops by location, name, or coordinatesplan_comprehensive_journey- Multi-modal journey planning with detailed instructions
π Train Services
get_train_service_status- Real-time MRT/LRT service status and disruptions
π Taxis & Ride-Hailing
get_nearby_taxis- Find available taxis and estimate wait times
π¦ Traffic & Roads
get_traffic_conditions- Live traffic conditions, incidents, and road speeds
π¦οΈ NEW - Weather Intelligence
get_weather_conditionsβ - Comprehensive real-time weather with travel impactReal-time temperature, rainfall, humidity, and wind data
Comfort level analysis and walking condition ratings
Travel impact assessment with time adjustments
Activity-specific recommendations and safety advice
get_weather_advisoryβ - Activity-specific weather recommendationsTailored advice for walking, cycling, outdoor dining, sports, photography
Suitability ratings and best time recommendations
Weather-specific safety guidance and precautions
π Enterprise Features
Advanced Routing with Weather Intelligence
// Weather-aware journey planning
{
"primaryRoute": {
"summary": {
"totalTime": 1980, // seconds (adjusted for weather)
"walkingTime": 720, // includes weather buffer
"transfers": 1
},
"weatherImpact": {
"conditions": {
"rainfall": 12.5, // mm
"temperature": 28, // Β°C
"humidity": 85 // %
},
"advisories": [
{
"severity": "high",
"type": "rain",
"message": "Heavy rain detected. Allow extra time for walking.",
"routingImpact": {
"walkingTimeMultiplier": 1.5,
"preferredModes": ["MRT", "Covered Bus Stops"]
}
}
]
}
}
}Enhanced Bus Stop Search
// Fuzzy search with Singapore intelligence
{
"query": "Opp Blk 910",
"searchType": "fuzzy",
"results": [
{
"busStopCode": "83139",
"description": "OPP BLK 910",
"matchScore": 0.95,
"locationPatterns": {
"blockNumber": "910",
"direction": "opp"
},
"searchContext": {
"queryVariations": ["opposite block 910", "opp blk 910"],
"bestMatch": "OPP BLK 910"
}
}
]
}Comprehensive Stop Details
// Detailed stop information with context
{
"details": {
"busStopCode": "83139",
"description": "OPP BLK 910",
"services": [...], // Real-time arrivals
"nearbyStops": [...], // Within walking distance
"accessibility": {
"wheelchairAccessible": true,
"sheltered": true,
"tactilePaving": true
},
"locationContext": {
"district": "Tampines",
"landmarks": ["Block 910", "Tampines Mall"],
"transportHubs": ["Tampines MRT Station"]
},
"nearbyAmenities": [
{
"name": "Tampines Mall",
"type": "shopping",
"distance": 250,
"walkingTime": 3
}
]
}
}Singapore Time Intelligence
{
"singaporeTime": "27/06/2025, 10:58 PM",
"businessHours": false,
"rushHour": false,
"contextInfo": {
"nextRushHour": "7:00 AM tomorrow",
"travelRecommendation": "Off-peak travel - comfortable journey expected"
}
}Postal Code Intelligence
{
"postalCode": "039594",
"location": {
"name": "SUNTEC CITY",
"address": "3 TEMASEK BOULEVARD SUNTEC CITY SINGAPORE 039594",
"district": "Downtown Core",
"areaType": "Central Singapore",
"confidence": 0.98
}
}π― Use Cases
1. Navigation Applications
Weather-aware route planning
Detailed turn-by-turn directions
Multi-modal journey optimization
Real-time traffic integration
2. Delivery & Logistics
Postal code validation and resolution
Optimal route planning with weather considerations
Address standardization and fuzzy matching
3. Urban Planning
Transport accessibility analysis
Weather impact on pedestrian traffic
Peak hour traffic optimization
Public transport coverage mapping
4. Tourism & Hospitality
Tourist-friendly directions with landmarks
Weather-appropriate route suggestions
Public transport guidance
Location discovery with fuzzy search
π Performance & Reliability
Sub-3-second route planning with weather integration
5-minute weather data cache for real-time responsiveness
Intelligent caching with location and weather-aware TTL
Graceful degradation during API maintenance
95% postal code resolution accuracy
Real-time data integration with official Singapore APIs
Fuzzy search accuracy of 90%+ for Singapore terms
π§ Advanced Configuration
Weather-Aware Route Preferences
{
"routingOptions": {
"includeWeatherImpact": true,
"maxWalkingDistance": 800,
"weatherSensitivity": "high",
"preferredModes": ["MRT", "Covered Bus Stops"],
"minimizeTransfers": true
}
}Fuzzy Search Configuration
{
"searchOptions": {
"enableFuzzySearch": true,
"minScore": 0.3,
"singaporeAbbreviations": true,
"typoTolerance": true
}
}Business Hours Configuration
{
"businessHours": {
"weekdays": { "start": 9, "end": 18 },
"saturday": { "start": 9, "end": 13 },
"sunday": { "closed": true }
}
}π€ API Integration
OneMap Integration
Authentication: Automatic token refresh with 3-day TTL
Geocoding: High-accuracy address resolution with fuzzy matching
Routing: Professional-grade turn-by-turn directions
Weather Integration: Real-time weather data from Singapore APIs
LTA DataMall Integration
Real-time Data: Bus arrivals, train status, traffic conditions
Transport Network: Complete bus and train network data
Service Alerts: Live disruption and maintenance notifications
Enhanced Error Handling: Graceful degradation and retry logic
Singapore Weather API Integration
Real-time Data: Rainfall, temperature, humidity, wind speed
5-minute Updates: Fresh weather data for accurate routing
Location-based: Weather conditions for specific route segments
Advisory Generation: Smart recommendations based on conditions
π Development
Local Development
git clone https://github.com/siva-sub/MCP-Public-Transport
cd MCP-Public-Transport
npm install
cp .env.example .env.local
# Add your API keys to .env.local
npm run devBuilding
npm run build # Builds both ESM and CJS versions
npm run test # Runs comprehensive test suite
npm run lint # TypeScript and ESLint checksTesting
# Unit tests
npm run test
# Integration tests with real APIs
npm run test:integration
# Performance tests
npm run test:performanceπ¦ Architecture
src/
βββ services/ # Core business logic
β βββ lta.ts # LTA DataMall integration
β βββ onemap.ts # OneMap API with authentication
β βββ weather.ts # β Real-time weather integration
β βββ routing.ts # β Enhanced multi-modal routing
β βββ fuzzySearch.ts # β Singapore-optimized fuzzy search
β βββ time.ts # Singapore time intelligence
β βββ postalCode.ts # Postal code validation & resolution
β βββ cache.ts # Intelligent caching layer
βββ tools/ # MCP tool implementations
β βββ location/ # Enhanced location intelligence tools
β βββ bus/ # β Enhanced bus tools with fuzzy search
β β βββ search.ts # β Advanced bus stop search
β β βββ details.ts # β Comprehensive stop details
β βββ routing/ # β Enhanced journey planning tools
β β βββ enhanced.ts# β Weather-aware optimal routing
β βββ train/ # Train service tools
β βββ traffic/ # Traffic and road tools
βββ types/ # TypeScript interfaces
β βββ location.ts # Location and search types
β βββ transport.ts # Transport system types
β βββ search.ts # Search and query types
β βββ time.ts # Singapore time types
βββ utils/ # Shared utilities
βββ errors.ts # Custom error handling
βββ logger.ts # Structured logging
βββ validation.ts # Input validationπ What Makes This Special
Singapore-Optimized: Built specifically for Singapore's unique transport ecosystem with local intelligence
Weather-Aware: Real-time weather integration affects routing decisions and walking time estimates
Professional-Grade: Routing instructions comparable to Google Maps with fuzzy search capabilities
Real-Time Context: Business hours, rush hour, weather, and timing intelligence
High Accuracy: 95% success rate for postal code resolution, 90%+ fuzzy search accuracy
Enterprise-Ready: Comprehensive error handling, weather resilience, and performance optimization
Developer-Friendly: Full TypeScript support with comprehensive documentation
Transfer Minimization: Smart algorithms to reduce transfers in multi-modal journeys
π― Contributing
We welcome contributions! Please see our Contributing Guide for details.
π License
MIT License - see LICENSE for details.
π Acknowledgments
Singapore Land Authority (SLA) for OneMap API
Land Transport Authority (LTA) for DataMall API
Singapore Meteorological Service for weather data
Model Context Protocol for the extensible framework
Singapore Open Data initiative for public transport data
Built with β€οΈ for Singapore's smart city initiative and MCP exploration
π Version 0.2.0 Statistics
11 Total Tools (up from 8)
4 New Major Services added
3 New Tools with advanced capabilities
Weather API Integration for real-time conditions
Fuzzy Search Engine with 50+ Singapore abbreviations
Google Maps-Quality turn-by-turn directions
Transfer Minimization algorithms
Available Tools
13 toolsfind_bus_stopsC
Find bus stops by location name, coordinates, or road name
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location name (e.g., "Marina Bay", "Orchard Road") | |
| lat | No | Latitude coordinate | |
| lng | No | Longitude coordinate | |
| radius | No | Search radius in meters | |
| limit | No | Maximum number of results |
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 states what the tool does but provides no information about authentication requirements, rate limits, error conditions, response format, or whether this is a read-only operation. For a search tool with 5 parameters, this leaves significant behavioral gaps.
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 that communicates the core functionality without unnecessary words. It's appropriately sized for a search tool and front-loads the essential information about what the tool does and how it can be used.
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 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, how results are structured, error handling, or any behavioral constraints. The agent would need to guess about the output format and operational characteristics.
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 mentions three search methods ('location name, coordinates, or road name') which map to the 'location', 'lat/lng', and implied 'road name' parameters, but the input schema has 100% description coverage with detailed parameter documentation. The description adds minimal value beyond what's already in the schema, meeting 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 clearly states the action ('Find') and resource ('bus stops') with specific search methods ('by location name, coordinates, or road name'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'search_bus_stops' or 'get_bus_stop_details', which would require more specific differentiation.
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 like 'search_bus_stops' or 'get_bus_stop_details'. There's no mention of prerequisites, optimal use cases, or exclusions, leaving the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_landmarks_and_facilitiesC
Discover landmarks, facilities, and points of interest near a location using Singapore's comprehensive thematic data
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Target location to search around | |
| radius | No | Search radius in meters (100-5000m) | |
| categories | No | Filter by specific categories (optional) | |
| facilityType | No | Search for specific facility types (e.g., "schools", "hospitals", "parks", "libraries") | |
| maxResults | No | Maximum number of results to return per category |
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 mentions 'discover' and 'search around a location', which implies a read-only operation, but doesn't clarify if it's safe, whether it requires authentication, rate limits, or what the output format looks like. For a tool with 5 parameters and no output schema, this lack of behavioral context is a significant gap.
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, well-structured sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded with the main action and scope, making it easy to understand at a glance. Every part of the sentence earns its place by specifying key elements like location, resources, and data source.
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 (5 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits (e.g., safety, performance), output format, and usage guidelines relative to siblings. For a discovery tool with rich input options, more context is needed to help an agent use it effectively.
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 thoroughly. The description adds no additional parameter semantics beyond what's in the schemaβit doesn't explain how parameters interact (e.g., combining 'categories' and 'facilityType') or provide usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.
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: 'Discover landmarks, facilities, and points of interest near a location using Singapore's comprehensive thematic data.' It specifies the action ('discover'), resources ('landmarks, facilities, and points of interest'), and geographical scope ('near a location' in Singapore). However, it doesn't explicitly differentiate from sibling tools like 'search_location' or 'resolve_postal_code', which might have overlapping functionality.
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 mentions 'Singapore's comprehensive thematic data' but doesn't specify what makes it unique compared to siblings like 'search_location' or 'get_nearby_taxis'. There's no mention of prerequisites, exclusions, or specific scenarios where this tool is preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_arrivalB
Get real-time bus arrival times and information for a specific bus stop
| Name | Required | Description | Default |
|---|---|---|---|
| busStopCode | Yes | 5-digit bus stop code (e.g., "83139") | |
| serviceNo | No | Optional specific bus service number (e.g., "15") | |
| format | No | Response format preference | detailed |
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 mentions 'real-time' arrival times, which implies dynamic data, but does not cover other traits such as rate limits, authentication needs, error handling, or data freshness. For a tool with no annotation coverage, this leaves significant gaps in understanding its operational behavior.
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, clear sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded with the main action and resource, making it easy to understand at a glance. Every part of the sentence earns its place by specifying key aspects like 'real-time' and 'specific bus stop.'
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 (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output expectations. Without annotations or an output schema, the description should do more to compensate, such as hinting at return values or error conditions, but it does not.
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 thoroughly (e.g., busStopCode as a 5-digit code, serviceNo as optional, format with enum values). The description does not add any meaning beyond what the schema provides, such as explaining how parameters interact or providing usage examples. Baseline 3 is appropriate when the schema handles parameter documentation effectively.
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 real-time bus arrival times and information for a specific bus stop.' It specifies the verb ('Get'), resource ('bus arrival times and information'), and scope ('for a specific bus stop'). However, it does not explicitly differentiate from sibling tools like 'get_bus_stop_details' or 'search_bus_stops,' which might provide overlapping or related information.
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 does not mention sibling tools like 'get_bus_stop_details' (which might provide static stop info) or 'search_bus_stops' (which might help find stop codes), nor does it specify prerequisites or exclusions. Usage is implied by the purpose but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_stop_detailsC
Get comprehensive details about a specific bus stop including services, nearby amenities, accessibility information, and location context.
| Name | Required | Description | Default |
|---|---|---|---|
| busStopCode | Yes | Bus stop code (e.g., "83139", "01012") | |
| includeServices | No | Include bus services and real-time arrival information | |
| includeNearbyStops | No | Include nearby bus stops within walking distance | |
| includeNearbyAmenities | No | Include nearby amenities like shopping centers, food courts, etc. | |
| nearbyRadius | No | Search radius in meters for nearby stops and amenities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions what information is included, it doesn't describe important behavioral aspects like whether this is a read-only operation, potential rate limits, authentication requirements, error conditions, or response format. The description is insufficient for a tool with 5 parameters and no output 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, well-structured sentence that efficiently communicates the core purpose. It's appropriately sized for the tool's complexity, though it could be slightly more front-loaded by mentioning the required busStopCode parameter upfront.
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 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects, doesn't help differentiate from siblings, and doesn't compensate for the lack of output schema by describing what the return value contains. The description leaves significant gaps for proper tool understanding.
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 mentions 'services, nearby amenities, accessibility information, and location context' which loosely maps to some parameters (includeServices, includeNearbyAmenities). However, with 100% schema description coverage, the schema already documents all 5 parameters thoroughly. The description adds minimal value beyond what's in the schema, meeting the baseline for high 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 purpose with specific verbs ('Get comprehensive details') and resources ('about a specific bus stop'), and lists the types of information included (services, amenities, accessibility, location). However, it doesn't explicitly differentiate from sibling tools like 'get_bus_arrival' or 'search_bus_stops', which might have overlapping functionality.
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. With siblings like 'get_bus_arrival' (which might focus on arrival times) and 'search_bus_stops' (which might search for stops), there's no indication of when this detailed lookup tool is preferred over those options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nearby_taxisC
Find available taxis near a specified location
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location name (e.g., "Marina Bay", "Orchard Road") | |
| lat | No | Latitude coordinate | |
| lng | No | Longitude coordinate | |
| radius | No | Search radius in meters |
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 states what the tool does but doesn't describe how it behaves: it doesn't mention whether results are real-time, paginated, sorted, or limited; what 'available' means; or any rate limits or authentication needs. This is a significant gap for a tool with no annotation coverage.
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 that front-loads the core purpose without unnecessary words. Every part of the sentence ('Find available taxis near a specified location') directly contributes to understanding the tool's function, making it appropriately concise and well-structured.
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 (location-based query with multiple parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns, how results are formatted, or behavioral aspects like real-time data or limitations. For a tool with no structured output or safety hints, more context is needed.
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 four parameters with descriptions and constraints. The description adds no additional parameter semantics beyond implying location-based filtering, which is already covered in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
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 with a specific verb ('Find') and resource ('available taxis'), specifying the scope ('near a specified location'). It distinguishes from siblings like 'find_bus_stops' or 'get_bus_arrival' by focusing on taxis, but doesn't explicitly differentiate from other location-based tools like 'search_location' beyond the taxi context.
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 doesn't mention prerequisites, when not to use it, or compare it to sibling tools like 'plan_comprehensive_journey' for broader transportation planning. Usage is implied by the name and purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_train_service_statusC
Check current train service status and any disruptions
| Name | Required | Description | Default |
|---|---|---|---|
| line | No | Specific train line to check (optional) |
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. It states the action but lacks behavioral details like whether it's real-time or cached, data sources, rate limits, or error handling. This is a significant gap for a tool with potential real-time implications.
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 zero waste. It's front-loaded with the core action and resource, making it appropriately sized and easy to parse.
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 no annotations and no output schema, the description is incomplete. It doesn't explain return values, data freshness, or error cases, which are crucial for a status-checking tool. This leaves gaps in understanding how to interpret 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?
Schema description coverage is 100%, with the parameter 'line' documented as optional and with an enum. The description adds no extra parameter meaning beyond implying it checks 'current' status, which is minimal value. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('Check') and resource ('train service status and any disruptions'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from siblings like 'get_weather_advisory' or 'plan_comprehensive_journey' that might involve transportation status, though the focus on trains is implied.
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 doesn't mention prerequisites, timing, or comparisons to siblings such as 'get_bus_arrival' for other transit modes, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weather_advisoryB
Get weather-based travel and activity advisories for Singapore with specific recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location coordinates (defaults to Singapore center if not provided) | |
| activityType | No | Type of activity for specific recommendations | general |
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 mentions 'advisories' and 'recommendations' but doesn't specify what these entail (e.g., format, detail level), whether there are rate limits, authentication needs, or how defaults work. This leaves significant gaps for a tool with potential real-world impact.
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 that front-loads the core purpose without unnecessary words. Every element ('weather-based travel and activity advisories', 'Singapore', 'specific recommendations') contributes directly to understanding the tool's function.
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 no annotations and no output schema, the description is incomplete for a tool that provides advisory information. It lacks details on output format, error handling, or behavioral constraints. However, the purpose is clear and parameters are well-documented in the schema, making it minimally viable but with notable 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 fully documents both parameters. The description adds no additional parameter semantics beyond implying 'Singapore' as a default location and 'advisories' as output context. This meets 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 clearly states the tool's purpose: 'Get weather-based travel and activity advisories for Singapore with specific recommendations.' It specifies the action (get), resource (advisories), and scope (Singapore). However, it doesn't explicitly differentiate from sibling tools like 'get_weather_conditions' beyond mentioning 'advisories' vs 'conditions', leaving some ambiguity.
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 weather-based travel and activity advisories in Singapore, but provides no explicit guidance on when to use this tool versus alternatives like 'get_weather_conditions' or other travel-related siblings. The context is clear but lacks comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weather_conditionsC
Get comprehensive real-time weather conditions for Singapore with travel impact analysis and advisories.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location coordinates (defaults to Singapore center if not provided) | |
| includeAdvisories | No | Include weather advisories and travel recommendations | |
| includeForecast | No | Include short-term forecast (next few hours) | |
| includeHistorical | No | Include recent weather trends | |
| timeRange | No | Time range for weather data | current |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'real-time' and 'comprehensive' but doesn't specify data freshness, rate limits, authentication requirements, error conditions, or what 'travel impact analysis' entails. The description is insufficient for a tool with multiple parameters and no output 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, efficient sentence that front-loads the core purpose. Every word earns its place - 'comprehensive real-time weather conditions,' 'Singapore,' and 'travel impact analysis and advisories' all provide valuable context without redundancy.
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 5 parameters, nested objects, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, how 'travel impact analysis' manifests in outputs, or provide behavioral context needed for proper invocation. The description assumes too much given the complexity.
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 thoroughly. The description doesn't add meaningful parameter semantics beyond what's in the schema - it mentions 'travel impact analysis' which might relate to 'includeAdvisories', but this is already clear from the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 comprehensive real-time weather conditions for Singapore with travel impact analysis and advisories.' It specifies the action ('Get'), resource ('weather conditions'), and scope ('Singapore'), but doesn't explicitly differentiate from sibling 'get_weather_advisory' which might overlap in functionality.
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 versus alternatives like 'get_weather_advisory' or other weather-related tools. The description mentions travel impact analysis but doesn't explain when this is preferable to basic weather data or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_comprehensive_journeyC
Plan a comprehensive journey with step-by-step instructions, route visualization, and contextual information
| Name | Required | Description | Default |
|---|---|---|---|
| fromLocation | Yes | Starting location - provide as address, postal code, or coordinates | |
| toLocation | Yes | Destination location - provide as address, postal code, or coordinates | |
| mode | No | Transport mode: AUTO (smart selection), PUBLIC_TRANSPORT (bus/train), WALK, DRIVE (taxi/car), CYCLE | AUTO |
| departureTime | No | Departure time in ISO format (optional) | |
| arrivalTime | No | Desired arrival time in ISO format (optional) | |
| preferences | No | Journey planning preferences | |
| outputOptions | No | Output formatting options | |
| maxAlternatives | No | Maximum number of alternative routes to return |
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 mentions 'comprehensive journey' with 'step-by-step instructions, route visualization, and contextual information,' but doesn't disclose critical behavioral traits like whether it's a read-only operation, if it requires authentication, rate limits, error handling, or what the output format looks like (since no output schema exists). For a complex planning tool with 8 parameters, this is a significant gap.
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 that front-loads the core purpose: 'Plan a comprehensive journey with step-by-step instructions, route visualization, and contextual information.' It's appropriately sized with zero waste, making it easy for an agent to quickly understand the tool's function 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, nested objects, no annotations, and no output schema), the description is incomplete. It doesn't address behavioral aspects, output expectations, or usage context. For a journey planning tool that likely involves real-time data and multiple transport modes, more information is needed to help an agent use it effectively.
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 thoroughly. The description adds no additional meaning beyond what the schema providesβit doesn't explain parameter interactions, dependencies, or provide examples of usage. Baseline 3 is appropriate when the schema does the heavy lifting, but the description doesn't compensate with extra 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: 'Plan a comprehensive journey with step-by-step instructions, route visualization, and contextual information.' It specifies the verb ('plan') and resource ('journey'), and distinguishes from siblings by focusing on comprehensive planning rather than specific lookups like finding bus stops or weather conditions. However, it doesn't explicitly differentiate from all siblings (e.g., it could mention it's for multi-modal planning vs. single-mode 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or sibling tools that might be better for specific tasks (e.g., using 'get_bus_arrival' for real-time updates or 'search_location' for location resolution). Usage is implied by the purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_postal_codeB
Resolve a Singapore postal code to detailed location information with high accuracy.
| Name | Required | Description | Default |
|---|---|---|---|
| postalCode | Yes | Singapore 6-digit postal code to resolve | |
| includeNearbyInfo | No | Include nearby transport and amenities |
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 mentions 'high accuracy' but doesn't cover other critical aspects like rate limits, error handling, authentication needs, or what 'detailed location information' entails. For a tool with no annotation coverage, this leaves significant gaps in understanding its operational behavior.
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 that front-loads the core purpose without unnecessary details. It's appropriately sized for the tool's complexity, with no wasted words, making it easy for an agent to parse quickly.
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 (2 parameters, no output schema, no annotations), the description is minimally adequate. It states the purpose but lacks details on usage context, behavioral traits, and output format. Without an output schema, the description should ideally hint at return values, but it doesn't, leaving gaps in 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?
The input schema has 100% description coverage, clearly documenting both parameters. The description adds no additional semantic information beyond what's in the schema, such as examples or edge cases. With high schema coverage, the baseline score is 3, as the description doesn't compensate but also doesn't detract from the schema's 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 description clearly states the tool's purpose: 'Resolve a Singapore postal code to detailed location information with high accuracy.' It specifies the verb ('resolve'), resource ('Singapore postal code'), and outcome ('detailed location information'). However, it doesn't explicitly differentiate from sibling tools like 'reverse_geocode' or 'search_location', which might offer similar location-related functionality.
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 doesn't mention sibling tools or specify scenarios where this tool is preferred over others, such as 'reverse_geocode' for coordinates or 'search_location' for broader queries. There's no explicit context for usage, leaving the agent to infer based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reverse_geocodeC
Get address and location information from latitude/longitude coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude coordinate (WGS84) | |
| longitude | Yes | Longitude coordinate (WGS84) | |
| radius | No | Search radius in meters (0-500) | |
| includeNearbyAmenities | No | Include nearby amenities and transport |
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 states what the tool does but doesn't describe important behavioral traits: whether it's a read-only operation, what happens with invalid coordinates, rate limits, authentication requirements, or what the output format looks like (since there's no output schema). The description is functional but lacks operational context.
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 that states the core purpose without unnecessary words. It's appropriately sized for a straightforward geocoding tool and front-loads the essential information. 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?
Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is insufficiently complete. It explains what the tool does but doesn't address behavioral aspects, output format, error conditions, or usage context relative to siblings. For a geocoding tool that returns location data, more guidance on results and limitations would be helpful.
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 all parameters are documented in the schema. The description adds no additional parameter semantics beyond implying that latitude/longitude are the primary inputs. It doesn't explain the relationship between parameters (e.g., how radius affects results) or provide usage examples. With complete schema coverage, 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 clearly states the verb ('Get') and resource ('address and location information') with the source ('from latitude/longitude coordinates'). It distinguishes from siblings like 'resolve_postal_code' (which uses postal codes) and 'search_location' (which likely uses text queries). However, it doesn't explicitly mention how it differs from 'find_landmarks_and_facilities' which might also use coordinates.
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 doesn't mention when to choose reverse_geocode over 'resolve_postal_code' (for postal code lookups) or 'search_location' (for text-based searches), nor does it specify prerequisites like coordinate format or valid ranges beyond what's in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bus_stopsA
Advanced search for bus stops using fuzzy matching, Singapore abbreviations, and intelligent pattern recognition. Supports queries like "Opp Blk 910", "Bef Jurong East MRT", "CP near Orchard".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query - supports Singapore abbreviations (Blk, Opp, Bef, Aft, CP, Stn), HDB block numbers, landmarks, and partial descriptions | |
| maxResults | No | Maximum number of results to return | |
| enableFuzzySearch | No | Enable fuzzy matching for typos and variations | |
| minScore | No | Minimum similarity score for results (0.0 to 1.0) | |
| includeDistance | No | Include distance calculations if user location provided | |
| userLocation | No | User location for distance-based ranking |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits like fuzzy matching, Singapore abbreviation support, and pattern recognition. However, it doesn't mention rate limits, authentication requirements, error conditions, or what the output format looks like (though there's no output 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 perfectly concise - two sentences that both earn their place. The first sentence establishes core functionality, the second provides concrete examples. No wasted words, front-loaded with the most important information.
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 6-parameter search tool with no annotations and no output schema, the description provides good context about search capabilities but lacks information about return format, error handling, or performance characteristics. It's adequate but has clear gaps given the tool's complexity and lack of structured metadata.
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 6 parameters thoroughly. The description adds some context about Singapore abbreviations and query patterns, but doesn't provide additional parameter semantics beyond what's already in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.
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 performs 'Advanced search for bus stops' with specific capabilities like fuzzy matching, Singapore abbreviations, and pattern recognition. It distinguishes from siblings like 'find_bus_stops' by emphasizing advanced search features and provides concrete query examples like 'Opp Blk 910'.
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 clear context about when to use this tool (for advanced bus stop searches with Singapore-specific patterns), but doesn't explicitly state when NOT to use it or mention alternatives like 'find_bus_stops' or 'search_location'. The examples help guide appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationC
Search for locations in Singapore using addresses, postal codes, landmarks, or building names. Supports fuzzy search and intelligent query analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query - can be address, postal code, MRT station, landmark, or building name | |
| maxResults | No | Maximum number of results to return (1-20) | |
| enableFuzzySearch | No | Enable fuzzy matching for typos and variations | |
| includeNearbyInfo | No | Include nearby amenities and transport information | |
| userLocation | No | User location for proximity-based ranking |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'supports fuzzy search and intelligent query analysis' which adds some behavioral context beyond basic functionality, but doesn't cover important aspects like rate limits, authentication requirements, error handling, or what the output format looks like (especially critical since there's no output 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 appropriately concise with two sentences that each add value. The first sentence establishes core functionality and scope, while the second adds behavioral context about search capabilities. There's no wasted verbiage or repetition of information already in the schema.
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 search tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the search returns (location objects? coordinates? addresses?), how results are ranked, error conditions, or performance characteristics. The behavioral context provided is minimal given the tool's complexity and lack of structured metadata.
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 5 parameters thoroughly. The description mentions 'addresses, postal codes, landmarks, or building names' which aligns with the query parameter documentation, but adds no additional semantic context beyond what's already in the well-documented 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 tool searches for locations in Singapore using various input types (addresses, postal codes, landmarks, building names), which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'search_bus_stops' or 'find_landmarks_and_facilities' that might overlap in functionality.
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 like 'search_bus_stops', 'find_landmarks_and_facilities', or 'resolve_postal_code'. It mentions what the tool does but offers no context about appropriate use cases or exclusions compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, such as find_bus_stops for locating stops and get_bus_arrival for real-time arrivals, but there is some overlap between get_weather_conditions and get_weather_advisory, which could cause confusion. Overall, descriptions help clarify boundaries, but minor ambiguity exists in weather-related tools.
All tool names follow a consistent verb_noun pattern using snake_case, such as find_bus_stops, get_bus_arrival, and search_location. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
With 13 tools, the count is well-scoped for a location intelligence server covering transportation, weather, and geocoding in Singapore. Each tool serves a clear purpose, such as journey planning or bus stop searches, without feeling excessive or insufficient for the domain.
The tool set provides comprehensive coverage for Singapore location intelligence, including transportation (bus, train, taxi), weather, geocoding, and journey planning. Minor gaps exist, such as no tool for traffic conditions or detailed train schedules, but agents can work around these with the available tools for core workflows.
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
Provide real-time transportation data including bus arrivals, train service alerts, carpark availaβ¦
Singapore property & financial data APIs for AI agents. 27 MCP tools. x402 micropayments.
Get real-time bus arrival times for any Singapore bus stop by code, with optional service filterinβ¦
data.gov.sg MCP β Singapore open data + real-time environment/transport feeds
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceFacilitates real-time access to Singapore's Land Transport Authority (LTA) transportation data, offering insights into bus arrivals, train services, traffic conditions, and more through integration with the LTA DataMall API.73
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive access to Singapore's OneMap APIs, enabling AI assistants to perform location searches, routing, and coordinate conversions. It features over 35 tools for accessing thematic layers, population statistics, and public transport data.
- FlicenseAqualityDmaintenanceProvides real-time access to Singapore's Land Transport Authority data, including bus arrivals, traffic conditions, train updates, and carpark availability.7
- FlicenseNot gradedqualityDmaintenanceProvides real-time Singapore bus information, including arrival times, routes, and stop details via the LTA DataMall API.1
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/siva-sub/MCP-Public-Transport'
If you have feedback or need assistance with the MCP directory API, please join our Discord server