mcp-singapore
Click on "Deploy 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., "@mcp-singaporeshow recent HDB resale transactions in Bedok"
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.
mcp-singapore
A TypeScript MCP server for Singapore public data: specialized tools, catalog discovery, official statistics, real-time feeds, and controlled dataset exports. Uses the stdio transport and requires Node.js 22.12 or later.
64 tools · 22 specialized datasets · 4664 datasets · 74 agencies. Snapshot: 2026-10-21.
The bundled index contains dataset metadata, not a copy of every observation. Records are retrieved on demand. Coverage dates, update frequency, formats, and definitions vary by provider. See COVERAGE.md for the generated inventory.
Data coverage
Domain | Available data |
Housing | HDB resale transactions since 2017, rentals, median rents, private property indices, HDB population |
Business | UEN/ACRA entity registry and detailed alphabetical ACRA partitions |
Education | School directory, preschool locations, catalog and SingStat education statistics |
Food | Hawker centres and closure dates |
Health | Infectious disease bulletins and healthcare schemes |
Culture and sports | Museum attendance and sports facilities |
Tourism | Visitor arrivals and hotel statistics |
Environment | Recycling, greenhouse gas emissions, annual air quality |
Weather | Temperature, rain, humidity, wind, 2-hour/24-hour/four-day forecasts, PSI, PM2.5, UV |
Transport | Available taxis, parking spaces, traffic cameras; authenticated LTA bus and traffic feeds |
Geography | OneMap geocoding, geographic exports, nearby facilities, SVY21/WGS84 conversion |
Economy and society | Unemployment, government spending, SingStat tables |
International comparisons | World Bank indicators for Singapore and up to five comparison countries |
The full catalog also covers census data, incomes, trade, energy, CPF, infrastructure, urban planning, and other topics. Historical observations are not presented as current measurements.
Related MCP server: OneMap MCP Server
Dataset reference library
Browse 288 dataset guides across 74 agencies for publisher descriptions, snapshot coverage, source links, and schema-validated MCP request examples. The selection includes all 22 specialized datasets. Guides describe discovery and access; live data availability must be checked with the provider.
Install from source
git clone https://github.com/Hug0x0/mcp-singapore.git
cd mcp-singapore
npm ci
npm run build
npm testConfigure a compatible MCP client with an absolute path to the cloned project:
{
"mcpServers": {
"singapore": {
"command": "node",
"args": ["/absolute/path/to/mcp-singapore/dist/index.js"]
}
}
}The package name is @hug0x0/mcp-singapore. Publication to npm has not been performed; use the source installation until a published version is explicitly verified.
Credentials
Public data.gov.sg, SingStat, and World Bank endpoints support public exploration subject to provider quotas. A data.gov.sg API key is recommended for production use. LTA and OneMap require their own credentials.
Environment variable | Purpose |
| Optional data.gov.sg key, sent in |
| Required for LTA DataMall bus arrivals and other LTA tools |
| Required for OneMap address search and reverse geocoding |
Set variables in the MCP client's env configuration or in the server process environment. .env.example is a template; the server does not automatically load .env files. Credentials are sent in request headers, never in tool arguments or request URLs.
{
"mcpServers": {
"singapore": {
"command": "node",
"args": ["/absolute/path/to/mcp-singapore/dist/index.js"],
"env": {
"DATA_GOV_SG_API_KEY": "your-data-gov-sg-key",
"LTA_ACCOUNT_KEY": "your-lta-key",
"ONEMAP_TOKEN": "your-onemap-token"
}
}
}
}Request credentials from data.gov.sg, LTA DataMall, and OneMap. Configure only the services you use. Renew expired OneMap tokens with the provider.
Research workflow
Use
singapore_find_relevant_toolsto route an English question to relevant tools.Use
singapore_search_catalogto search the bundled index by English keywords, agency, format, status, and coverage.Use
singapore_inspect_datasetto inspect current metadata and normalized field names. Field metadata is paginated;include_rawincludes the original column mapping.Use
singapore_query_datasetor a specialized tool to retrieve records with filters, field searches, sorting, projection, and pagination.Use
singapore_download_datasetto initiate and poll an export when Datastore does not support the dataset.
Example catalog query:
{"query":"resale flat prices","limit":5}Then query singapore_query_hdb_resale:
{"filters":{"town":"ANG MO KIO","flat_type":"4 ROOM"},"sort":"month desc","limit":10,"offset":0}Filters use exact equality and preserve the provider's representation. Column search uses an object such as {"school_name":"RAFFLES"}. Inspect field names first. Numeric values may be strings; missing-value markers are preserved.
For SingStat, search {"query":"population"}, inspect resource M810001, then call singapore_get_statistics with {"resource_id":"M810001","series_contains":"Total Population","period_limit":5}. Series and period filtering occur locally after table retrieval; period can restrict the upstream request to an exact period.
Analysis and nearby searches
singapore_compare_hdb_prices scans the complete official CSV export before calculating medians, quartiles, and prices per square metre. It reports exclusions and coverage rather than extrapolating from a single page.
singapore_find_nearby_facilities supports HDB carparks with live availability, hawker centres, preschools, park facilities, and sports facilities. Unsupported geometries and missing coordinates are counted. Preschool coverage does not include primary or secondary schools.
singapore_convert_coordinates converts SVY21 easting/northing to WGS84 longitude/latitude and back within supported Singapore bounds.
MCP resources and results
Resources: singapore://sources, singapore://coverage, singapore://usage, singapore://topics.
Prompt: research-singapore, with a question argument.
Results contain ok, served_at, data, and sources, in both structuredContent and JSON text. served_at is the response emission time; HTTP provenance includes actual fetched_at, cache use, and cache age. Provider observation and update timestamps remain authoritative for the data itself.
The server bounds page sizes, request queues, output size, HTTP responses, and caches. It preserves continuation parameters and rejects oversized outputs explicitly. Requests use fixed provider origins and reject redirects. Credentials and request bodies are not sent to telemetry services.
Maintenance and verification
npm run build
npm test
npm run docs:generate
npm run docs:check
npm run check:schema
npm run test:smoke
npm run test:smoke -- --all
npm run test:smoke -- --mode=auth
npm run test:package
npm audit
npm run refresh:catalogLive verification is separate from ordinary pull-request tests. Authenticated checks are explicitly skipped when credentials are absent. The latest report is in docs/live-verification.json. Successful checks do not guarantee future provider availability.
Catalog refresh validates complete pagination, dataset integrity, and required fields before replacing the index. Manual workflows provide catalog refresh proposals and provider verification artifacts. The source catalog and provider responses can change independently of this server.
Documentation
Sources
License
MIT for the server code. Data remains subject to its providers' terms and attribution requirements. See the Singapore Open Data Licence and individual dataset metadata.
Available Tools
64 toolssingapore_catalog_summaryARead-onlyIdempotent
List dataset counts by publishing agency and file format, with catalog snapshot date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds one meaningful behavioral fact beyond that: results reflect a catalog snapshot as of a date, so counts can be stale relative to live pages. It says nothing about aggregation basis, coverage limits, or whether every agency appears.
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?
A single sentence with the resource and the two breakdown dimensions front-loaded, followed by the snapshot caveat. Nothing extraneous.
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?
With an output schema present, return shape need not be explained, and with no parameters and full annotation coverage the remaining burden is small. The snapshot-date caveat is the key piece of context an agent needs, and it is present; only the relationship to the other catalog listing tools is unstated.
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 tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline applies. The description correctly implies it is a whole-catalog aggregate with no filtering options.
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?
Specific verb plus a precise aggregate resource: dataset counts broken out by publishing agency and file format, plus the snapshot date. That is clearly distinguishable from record-level siblings like singapore_lookup_dataset or singapore_query_dataset, though no sibling is named explicitly.
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?
There is no explicit when-to-use or when-not-to-use statement, and none of the nearby catalog tools (list_collections, search_catalog, list_catalog_page) are referenced as alternatives. The 'counts by agency and format' framing implies an overview/statistics use case, but the agent must infer that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_compare_hdb_pricesARead-onlyIdempotent
Compare HDB resale prices across towns and a bounded month interval using the entire official CSV export (64 MiB maximum). Does not extrapolate from a Datastore page. Exports may still be processing: retry on EXPORT_PENDING.
| Name | Required | Description | Default |
|---|---|---|---|
| towns | Yes | ||
| to_month | Yes | ||
| flat_type | No | ||
| from_month | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read-only, idempotent, open-world, and non-destructive behavior, the description adds useful context about using the entire official CSV export, the 64 MiB cap, and the EXPORT_PENDING retry state. It does not cover rate limits or output shape, but the output schema and annotations reduce that burden.
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 three compact sentences, front-loads the core operation, and each sentence adds relevant scope or behavior details. There is no redundant restatement of the tool name.
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 read-only tool with annotations and an output schema, the description covers the key data-source behavior and retry condition. It is somewhat incomplete on usage alternatives and optional parameter meaning, but overall sufficient for safe invocation.
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 0%, so the description must carry parameter meaning. It mentions towns and a bounded month interval, but it does not explain the optional flat_type parameter or add much beyond the parameter names and schema patterns.
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 states a specific verb and resource: comparing HDB resale prices across towns over a bounded month interval. It also distinguishes the data source from a Datastore page, helping separate it from generic query siblings.
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?
It gives some operational guidance by warning that exports may still be processing and saying to retry on EXPORT_PENDING. However, it does not explicitly say when to use this tool instead of sibling query tools such as singapore_query_hdb_resale or singapore_query_dataset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_convert_coordinatesARead-onlyIdempotent
Convert SVY21 easting/northing metres to WGS84 longitude/latitude or the reverse within Singapore. Uses SLA projection parameters; no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| from | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behaviour, so the bar is lower. The description still adds real operational context: SLA projection parameters are used and no API key is required, which tells the agent this is a local computation with no auth prerequisites. It stops short of noting accuracy limits or valid coordinate bounds.
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?
Two sentences, no filler, and the core purpose and units are front-loaded before the secondary detail about projection parameters and keys.
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?
An output schema exists, so return-value explanation is unnecessary; the description covers datum, units, scope and auth. Missing only boundary behaviour and the coordinate-order convention for the WGS84 input direction, which matter for a transformation tool but are secondary.
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 0%, so the description must carry the weight, and it does disambiguate the otherwise opaque 'x'/'y' as easting/northing in metres and ties 'from' to the direction of conversion. It does not spell out the axis order for the reverse case (whether x becomes longitude or latitude), which leaves one gap given the zero 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?
Specific verb (convert) plus both resources and formats: SVY21 easting/northing metres and WGS84 longitude/latitude, with a geographic scope (within Singapore). Nothing else in the sibling list performs a datum transformation, so the agent can identify it without opening the schema.
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 phrase 'or the reverse' implies direction is controlled by the input, and 'within Singapore' scopes applicability. But it never states when to prefer this over the nearby address-oriented siblings (e.g. singapore_reverse_geocode) or what happens outside Singapore's bounds. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_download_datasetARead-only
Start or poll a dataset export. Call initiate once, then poll on later calls. Returns provider download URL (may expire), never downloads large files into the conversation. Suitable for CSV/GeoJSON/KML and datasets without datastore support.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | initiate | |
| dataset_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint true, destructiveHint false, openWorldHint true, idempotentHint false), and the description adds real context beyond them: the two-phase initiate/poll state machine that explains the non-idempotent hint, plus the fact that the returned provider URL may expire and that large files are never pulled into the conversation. It does not say how often to poll, how long an export takes, or what a pending poll result looks like.
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?
Three short sentences, front-loaded with the core action, then the required call sequence, then the behavioral caveats. No filler and nothing repeated from annotations or 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?
With an output schema present, return-value detail is unnecessary, and the description still flags the key output caveat (expiring download URL). The only gap is operational guidance for the poll phase — retry cadence and what to do with a not-ready response — which matters for a non-idempotent async tool.
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 coverage is 0%, so the description has to carry the parameter burden, and it does the important part: it names the 'initiate' and 'poll' action values and ties them to call order, which the bare enum lacks. The dataset_id parameter (including its required pattern) is left entirely to the 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?
States a specific verb and resource ('Start or poll a dataset export') and immediately scopes it to file-format datasets ('CSV/GeoJSON/KML and datasets without datastore support'), which cleanly separates it from the datastore-querying siblings like singapore_query_dataset. An agent can route correctly without opening any schema.
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?
'Call initiate once, then poll on later calls' gives an explicit call sequence, which is the main usage hazard for this tool. The suitability clause implies when NOT to use it (datasets with datastore support), but it never names the alternative tool explicitly, so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_find_nearby_bus_stopsBRead-onlyIdempotent
Search a bounded set of LTA bus-stop pages near WGS84 coordinates. Requires LTA_ACCOUNT_KEY. Complete is true only after an upstream short page; continuation identifies the next unscanned page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| latitude | Yes | ||
| longitude | Yes | ||
| max_pages | No | ||
| radius_km | No | ||
| result_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, non-destructive, so the safety profile is covered. The description earns credit by adding genuine behavioral context the annotations cannot: an authentication requirement (LTA_ACCOUNT_KEY) and the non-obvious completion semantics ('Complete is true only after an upstream short page'), which warns the agent that a full page does not mean the search is exhausted.
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?
Three tight sentences with no filler, and the core purpose is front-loaded before the auth and pagination caveats. The phrase 'upstream short page' is slightly opaque jargon, but overall the density is appropriate for the amount of behavior being conveyed.
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?
An output schema exists, so return values need not be explained, and the auth prerequisite plus completion semantics are covered. However, for a 7-parameter tool with no schema descriptions, the unresolved offset-vs-result_offset question and the phantom 'continuation' token leave a real risk of incorrect invocation.
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 0% across 7 parameters, so the description must carry them, and it does not. It never explains limit, max_pages, radius_km, or the critical distinction between offset and result_offset. Worse, it describes a 'continuation' handle that does not appear as a parameter in the schema at all, leaving the agent to guess how to resume the scan.
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?
States a specific verb and resource: 'Search a bounded set of LTA bus-stop pages near WGS84 coordinates.' The bus-stop domain and the coordinate-based search scope are unambiguous. It stops short of naming a sibling (e.g. singapore_find_nearby_facilities or singapore_get_bus_arrivals) that an agent might otherwise confuse it with.
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?
Usage is implied rather than stated: the coordinate requirement, the LTA_ACCOUNT_KEY prerequisite, and the 'continuation identifies the next unscanned page' sentence together tell an agent how to drive the pagination loop. But there is no explicit when-to-use/when-not guidance and no named alternative among the many nearby-geospatial and bus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_find_nearby_facilitiesARead-onlyIdempotent
Find nearby HDB carparks with live availability, hawker centres, preschools, park facilities or sport facilities. Reads a bounded full official export (64 MiB max). Only Point geometries with validated WGS84 coordinates are considered; omitted geometries are counted. No arbitrary download URL input.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| category | Yes | ||
| latitude | Yes | ||
| longitude | Yes | ||
| radius_km | No | ||
| include_properties | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and open-world status, so the bar is lower. The description still adds real behavioral context: a bounded official export of at most 64 MiB, the rule that only Point geometries with validated WGS84 coordinates are considered, and that omitted geometries are counted — all useful for interpreting result completeness.
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?
Three compact sentences with the primary action front-loaded, then the data-scope guarantees, then the negative constraint. No filler and nothing repeated from 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?
An output schema exists, so return-value explanation is not required, and the export-size and geometry caveats are helpful. However, an agent still cannot infer from the description that proximity is controlled by radius_km with a 2 km default or how pagination behaves — meaningful gaps for a 7-parameter geo query.
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 0%, so the description must carry the parameter semantics, and it only partially does. It maps the category set and implies the coordinate validation for latitude/longitude, but says nothing about radius_km (default 2, max 100), limit/offset pagination behavior, or what include_properties changes in the response.
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?
States a specific verb and resource set: 'Find nearby' plus an explicit enumeration of the five category types (HDB carparks with live availability, hawker centres, preschools, park and sport facilities). This distinguishes it from pure directory lookups like singapore_query_carpark_directory by flagging 'live availability', though it does not name any sibling outright.
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?
Usage is implied by the category list and by the negative constraint 'No arbitrary download URL input', which implicitly routes URL-based retrieval to singapore_download_dataset. But there is no explicit when-to-use/when-not statement and no guidance on choosing between this and singapore_get_carpark_availability for live data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_find_relevant_toolsARead-onlyIdempotent
Route an English question to tools and datasets. Deterministic keyword matching; suggestions are not evidence or computed facts. Search catalog with English keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| question | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely new behavioral context: matching is deterministic keyword-based (not semantic), and results are suggestions rather than computed facts — an important reliability caveat an agent would otherwise not know.
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?
Three short sentences with the core purpose front-loaded and the caveat following immediately. Some redundancy between 'Route an English question' and 'Search catalog with English keywords', which repeats the English-keyword idea twice.
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?
An output schema and full annotations exist, so return values and safety need not be described. What is missing is the relationship to the many sibling search/query tools and any hint about acting on the suggestions, which leaves the discovery workflow underspecified.
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 coverage is 0%, so the description must carry parameter meaning. It clarifies that the required parameter is a natural-language English question/keywords, which is useful, but it says nothing about the 'limit' parameter or any length/format expectations.
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?
States a specific verb and resource: 'Route an English question to tools and datasets.' That is clearly a discovery/routing tool rather than a data fetcher. However, the trailing sentence 'Search catalog with English keywords' blurs the line with the sibling singapore_search_catalog, so the differentiation is not fully crisp.
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?
Use of an English question as input implies the routing use case, and the line 'suggestions are not evidence or computed facts' hints at a first-pass discovery role. But it never says when to prefer this over singapore_search_catalog or singapore_search_statistics, nor does it advise calling the returned tools next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_air_temperatureBRead-onlyIdempotent
NEA temperature (degrees Celsius). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds some genuine context: local-date semantics, default-to-latest behavior, and an unusual pagination-token consumption rule. It omits rate limits, error conditions, and what happens on empty results.
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?
Three short sentences, front-loaded with the resource and unit, which is good. But the final sentence about consuming local offsets before continuing the preserved upstream pagination token is cryptic and poorly integrated, costing clarity per word.
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?
An output schema exists, so return values need not be explained. Still, for a seven-parameter tool with weak schema coverage and an unusual pagination token, the description omits enough that an agent cannot confidently choose values for region, area, station_id, or offset/limit interplay.
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 only 14%, so the description must compensate, but it only clarifies the date parameter (Singapore local dates, latest if omitted) and slightly the pagination token. The seven parameters area, region, station_id, limit, and offset receive no semantic explanation in the description, and the schema leaves most of them bare.
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?
States a specific resource and unit (NEA temperature in degrees Celsius), which distinguishes it from sibling weather tools like singapore_get_rainfall and singapore_get_relative_humidity. However, it does not explicitly say 'retrieve air temperature readings', leaving the verb implicit and giving no sibling differentiation beyond the implicit unit.
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?
It implies default behavior ('latest if omitted') but never says when an agent should prefer this over singapore_get_forecast_2h, singapore_get_rainfall, or singapore_list_weather_stations. No exclusions or routing guidance are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_bus_arrivalsARead-onlyIdempotent
Live next buses at a bus stop, estimated arrival, load and accessibility. Requires LTA_ACCOUNT_KEY. Bus stop codes retain leading zeros.
| Name | Required | Description | Default |
|---|---|---|---|
| service_no | No | ||
| bus_stop_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world and non-destructive. The description adds value beyond them: this is live/real-time data (not cached historical), an API key is required, and a data-format pitfall (leading zeros) is flagged. It still omits freshness/update cadence and any rate-limit 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?
Two short sentences, front-loaded with the capability, then the prerequisite and the format caveat. No filler.
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?
With an output schema present, return values needn't be described, and the description covers the essentials: what data, auth requirement, and a format gotcha. The main remaining gap is the unmentioned service_no parameter and the lack of any note on data freshness.
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 0%, so the description must carry parameter meaning, and it only partly does. 'Bus stop codes retain leading zeros' usefully explains the bus_stop_code format pitfall, but the optional service_no filter is never mentioned, leaving an agent to guess what it does.
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 states a specific resource and result set: live next-bus arrivals (ETA, load, accessibility) at a given bus stop. It is distinguishable from singapore_find_nearby_bus_stops by implication, though it never names the sibling to make the split explicit.
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?
'Requires LTA_ACCOUNT_KEY' gives a real prerequisite for invocation. However, there is no statement of when to use this versus singapore_find_nearby_bus_stops (to resolve a stop code first) or the other LTA/carpark/taxi tools, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_capabilitiesCRead-onlyIdempotent
Local configuration and source availability. Reports only whether credentials are configured, never their values. No network requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds genuinely useful behavioral facts beyond the annotations: only presence of credentials is reported, values are never exposed, and it performs no network I/O. But "No network requests" conflicts with openWorldHint=true, which signals external/open-ended interaction, creating an inconsistency the agent has to resolve. The safety profile from readOnlyHint/idempotentHint/destructiveHint is otherwise consistent.
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?
Three terse sentences with no filler, and the privacy/credential guarantee is front-loaded after the resource statement. The first sentence is a noun fragment rather than a complete statement, which slightly weakens the lead.
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?
An output schema exists, so return values need not be explained, and the description covers the key trust concerns (no credential values, no network). It still omits the primary question for a 'capabilities' tool — what exactly is enumerated (data sources? authenticated APIs? enabled tools?) — and offers no placement guidance among many siblings.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a no-argument invocation ('reports only whether...'), which is consistent with the empty 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 frames the resource as "Local configuration and source availability" and mentions reporting whether credentials are configured, which gestures at the tool's purpose. However, it never uses a verb like "returns" or "lists" and never says plainly that it reports available capabilities/sources, so the agent must infer the payload from the name singapore_get_capabilities. The purpose is understandable but not stated crisply.
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?
There is no guidance on when to call this versus the ~60 sibling tools (e.g., as a preamble check before singapore_get_sources or the query_* tools when credentials may be missing). "No network requests" implies it is cheap and safe to call eagerly, but the agent is left to derive that routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_carpark_availabilityARead-onlyIdempotent
HDB/URA carpark live available lots by carpark number. Does not include coordinates: join with carpark directory to locate carparks.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| date_time | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| carpark_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior, so the safety profile is covered. The description adds that the data is live and lacks coordinates, which is useful, but it does not clarify whether date_time changes the live behavior or how results are ordered.
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?
Two short sentences with no wasted text. The main purpose is front-loaded, followed immediately by the important coordinate caveat.
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?
The description covers the core purpose and the coordinate limitation, and output schema exists so return values need not be explained. However, it leaves the date_time parameter ambiguous for a tool advertised as live, which is a meaningful gap for correct invocation.
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?
Only carpark_number is meaningfully referenced in the description; limit, offset, and date_time are not explained. With schema description coverage at 25%, the description leaves most parameter semantics for the agent to infer.
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 resource and scope: HDB/URA carpark live available lots by carpark number. It also distinguishes this tool from the carpark directory by noting that coordinates are not included and must be joined in separately.
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?
It gives clear usage context for live availability and explicitly names the complementary directory source for locating carparks. It stops short of stating when to query historical or future times, or how to use pagination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_collectionBRead-onlyIdempotent
Get a collection and its child dataset metadata to discover related historical series or ACRA partitions.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the useful fact that the call returns the collection plus its child dataset metadata, but says nothing about behavior on an invalid or missing collection_id or how deep the child metadata goes. With annotations carrying the safety burden, a 3 fits.
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?
One sentence with no filler, and the resource being fetched is front-loaded before the reason for fetching it. It is dense to the point of near-opacity in the phrase 'child dataset metadata', but nothing is wasted.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains missing for a one-parameter catalog tool is how to obtain a valid collection_id and what happens if it is wrong, which is the main practical risk an agent faces here.
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 0%, so the description must carry the meaning of collection_id, and it does not — no hint that the id comes from singapore_list_collections or the catalog, and no note that it must be a positive integer. The only context is the word 'collection' in the purpose clause, which leaves a real gap for the single required input.
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?
States a specific verb ('Get') and resource ('a collection and its child dataset metadata'), and the mention of child dataset metadata distinguishes it from a flat listing tool like singapore_list_collections. It does not, however, explicitly contrast itself with singapore_inspect_dataset or singapore_list_collections.
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 purpose clause ('to discover related historical series or ACRA partitions') implies when an agent would call it, which is better than nothing. But there is no explicit when-to-use/when-not and no routing to the obvious alternatives (list_collections to enumerate, inspect_dataset for a single dataset), leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_forecast_24hCRead-onlyIdempotent
NEA 24-hour weather forecast. Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuine behavioral context about local timestamp grouping limits and pagination-token continuity, but the phrasing ('preserved upstream pagination token') is too opaque to be reliably actionable.
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?
Only three short sentences and the purpose is correctly front-loaded. However, the trailing two sentences are jargon-heavy and hard to parse, so brevity comes at the cost of comprehensibility rather than earning 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?
The presence of an output schema relieves the description of explaining return values, and it does cover date defaults and pagination continuity. Still, with 7 parameters at 14% coverage, an agent lacks enough to fill in area, region, station_id, or limit confidently.
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 only 14%, so the description must compensate and largely does not: area, region, station_id, and limit are never explained. It does clarify the date default and hints at offset/pagination_token interplay, but the offset wording ('Consume local offsets before continuing...') is ambiguous rather than instructive.
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?
States a specific verb+resource: 'NEA 24-hour weather forecast', which implicitly distinguishes it from the sibling 2-hour and 4-day forecast tools. An agent can identify the resource and the forecast horizon without opening the schema.
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 only usage-adjacent statement is 'latest if omitted' about the date default. There is no guidance on when to pick this over singapore_get_forecast_2h or singapore_get_forecast_4day, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_forecast_2hBRead-onlyIdempotent
NEA 2-hour area forecasts. Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuine behavioral context about pagination (preserved upstream token, consuming local offsets), but 'Local limits apply to timestamp groups' is opaque jargon that an agent cannot act on confidently.
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?
It is short and front-loads the resource, which is good. However, the final two sentences are compressed into terse, hard-to-parse jargon whose meaning is not recoverable from the text, so brevity comes at the cost of clarity.
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?
With 7 optional parameters, near-zero schema coverage, and a filter-oriented tool, the description should explain what area/region/station_id select and how limit/offset interact with pagination_token. Output schema exists, so return values need not be explained, but the filtering model remains unexplained.
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 coverage is only 14% (only date is documented), so the description carries the burden and largely fails. It clarifies date semantics ('Singapore local dates; latest if omitted') and hints at pagination_token, but area, region, station_id, limit, and offset get no added meaning beyond their names.
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?
States the resource precisely ('NEA 2-hour area forecasts'), and the '2-hour' qualifier distinguishes it from the sibling 24h and 4-day forecast tools. The retrieval verb is only implied, but an agent can identify the resource without opening the schema.
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?
'latest if omitted' gives one useful default behavior for the date parameter, but there is no guidance on when to pick this tool over singapore_get_forecast_24h or singapore_get_forecast_4day, and no exclusions are stated. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_forecast_4dayCRead-onlyIdempotent
NEA four-day outlook. Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds pagination behavior ("Consume local offsets before continuing the preserved upstream pagination token") and a timestamp-group limit caveat, but the phrasing "Local limits apply to timestamp groups" is cryptic and does not clearly state the constraint.
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?
Front-loading with "NEA four-day outlook" is good and there is no filler, but the trailing two sentences are dense, jargon-heavy, and harder to parse than they need to be for what they convey.
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?
With seven optional parameters at 14% schema coverage and no output-schema explanation needed, the description still leaves the area/region/station_id relationship and the actual meaning of the pagination and limit rules unstated. An agent could call it, but not confidently filter by location.
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 14% — only date is documented — so the description carries the burden. It clarifies date default and hints at limit/offset/pagination_token coupling, but says nothing about area, region, or station_id, which are three of the seven parameters, leaving the filtering model unexplained.
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?
"NEA four-day outlook" names a specific resource and time horizon, and the tool name confirms it returns a forecast. It does not, however, distinguish itself from the sibling forecasts singapore_get_forecast_2h and singapore_get_forecast_24h, so the agent must infer the difference from the name alone.
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 only usage-adjacent statement is "latest if omitted" for the date, which describes a default rather than when to choose this tool. There is no mention of when to prefer the 2h/24h forecasts or what the tool is unsuitable for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_indicatorARead-onlyIdempotent
World Bank historical indicator for Singapore, optionally comparing up to five ISO3 countries. Latest years first; null values are preserved. Definitions and publication lag can differ from SingStat. No key required.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| to_year | No | ||
| from_year | No | ||
| indicator | Yes | Curated alias (e.g. gdp) or World Bank code | |
| compare_countries | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful behavior beyond them: results are ordered latest-years-first, null values are preserved rather than dropped, and no authentication key is required. It does not discuss pagination behavior or response shape, keeping it just short of a 5.
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?
Three terse clauses, each carrying distinct information (scope, ordering/null behavior, source caveat and access). The comparison capability and source scope are front-loaded; no sentence is filler.
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?
An output schema exists, so return values need no explanation, and annotations cover safety. But for a 6-parameter tool with 17% schema coverage, the description leaves the year-range and pagination parameters entirely to schema inference, which is a visible gap for a historical time-series query.
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 only 17%, so the description must compensate, and it does so only partially: it clarifies that compare_countries takes up to five ISO3 codes and that indicator is a World Bank series. The four pagination/year parameters (page, limit, from_year, to_year) receive no explanation beyond their self-evident names, and curated alias vs. raw code semantics are left to the 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?
States a specific verb and resource: fetch a World Bank historical indicator for Singapore, with an optional cross-country comparison. The mention of differing definitions/publication lag versus SingStat implicitly carves out space from the sibling statistical tools, though it never names an alternative outright.
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?
Implies when this tool is appropriate (World Bank-sourced historical series, optionally multi-country) and that no API key is needed. However, it gives no explicit when-not guidance and does not name singapore_get_statistics or singapore_list_indicators as the sibling to use for alternative cases, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_pm25BRead-onlyIdempotent
NEA PM2.5 (micrograms per cubic metre). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds real behavior beyond that: the default-to-latest rule, the fact that local limits apply per timestamp group, and that the pagination token is a preserved upstream token whose offsets must be consumed first. That extra context is genuinely useful but phrased cryptically and never explains the return shape.
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?
Three short sentences, front-loaded with the metric and unit, which is good. But the final sentence about 'consuming local offsets before continuing the preserved upstream pagination token' is dense and ambiguous, costing more comprehension than it saves.
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?
An output schema exists so return values needn't be explained, and annotations cover safety. Still missing for a 7-parameter filter tool: how area/region/station_id relate, what valid values look like, and how the offset interacts with the pagination token when resuming.
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?
With only 14% schema description coverage, the description must carry the load, and it partially does: it clarifies that dates are Singapore-local, that omitting date yields the latest reading, and it touches limit/offset/pagination_token semantics. However, area, region, and station_id — three of seven parameters — get no explanation at all, and their interplay is unstated.
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?
Names the specific resource and unit ('NEA PM2.5 (micrograms per cubic metre)'), which clearly distinguishes it from siblings like singapore_get_psi or singapore_query_air_quality_annual. It lacks an explicit verb ('retrieve/fetch'), but the resource is unambiguous.
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?
'Latest if omitted' hints at the default-date case, but there is no guidance on when to pick this tool over singapore_get_psi or the annual air-quality query, and no statement of which filters (area vs region vs station_id) to prefer. The pagination sentence describes mechanics rather than when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_psiBRead-onlyIdempotent
NEA PSI and pollutants by region. Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, read-only, idempotent, open-world read, so the safety profile is covered. The description adds genuinely new behavior — default-to-latest semantics, local-limit scoping over 'timestamp groups', and an instruction to advance local offsets before reusing the preserved upstream pagination token. However, the last two sentences are jargon-heavy and an agent cannot confidently act on 'local limits apply to timestamp groups'.
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 purpose is front-loaded in one clean sentence and there is no filler. The two trailing sentences are compressed to the point of ambiguity, so they cost readability without delivering a clear instruction.
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?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. Against that, this is a seven-parameter tool with almost no schema documentation, and the description leaves the most ambiguous selectors (area vs station_id vs region, and limit) undefined.
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 only 14% (just `date`), so the description carries most of the burden, yet it clarifies only the date/latest behavior and the offset/pagination_token relationship on a second read. Nothing explains `area`, `station_id`, or `limit`, including how station_id relates to region or that limit defaults to 20 with a max of 100.
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 opening clause names a specific resource (NEA PSI) plus the pollutants it covers and the regional breakdown, which is more precise than the bare tool name. It implicitly separates itself from the single-metric siblings (singapore_get_pm25, singapore_get_air_temperature) but never names one explicitly.
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?
Only 'latest if omitted' gives real usage context, telling the agent that no date means current readings. There is no statement about when to prefer this over singapore_get_pm25 or singapore_query_air_quality_annual, and no exclusions or prerequisites, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_rainfallCRead-onlyIdempotent
NEA rainfall (mm). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds useful context (mm unit, latest-when-omitted default) plus a cryptic pagination caveat ('consume local offsets before continuing the preserved upstream pagination token') and 'local limits apply to timestamp groups' that hint at behavior without really clarifying it.
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?
It is short and front-loads the resource, but the final sentence is jargon-laden and hard to parse, spending words without conveying a clear instruction.
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?
With 7 parameters, 0 required, and near-zero schema coverage, the description should explain the geographic filters and pagination contract. An output schema exists so return format need not be covered, but the filter semantics and the pagination-token/offset relationship are left ambiguous.
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 only 14% — only 'date' is documented — so the description carries the burden and largely fails to. area, region, and station_id are never explained (mutual exclusivity? granularity?), and limit/offset/pagination_token interactions are only alluded to in opaque terms.
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 identifies the specific data resource (NEA rainfall measured in mm), which cleanly separates it from the weather siblings such as singapore_get_air_temperature or singapore_get_wind_speed. The verb is only implicit through the tool name, but the resource and unit are unambiguous.
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 only usage-adjacent statement is 'latest if omitted', which describes a default rather than when to choose this tool. There is no comparison to sibling weather endpoints or any statement about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_relative_humidityCRead-onlyIdempotent
NEA humidity (%). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior. The description adds pagination-related context about consuming local offsets and preserving an upstream pagination token, but the wording is vague and omits other behavioral details such as rate limits or auth requirements.
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 short and front-loads the data type and unit. The final sentence about local offsets and the preserved upstream pagination token is concise but cryptic, slightly reducing structural clarity.
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 seven-parameter weather query with low schema description coverage, the description is incomplete. It covers date defaults and some pagination behavior, but does not explain most filters or when to use this tool versus related weather tools.
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 only 14%, so the description must compensate for undocumented parameters. It clarifies the date parameter and gestures at pagination token usage, but leaves area, limit, offset, region, and station_id largely unexplained.
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 identifies the resource as NEA humidity with a percentage unit, so an agent can infer it retrieves humidity data. It does not explicitly distinguish this weather tool from sibling weather tools such as singapore_get_air_temperature or singapore_get_rainfall.
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?
It gives useful date semantics ('Singapore local dates; latest if omitted') but provides no guidance on when to choose this tool over sibling weather tools. There are no exclusions or selection criteria for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_sourcesBRead-onlyIdempotent
List connected official data sources, documentation and API key requirements. This server reads public information; no account mutation tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the 'reads public information; no account mutation tools' sentence largely restates structured data. It adds modest value by flagging that API key requirements are reported, but says nothing about freshness, coverage of sources, or how keys are presented.
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?
Two short sentences with the primary action front-loaded and no filler. The second sentence is partly redundant with the annotations but still earns a small place by delimiting server scope.
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 zero-parameter read tool with a full annotation set and an output schema, the description covers what the call returns conceptually (sources, docs, key requirements). Only the relationship to other discovery tools is left unaddressed.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-arg tool applies. The description correctly implies a full listing rather than a filtered lookup.
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?
States a concrete verb ('List') and a concrete resource set: connected official data sources, documentation, and API key requirements. That is more specific than a title restatement, though it does not distinguish itself from discovery-oriented siblings such as singapore_get_capabilities or singapore_find_relevant_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?
There is no explicit when-to-use or when-not-to-use guidance, and no named alternative. The sentence 'This server reads public information; no account mutation tools' is a scope/reassurance note rather than a routing rule, leaving the agent to guess whether to call this or singapore_get_capabilities first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_statisticsARead-onlyIdempotent
Read SingStat time series, retaining unit and footnotes. Fetches table (or one exact upstream period), then filters series locally and keeps the last N upstream periods per series. Values remain strings to preserve missing-value markers. Use series_offset to paginate series.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | asc | |
| period | No | Exact upstream period, e.g. 2024; inspect table frequency first | |
| to_period | No | ||
| from_period | No | ||
| resource_id | Yes | ||
| period_limit | No | ||
| series_limit | No | ||
| series_offset | No | ||
| series_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description correctly spends its budget on behavior: units and footnotes are preserved, values stay as strings to preserve missing-value markers, and the 'last N upstream periods per series' truncation is disclosed. What's missing is any note on cost, rate limits, or response size for large tables.
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?
Four tight sentences with the core verb and scope front-loaded and no filler. The density is high but every clause carries information; slight cost is that the pagination note trails after the filtering explanation rather than sitting with parameter guidance.
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?
With an output schema present, the description need not explain return shape, and the string-values/missing-marker note is a good bonus. However, for a 9-parameter tool with near-zero schema documentation, the gaps around period ranges, series filtering, ordering, and sibling routing leave an agent guessing on several call-shaping decisions.
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 coverage is only 11% across 9 parameters, so the description must compensate and only partly does: it clarifies period (one exact upstream value), period_limit (last N periods per series) and series_offset (pagination). It says nothing about order, from_period/to_period, series_limit, series_contains, or the resource_id format, leaving half the surface undocumented in both places.
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?
States a specific verb and resource ('Read SingStat time series') plus the distinguishing trait that units and footnotes are retained. It does not explicitly name or contrast with the discovery siblings search_statistics/inspect_statistics, so an agent must infer this is the data-retrieval endpoint.
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 gives a workflow hint ('fetches table (or one exact upstream period), then filters series locally') and an explicit pagination instruction ('Use series_offset to paginate series'). It never says when to choose this over singapore_search_statistics, singapore_inspect_statistics, or the many singapore_query_* specialized tools, and offers no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_taxi_availabilityARead-onlyIdempotent
Available taxi coordinates from data.gov.sg, optionally within a radius sorted by distance. Latest unless date_time supplied. Coordinates use WGS84; returns a bounded sample and total match count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| latitude | No | ||
| date_time | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| longitude | No | ||
| radius_km | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld safety, so the bar is lower, and the description still adds real context: WGS84 coordinate system, distance-sorted radius filtering, latest-snapshot default, and that results are a bounded sample with a total match count. It doesn't mention rate limits or whether lat/long must be supplied together for radius filtering.
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?
Three tight sentences with the resource and source front-loaded, then filtering behavior, then the coordinate/return contract. No filler.
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?
With an output schema present, return values needn't be spelled out, yet it still summarizes the bounded sample plus total count. For a 6-parameter, all-optional read tool the definition is nearly complete; only the limit/offset and coordinate-pairing semantics are left to the schema.
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 only 17%, so the description must compensate; it covers radius, date_time, and the WGS84 lat/long pair but says nothing about limit, offset, pagination defaults, or that radius_km only applies when both coordinates are given. Partial compensation earns a 3.
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?
States a specific verb and resource ('Available taxi coordinates from data.gov.sg') plus scope details (radius, distance sorting). This is unmistakably distinct from siblings like singapore_get_carpark_availability or singapore_get_bus_arrivals without opening any schema.
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 phrase 'Latest unless date_time supplied' gives useful temporal context, implying when to pass a date. However, there is no explicit when-not guidance or named alternative (e.g., convert_coordinates for CRS conversion before passing lat/long), leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_traffic_imagesBRead-onlyIdempotent
Traffic camera image URLs, coordinates and timestamps. Optional radius filter. Image URLs are returned, never fetched by this server.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| latitude | No | ||
| camera_id | No | ||
| date_time | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| longitude | No | ||
| radius_km | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the bar is lower, and the description still adds real value by clarifying that image URLs are returned and never fetched by this server — a meaningful clarification given openWorldHint=true. It does not mention pagination behavior (limit/offset) or what happens when both camera_id and coordinates are supplied.
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?
Three short sentences, front-loaded with the payload, and the final sentence (URLs returned, not fetched) prevents a costly misunderstanding. Nothing is redundant.
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?
An output schema exists so return shape needn't be explained, and annotations carry the safety profile. However, with seven parameters and near-zero schema coverage, the description leaves pagination and identifier filtering unexplained, which is a real gap for an agent constructing a call.
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?
Only date_time has schema documentation (14% coverage), so the description must compensate for six undocumented parameters, yet it only gestures at radius_km and the coordinate pair. limit, offset and camera_id — including how camera_id relates to the radius filter — receive no explanation in either place.
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 names the specific resource and its payload: traffic camera image URLs, coordinates and timestamps, plus the optional radius filter. It is unambiguous what the tool returns, but it lacks an explicit verb (list/query) and never distinguishes itself from location-oriented siblings such as singapore_query_carpark_directory or singapore_query_lta.
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?
"Optional radius filter" implies a geo-scoped query, but there is no statement of when to choose this tool over the many other Singapore query tools, no prerequisite (e.g. that radius needs latitude/longitude), and no when-not guidance. An agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_uv_indexCRead-onlyIdempotent
NEA UV index. Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely non-obvious behavior: Singapore-local date semantics, timezone-sensitive grouping of limits, and a preserved upstream pagination token that must be carried forward with local offsets consumed first. That is real added context, but the pagination sentence is cryptically worded and the return shape is left to the 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?
It is short and front-loads the resource identity, so it is not padded. But the final sentence ('Consume local offsets before continuing the preserved upstream pagination token') is dense and ambiguous rather than informative, and 'Local limits apply to timestamp groups' is opaque phrasing that costs the reader more than it gives.
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?
With seven parameters, zero required fields, an enum region, and no schema descriptions, the description needs to carry more weight than it does. The output schema and annotations cover returns and safety, but an agent still cannot tell what area/station_id/region mean or how filtering composes, so the definition is not complete enough to invoke confidently.
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 only 14% – just the date field is documented in the schema. The description only additionally clarifies the date default ('latest if omitted') and vaguely references the pagination_token. Six other parameters (area, region, station_id, limit, offset, and how area relates to region) get no explanation anywhere, which is a substantial compensation gap.
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 identifies the resource ('NEA UV index') and the source agency, which distinguishes it from siblings like singapore_get_air_temperature or singapore_get_rainfall that cover other measurements. However, it never states an explicit verb or scope (single station vs. national, point-in-time vs. series), so the purpose is only implied by the tool name rather than elaborated.
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?
It says what happens when date is omitted ('latest if omitted'), which is a small usage hint. But there is no guidance on when to choose this tool over the other weather siblings (PSI, PM2.5, forecasts), no required-vs-optional framing, and no exclusions. Usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_wind_directionBRead-onlyIdempotent
NEA wind direction (degrees). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe, idempotent, read-only profile, so the description's job is to add beyond that. It does contribute non-obvious behavior about default-to-latest, local-limit grouping, and consuming offsets before reusing the pagination token, but the pagination sentence is cryptic ('timestamp groups', 'preserved upstream pagination token') and never states the return shape or ordering.
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?
Purpose is front-loaded and there is no filler, but the middle sentences are denser than they need to be, especially the opaque pagination instruction, which costs clarity for no stated benefit.
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?
An output schema exists, so return values need no explanation, and the safety profile is annotation-covered. However, with seven parameters at 14% schema coverage, the description should explain the filtering/identifying parameters (area, region, station_id) to make the tool callable with confidence — that gap remains.
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 only 14% — of seven parameters, only date is documented in the schema. The description clarifies date locality and defaults plus some limit/offset/pagination_token interaction, but says nothing about area, region (the one enum), or station_id, leaving three parameters meaningless to the agent.
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?
Identifies the specific resource (NEA wind direction in degrees) with enough precision to separate it from singapore_get_wind_speed and the other weather siblings. The verb is implicit in the name rather than the description, but the substance is unambiguous.
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?
"latest if omitted" gives a default-behavior hint, but there is no explicit guidance on when to pick this over wind_speed/air_temperature or which filter combination to use for a given question. Usage is only implied by the date/pagination remarks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_get_wind_speedBRead-onlyIdempotent
NEA wind speed (knots). Singapore local dates; latest if omitted. Local limits apply to timestamp groups. Consume local offsets before continuing the preserved upstream pagination token.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| date | No | Singapore local time UTC+08:00: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss | |
| limit | No | ||
| offset | No | ||
| region | No | ||
| station_id | No | ||
| pagination_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the units convention and a warning about consuming local offsets before reusing the upstream pagination token, but that sentence is jargon-heavy and does not clarify what a 'timestamp group' is or how paging actually behaves.
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?
Three short sentences with the resource and units front-loaded and no filler. The final sentence about offsets and the pagination token is dense to the point of being opaque, which slightly weakens an otherwise efficient structure.
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?
An output schema exists, so return values need no explanation, and annotations cover safety. However, for a 7-parameter tool with 0 required params and 14% schema coverage, the description omits how station/region/area narrow results and how the reading set is grouped, leaving real gaps for an agent choosing arguments.
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 coverage is only 14% (only `date` is documented in the schema), so the description has to carry weight. It touches date locality, limit/offset interplay and pagination_token handling, but leaves `area`, `region` and `station_id` — the parameters that most affect which readings are returned — completely unexplained.
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 names the specific resource (NEA wind speed) with units (knots) and source, which clearly separates it from siblings like singapore_get_wind_direction or singapore_get_air_temperature. It never uses an explicit verb, but 'wind speed (knots)' is unambiguous alongside the tool name.
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?
'Singapore local dates; latest if omitted' implies the default behaviour (return the most recent reading) but gives no when-to-use/when-not-to-use guidance or comparison against the other weather-reading siblings. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_inspect_datasetBRead-onlyIdempotent
Get live dataset metadata, schema, format, coverage and last update. Field IDs may be internal: use columnMetadata.map/metaMapping names for datastore filters.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | ||
| include_raw | No | ||
| fields_limit | No | ||
| fields_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive), so the bar is lowered. The description still adds real behavioral value by stating the result is 'live' metadata and warning that field IDs may be internal and must be mapped via columnMetadata.map/metaMapping — a non-obvious caveat an agent would otherwise trip on.
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?
Two tight sentences with no filler; the core purpose is front-loaded and the caveat follows. Efficient, though the field-mapping sentence is dense enough that it slightly blurs the boundary between the two ideas.
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?
An output schema exists, so return values need not be restated, and annotations carry the safety profile. However, for a 4-parameter introspection tool with 0% schema coverage, the description leaves pagination (fields_limit/offset) and the include_raw toggle unexplained, which is a meaningful gap.
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 0% and the description explains none of the four parameters: the required dataset_id pattern, include_raw, or the fields_limit/fields_offset pagination pair are all undocumented. The only param-adjacent hint concerns field naming, not the actual inputs, so it fails to compensate for the coverage gap.
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?
States a specific verb+resource ('Get live dataset metadata, schema, format, coverage and last update'), so the agent knows it retrieves dataset introspection rather than data rows. It does not explicitly differentiate itself from close siblings like singapore_lookup_dataset or singapore_query_dataset, leaving that routing to inference.
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?
Usage is only implied: this is the metadata-inspection step before querying, and the trailing note about using metaMapping names 'for datastore filters' hints at a downstream purpose. No when-not condition or named alternative (lookup_dataset, query_dataset) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_inspect_statisticsBRead-onlyIdempotent
Get SingStat table metadata, frequency, units, definitions, notes, series and coverage before reading observations.
| Name | Required | Description | Default |
|---|---|---|---|
| include_raw | No | ||
| resource_id | Yes | ||
| series_limit | No | ||
| series_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered and the description correctly does not contradict it. The description adds some value by enumerating the metadata categories returned and by flagging the read-metadata-first workflow, but it says nothing about pagination behavior or limits on the series listing.
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?
A single dense sentence with no filler, and the core intent plus the content list is front-loaded. The trailing 'before reading observations' clause is slightly buried but still earns its place as workflow guidance.
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?
An output schema exists and annotations are rich, so return-value and safety explanations are rightly omitted. However, for a four-parameter tool with zero schema coverage, the description leaves include_raw and the series pagination contract unaddressed, which is a meaningful gap for correct invocation.
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 0%, so all four parameters must be explained by the description, and it largely is not. 'Table metadata' and 'series' loosely map to resource_id and the series listing, but include_raw and the limit/offset semantics of series_limit/series_offset (defaults, max 100, pagination behavior) are left entirely unexplained.
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 gives a specific verb ('Get') and a well-scoped resource ('SingStat table metadata'), then enumerates exactly what comes back: frequency, units, definitions, notes, series, and coverage. It also implicitly separates itself from the observation-reading siblings via 'before reading observations', though it never names the counterpart tool (e.g., singapore_get_statistics).
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?
'...before reading observations' supplies a clear ordering rule: call this first to understand a table, then go fetch data. That is real usage context, but there are no explicit exclusions or named alternatives, and the reader must infer that singapore_get_statistics is the follow-up tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_list_catalog_pageARead-onlyIdempotent
List a current live page of data.gov.sg catalog (upstream page size). Use search_catalog for fast search of the bundled snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds genuinely useful context beyond that: the data is live/current and the page size is dictated upstream rather than by the caller. It does not mention rate limits or upstream availability caveats, which keeps it from a 5.
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?
Two short sentences with zero waste, and the core purpose is front-loaded ahead of the sibling redirection.
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?
The tool is low-complexity (one optional parameter) and has an output schema, so return values need not be explained. The description covers its live nature and the upstream page-size constraint, but could say a bit more about pagination limits or freshness for full 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?
Schema description coverage is 0%, so the description must carry the 'page' parameter meaning. It does explain that pages are upstream-sized, which is helpful for interpreting results, but it does not clarify page numbering, the default, or the 1–10000 range enforced by the 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?
States a specific verb and resource ('List a current live page of data.gov.sg catalog') and explicitly distinguishes itself from the snapshot-based sibling by the 'live' qualifier. An agent can tell it apart from singapore_search_catalog without opening either schema.
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?
Names the alternative and its condition ('Use search_catalog for fast search of the bundled snapshot'), which implies this tool is for current upstream data. It stops short of an explicit exclusion, such as when not to page through the live catalog, so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_list_collectionsBRead-onlyIdempotent
List a live page of data.gov.sg collections and their child dataset IDs. Page size is controlled by the provider.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent, non-destructive open-world operation. The description adds useful behavioral context by noting that the page is live and that page size is controlled by the provider, which matters for pagination expectations.
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 two sentences, front-loaded with the main action and resource, and contains no filler. Every sentence contributes useful 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?
The tool is simple, has an output schema, and has rich safety annotations, so the description need not explain return values or permissions. However, it omits selection guidance relative to sibling collection tools and does not document the page parameter, leaving some gaps for an agent choosing and invoking it.
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 0% for the sole page parameter, so the description must compensate. It mentions a 'page' and provider-controlled page size, but does not explain that the parameter selects the page number or clarify its range/default behavior.
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 gives a specific verb and resource: list data.gov.sg collections and their child dataset IDs. It is clear what the tool returns, but it does not explicitly distinguish itself from sibling tools such as singapore_get_collection or singapore_search_catalog.
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?
It states what the tool lists but gives no explicit guidance on when to use it versus alternatives like singapore_get_collection or singapore_search_catalog. There are no exclusions or selection conditions beyond the implicit collection-listing purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_list_curated_datasetsBRead-onlyIdempotent
Browse curated datasets and tool names by topic. Includes coverage dates: some series are historical. The full catalog is searchable separately.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds genuine context beyond that — that coverage dates are included and some series are historical — which matters for data currency, but it says nothing about result size, pagination, or what 'curated' excludes.
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?
Three short sentences with the core action front-loaded, so it is efficient. The trailing sentence about the full catalog is the weakest, since it alludes to a sibling without naming it, but overall there is little waste.
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?
An output schema exists, so return-value detail is not required, and annotations cover the safety profile. However, for a discovery tool in a family with many list/search siblings, the description leaves the agent unsure how topic values are formed and how this differs from list_collections or search_catalog — meaningful gaps that the description should have closed.
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 0% for the single 'topic' parameter; the schema only tells the agent it is a string up to 100 characters. The description's 'by topic' confirms the filter's intent but says nothing about accepted values, matching behavior, or what happens when topic is omitted (it is optional). The description does not compensate for the schema gap.
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 gives a specific verb and resource: browse curated datasets (and their tool names) by topic. It hints at the boundary with the broader catalog search, but does not distinguish itself from close siblings like singapore_list_collections or singapore_list_catalog_page, so the agent cannot fully place it in the family from the text alone.
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 full catalog is searchable separately' implies that singapore_search_catalog should be used when a topic-agnostic lookup is needed, but it never names the alternative or states the selecting condition. The mention that some series are historical gives a hint about when this browse view is appropriate, but no explicit when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_list_indicatorsARead-onlyIdempotent
Curated World Bank indicators for Singapore. Other valid indicator codes work with get_indicator.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds curated-scope context and a sibling routing hint, but does not add behavioral details such as return shape or pagination. With annotations and an output schema present, this is an adequate but limited contribution.
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?
Two short sentences with no waste. The scope is front-loaded and the alternative is stated immediately after, making it easy for an agent 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?
For a zero-parameter listing tool with an output schema and rich annotations, the description is nearly complete: it establishes scope and points to the correct sibling for other indicators. The only minor gap is that it does not explicitly say it returns a list of curated indicator codes, though the tool name and output schema cover that.
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?
There are zero input parameters, so the baseline for parameter semantics is 4. The description does not need to explain parameter meaning, and the empty schema is consistent with the tool taking no arguments.
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 identifies the resource and scope: curated World Bank indicators for Singapore. It also distinguishes itself from the sibling get_indicator tool by noting that other valid indicator codes are handled there. It stops short of explicitly saying it returns a list, but the name and resource description make the purpose clear.
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?
It explicitly routes non-curated indicator codes to get_indicator, giving the agent a clear alternative. It does not spell out the full workflow (e.g., use this to discover curated codes, then query them), but the when-to-use distinction is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_list_weather_stationsBRead-onlyIdempotent
Discover weather stations, IDs and WGS84 coordinates by observed measure; search by ID/name. No observations omitted from a claimed national inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| measure | No | air-temperature |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds a completeness claim ('No observations omitted from a claimed national inventory'), which is opaque and arguably misleading since this tool lists stations, not observations, and it says nothing about pagination behavior for a paginated endpoint.
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?
Two compact clauses, front-loaded with the core capability and result shape. The trailing inventory sentence is cryptic and costs more than it earns, keeping it from a 5.
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?
An output schema exists, so return values need no prose, and annotations cover safety. However, for a paginated discovery tool with zero schema coverage, the missing limit/offset guidance and unclear inventory claim leave real gaps for correct invocation.
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 0%, so the description must carry parameter meaning; it clarifies two of four params — 'measure' for routing and 'query' for ID/name search. It says nothing about 'limit' (max 100) or 'offset', including the default page size, leaving pagination semantics entirely undocumented.
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?
States a specific verb and resource ('Discover weather stations'), plus what it returns (IDs, WGS84 coordinates) and the two discovery modes ('by observed measure' or 'search by ID/name'). It does not explicitly position itself against the many sibling get_* / query_* weather tools, so it falls short of a 5.
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?
Usage is implied rather than stated: an agent can infer it should call this to obtain station IDs before querying observations, but the description never says when-not to use it or which sibling (e.g. singapore_get_air_temperature) it complements. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_lookup_datasetARead-onlyIdempotent
Resolve an exact dataset ID in the bundled snapshot. No network; a missing entry may exist in the live catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered; the description adds genuinely new behavior: resolution happens against a bundled snapshot, no network call is made, and a miss does not mean the dataset is absent from the live catalog. The one caveat is that openWorldHint=true reads slightly at odds with 'No network', though this is a scope nuance rather than a true contradiction.
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?
Two short sentences with zero filler; the core operation is front-loaded and the caveat about missing entries follows. Nothing is wasted.
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?
An output schema exists and annotations carry the safety profile, so the description only needs to convey the snapshot-vs-live distinction and the miss case — both are present. An agent can call this correctly and interpret a not-found result from what is written.
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?
With one parameter at 0% schema description coverage, the schema documents only the regex pattern (^d_[a-f0-9]{32}$) with no prose. The description reinforces 'exact' matching, which is useful, but it does not explain the ID format, where to obtain a valid ID, or whether case/whitespace tolerance exists.
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?
States a specific verb ('Resolve') and resource ('exact dataset ID') scoped to the 'bundled snapshot', which tells an agent this is a local lookup rather than a live query. It does not explicitly name the sibling it differs from (singapore_search_catalog or singapore_inspect_dataset), so the differentiation is inferred from 'exact' rather than stated.
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 word 'exact' implies this is for known IDs rather than fuzzy discovery, and the closing clause hints at a fallback path when an entry is missing. However, it never names the alternative tool to call (e.g. search_catalog) nor states the precondition that an ID is already in hand, leaving the routing decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_air_quality_annualARead-onlyIdempotent
Query Air Quality, Annual (Singapore Department of Statistics). Topic: environment. Inspect dataset d_b733fb074ed97f4d322525467b0fa457 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds a modest behavioral note about returning bundled-catalog source coverage and needing to fetch metadata for freshness. It says nothing about pagination defaults, result caps, or failure modes when a filter field is invalid.
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?
Three tightly packed sentences with the dataset identifier and the inspect-first instruction front-loaded before capability summary. No filler or repetition of the title.
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?
An output schema exists, so return values need not be explained, and the description covers the inspect-then-query workflow and supported query modes. The remaining gap is that with 50% schema coverage and two nested object parameters, the exact shape expectations (e.g. field-name keys for filters vs q) rely on the schema alone.
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 coverage is only 50%, so the description has to compensate, and it largely does: 'exact filters, column text search, fields, sort and pagination' maps onto filters, q, fields, sort, limit/offset. The mapping is by concept rather than by parameter name, so an agent must still infer which term corresponds to which key.
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?
States a specific verb and resource ('Query Air Quality, Annual') plus the source (Singapore Department of Statistics) and topic (environment), so an agent knows exactly which dataset it hits. It does not, however, distinguish itself from generic siblings like singapore_query_dataset or the weather-family tools (singapore_get_psi, singapore_get_pm25).
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 workflow hint 'Inspect dataset d_b733... first for filter fields' is genuinely useful sequencing guidance, and it lists supported query modes. But it never says when to prefer this over singapore_query_dataset or the specialist air-quality siblings, and gives no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_businessesARead-onlyIdempotent
Query Entities Registered with ACRA (Accounting and Corporate Regulatory Authority). Topic: economy. Inspect dataset d_3f960c10fed6145404ca7b821f263b87 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, idempotent, non-destructive operation. The description adds useful behavioral context by noting that returned source coverage comes from the bundled catalog and that metadata should be fetched for current 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 purpose is front-loaded and the text is efficient. The later sentences add operational guidance, though the metadata/coverage sentence could be slightly tighter.
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 six-parameter query tool with nested q/filters objects and an output schema, the description covers purpose, prerequisite dataset inspection, supported query mechanics, and coverage caveats. The main remaining gap is sibling routing versus singapore_search_acra.
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 names the main parameter families: exact filters, column text search, fields, sort and pagination. With only 50% schema description coverage, it partially compensates, but it does not add syntax or meaning beyond what the schema and parameter names already convey.
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?
States a specific verb and resource: 'Query Entities Registered with ACRA'. The topic and dataset ID make the scope clear, but the description does not explicitly distinguish this tool from the sibling singapore_search_acra.
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?
It gives an important prerequisite: inspect dataset d_3f960c10fed6145404ca7b821f263b87 first for filter fields. However, it does not say when to use this tool instead of singapore_search_acra or singapore_query_dataset, so alternative selection is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_carpark_directoryARead-onlyIdempotent
Query HDB Carpark Information (Housing & Development Board). Topic: transport. Inspect dataset d_23f946fa557947f93a8043bbef41dd09 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world, so the bar is lower. The description adds real value beyond them: it discloses that results come with source coverage from a bundled catalog and that metadata should be fetched for current coverage, which flags a potential staleness caveat an agent would not otherwise infer.
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?
Purpose and the critical dataset-ID instruction are front-loaded, and the four sentences are each doing work. The final clause about coverage/metadata is slightly dense and could be tightened, but nothing is wasted.
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?
With a full output schema present, return values need no explanation, and the description still supplies the pre-call inspection step and a coverage caveat. The only omission that matters for correct selection is disambiguation from the carpark-availability and generic-dataset siblings.
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?
Despite 50% schema description coverage, the description enumerates each capability so the agent can map them: 'exact filters' to filters, 'column text search' to q, 'fields', 'sort', 'pagination' to limit/offset. The two undocumented schema params (limit, offset) are self-explanatory and bounded in the schema, so no meaningful gap remains.
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?
States a specific verb and resource ('Query HDB Carpark Information') and pins the exact dataset ID (d_23f946fa557947f93a8043bbef41dd09), so an agent knows precisely what it retrieves. It does not, however, distinguish this static directory from the nearby sibling singapore_get_carpark_availability (live availability) or from the generic singapore_query_dataset, leaving a real ambiguity unresolved.
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?
Gives one concrete workflow step ('Inspect dataset ... first for filter fields'), which is genuinely useful before calling. But it never states when to choose this tool over singapore_get_carpark_availability or singapore_query_dataset, and offers no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_datasetARead-onlyIdempotent
Query any tabular data.gov.sg dataset. Exact filters, column text search, projection, sorting and pagination. Preserve upstream values/units; no SQL. Non-tabular or unsupported datasets can be downloaded instead.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} | |
| dataset_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful constraints such as preserving upstream values/units and not supporting SQL, but it does not elaborate on rate limits, authentication, or result-shape behavior beyond what the output schema provides.
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 compact and front-loaded, with the core capability stated first. Each sentence adds useful information: query capability, supported operations, semantic constraints, and the non-tabular alternative.
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 available output schema and annotations, the description is largely complete for a generic query tool. It covers tabular scope, query operations, data-preservation semantics, and the download alternative. It could be stronger by explicitly routing agents to inspect_dataset or specialized query tools before calling this one.
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 low at 43%, so the description must compensate. It maps the main parameter groups to behavior: exact filters, column text search, projection, sorting, and pagination, which corresponds to filters, q, fields, sort, limit, and offset. It does not explain every parameter detail, but it adds meaningful semantic coverage beyond the 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 states a specific verb and resource: query any tabular data.gov.sg dataset. It also clarifies the supported operations and notes that non-tabular datasets should use download instead. It does not clearly distinguish generic querying from the many dataset-specific sibling query 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?
It provides implied guidance: use this for tabular datasets and use download for non-tabular or unsupported datasets. However, it does not explicitly say when to prefer this generic tool over specialized tools like singapore_query_hdb_resale or when to inspect a dataset first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_government_expenditureARead-onlyIdempotent
Query Government Total Expenditure (Ministry of Finance). Topic: finance. Inspect dataset d_00f95040967791729d51bd7cd6af2355 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is carried. The description adds real behavioral context beyond that: results carry source coverage from a bundled catalog and metadata should be fetched for current coverage, warning the agent about potentially stale data. It doesn't say anything about result shape or error behavior, but the output schema covers the former.
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?
Dense and front-loaded with the resource and dataset id before the operational details. The closing sentence about catalog coverage is slightly compressed to the point of being cryptic ("Returns source coverage from the bundled catalog"), but no sentence is wasted.
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?
Output schema exists, so return values need not be explained, and the description covers the prerequisite, query modes, and stale-coverage caveat for a 6-parameter tool. What's missing is any guidance on the 0-required-parameter case or when this tool is the wrong choice among many sibling query tools.
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 50%, and the description partially compensates by clarifying the semantic split between exact filters and column-scoped text search, plus naming fields, sort and pagination. It adds no bounds or defaults for limit/offset/fields, which the schema leaves undocumented, so the gap is only half closed.
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?
States a specific verb and resource ("Query Government Total Expenditure") with the owning agency (Ministry of Finance) and the exact dataset id, so scope is unambiguous. It doesn't distinguish itself from the generic sibling singapore_query_dataset beyond the dataset id, so an agent still has to infer whether to use the specialized tool or the generic one.
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?
Gives a concrete prerequisite ("Inspect dataset d_00f9... first for filter fields") and enumerates supported query capabilities (exact filters, column text search, fields, sort, pagination). It lacks an explicit when-not or an alternative-tool pointer, e.g. when to prefer singapore_inspect_dataset or the generic query tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_greenhouse_emissionsARead-onlyIdempotent
Query Greenhouse Gas Emissions By Sector, Annual (Singapore Department of Statistics). Topic: environment. Inspect dataset d_1b8dcef6bf32ece26deca60e59d99f71 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), freeing the description to add real value: it discloses that results carry source coverage from a bundled catalog that may be stale and must be refreshed via metadata. That staleness caveat is a genuinely useful behavioral disclosure not present in annotations.
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?
Front-loads the resource and scope in the first sentence, then layers the prerequisite and capability summary. Dense and largely waste-free, though the trailing catalog-coverage sentence is slightly compressed to the point of ambiguity.
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?
With a rich annotation set and an output schema present, the description need only supply what structured fields cannot: the discovery prerequisite and the coverage-staleness caveat. Both are present, leaving nothing an agent needs to call this correctly.
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 coverage is 50%, and the description enumerates the capability set (exact filters, column text search, fields, sort, pagination) which maps recognizably onto filters/q/fields/sort/limit/offset. It adds no syntax or format detail beyond the schema's own examples, so it neither compensates for nor worsens the mid-level coverage gap.
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?
States a specific verb and resource (query greenhouse gas emissions by sector, annual) plus the source agency and topic, so the domain is unambiguous. It does not distinguish itself from the many other singapore_query_* siblings (e.g. singapore_query_dataset), so an agent must infer selection from the topic string alone.
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?
Provides a concrete procedural prerequisite: inspect dataset d_1b8dcef6bf32ece26deca60e59d99f71 first to discover filter fields, and fetch metadata for current coverage. However, it gives no guidance on when to prefer this tool over singapore_query_dataset or the generic statistics tools, so competing options remain unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hawker_centresBRead-onlyIdempotent
Query List of Government Markets Hawker Centres (National Environment Agency). Topic: food. Inspect dataset d_68a42f09f350881996d83f9cd73ab02f first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds only a vague note about returning 'source coverage from the bundled catalog' and fetching metadata for current coverage, which hints at data freshness but is unclear. No rate limits, auth, or scope caveats are given.
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?
Three compact sentences with the dataset reference front-loaded and the operational capabilities listed efficiently. The trailing line about catalog coverage is slightly opaque and could be trimmed, but nothing else is wasted.
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?
Because an output schema exists, return values need no explanation, and the prerequisite dataset-inspection step is stated. Still, for a 6-parameter tool with nested objects at 50% schema coverage, more detail on the pagination parameters and field selection would make it fully self-sufficient.
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 coverage is 50%: q, sort and filters are described in the schema, while limit, offset and fields are not. The description names the same capabilities (exact filters, column text search, fields, sort, pagination), so limit/offset/fields are at least acknowledged, but it adds no syntax or default-limit detail beyond the schema's examples.
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 names a specific verb (query) and resource (Government Markets Hawker Centres, attributed to NEA), plus a topic tag 'food'. It is clearly distinct from generic siblings like singapore_query_dataset. However, it does not explicitly differentiate itself from nearby siblings such as singapore_query_hawker_closures, leaving that inference to the reader.
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?
It gives one actionable prerequisite: inspect dataset d_68a42f09f350881996d83f9cd73ab02f first for filter fields, and lists supported operations. But it offers no guidance on when to choose this tool over the many other singapore_query_* siblings, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hawker_closuresBRead-onlyIdempotent
Query Dates of Hawker Centres Closure (National Environment Agency). Topic: food. Inspect dataset d_bda4baa634dd1cc7a6c7cad5f19e2d68 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered structurally. The description adds that results include source coverage from a bundled catalog and that metadata should be fetched for current coverage — a useful caveat about data currency — but nothing about pagination limits, ordering behavior, or empty-result handling.
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 substantive guidance (inspect the dataset first, use exact filters/search/sort/pagination) is front-loaded and earns its place. But 'Topic: food.' is filler and the closing coverage/metadata sentence is boilerplate that could be tightened without loss.
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?
An output schema exists, so return shapes needn't be explained. Still, for a dataset-query tool the description never says what the records actually contain (closure start/end dates, centre names, addresses) or how it relates to the hawker centre directory sibling, which an agent would need to choose and interpret results correctly.
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?
At 50% schema coverage, limit/fields/offset are undocumented in the schema, but the description names 'exact filters, column text search, fields, sort and pagination', which maps loosely onto all six parameters. However it adds no syntax or format detail beyond what the schema examples already show for q, filters, and sort, so it partially but not fully compensates.
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?
States a specific verb and resource: query hawker centre closure dates from NEA, with the dataset ID named. It clearly differs from singapore_query_hawker_centres in subject matter, though it never says so explicitly, leaving the agent to infer the distinction from the name alone.
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?
"Inspect dataset d_bda4... first for filter fields" gives a concrete prerequisite workflow step, which is real guidance. But there is no statement of when to prefer this over sibling tools like singapore_query_dataset or singapore_query_hawker_centres, nor any exclusions, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hdb_median_rentARead-onlyIdempotent
Query Median Rent By Town And Flat Type (Housing & Development Board). Topic: housing. Inspect dataset d_23000a00c52996c55106084ed0339566 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds real context beyond them: results are built from a bundled catalog and callers must fetch metadata for current coverage, which is a staleness caveat an agent would otherwise miss. It says nothing about result volume or the 100-row cap, but that is in the 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?
Front-loaded with the purpose, then the inspect-first prerequisite, then capability list and the coverage caveat. It is dense but each clause carries a distinct instruction; the dataset-ID string is long but functional.
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?
An output schema exists, so return values need not be explained, and the description covers the remaining prerequisites: inspect the dataset first, supported query modes, pagination, and a caveat about catalog coverage. An agent could call this correctly without further documentation.
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 50%, with q, sort, and filters described but fields, limit, and offset bare. The description names all the modes (exact filters, column text search, fields, sort, pagination) but supplies no syntax or format details beyond what the schema already gives, so it neither compensates for the gap nor falls below the baseline.
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?
States a specific verb and resource ("Query Median Rent By Town And Flat Type") plus the domain owner (HDB) and topic (housing), which is enough to separate it from the rent/resale siblings. It stops short of explicitly telling the agent how it differs from singapore_query_hdb_rentals or singapore_query_hdb_resale, which are the nearest alternatives.
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?
"Inspect dataset d_23000a00c52996c55106084ed0339566 first for filter fields" is a concrete precondition, and the description lists the available query modes (exact filters, text search, fields, sort, pagination). However, it never states when to use this tool over the generic singapore_query_dataset or the adjacent HDB tools, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hdb_populationARead-onlyIdempotent
Query HDB Resident Population by Geographical Distribution (Housing & Development Board). Topic: population. Inspect dataset d_0a6c6d71f6fa14e2d27e406f1d018439 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior. The description adds useful context by noting the bundled catalog coverage and advising metadata retrieval for current coverage, though it does not discuss rate limits or authentication.
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 front-loaded with the resource and topic, then follows with the inspection prerequisite and supported operations. It is efficient overall, with only minor redundancy in the coverage note.
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 output schema and rich annotations, the description does not need to explain return values in detail. It provides the dataset ID and coverage caveat, though it could more explicitly route agents away from the generic query_dataset sibling.
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 50%, so the description must compensate. It names exact filters, column text search, fields, sort, and pagination, which maps to the six parameters, but it does not explain nested object syntax, sort format details, or limit/offset behavior beyond the 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 states a specific verb and resource: query HDB Resident Population by Geographical Distribution. It clearly distinguishes this dataset from sibling HDB query tools such as resale, rentals, and median rent by naming the population topic and dataset ID.
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?
It gives an explicit prerequisite: inspect dataset d_0a6c6d71f6fa14e2d27e406f1d018439 first for filter fields. It also lists supported operations, but it does not explicitly say when to use this tool versus the generic singapore_query_dataset or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hdb_rentalsARead-onlyIdempotent
Query Renting Out of Flats from Jan 2021 (Housing & Development Board). Topic: housing. Inspect dataset d_c9f57187485a850908655db0e8cfe651 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds genuinely new context beyond that: results carry source coverage from a bundled catalog that may be stale, so metadata must be fetched for current coverage — an important caveat for trusting returned data. No contradiction with annotations.
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?
Four compact sentences, front-loaded with what the tool queries, followed by the required prerequisite and capability list. No filler, though the dataset hash mid-sentence slightly interrupts the flow.
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?
An output schema exists, so return-value detail is not needed, and the description still flags catalog-coverage provenance. For a 6-parameter query tool with nested `q`/`filters` objects, the remaining gap is the lack of stated contrast with the other HDB rental/resale tools.
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 coverage is 50%, so the description must carry some load, and it does: it enumerates the supported capabilities (exact filters, column text search, fields, sort, pagination) and implicitly separates `filters` (exact equality) from `q` (column text search). It still doesn't explain limit/offset interplay or the field-name discovery requirement beyond pointing at dataset inspection.
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?
States a specific verb and resource ('Query Renting Out of Flats'), names the source agency and the topic, and pins the temporal scope (from Jan 2021). It does not explicitly distinguish itself from near-siblings like singapore_query_hdb_resale or singapore_query_hdb_median_rent, so an agent must infer the difference from the dataset name alone.
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?
Gives one concrete workflow prerequisite: inspect dataset d_c9f57187485a850908655db0e8cfe651 first for filter fields, and notes metadata should be fetched for current coverage. It stops short of saying when to prefer this tool over singapore_query_hdb_median_rent or singapore_query_hdb_resale, which is the main ambiguity in a 50+ tool catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hdb_resaleARead-onlyIdempotent
Query Resale flat prices based on registration date from Jan-2017 onwards (Housing & Development Board). Topic: housing. Inspect dataset d_8b84c4ee58e3cfc0ece0d773c8ca6abc first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds genuinely non-obvious traits: the data starts Jan-2017 and returned coverage comes from a bundled catalog that may be stale, so metadata must be fetched for current 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?
Four dense sentences, front-loaded with purpose and scope before mechanics. Slight redundancy between 'inspect dataset first' and 'fetch metadata for current coverage,' but nothing is wasteful enough to penalize heavily.
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?
With 6 optional params, nested objects, and an output schema present, the description covers what the tool does, the prerequisite discovery step, supported query mechanics, and the coverage caveat. An agent has enough to call it correctly without opening other docs.
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 coverage is only 50%, with fields, limit, and offset undocumented in the schema. The description compensates by naming exact filters, column text search, fields selection, sort, and pagination, covering every parameter at a functional level, though it adds no syntax examples beyond what the schema shows for q/sort/filters.
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 gives a specific verb and resource ('Query Resale flat prices') plus scope ('registration date from Jan-2017 onwards') and the responsible agency. It does not distinguish itself from close siblings such as query_hdb_rentals or compare_hdb_prices, so it stops short of a 5.
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?
It gives an actionable prerequisite: inspect dataset d_8b84... first to discover filter fields, and warns to fetch metadata for current coverage. However, it never says when to choose this over sibling tools covering HDB rentals, median rent, or price comparison, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_healthcare_schemesARead-onlyIdempotent
Query Healthcare Schemes and Subsidies (Ministry of Health). Topic: health. Inspect dataset d_586ee0cbc5c79ff8167a46132a405239 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so safety is covered. The description adds real value on data provenance: results carry source coverage from a bundled catalog and metadata must be fetched for current coverage — an important freshness caveat an agent would otherwise miss. It still omits result-size/pagination tradeoffs beyond the 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?
Four short, front-loaded sentences: identity first, then the prerequisite, then capabilities, then the coverage caveat. Dense with no filler, though the phrasing is telegraphic enough that a clause like "returns source coverage from the bundled catalog" takes a second read.
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?
With an output schema present, return values need no explanation, and the description covers the key operational facts for a 6-parameter nested-filter tool: the dataset to inspect first, the supported query modes, and the catalog-coverage caveat. The main residual gap is guidance on choosing between this tool and the generic singapore_query_dataset.
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 coverage is 50%, with q, sort, and filters documented in-schema while limit, fields, and offset are bare. The description compensates by enumerating each capability (exact filters, column text search, fields, sort, pagination), but adds no syntax or constraint detail — e.g. it doesn't repeat the limit ceiling or explain that filter keys must come from the dataset inspection step.
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 gives a specific verb and resource ("Query Healthcare Schemes and Subsidies") plus the owning agency (Ministry of Health) and topic tag, which clearly separates it from the HDB, weather, and transport query siblings. It stops short of naming the generic alternative (singapore_query_dataset) that could also reach this data.
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?
It gives one concrete prerequisite: inspect dataset d_586ee0cbc5c79ff8167a46132a405239 first to learn the filter fields. Beyond that, usage is only implied — no statement of when to prefer this over singapore_query_dataset or the catalog/inspect siblings, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_hotel_statisticsARead-onlyIdempotent
Query Monthly Gazetted Hotels Statistics (Singapore Tourism Board). Topic: tourism. Inspect dataset d_1db0bd2ffd95ac09c66db600e60d3400 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety bar is met elsewhere. The description adds genuinely non-obvious context: the supported query capabilities (exact filters, column text search, field projection, sort, pagination) and the caveat that coverage comes from a bundled catalog that may be stale and should be refreshed via metadata.
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?
Four short sentences, front-loaded with purpose and the dataset id before the operational workflow. No padding, though the closing coverage sentence is slightly tangential to invocation.
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?
The tool is a read-only dataset query with an output schema, so return values need no prose explanation. Given that, purpose, source, required prereq (inspect first), capability set, and a coverage-freshness caveat are all present – nothing an agent needs to call it correctly is missing.
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 only 50%: q, sort, and filters are documented in-schema, while limit, fields, and offset rely on defaults and bounds alone. The description lists the same capabilities ('exact filters, column text search, fields, sort and pagination') without adding format or syntax guidance, so it roughly matches rather than compensates for the 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?
States a specific verb and resource ('Query Monthly Gazetted Hotels Statistics'), names the source (Singapore Tourism Board) and the topic, and pins the exact dataset id, so it is unmistakably distinct from the many other singapore_query_* siblings.
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?
It gives a real prerequisite workflow – inspect dataset d_1db0bd2ffd95ac09c66db600e60d3400 first to learn filter fields, and fetch metadata for current coverage – but never contrasts itself with generic siblings like singapore_query_dataset, singapore_search_statistics, or singapore_inspect_statistics. The when-to-use-this-instead is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_infectious_diseasesARead-onlyIdempotent
Query Weekly Infectious Disease Bulletin Cases (Ministry of Health). Topic: health. Inspect dataset d_ca168b2cb763640d72c4600a68f9909e first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds useful context about inspecting the dataset and source coverage from the bundled catalog, but does not elaborate on limits, latency, or authentication.
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 front-loaded, compact, and free of filler. Each sentence contributes either scope, prerequisite, capability summary, or coverage caveat.
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 output schema and annotations, the description does not need to explain return values or safety. It covers the main query modes and prerequisites, though it could more explicitly route users away from the generic query tool.
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?
With 50% schema description coverage, the description compensates by distinguishing exact filters from column text search and mentioning fields, sort, and pagination. This adds meaningful semantic guidance beyond the schema, especially for the nested q and filters parameters.
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 names a specific verb and resource: query Weekly Infectious Disease Bulletin Cases from the Ministry of Health. It clearly identifies the dataset and topic, though it does not explicitly distinguish this from the generic singapore_query_dataset sibling.
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?
It provides a concrete prerequisite to inspect the dataset first for filter fields and summarizes supported query capabilities. It does not explicitly state when to use this tool instead of the generic query_dataset tool, but the domain-specific context makes the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_land_areaARead-onlyIdempotent
Query Land Area (As At December), Annual (Singapore Department of Statistics). Topic: geography. Inspect dataset d_0b2c034da121ef8efc71949af1694b4d first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds one real behavioral caveat — source coverage comes from a bundled catalog and metadata should be fetched for current coverage — but it does not explain staleness semantics, result ordering, or what constitutes a match for the text search.
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 first sentence front-loads identity and provenance, followed by the inspect prerequisite, capability list, and a caveat — a sensible ordering. The capability sentence ('Supports exact filters, column text search, fields, sort and pagination') is largely a restatement of the visible schema and is the only real padding.
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?
With an output schema and rich annotations already supplied, the description only needs to carry identity and routing context, which it does, and the pointer to inspect the dataset compensates for the unknown filter fields. It falls short of complete because it never says what the rows represent (geographic breakdown, time granularity) so an agent cannot confirm suitability without inspecting first.
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 50%, and the description maps concepts to parameters ('exact filters', 'column text search', 'fields', 'sort and pagination'), which roughly covers all six. It adds no format semantics beyond the schema — e.g. whether 'q' is a substring or token match, or how 'sort' interacts with 'filters' — so the baseline 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 names a specific verb ('Query') and a specific resource ('Land Area (As At December), Annual' from Singapore Department of Statistics) plus a topic tag, so the agent can tell it apart from generic siblings like singapore_query_dataset. It is clear what is being queried, though it does not describe the actual breakdown/dimensions of the dataset beyond its title.
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 instruction to 'Inspect dataset d_0b2c... first for filter fields' gives a concrete prerequisite workflow step, which is genuinely useful. However, it never states when an agent should prefer this tool over the generic singapore_query_dataset or singapore_inspect_dataset, and offers no exclusions or alternative-routing guidance despite dozens of sibling query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_ltaBRead-onlyIdempotent
LTA lists and alerts. Requires LTA_ACCOUNT_KEY. Stop/service filters are allowed only on provider endpoints supporting them. Offsets apply only to paginated datasets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| dataset | Yes | ||
| service_no | No | ||
| bus_stop_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context — an LTA_ACCOUNT_KEY credential requirement and the fact that some filters/offsets are silently inapplicable — but says nothing about rate limits, error behavior, or what happens when an unsupported filter is passed.
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?
Three short sentences with no filler, and the credential requirement is placed early. The telegraphic noun-phrase opening ("LTA lists and alerts") is slightly under-specified rather than merely concise, but the overall size is appropriate.
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?
An output schema exists, so return-value explanation is not required. Still, for a 5-parameter multi-dataset tool with 0% schema coverage, an agent is left guessing which of the 13 datasets accept service_no/bus_stop_code and which support offset — information the description gestures at but never resolves.
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 0%, so the description must carry the load. It does explain that service_no and bus_stop_code are endpoint-dependent and that offset requires a paginated dataset, which is real added meaning. But it leaves the 13-value dataset enum, limit bounds/defaults, and which specific datasets are paginated entirely undocumented.
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 phrase "LTA lists and alerts" identifies the resource domain (Land Transport Authority datasets) but supplies no verb or object specificity — it never says it queries/retrieves LTA dataset records. Combined with the dataset enum an agent can infer the purpose, but it cannot distinguish this tool from siblings like singapore_query_dataset or singapore_get_bus_arrivals based on the description alone.
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?
"Stop/service filters are allowed only on provider endpoints supporting them" and "Offsets apply only to paginated datasets" give conditional guidance about when filters work, which implies usage. However, there is no routing guidance relative to the many sibling query tools (e.g. singapore_query_dataset, singapore_get_bus_arrivals), and no statement of when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_museum_visitorsARead-onlyIdempotent
Query Visitorship to National Museums and Heritage Institutions (Ministry of Culture, Community and Youth). Topic: culture. Inspect dataset d_618a1224b896b436ce650be1f77c804e first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral note — results report source coverage from a bundled catalog and coverage may be stale — but says nothing about result size, ordering defaults, or failure modes.
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?
Three tight sentences: purpose and dataset id first, then capabilities, then the coverage caveat. Every sentence carries information an agent would otherwise lack.
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?
With an output schema present, the description needn't explain return values, and it covers the essential pre-call step (inspect the dataset for field names) plus a data-freshness caveat. The main omission is not clarifying how this specialized querier relates to the generic singapore_query_dataset sibling.
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 50% (q, sort, filters documented; fields, limit, offset bare). The description maps to all six parameters at a high level ('exact filters, column text search, fields, sort and pagination'), but adds no syntax or format detail beyond the schema's own examples, so it neither compensates for nor worsens the coverage gap.
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?
States a specific verb and resource ('Query Visitorship to National Museums and Heritage Institutions'), plus the owning agency and topic, which separates it from generic siblings like singapore_query_dataset and from the distinct singapore_query_visitor_arrivals. It stops short of explicitly naming which sibling to use when a generic dataset query is also viable.
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?
Gives a concrete workflow prerequisite: inspect dataset d_618a1224b896b436ce650be1f77c804e first for filter fields, and fetch metadata for current coverage. It also enumerates the supported operations (exact filters, column text search, fields, sort, pagination), but offers no when-not or alternative-tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_private_property_pricesARead-onlyIdempotent
Query Price Indices Of Non-Landed Private Residential Properties By Locality (1st Quarter 2009 = 100), Quarterly (Singapore Department of Statistics). Topic: housing. Inspect dataset d_65f5bf43d377db3939d93eb6f744d950 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that: the index base period, the requirement to inspect the dataset for filter fields, and the caveat that coverage is bundled/cached and may be stale. It does not discuss result shape or how the source coverage caveat manifests at call time.
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?
Front-loads the dataset identity and index base in the first sentence, then the operational workflow, then the coverage caveat. Dense but every sentence carries information; the raw dataset hash is the only mildly noisy element, though it is functional since it is the inspection target.
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?
An output schema exists, so return-value explanation is not required. Combined with annotations covering the safety profile, the description is sufficient: an agent knows what the data is, the prerequisite inspection step, the querying capabilities, and the coverage caveat. Remaining gap is minor (no explicit sibling routing).
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 50% (fields, limit and offset carry no descriptions). The description enumerates the capabilities - exact filters, per-column text search, fields, sort, pagination - which maps across all six parameters and partially compensates, but adds no specifics on defaults, the 100-row cap, or sort syntax beyond what the schema already shows.
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?
States a specific verb and resource: query quarterly price indices of non-landed private residential properties by locality, sourced from DOS, with the index base (1Q2009=100) and topic (housing) named. An agent can tell this is the private-residential price series rather than an HDB resale/rental series. It stops short of naming which sibling to use instead when the query is about HDB or landed property.
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?
Gives a concrete prerequisite workflow: inspect dataset d_65f5bf43d377db3939d93eb6f744d950 first to discover filter fields before filtering or sorting. It also flags that coverage comes from a bundled catalog and that metadata should be fetched for current coverage. No explicit when-not or named alternative sibling is given, which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_recycling_ratesARead-onlyIdempotent
Query Recycling Rate By Waste Type (National Environment Agency). Topic: environment. Inspect dataset d_9740df787da2b59a0b5bd76a6c33453d first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive query. The description adds that results return bundled source coverage and advises fetching metadata for current coverage, but it does not add much else about rate limits, permissions, or result 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 front-loaded with the core purpose and follows with practical query guidance. It is generally efficient, though the coverage and metadata sentence is slightly incidental.
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 read-only dataset query tool with six parameters, an output schema, and annotations, the description supplies enough context to call it correctly: what it queries, which dataset to inspect, and what query modes are supported. Minor gaps remain around sibling selection and exact return behavior.
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?
With 50% schema description coverage, the description usefully enumerates the main parameter capabilities: exact filters, column text search, fields, sort, and pagination. It does not explain syntax in depth, but that is largely left to the schema descriptions for q, filters, and sort.
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 states a specific verb and resource: query recycling rates by waste type, attributed to Singapore's National Environment Agency. It also names the exact dataset ID to inspect, which makes the intent clear even without explicit sibling comparison.
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?
It gives a clear usage context and prerequisite: inspect the named dataset first for filter fields. It also lists supported query capabilities, though it does not explicitly exclude or compare against sibling tools such as the generic query_dataset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_schoolsARead-onlyIdempotent
Query General information of schools (Ministry of Education). Topic: education. Inspect dataset d_688b934f82c1059ed0a6993d2a829089 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds real context beyond that — bundled-catalog source coverage and the advice to fetch metadata for current coverage — which is useful freshness disclosure. It says nothing about result shape, but an output schema exists, so the omission costs little.
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?
Four tight sentences, front-loaded with the resource and the dataset id an agent needs first. 'Topic: education' is filler, and the coverage sentence is slightly cryptic, but overall there is very little waste.
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 filtered-read tool with an output schema and full annotation coverage, this covers purpose, query mechanics, prerequisite discovery step and data-freshness caveat. The only soft spot is that a reader must infer the filter/field vocabulary from a separate inspection call.
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?
All six parameters are named by capability: exact filters, column text search (q), fields, sort, pagination (limit/offset). Schema coverage is 50%, and the schema already supplies examples for q, sort and filters, so the description largely restates. The genuinely additive piece is the pointer to inspect the dataset to discover valid field names.
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?
States a specific verb (Query) and resource (General information of schools, Ministry of Education), and pins down the exact dataset id d_688b934f82c1059ed0a6993d2a829089. Among ~50 dataset-specific siblings, the resource name makes it unambiguous which dataset this targets, though it does not explicitly contrast itself with the generic singapore_query_dataset.
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?
Gives an explicit prerequisite: inspect dataset d_688b... first to learn the filter fields. That is actionable sequencing an agent should not have to infer. It offers no explicit when-not or sibling alternative, but the siblings are distinct datasets, so the guidance gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_sport_facilitiesARead-onlyIdempotent
Query Sport Facilities (Sport Singapore). Topic: culture. Inspect dataset d_2cfb0867cdeb2b7303068995699dc33b first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds genuinely non-obvious context: results carry source coverage from a bundled catalog that may be stale, so metadata should be fetched for current coverage — a real caveat the annotations cannot convey.
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?
Front-loads the resource and topic, then the prerequisite, then the capabilities, in a short block with no filler. 'Topic: culture' is slightly cryptic but costs little space.
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?
An output schema exists so return values need not be described, and annotations cover safety; the description supplies the dataset id prerequisite and the coverage-staleness caveat. An agent has enough to invoke correctly, though it could be more explicit about how this differs from the generic query_dataset tool.
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 coverage is 50%, so the description usefully enumerates the query modes: exact filters, column text search, fields, sort and pagination — mapping onto q, filters, fields, sort, limit/offset. It reinforces the schema's examples without adding new syntax or format detail, keeping it just above baseline.
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?
States a specific verb (Query) and resource (Sport Facilities / Sport Singapore) plus the topic 'culture', which is enough for an agent to know exactly what data is returned. It does not explicitly differentiate itself from the generic sibling singapore_query_dataset, so it falls short of a 5.
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?
Gives a concrete prerequisite: inspect dataset d_2cfb0867cdeb2b7303068995699dc33b first to discover filter fields. That is actionable and specific. It does not state when to prefer this over singapore_query_dataset or the other per-dataset query siblings, so it stops short of naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_unemploymentARead-onlyIdempotent
Query Average Resident Unemployment Rate By Sex, Age And Highest Qualification Attained (HQA), Annual (Singapore Department of Statistics). Topic: employment. Inspect dataset d_11a640f1e61c1a680efeac8c775cdcb5 first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful context beyond that: it discloses that source coverage comes from a bundled catalog and that metadata should be fetched for current coverage, which warns about possible staleness.
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 front-loaded with the dataset name and purpose, and the remaining sentences are mostly useful. Minor redundancies such as 'Topic: employment' and the coverage caveat add some length but do not obscure the core message.
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 presence of an output schema and annotations covering safety, the description is largely complete: it states purpose, prerequisite inspection, supported operations, and a return-coverage caveat. The main missing piece is explicit routing guidance versus the generic query tool.
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 coverage is 50%, and the description lists supported capabilities (exact filters, column text search, fields, sort, pagination) that map loosely to parameters. It does not add syntax or format details beyond what the schema already provides, so it partially but not fully compensates for the coverage gap.
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 names a specific verb and resource: querying the Average Resident Unemployment Rate by Sex, Age, and HQA, annual, from Singapore DOS. It clearly identifies the dataset and topic, so an agent can distinguish it from generic query tools, though it does not explicitly contrast itself with siblings like singapore_query_dataset.
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?
It gives a useful prerequisite: inspect dataset d_11a640f1e61c1a680efeac8c775cdcb5 first for filter fields. However, it does not state when to use this tool versus the generic singapore_query_dataset or other alternatives, leaving usage implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_query_visitor_arrivalsARead-onlyIdempotent
Query International Visitor Arrivals By Place Of Residence, Monthly (Singapore Department of Statistics). Topic: tourism. Inspect dataset d_7e7b2ee60c6ffc962f80fef129cf306e first for filter fields. Supports exact filters, column text search, fields, sort and pagination. Returns source coverage from the bundled catalog; fetch metadata for current coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text by column, e.g. {"school_name":"RAFFLES"} | |
| sort | No | e.g. month desc, resale_price desc; inspect fields first | |
| limit | No | ||
| fields | No | ||
| offset | No | ||
| filters | No | Exact equality by field name, e.g. {"town":"ANG MO KIO"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful context about pagination and a coverage caveat ('Returns source coverage from the bundled catalog; fetch metadata for current coverage'), but it does not address error behavior, rate limits, or result-shape nuances beyond the existing 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 purpose is front-loaded in the first sentence, followed by the dataset prerequisite, supported operations, and coverage caveat. The text is compact and mostly earns its place, with only minor redundancy in the topic label.
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 six-parameter query tool with an output schema and read-only annotations, the description covers the key prerequisite, operations, pagination, and coverage caveat. It appropriately directs the agent to inspect the dataset rather than trying to list every filter field inline.
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 coverage is only 50%, so the description needs to compensate. It does so by mapping the main parameter roles: exact filters, column text search, fields, sort, and pagination, covering the otherwise under-documented fields, limit, and offset parameters at a semantic level.
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 gives a specific verb and resource: query International Visitor Arrivals by Place of Residence, Monthly, from the Singapore Department of Statistics. The tourism topic and dataset identifier make its scope clear, though it does not explicitly position itself against sibling query 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?
It gives a concrete prerequisite: inspect dataset d_7e7b2ee60c6ffc962f80fef129cf306e first for filter fields. It also enumerates supported operations (exact filters, text search, fields, sort, pagination), but does not state when not to use it or name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_reverse_geocodeBRead-onlyIdempotent
OneMap reverse geocoding of Singapore WGS84 coordinates to nearby addresses. Requires ONEMAP_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| radius_m | No | ||
| longitude | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds the genuinely useful auth prerequisite ('Requires ONEMAP_TOKEN') and the upstream source (OneMap), but says nothing about how many addresses come back, how radius affects results, or rate limits on the OneMap API.
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?
Two short sentences, zero filler, with the core operation front-loaded and the prerequisite second. Nothing repeats the tool name and nothing is padding.
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?
An output schema exists and annotations carry the safety profile, so the description needn't explain return values. Still, for a 3-parameter geo tool with zero schema descriptions, leaving radius_m entirely unexplained is a real gap — an agent cannot tell whether rainfall-style proximity tuning is expected.
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 0%, so the description must compensate. It does confirm the coordinate system as WGS84 (valuable, since the schema only gives numeric min/max) and implies proximity via 'nearby addresses', but never mentions radius_m, its default of 100 m, or the 1–500 m range — a full third of the parameters is undocumented everywhere.
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?
States a specific verb ('reverse geocoding') and resource ('WGS84 coordinates to nearby addresses') with a clear geographic scope (Singapore, OneMap). The 'reverse' qualifier implicitly separates it from forward-geocoding siblings like singapore_search_address and singapore_convert_coordinates, though it never names them.
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 only guidance is 'Requires ONEMAP_TOKEN'. There is no statement of when to pick this over singapore_search_address (forward lookup), singapore_convert_coordinates, or singapore_find_nearby_facilities, all of which plausibly overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_search_acraBRead-onlyIdempotent
Search one detailed ACRA partition by entity name or UEN. Select A-Z or Others explicitly; no automatic scan of all partitions. Inspect returned schema for provider field names.
| Name | Required | Description | Default |
|---|---|---|---|
| uen | No | ||
| name | No | ||
| limit | No | ||
| offset | No | ||
| partition | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds the behavioral fact that no automatic cross-partition scan occurs and points at the output schema for provider field names, which is helpful context beyond the annotations, but it says nothing about result limits or matching 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?
Three short sentences, front-loaded with the core action, with no filler. Slightly terse given the parameter surface, but structurally sound.
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?
An output schema exists and the description correctly deflects field-name questions to it. However, for a five-parameter, partition-partitioned search with zero schema descriptions, the missing guidance on partition choice and pagination leaves an agent with real 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 coverage is 0%, so the description must carry the load: it explains that name or UEN are the search keys and that partition must be A-Z or Others. It does not explain limit/offset semantics or the UEN pattern, leaving two of five parameters undocumented.
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?
States a specific verb and resource: search one detailed ACRA partition by entity name or UEN, and scopes it to a single partition rather than the whole dataset. It distinguishes itself from catalog-level siblings, though it doesn't explicitly name which sibling to use for non-partition business lookups.
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 constraint 'Select A-Z or Others explicitly; no automatic scan of all partitions' is a real usage rule, but it gives no guidance on which partition to pick for a given entity, nor when to prefer this over singapore_query_businesses or singapore_search_catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_search_addressARead-onlyIdempotent
OneMap official address/building/postal-code geocoding (WGS84 plus SVY21). Requires ONEMAP_TOKEN. Search pages are provider pages, usually 10 results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/open-world, so the bar is lower. The description adds two genuinely useful traits not in annotations: an authentication token requirement and the fact that paging follows provider pages with roughly 10 results each — important for interpreting pagination 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?
Three compact sentences, front-loaded with the tool's identity, then the auth prerequisite, then pagination behavior. No filler or 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?
An output schema exists, so return values need not be described. Auth, coordinate systems, and page sizing are covered. The only real gap is routing guidance relative to the reverse geocode and coordinate conversion siblings.
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 coverage is 0%, so the description carries the burden. It does clarify that the query can be an address, building name, or postal code, and that page counts provider pages of ~10 results — meaningful additions — but it gives no syntax, normalization, or format expectations for the query string or the page parameter's interaction with result counts.
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?
States a specific verb (geocoding) and resource (address/building/postal-code) and identifies the provider (OneMap) plus output coordinate systems (WGS84, SVY21). It implicitly distinguishes itself from singapore_reverse_geocode, but never names that sibling or the forward/reverse distinction explicitly.
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?
'Requires ONEMAP_TOKEN' gives a real prerequisite, and geocoding of an address implies the use case. However, there is no explicit guidance on when to pick this over singapore_reverse_geocode or singapore_convert_coordinates, so selection must be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_search_catalogARead-onlyIdempotent
Search the bundled full data.gov.sg catalog by English keywords, agency and format. No network needed. Results include snapshot date. Use inspect_dataset then query_dataset; non-tabular datasets may require download. Use list_catalog_page for updates since the snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| agency | No | ||
| format | No | ||
| offset | No | ||
| status | No | ||
| coverage_year | No | ||
| updated_since | No | ||
| include_unknown_coverage | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the readOnly/idempotent annotations by disclosing that results carry a snapshot date, that the catalog is a static bundle, and that non-tabular hits may need a download before querying — real workflow consequences. It stops short of saying how results are ordered or what pagination behavior to expect across limit/offset.
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?
Four short sentences, front-loaded with the capability and its offline scope, then the workflow and the staleness caveat. No filler and every clause carries operational 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?
The output schema and readOnly annotations cover return shape and safety, and the description handles the workflow well. But for a nine-parameter search tool, the absence of any guidance on filtering semantics (status, coverage_year, updated_since) leaves a meaningful gap for an agent trying to narrow 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 coverage is 0%, so the description must carry parameter meaning, yet it only glosses query (English keywords), agency, and format. The six remaining parameters — limit, offset, status, coverage_year, updated_since, include_unknown_coverage — get no explanation of expected values or semantics anywhere.
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?
States a specific verb (search), a specific resource (the bundled full data.gov.sg catalog), and the axes it searches on (English keywords, agency, format). The 'bundled'/'no network needed' framing plus the named follow-on tools separates it cleanly from sibling entry points like list_catalog_page and lookup_dataset.
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?
Explicitly routes the agent forward: inspect_dataset then query_dataset, download for non-tabular data, and list_catalog_page when the snapshot is stale. It gives both the when-to-use and the when-to-use-something-else conditions rather than leaving the workflow to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singapore_search_statisticsARead-onlyIdempotent
Search SingStat Table Builder across all official economic, population, labour, trade, health and social tables. Returns resource IDs to use with inspect_statistics/get_statistics. Use English terms.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| status | No | |
| sources | Yes | |
| metadata | No | |
| provider | No | |
| warnings | No | |
| served_at | Yes | |
| error_code | No | |
| source_url | No | |
| dataset_url | No | |
| catalog_metadata | No | |
| catalog_snapshot_at | No | |
| retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: results are resource IDs rather than data, and queries must be in English. It does not mention pagination behavior or result ordering, but with annotations this is a minor 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?
Two tight sentences: the first establishes scope, the second establishes the follow-on workflow and the language constraint. Nothing redundant and the most important information leads.
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?
With an output schema present, the description need not explain return values, and the annotations cover safety. What remains missing for a 3-parameter search tool is any guidance on pagination or result-set size, which an agent calling with limit/offset would benefit from.
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 0%, so the description must carry parameter meaning, yet only the query parameter gets a hint ('Use English terms'). The limit and offset parameters, including their defaults and the 100 cap, are undocumented in both the schema and the description.
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?
States a specific verb+resource ('Search SingStat Table Builder') and enumerates the covered domains, which distinguishes it from the many singapore_query_* point-dataset tools and from singapore_search_catalog. It also names the intended downstream consumers (inspect_statistics/get_statistics), so an agent knows exactly which namespace this search serves.
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 routes the agent through a clear workflow: search here, then use the returned resource IDs with inspect_statistics/get_statistics. It adds a usage constraint ('Use English terms') but gives no explicit exclusions against siblings like singapore_search_catalog or singapore_lookup_dataset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
64 tool updates
v0.2.0- First observed
singapore_catalog_summary - First observed
singapore_compare_hdb_prices - First observed
singapore_convert_coordinates - First observed
singapore_download_dataset - First observed
singapore_find_nearby_bus_stops - First observed
singapore_find_nearby_facilities - First observed
singapore_find_relevant_tools - First observed
singapore_get_air_temperature - First observed
singapore_get_bus_arrivals - First observed
singapore_get_capabilities - First observed
singapore_get_carpark_availability - First observed
singapore_get_collection - First observed
singapore_get_forecast_24h - First observed
singapore_get_forecast_2h - First observed
singapore_get_forecast_4day - First observed
singapore_get_indicator - First observed
singapore_get_pm25 - First observed
singapore_get_psi - First observed
singapore_get_rainfall - First observed
singapore_get_relative_humidity - First observed
singapore_get_sources - First observed
singapore_get_statistics - First observed
singapore_get_taxi_availability - First observed
singapore_get_traffic_images - First observed
singapore_get_uv_index - First observed
singapore_get_wind_direction - First observed
singapore_get_wind_speed - First observed
singapore_inspect_dataset - First observed
singapore_inspect_statistics - First observed
singapore_list_catalog_page - First observed
singapore_list_collections - First observed
singapore_list_curated_datasets - First observed
singapore_list_indicators - First observed
singapore_list_weather_stations - First observed
singapore_lookup_dataset - First observed
singapore_query_air_quality_annual - First observed
singapore_query_businesses - First observed
singapore_query_carpark_directory - First observed
singapore_query_dataset - First observed
singapore_query_government_expenditure - First observed
singapore_query_greenhouse_emissions - First observed
singapore_query_hawker_centres - First observed
singapore_query_hawker_closures - First observed
singapore_query_hdb_median_rent - First observed
singapore_query_hdb_population - First observed
singapore_query_hdb_rentals - First observed
singapore_query_hdb_resale - First observed
singapore_query_healthcare_schemes - First observed
singapore_query_hotel_statistics - First observed
singapore_query_infectious_diseases - First observed
singapore_query_land_area - First observed
singapore_query_lta - First observed
singapore_query_museum_visitors - First observed
singapore_query_private_property_prices - First observed
singapore_query_recycling_rates - First observed
singapore_query_schools - First observed
singapore_query_sport_facilities - First observed
singapore_query_unemployment - First observed
singapore_query_visitor_arrivals - First observed
singapore_reverse_geocode - First observed
singapore_search_acra - First observed
singapore_search_address - First observed
singapore_search_catalog - First observed
singapore_search_statistics
TDQS
Scored across 64 tools
The core pattern is clear: generic catalog tools (search_catalog, inspect_dataset, query_dataset, download_dataset) plus per-dataset convenience wrappers. However, ~20 singapore_query_<topic> tools overlap heavily with singapore_query_dataset, and discovery is split across search_catalog, list_catalog_page, list_curated_datasets, catalog_summary, and find_relevant_tools, so an agent can hesitate between near-equivalent entry points. Descriptions do a good job steering (e.g. compare_hdb_prices vs query_hdb_resale, find_nearby_bus_stops vs get_bus_arrivals), which keeps it from being worse.
Every tool uses the singapore_ prefix plus a consistent snake_case verb_noun form (query_*, get_*, list_*, search_*, inspect_*, find_nearby_*, convert_*). Verb choice maps predictably to intent: query for tabular data, get for live readings, list/search for discovery.
64 tools is far beyond a comfortable surface for a single server, even a broad national data portal. Much of the bulk comes from per-dataset query wrappers that duplicate query_dataset's capability and could be replaced by a curated dataset list.
Coverage is broad and coherent: catalog discovery, metadata inspection, tabular querying, export/download, live weather, transport, SingStat, geocoding, World Bank, and capability/source introspection, with a consistent read-only posture. Gaps are minor — e.g. some discovery paths (curated topics) versus the live catalog could be unified, and a few domain areas rely on single datasets.
Maintenance
Related MCP Connectors
Singapore property & financial data APIs for AI agents. 27 MCP tools. x402 micropayments.
Read-only discovery for 440 Malaysian public datasets with freshness, licence, and provenance.
294 public-data tools across 60 domains; source freshness varies. Free tier.
Search 77k public-sector open data APIs across 10 countries. Read-only, no API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides access to Singapore's data.gov.sg government datasets and collections, enabling search, metadata retrieval, and dataset downloads through the CKAN datastore API.4MIT
- 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.1-
- AlicenseNot gradedqualityBmaintenanceEnables access to Singapore government open data and real-time environment/transport feeds including weather, air quality, taxi availability, and traffic incidents.27 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with live, structured access to Singapore government open data including weather, transport, property, and company registry via 35 well-described tools.1-