# Singapore MCP by Olano (npm · @olano/mcp-singapore)

Singapore public data, transport, rail, property, business, economy, weather, and analytics.

- Trust score: 93/100 (high trust)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `@olano/mcp-singapore`: 93/100 (this document), [markdown](https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore.md), [page](https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore)

## Channel facts

- Registry: `npm`
- Package: `@olano/mcp-singapore`
- Version: `0.4.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 15 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to olano-ai/mcp-singapore).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 29 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 78/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 12412 tokens (~42/item across 294 items; 291 tools + 3 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 68/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 4% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 291 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 293 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Singapore MCP by Olano server?

Singapore MCP by Olano runs locally as an npm package, launched with npx -y @olano/mcp-singapore. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add olano-ai-mcp-singapore -- npx -y @olano/mcp-singapore
```

### Cursor

```json
{
  "mcpServers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add olano-ai-mcp-singapore -- npx -y @olano/mcp-singapore
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "olano-ai-mcp-singapore": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@olano/mcp-singapore"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add olano-ai-mcp-singapore --command npx --arg -y --arg @olano/mcp-singapore
```

### Hermes

```yaml
mcp_servers:
  olano-ai-mcp-singapore:
    command: "npx"
    args: ["-y", "@olano/mcp-singapore"]
```

### Netclaw

```json
{
  "McpServers": {
    "olano-ai-mcp-singapore": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add olano-ai-mcp-singapore -t stdio -c npx -a -y @olano/mcp-singapore
```

### Other

```json
{
  "mcpServers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 93, 0)

- [security] Stability: 0.97 → pass

### 2026-09-17 (score 93, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 92, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-11 (score 90, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-09 (score 89, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-07 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-05 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (291)

### `datagov_list_datasets` (~34 tokens)

List data.gov.sg datasets

List datasets published on data.gov.sg. Use pagination to keep responses small.

Input parameters:

- `page` (integer)

### `datagov_get_dataset_metadata` (~36 tokens)

Get data.gov.sg dataset metadata

Retrieve metadata for a data.gov.sg dataset ID such as d_abc123.

Input parameters:

- `datasetId` (string, required)

### `datagov_list_dataset_rows` (~48 tokens)

List rows from a data.gov.sg dataset

Read a paginated set of rows from a data.gov.sg dataset.

Input parameters:

- `datasetId` (string, required)
- `limit` (integer)
- `page` (integer)

### `datagov_get_realtime` (~51 tokens)

Get a data.gov.sg real-time feed

Retrieve a supported Singapore weather or air-quality real-time feed.

Input parameters:

- `api` (string, required)
- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `onemap_search` (~49 tokens)

Search Singapore addresses

Search OneMap for Singapore addresses, buildings, roads, postal codes, and POIs.

Input parameters:

- `includeGeometry` (boolean)
- `page` (integer)
- `query` (string, required)

### `onemap_reverse_geocode` (~47 tokens)

Reverse geocode Singapore coordinates

Resolve WGS84 latitude and longitude to nearby Singapore address information.

Input parameters:

- `bufferMetres` (integer)
- `latitude` (number, required)
- `longitude` (number, required)

### `onemap_route` (~61 tokens)

Plan a route in Singapore

Calculate a OneMap route between two WGS84 coordinates.

Input parameters:

- `endLatitude` (number, required)
- `endLongitude` (number, required)
- `routeType` (string)
- `startLatitude` (number, required)
- `startLongitude` (number, required)

### `lta_bus_arrivals` (~42 tokens)

Get live bus arrivals

Get real-time bus arrival estimates for an LTA bus stop code.

Input parameters:

- `busStopCode` (string, required)
- `serviceNumber` (string)

### `lta_list_bus_stops` (~31 tokens)

List Singapore bus stops

List LTA bus stops in pages of 500 records.

Input parameters:

- `skip` (integer)

### `lta_traffic_incidents` (~29 tokens)

Get current traffic incidents

Get accidents, breakdowns, road blocks, diversions, and other current incidents.

### `lta_traffic_images` (~26 tokens)

Get live traffic camera images

Get LTA links and coordinates for current expressway and checkpoint traffic images.

### `lta_carpark_availability` (~29 tokens)

Get carpark availability

Get current availability for participating HDB, LTA, and URA carparks.

### `lta_taxi_availability` (~23 tokens)

Get available taxi locations

Get coordinates of taxis currently reported as available for hire.

### `weather_two_hour_forecast` (~42 tokens)

Get the 2-hour forecast

Get area-level Singapore forecasts for the next two hours.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `weather_twenty_four_hour_forecast` (~46 tokens)

Get the 24-hour forecast

Get Singapore regional forecasts and temperature, humidity, and wind ranges.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `weather_four_day_outlook` (~42 tokens)

Get the 4-day outlook

Get Singapore weather outlooks for the next four days.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `weather_temperature` (~38 tokens)

Get current temperatures

Get the latest temperature observations from Singapore weather stations.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `weather_rainfall` (~40 tokens)

Get current rainfall

Get the latest rainfall observations from Singapore weather stations.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `weather_air_quality` (~40 tokens)

Get current PSI

Get Singapore Pollutant Standards Index readings and bands.

Input parameters:

- `date` (string): Optional YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss filter.

### `singapore_catalog_list` (~27 tokens)

List curated Singapore datasets

List Olano curated data.gov.sg datasets and categories.

Input parameters:

- `category` (string)

### `hdb_resale_metadata` (~56 tokens)

HDB resale flat prices: metadata

Get official metadata and schema for HDB resale flat prices. Source: data.gov.sg dataset d_8b84c4ee58e3cfc0ece0d773c8ca6abc (HDB).

### `hdb_resale_search` (~154 tokens)

Search raw HDB resale transactions

Retrieve official HDB resale rows using exact town, flat-type, month and street filters with deterministic sorting and pagination. For medians, quartiles, price ranges or latest-period aggregation, use hdb_resale_stats in the aggregate Singapore MCP.

Input parameters:

- `block` (string)
- `flatModel` (string)
- `flatType` (string)
- `limit` (integer)
- `month` (string)
- `offset` (integer)
- `query` (string): Legacy data.gov.sg full-text query. Prefer the structured filters because multi-term q searches may be rejected upstream.
- `sortOrder` (string)
- `street` (string)
- `town` (string)

### `hdb_resale_profile` (~35 tokens)

Profile HDB resale flat prices

Profile fields and numeric ranges from a bounded sample of HDB resale flat prices.

Input parameters:

- `sampleSize` (integer)

### `hdb_resale_freshness` (~26 tokens)

Check HDB resale flat prices freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `coe_bidding_metadata` (~53 tokens)

COE bidding results: metadata

Get official metadata and schema for COE bidding results. Source: data.gov.sg dataset d_69b3380ad7e51aff3a7dcc84eba52b8a (LTA).

### `coe_bidding_search` (~72 tokens)

Search COE bidding results

Search and page through COE bidding results. Source: data.gov.sg dataset d_69b3380ad7e51aff3a7dcc84eba52b8a (LTA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `coe_bidding_profile` (~34 tokens)

Profile COE bidding results

Profile fields and numeric ranges from a bounded sample of COE bidding results.

Input parameters:

- `sampleSize` (integer)

### `coe_bidding_freshness` (~26 tokens)

Check COE bidding results freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `moe_schools_metadata` (~51 tokens)

MOE schools: metadata

Get official metadata and schema for MOE schools. Source: data.gov.sg dataset d_688b934f82c1059ed0a6993d2a829089 (MOE).

### `moe_schools_search` (~70 tokens)

Search MOE schools

Search and page through MOE schools. Source: data.gov.sg dataset d_688b934f82c1059ed0a6993d2a829089 (MOE).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `moe_schools_profile` (~33 tokens)

Profile MOE schools

Profile fields and numeric ranges from a bounded sample of MOE schools.

Input parameters:

- `sampleSize` (integer)

### `moe_schools_freshness` (~26 tokens)

Check MOE schools freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `hdb_carparks_metadata` (~51 tokens)

HDB carpark information: metadata

Get official metadata and schema for HDB carpark information. Source: data.gov.sg dataset d_23f946fa557947f93a8043bbef41dd09 (HDB).

### `hdb_carparks_search` (~70 tokens)

Search HDB carpark information

Search and page through HDB carpark information. Source: data.gov.sg dataset d_23f946fa557947f93a8043bbef41dd09 (HDB).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `hdb_carparks_profile` (~35 tokens)

Profile HDB carpark information

Profile fields and numeric ranges from a bounded sample of HDB carpark information.

Input parameters:

- `sampleSize` (integer)

### `hdb_carparks_freshness` (~26 tokens)

Check HDB carpark information freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `gdp_growth_metadata` (~51 tokens)

GDP year-on-year growth: metadata

Get official metadata and schema for GDP year-on-year growth. Source: data.gov.sg dataset d_a5ff719648a0e6d4b4c623ee383ab686 (DOS).

### `gdp_growth_search` (~70 tokens)

Search GDP year-on-year growth

Search and page through GDP year-on-year growth. Source: data.gov.sg dataset d_a5ff719648a0e6d4b4c623ee383ab686 (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `gdp_growth_profile` (~34 tokens)

Profile GDP year-on-year growth

Profile fields and numeric ranges from a bounded sample of GDP year-on-year growth.

Input parameters:

- `sampleSize` (integer)

### `gdp_growth_freshness` (~25 tokens)

Check GDP year-on-year growth freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `cpi_metadata` (~47 tokens)

Consumer Price Index: metadata

Get official metadata and schema for Consumer Price Index. Source: data.gov.sg dataset d_bdaff844e3ef89d39fceb962ff8f0791 (DOS).

### `cpi_search` (~66 tokens)

Search Consumer Price Index

Search and page through Consumer Price Index. Source: data.gov.sg dataset d_bdaff844e3ef89d39fceb962ff8f0791 (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `cpi_profile` (~31 tokens)

Profile Consumer Price Index

Profile fields and numeric ranges from a bounded sample of Consumer Price Index.

Input parameters:

- `sampleSize` (integer)

### `cpi_freshness` (~24 tokens)

Check Consumer Price Index freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `median_income_metadata` (~49 tokens)

Median gross monthly income: metadata

Get official metadata and schema for Median gross monthly income. Source: data.gov.sg dataset d_aa75b9227b47cbc12ffe0e3be4979546 (MOM).

### `median_income_search` (~68 tokens)

Search Median gross monthly income

Search and page through Median gross monthly income. Source: data.gov.sg dataset d_aa75b9227b47cbc12ffe0e3be4979546 (MOM).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `median_income_profile` (~32 tokens)

Profile Median gross monthly income

Profile fields and numeric ranges from a bounded sample of Median gross monthly income.

Input parameters:

- `sampleSize` (integer)

### `median_income_freshness` (~24 tokens)

Check Median gross monthly income freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `employment_sector_metadata` (~47 tokens)

Employment by sector: metadata

Get official metadata and schema for Employment by sector. Source: data.gov.sg dataset d_d2518fed6cc2014f0cd061b4570a9592 (DOS).

### `employment_sector_search` (~66 tokens)

Search Employment by sector

Search and page through Employment by sector. Source: data.gov.sg dataset d_d2518fed6cc2014f0cd061b4570a9592 (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `employment_sector_profile` (~31 tokens)

Profile Employment by sector

Profile fields and numeric ranges from a bounded sample of Employment by sector.

Input parameters:

- `sampleSize` (integer)

### `employment_sector_freshness` (~24 tokens)

Check Employment by sector freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `ura_private_property_metadata` (~56 tokens)

URA private property transactions: metadata

Get official metadata and schema for URA private property transactions. Source: data.gov.sg dataset d_7c69c943d5f0d89d6a9a773d2b51f337 (URA).

### `ura_private_property_search` (~75 tokens)

Search URA private property transactions

Search and page through URA private property transactions. Source: data.gov.sg dataset d_7c69c943d5f0d89d6a9a773d2b51f337 (URA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `ura_private_property_profile` (~34 tokens)

Profile URA private property transactions

Profile fields and numeric ranges from a bounded sample of URA private property transactions.

Input parameters:

- `sampleSize` (integer)

### `ura_private_property_freshness` (~25 tokens)

Check URA private property transactions freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `visitor_arrivals_metadata` (~51 tokens)

International visitor arrivals: metadata

Get official metadata and schema for International visitor arrivals. Source: data.gov.sg dataset d_7e7b2ee60c6ffc962f80fef129cf306e (STB).

### `visitor_arrivals_search` (~70 tokens)

Search International visitor arrivals

Search and page through International visitor arrivals. Source: data.gov.sg dataset d_7e7b2ee60c6ffc962f80fef129cf306e (STB).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `visitor_arrivals_profile` (~32 tokens)

Profile International visitor arrivals

Profile fields and numeric ranges from a bounded sample of International visitor arrivals.

Input parameters:

- `sampleSize` (integer)

### `visitor_arrivals_freshness` (~25 tokens)

Check International visitor arrivals freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `retail_sales_metadata` (~47 tokens)

Retail Sales Index: metadata

Get official metadata and schema for Retail Sales Index. Source: data.gov.sg dataset d_6b78d625911483860e162288a4000a0c (DOS).

### `retail_sales_search` (~66 tokens)

Search Retail Sales Index

Search and page through Retail Sales Index. Source: data.gov.sg dataset d_6b78d625911483860e162288a4000a0c (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `retail_sales_profile` (~31 tokens)

Profile Retail Sales Index

Profile fields and numeric ranges from a bounded sample of Retail Sales Index.

Input parameters:

- `sampleSize` (integer)

### `retail_sales_freshness` (~24 tokens)

Check Retail Sales Index freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `mas_fx_metadata` (~46 tokens)

MAS exchange rates: metadata

Get official metadata and schema for MAS exchange rates. Source: data.gov.sg dataset d_b2b7ffe00aaec3936ed379369fdf531b (MAS).

### `mas_fx_search` (~65 tokens)

Search MAS exchange rates

Search and page through MAS exchange rates. Source: data.gov.sg dataset d_b2b7ffe00aaec3936ed379369fdf531b (MAS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `mas_fx_profile` (~31 tokens)

Profile MAS exchange rates

Profile fields and numeric ranges from a bounded sample of MAS exchange rates.

Input parameters:

- `sampleSize` (integer)

### `mas_fx_freshness` (~24 tokens)

Check MAS exchange rates freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `bank_interest_rates_metadata` (~62 tokens)

Current bank interest rates, including SORA: metadata

Get official metadata and schema for Current bank interest rates, including SORA. Source: data.gov.sg dataset d_5fe5a4bb4a1ecc4d8a56a095832e2b24 (SINGSTAT / MAS).

### `bank_interest_rates_search` (~81 tokens)

Search Current bank interest rates, including SORA

Search and page through Current bank interest rates, including SORA. Source: data.gov.sg dataset d_5fe5a4bb4a1ecc4d8a56a095832e2b24 (SINGSTAT / MAS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `bank_interest_rates_profile` (~37 tokens)

Profile Current bank interest rates, including SORA

Profile fields and numeric ranges from a bounded sample of Current bank interest rates, including SORA.

Input parameters:

- `sampleSize` (integer)

### `bank_interest_rates_freshness` (~25 tokens)

Check Current bank interest rates, including SORA freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `iras_tax_metadata` (~49 tokens)

IRAS tax collection: metadata

Get official metadata and schema for IRAS tax collection. Source: data.gov.sg dataset d_21e22578cabce897e8b27801e5596140 (IRAS).

### `iras_tax_search` (~68 tokens)

Search IRAS tax collection

Search and page through IRAS tax collection. Source: data.gov.sg dataset d_21e22578cabce897e8b27801e5596140 (IRAS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `iras_tax_profile` (~33 tokens)

Profile IRAS tax collection

Profile fields and numeric ranges from a bounded sample of IRAS tax collection.

Input parameters:

- `sampleSize` (integer)

### `iras_tax_freshness` (~25 tokens)

Check IRAS tax collection freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `ecda_childcare_metadata` (~52 tokens)

Childcare and kindergarten centres: metadata

Get official metadata and schema for Childcare and kindergarten centres. Source: data.gov.sg dataset d_696c994c50745b079b3684f0e90ffc53 (ECDA).

### `ecda_childcare_search` (~71 tokens)

Search Childcare and kindergarten centres

Search and page through Childcare and kindergarten centres. Source: data.gov.sg dataset d_696c994c50745b079b3684f0e90ffc53 (ECDA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `ecda_childcare_profile` (~35 tokens)

Profile Childcare and kindergarten centres

Profile fields and numeric ranges from a bounded sample of Childcare and kindergarten centres.

Input parameters:

- `sampleSize` (integer)

### `ecda_childcare_freshness` (~26 tokens)

Check Childcare and kindergarten centres freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `unemployment_metadata` (~45 tokens)

Unemployment rate: metadata

Get official metadata and schema for Unemployment rate. Source: data.gov.sg dataset d_ca32584c91ee07d091a4ce75fa868414 (MOM).

### `unemployment_search` (~64 tokens)

Search Unemployment rate

Search and page through Unemployment rate. Source: data.gov.sg dataset d_ca32584c91ee07d091a4ce75fa868414 (MOM).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `unemployment_profile` (~30 tokens)

Profile Unemployment rate

Profile fields and numeric ranges from a bounded sample of Unemployment rate.

Input parameters:

- `sampleSize` (integer)

### `unemployment_freshness` (~23 tokens)

Check Unemployment rate freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `population_metadata` (~48 tokens)

Population indicators: metadata

Get official metadata and schema for Population indicators. Source: data.gov.sg dataset d_3d227e5d9fdec73f3bcadce671c333a6 (DOS).

### `population_search` (~67 tokens)

Search Population indicators

Search and page through Population indicators. Source: data.gov.sg dataset d_3d227e5d9fdec73f3bcadce671c333a6 (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `population_profile` (~29 tokens)

Profile Population indicators

Profile fields and numeric ranges from a bounded sample of Population indicators.

Input parameters:

- `sampleSize` (integer)

### `population_freshness` (~23 tokens)

Check Population indicators freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `disease_cases_metadata` (~49 tokens)

Weekly infectious disease cases: metadata

Get official metadata and schema for Weekly infectious disease cases. Source: data.gov.sg dataset d_ca168b2cb763640d72c4600a68f9909e (MOH).

### `disease_cases_search` (~68 tokens)

Search Weekly infectious disease cases

Search and page through Weekly infectious disease cases. Source: data.gov.sg dataset d_ca168b2cb763640d72c4600a68f9909e (MOH).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `disease_cases_profile` (~32 tokens)

Profile Weekly infectious disease cases

Profile fields and numeric ranges from a bounded sample of Weekly infectious disease cases.

Input parameters:

- `sampleSize` (integer)

### `disease_cases_freshness` (~24 tokens)

Check Weekly infectious disease cases freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `electricity_metadata` (~47 tokens)

Electricity generation: metadata

Get official metadata and schema for Electricity generation. Source: data.gov.sg dataset d_ae4afbaf5bc96bde19d8ce85810ab9f4 (EMA).

### `electricity_search` (~66 tokens)

Search Electricity generation

Search and page through Electricity generation. Source: data.gov.sg dataset d_ae4afbaf5bc96bde19d8ce85810ab9f4 (EMA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `electricity_profile` (~29 tokens)

Profile Electricity generation

Profile fields and numeric ranges from a bounded sample of Electricity generation.

Input parameters:

- `sampleSize` (integer)

### `electricity_freshness` (~23 tokens)

Check Electricity generation freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `live_births_metadata` (~46 tokens)

Live births: metadata

Get official metadata and schema for Live births. Source: data.gov.sg dataset d_d05c760928eb5eaa58006d83462b834e (DOS).

### `live_births_search` (~65 tokens)

Search Live births

Search and page through Live births. Source: data.gov.sg dataset d_d05c760928eb5eaa58006d83462b834e (DOS).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `live_births_profile` (~31 tokens)

Profile Live births

Profile fields and numeric ranges from a bounded sample of Live births.

Input parameters:

- `sampleSize` (integer)

### `live_births_freshness` (~25 tokens)

Check Live births freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `crime_metadata` (~46 tokens)

Crime cases recorded: metadata

Get official metadata and schema for Crime cases recorded. Source: data.gov.sg dataset d_ca0b908cf06a267ca06acbd5feb4465c (SPF).

### `crime_search` (~65 tokens)

Search Crime cases recorded

Search and page through Crime cases recorded. Source: data.gov.sg dataset d_ca0b908cf06a267ca06acbd5feb4465c (SPF).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `crime_profile` (~30 tokens)

Profile Crime cases recorded

Profile fields and numeric ranges from a bounded sample of Crime cases recorded.

Input parameters:

- `sampleSize` (integer)

### `crime_freshness` (~23 tokens)

Check Crime cases recorded freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `tourism_receipts_metadata` (~44 tokens)

Tourism receipts: metadata

Get official metadata and schema for Tourism receipts. Source: data.gov.sg dataset d_e285a651ec353416054195528ca988a9 (STB).

### `tourism_receipts_search` (~63 tokens)

Search Tourism receipts

Search and page through Tourism receipts. Source: data.gov.sg dataset d_e285a651ec353416054195528ca988a9 (STB).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `tourism_receipts_profile` (~31 tokens)

Profile Tourism receipts

Profile fields and numeric ranges from a bounded sample of Tourism receipts.

Input parameters:

- `sampleSize` (integer)

### `tourism_receipts_freshness` (~25 tokens)

Check Tourism receipts freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `hawker_centres_metadata` (~52 tokens)

Government hawker centres: metadata

Get official metadata and schema for Government hawker centres. Source: data.gov.sg dataset d_68a42f09f350881996d83f9cd73ab02f (NEA).

### `hawker_centres_search` (~71 tokens)

Search Government hawker centres

Search and page through Government hawker centres. Source: data.gov.sg dataset d_68a42f09f350881996d83f9cd73ab02f (NEA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `hawker_centres_profile` (~34 tokens)

Profile Government hawker centres

Profile fields and numeric ranges from a bounded sample of Government hawker centres.

Input parameters:

- `sampleSize` (integer)

### `hawker_centres_freshness` (~26 tokens)

Check Government hawker centres freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `dengue_clusters_metadata` (~48 tokens)

Current dengue clusters: metadata

Get official metadata and schema for Current dengue clusters. Source: data.gov.sg dataset d_dbfabf16158d1b0e1c420627c0819168 (NEA).

### `dengue_clusters_search` (~67 tokens)

Search Current dengue clusters

Search and page through Current dengue clusters. Source: data.gov.sg dataset d_dbfabf16158d1b0e1c420627c0819168 (NEA).

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `query` (string)

### `dengue_clusters_profile` (~31 tokens)

Profile Current dengue clusters

Profile fields and numeric ranges from a bounded sample of Current dengue clusters.

Input parameters:

- `sampleSize` (integer)

### `dengue_clusters_freshness` (~24 tokens)

Check Current dengue clusters freshness

Inspect official metadata and sample dates to flag stale or frozen data.

### `acra_list_shards` (~28 tokens)

List ACRA entity shards

List the 27 official ACRA corporate-entity dataset shards on data.gov.sg.

### `acra_search_entities` (~51 tokens)

Search ACRA corporate entities

Search official ACRA corporate-entity shards by company name, UEN, or text.

Input parameters:

- `limit` (integer)
- `maxShards` (integer)
- `query` (string, required)

### `acra_get_entity` (~33 tokens)

Get ACRA entity by UEN

Resolve a Singapore corporate entity from official ACRA shards using its UEN.

Input parameters:

- `uen` (string, required)

### `acra_profile_entities` (~28 tokens)

Profile an ACRA shard

Profile a bounded sample from an official ACRA shard.

Input parameters:

- `shard` (integer)

### `singstat_business_formations_annual_latest` (~33 tokens)

Business formations and cessations, annual: latest

Get the latest observations from SingStat table M085851.

Input parameters:

- `series` (string)

### `singstat_business_formations_annual_history` (~40 tokens)

Business formations and cessations, annual: history

Get bounded historical observations from SingStat table M085851.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_business_formations_monthly_latest` (~33 tokens)

Business formations, monthly: latest

Get the latest observations from SingStat table M085831.

Input parameters:

- `series` (string)

### `singstat_business_formations_monthly_history` (~40 tokens)

Business formations, monthly: history

Get bounded historical observations from SingStat table M085831.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_business_cessations_monthly_latest` (~34 tokens)

Business cessations, monthly: latest

Get the latest observations from SingStat table M085841.

Input parameters:

- `series` (string)

### `singstat_business_cessations_monthly_history` (~41 tokens)

Business cessations, monthly: history

Get bounded historical observations from SingStat table M085841.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_household_income_latest` (~31 tokens)

Household market income indicators: latest

Get the latest observations from SingStat table M810871.

Input parameters:

- `series` (string)

### `singstat_household_income_history` (~38 tokens)

Household market income indicators: history

Get bounded historical observations from SingStat table M810871.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_wages_latest` (~30 tokens)

Average monthly nominal earnings: latest

Get the latest observations from SingStat table M182941.

Input parameters:

- `series` (string)

### `singstat_wages_history` (~37 tokens)

Average monthly nominal earnings: history

Get bounded historical observations from SingStat table M182941.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_deaths_latest` (~30 tokens)

Deaths and death rates: latest

Get the latest observations from SingStat table M810481.

Input parameters:

- `series` (string)

### `singstat_deaths_history` (~37 tokens)

Deaths and death rates: history

Get bounded historical observations from SingStat table M810481.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_marriages_latest` (~30 tokens)

Marriage indicators: latest

Get the latest observations from SingStat table M830101.

Input parameters:

- `series` (string)

### `singstat_marriages_history` (~37 tokens)

Marriage indicators: history

Get bounded historical observations from SingStat table M830101.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_divorces_latest` (~31 tokens)

Divorce indicators: latest

Get the latest observations from SingStat table M830201.

Input parameters:

- `series` (string)

### `singstat_divorces_history` (~38 tokens)

Divorce indicators: history

Get bounded historical observations from SingStat table M830201.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_merchandise_trade_latest` (~32 tokens)

Merchandise trade by commodity section: latest

Get the latest observations from SingStat table M451001.

Input parameters:

- `series` (string)

### `singstat_merchandise_trade_history` (~39 tokens)

Merchandise trade by commodity section: history

Get bounded historical observations from SingStat table M451001.

Input parameters:

- `periods` (integer)
- `series` (string)

### `singstat_labour_force_latest` (~31 tokens)

Resident labour-force participation rate: latest

Get the latest observations from SingStat table M182201.

Input parameters:

- `series` (string)

### `singstat_labour_force_history` (~38 tokens)

Resident labour-force participation rate: history

Get bounded historical observations from SingStat table M182201.

Input parameters:

- `periods` (integer)
- `series` (string)

### `finance_mortgage_rates_latest` (~54 tokens)

Get latest official Singapore mortgage-rate context

Retrieve latest SORA and bank interest-rate series from a free official data.gov.sg API dataset. These are reference rates, not lender offers.

Input parameters:

- `series` (string): For example: SORA or housing

### `finance_mortgage_rates_history` (~53 tokens)

Get official Singapore mortgage-rate history

Retrieve bounded SORA and bank interest-rate history from a free official data.gov.sg API dataset.

Input parameters:

- `periods` (integer)
- `series` (string): For example: 3 Month SORA

### `finance_mortgage_payment` (~65 tokens)

Calculate an illustrative mortgage payment

Calculate principal and interest using a transparent amortisation formula and a user-supplied rate. Pair with finance_mortgage_rates_latest for official reference-rate context.

Input parameters:

- `annualRate` (number, required)
- `principal` (number, required)
- `years` (integer, required)

### `finance_mortgage_stress_test` (~46 tokens)

Stress-test a mortgage

Compare monthly payments across user-supplied illustrative interest rates.

Input parameters:

- `principal` (number, required)
- `rates` (array, required)
- `years` (integer, required)

### `finance_mortgage_affordability` (~90 tokens)

Estimate Singapore mortgage repayment headroom

Apply user-configurable MSR and TDSR assumptions. This is not an eligibility, approval, or regulatory determination.

Input parameters:

- `existingMonthlyDebt` (number)
- `grossMonthlyIncome` (number, required)
- `monthlyMortgage` (number)
- `msrPercent` (number)
- `propertyType` (string)
- `tdsrPercent` (number)

### `finance_singapore_data_availability` (~35 tokens)

Check Singapore finance data availability

Explain exactly which finance data Olano can access through stable free APIs and which categories require official or licensed sources.

### `analytics_summarize_series` (~30 tokens)

Summarize a numeric series

Calculate bounded descriptive statistics without sending data to a third party.

Input parameters:

- `values` (array, required)

### `analytics_visualize_series` (~27 tokens)

Visualize a numeric series

Create a compact Unicode sparkline and descriptive statistics.

Input parameters:

- `values` (array, required)

### `analytics_compare_series` (~33 tokens)

Compare numeric series

Compare statistics and mean change for two bounded series.

Input parameters:

- `left` (array, required)
- `right` (array, required)

### `analytics_correlate_series` (~40 tokens)

Correlate numeric series

Calculate Pearson correlation over aligned values. Correlation does not imply causation.

Input parameters:

- `left` (array, required)
- `right` (array, required)

### `singapore_prompt_categories` (~21 tokens)

List Singapore MCP prompt categories

List discoverable example-prompt categories and their example counts.

### `singapore_prompt_examples` (~57 tokens)

Discover Singapore MCP prompt examples

Find realistic user prompts by category, keyword or canonical tool name. This is discovery, not execution.

Input parameters:

- `category` (string)
- `limit` (integer)
- `search` (string)
- `tool` (string)

### `singapore_prompt_for_tool` (~37 tokens)

Get example prompts for an MCP tool

Find user-facing query examples that demonstrate a canonical Singapore MCP tool.

Input parameters:

- `limit` (integer)
- `tool` (string, required)

### `singapore_ask` (~36 tokens)

Route a natural-language Singapore data question

Deterministically recommend canonical tool calls for a question without arbitrary execution or an external language-model call.

Input parameters:

- `question` (string, required)

### `sg_ask` (~31 tokens)

Compatibility: route a Singapore data question

Compatibility alias for singapore_ask. Returns recommendations; never executes arbitrary tools.

Input parameters:

- `question` (string, required)

### `insights_visualize_series` (~59 tokens)

Visualise a labelled time series

Create a sparkline, ASCII chart, statistics, point changes and chart-ready JSON from labelled observations.

Input parameters:

- `maxPoints` (integer)
- `observations` (array, required)
- `title` (string)
- `unit` (string)

### `sg_visualize` (~50 tokens)

Compatibility: visualise a labelled time series

Compatibility alias for the richer local Olano series visualiser.

Input parameters:

- `maxPoints` (integer)
- `observations` (array, required)
- `title` (string)
- `unit` (string)

### `insights_align_series` (~56 tokens)

Align two time series by calendar period

Normalize common monthly, quarterly and annual period formats to the safest shared frequency and align overlapping observations.

Input parameters:

- `aggregation` (string)
- `frequency` (string)
- `left` (array, required)
- `right` (array, required)

### `insights_compare_series` (~53 tokens)

Compare period-aligned time series

Automatically align different calendar granularities, calculate differences, descriptive statistics and Pearson correlation.

Input parameters:

- `aggregation` (string)
- `frequency` (string)
- `left` (object, required)
- `right` (object, required)

### `sg_cross_dataset` (~54 tokens)

Compatibility: compare aligned series

Compatibility alias for explicit period-aware Olano comparison. Supply the official observations to compare.

Input parameters:

- `aggregation` (string)
- `frequency` (string)
- `left` (object, required)
- `right` (object, required)

### `singapore_capability_registry` (~45 tokens)

List Singapore MCP capability mappings

Return the exhaustive machine-readable mapping for the 87 audited sg_* compatibility capabilities, including constraints and sources.

Input parameters:

- `mode` (string)
- `search` (string)

### `singapore_capability_check` (~31 tokens)

Check a Singapore MCP compatibility capability

Resolve an exact sg_* compatibility name or canonical Olano tool mapping.

Input parameters:

- `tool` (string, required)

### `singapore_dataset_search` (~80 tokens)

Search the official data.gov.sg dataset catalogue

Page the official catalogue and locally match every search term against dataset name, agency, ID, description and format. The catalogue API itself exposes pagination but no reliable text-search parameter.

Input parameters:

- `agency` (string)
- `format` (string)
- `limit` (integer)
- `maxPages` (integer)
- `query` (string, required)

### `sg_search_datasets` (~81 tokens)

Compatibility: Search the official data.gov.sg dataset catalogue

Page the official catalogue and locally match every search term against dataset name, agency, ID, description and format. The catalogue API itself exposes pagination but no reliable text-search parameter.

Input parameters:

- `agency` (string)
- `format` (string)
- `limit` (integer)
- `maxPages` (integer)
- `query` (string, required)

### `moe_schools_near` (~102 tokens)

Find schools near a Singapore location

Resolve an address or use WGS84 coordinates, query official OneMap education themes within a bounding extent, and rank results by true haversine distance. Requires ONEMAP_TOKEN.

Input parameters:

- `latitude` (number)
- `limit` (integer)
- `location` (string)
- `longitude` (number)
- `postalCode` (string)
- `postal_code` (string)
- `radiusMetres` (integer)

### `sg_moe_schools_near` (~104 tokens)

Compatibility: Find schools near a Singapore location

Resolve an address or use WGS84 coordinates, query official OneMap education themes within a bounding extent, and rank results by true haversine distance. Requires ONEMAP_TOKEN.

Input parameters:

- `latitude` (number)
- `limit` (integer)
- `location` (string)
- `longitude` (number)
- `postalCode` (string)
- `postal_code` (string)
- `radiusMetres` (integer)

### `ecda_centres_near` (~101 tokens)

Find early-childhood centres near a Singapore location

Resolve an address or use WGS84 coordinates, query official OneMap kindergarten/childcare themes, and rank actual coordinates by haversine distance. Requires ONEMAP_TOKEN.

Input parameters:

- `latitude` (number)
- `limit` (integer)
- `location` (string)
- `longitude` (number)
- `postalCode` (string)
- `postal_code` (string)
- `radiusMetres` (integer)

### `sg_ecda_centres_near` (~102 tokens)

Compatibility: Find early-childhood centres near a Singapore location

Resolve an address or use WGS84 coordinates, query official OneMap kindergarten/childcare themes, and rank actual coordinates by haversine distance. Requires ONEMAP_TOKEN.

Input parameters:

- `latitude` (number)
- `limit` (integer)
- `location` (string)
- `longitude` (number)
- `postalCode` (string)
- `postal_code` (string)
- `radiusMetres` (integer)

### `ecda_vacancy_summary` (~90 tokens)

Summarise published ECDA vacancy availability

Summarise the official ECDA vacancy field for one programme level and forecast month, preserving categorical Available/Limited/Full values instead of pretending they are numeric counts.

Input parameters:

- `level` (string, required)
- `month` (string)
- `postalPrefix` (string)
- `postal_prefix` (string)
- `query` (string)
- `sampleSize` (integer)

### `sg_ecda_vacancy_summary` (~91 tokens)

Compatibility: Summarise published ECDA vacancy availability

Summarise the official ECDA vacancy field for one programme level and forecast month, preserving categorical Available/Limited/Full values instead of pretending they are numeric counts.

Input parameters:

- `level` (string, required)
- `month` (string)
- `postalPrefix` (string)
- `postal_prefix` (string)
- `query` (string)
- `sampleSize` (integer)

### `gdp_industry_compare` (~42 tokens)

Rank Singapore industries by quarterly GDP growth

Rank every numeric industry row by official year-on-year GDP growth for a requested quarter, while preserving the matched source column.

Input parameters:

- `quarter` (string, required)

### `sg_gdp_industry_compare` (~43 tokens)

Compatibility: Rank Singapore industries by quarterly GDP growth

Rank every numeric industry row by official year-on-year GDP growth for a requested quarter, while preserving the matched source column.

Input parameters:

- `quarter` (string, required)

### `disease_cases_latest` (~47 tokens)

Get the latest cases in the published MOH disease dataset

Return the last epidemiological week present in the official data.gov.sg dataset. The source is frozen around 2022 and is never presented as current surveillance.

Input parameters:

- `disease` (string)

### `sg_disease_latest` (~48 tokens)

Compatibility: Get the latest cases in the published MOH disease dataset

Return the last epidemiological week present in the official data.gov.sg dataset. The source is frozen around 2022 and is never presented as current surveillance.

Input parameters:

- `disease` (string)

### `disease_cases_trend` (~52 tokens)

Analyse a published infectious-disease trend

Aggregate exact epidemiological weeks for disease labels matching the query and expose the frozen source coverage prominently.

Input parameters:

- `disease` (string, required)
- `weeksBack` (integer)
- `weeks_back` (integer)

### `sg_disease_trend` (~53 tokens)

Compatibility: Analyse a published infectious-disease trend

Aggregate exact epidemiological weeks for disease labels matching the query and expose the frozen source coverage prominently.

Input parameters:

- `disease` (string, required)
- `weeksBack` (integer)
- `weeks_back` (integer)

### `disease_cases_list` (~32 tokens)

List diseases in the published MOH bulletin dataset

List the actual disease labels and source-coverage totals in the official historical dataset, with an explicit frozen-data warning.

### `sg_disease_list` (~33 tokens)

Compatibility: List diseases in the published MOH bulletin dataset

List the actual disease labels and source-coverage totals in the official historical dataset, with an explicit frozen-data warning.

### `crime_compare` (~36 tokens)

Rank Singapore recorded-crime series for a year

Rank every numeric official recorded-crime series for a requested year, preserving category definitions and structural-break warnings.

Input parameters:

- `year` (string, required)

### `sg_crime_compare` (~38 tokens)

Compatibility: Rank Singapore recorded-crime series for a year

Rank every numeric official recorded-crime series for a requested year, preserving category definitions and structural-break warnings.

Input parameters:

- `year` (string, required)

### `hdb_resale_stats` (~157 tokens)

Query and summarise HDB resale transactions

Use this tool for filtered HDB resale transactions, latest-period results, price ranges, medians, quartiles and price-per-square-metre statistics. It applies exact town and flat-type filters at data.gov.sg and performs the bounded aggregation inside the MCP; a direct API download is not required.

Input parameters:

- `endMonth` (string)
- `flatType` (string)
- `latestMonths` (integer): Number of latest available matching months to include when startMonth and endMonth are omitted.
- `sampleSize` (integer)
- `startMonth` (string)
- `street` (string)
- `town` (string)
- `transactionLimit` (integer): Maximum selected transaction rows to return alongside the statistics.

### `sg_hdb_resale_stats` (~158 tokens)

Compatibility: Query and summarise HDB resale transactions

Use this tool for filtered HDB resale transactions, latest-period results, price ranges, medians, quartiles and price-per-square-metre statistics. It applies exact town and flat-type filters at data.gov.sg and performs the bounded aggregation inside the MCP; a direct API download is not required.

Input parameters:

- `endMonth` (string)
- `flatType` (string)
- `latestMonths` (integer): Number of latest available matching months to include when startMonth and endMonth are omitted.
- `sampleSize` (integer)
- `startMonth` (string)
- `street` (string)
- `town` (string)
- `transactionLimit` (integer): Maximum selected transaction rows to return alongside the statistics.

### `coe_latest` (~38 tokens)

Get the latest COE bidding results

Summarise the latest official COE exercise, with transparent demand, success, utilisation and premium-change measures.

Input parameters:

- `category` (string)

### `sg_coe_latest` (~39 tokens)

Compatibility: Get the latest COE bidding results

Summarise the latest official COE exercise, with transparent demand, success, utilisation and premium-change measures.

Input parameters:

- `category` (string)

### `coe_history` (~38 tokens)

Get COE bidding history

Get a bounded, newest-first history for one official COE vehicle category.

Input parameters:

- `category` (string, required)
- `exercises` (integer)

### `sg_coe_history` (~39 tokens)

Compatibility: Get COE bidding history

Get a bounded, newest-first history for one official COE vehicle category.

Input parameters:

- `category` (string, required)
- `exercises` (integer)

### `coe_demand_supply` (~43 tokens)

Analyse COE demand and supply

Compare bids received, quota and successful bids for a COE category using reproducible ratios.

Input parameters:

- `category` (string, required)
- `exercises` (integer)

### `sg_coe_demand_supply` (~44 tokens)

Compatibility: Analyse COE demand and supply

Compare bids received, quota and successful bids for a COE category using reproducible ratios.

Input parameters:

- `category` (string, required)
- `exercises` (integer)

### `cpi_yoy` (~42 tokens)

Calculate Singapore CPI year-on-year change

Select an official monthly CPI series and calculate same-month year-on-year index and percentage changes.

Input parameters:

- `category` (string)
- `periods` (integer)

### `sg_cpi_yoy` (~43 tokens)

Compatibility: Calculate Singapore CPI year-on-year change

Select an official monthly CPI series and calculate same-month year-on-year index and percentage changes.

Input parameters:

- `category` (string)
- `periods` (integer)

### `employment_growth` (~37 tokens)

Calculate Singapore employment growth by sector

Select an official annual employment sector series and calculate absolute and percentage annual changes.

Input parameters:

- `sector` (string, required)
- `years` (integer)

### `sg_employment_growth` (~39 tokens)

Compatibility: Calculate Singapore employment growth by sector

Select an official annual employment sector series and calculate absolute and percentage annual changes.

Input parameters:

- `sector` (string, required)
- `years` (integer)

### `retail_sales_yoy` (~41 tokens)

Calculate Singapore retail sales year-on-year change

Select an official monthly Retail Sales Index series and calculate same-month year-on-year changes.

Input parameters:

- `periods` (integer)
- `series` (string)

### `sg_retail_sales_yoy` (~43 tokens)

Compatibility: Calculate Singapore retail sales year-on-year change

Select an official monthly Retail Sales Index series and calculate same-month year-on-year changes.

Input parameters:

- `periods` (integer)
- `series` (string)

### `business_formations_net` (~41 tokens)

Calculate net Singapore business formations

Align official monthly SingStat formations and cessations for one industry and calculate net formations.

Input parameters:

- `industry` (string)
- `periods` (integer)

### `sg_net_formations` (~41 tokens)

Compatibility: Calculate net Singapore business formations

Align official monthly SingStat formations and cessations for one industry and calculate net formations.

Input parameters:

- `industry` (string)
- `periods` (integer)

### `business_formations_compare` (~46 tokens)

Compare Singapore business formations by industry

Compare official formations, cessations and net formations for up to ten SingStat industry series over the same periods.

Input parameters:

- `industries` (array, required)
- `periods` (integer)

### `sg_formations_compare` (~46 tokens)

Compatibility: Compare Singapore business formations by industry

Compare official formations, cessations and net formations for up to ten SingStat industry series over the same periods.

Input parameters:

- `industries` (array, required)
- `periods` (integer)

### `fx_rate` (~44 tokens)

Get a normalized MAS exchange rate

Get an official MAS average exchange-rate observation and make per-one versus per-100 foreign-currency units explicit.

Input parameters:

- `currency` (string, required)
- `period` (string)

### `sg_fx_rate` (~45 tokens)

Compatibility: Get a normalized MAS exchange rate

Get an official MAS average exchange-rate observation and make per-one versus per-100 foreign-currency units explicit.

Input parameters:

- `currency` (string, required)
- `period` (string)

### `fx_history` (~36 tokens)

Get normalized MAS exchange-rate history

Get a bounded official monthly exchange-rate history with explicit foreign-unit scaling.

Input parameters:

- `currency` (string, required)
- `periods` (integer)

### `sg_fx_history` (~37 tokens)

Compatibility: Get normalized MAS exchange-rate history

Get a bounded official monthly exchange-rate history with explicit foreign-unit scaling.

Input parameters:

- `currency` (string, required)
- `periods` (integer)

### `fx_basket` (~48 tokens)

Value a foreign-currency basket in SGD

Apply official MAS monthly average rates to a bounded set of foreign-currency amounts with correct per-one or per-100 scaling.

Input parameters:

- `holdings` (array, required)
- `period` (string)

### `sg_fx_basket` (~49 tokens)

Compatibility: Value a foreign-currency basket in SGD

Apply official MAS monthly average rates to a bounded set of foreign-currency amounts with correct per-one or per-100 scaling.

Input parameters:

- `holdings` (array, required)
- `period` (string)

### `iras_tax_mix` (~38 tokens)

Calculate Singapore tax collection mix

Calculate category shares from official IRAS collections for one financial year in the published S$ thousand unit.

Input parameters:

- `financialYear` (string)

### `sg_iras_tax_mix` (~39 tokens)

Compatibility: Calculate Singapore tax collection mix

Calculate category shares from official IRAS collections for one financial year in the published S$ thousand unit.

Input parameters:

- `financialYear` (string)

### `visitors_top_sources` (~45 tokens)

Rank Singapore visitor source markets

Rank official monthly international visitor arrivals by country or region without mixing hierarchy levels.

Input parameters:

- `level` (string)
- `limit` (integer)
- `period` (string)

### `sg_visitors_top_sources` (~47 tokens)

Compatibility: Rank Singapore visitor source markets

Rank official monthly international visitor arrivals by country or region without mixing hierarchy levels.

Input parameters:

- `level` (string)
- `limit` (integer)
- `period` (string)

### `ura_new_sale_pipeline` (~38 tokens)

Summarise URA new-sale status

Summarise completed and uncompleted private residential new-sale units by quarter from the official URA table.

Input parameters:

- `quarters` (integer)

### `sg_ura_new_sale_pipeline` (~40 tokens)

Compatibility: Summarise URA new-sale status

Summarise completed and uncompleted private residential new-sale units by quarter from the official URA table.

Input parameters:

- `quarters` (integer)

### `sg_list_datasets` (~28 tokens)

Compatibility route: sg_list_datasets

Use the richer Olano catalogue tool. Canonical Olano tool: singapore_catalog_list.

### `sg_dataset_schema` (~27 tokens)

Compatibility route: sg_dataset_schema

Direct official metadata lookup. Canonical Olano tool: datagov_get_dataset_metadata.

### `sg_dataset_query` (~39 tokens)

Compatibility route: sg_dataset_query

Direct bounded official row retrieval; Olano does not silently download an unbounded dataset. Canonical Olano tool: datagov_list_dataset_rows.

### `sg_acra_search_entities` (~30 tokens)

Compatibility route: sg_acra_search_entities

Searches the 27 official entity shards. Canonical Olano tool: acra_search_entities.

### `sg_acra_get_entity` (~34 tokens)

Compatibility route: sg_acra_get_entity

Exact UEN resolution remains subject to public-dataset coverage. Canonical Olano tool: acra_get_entity.

### `sg_acra_formations_by_ssic` (~46 tokens)

Compatibility route: sg_acra_formations_by_ssic

Uses official formation series by industry; ACRA public entity shards are not a complete historical formation event feed. Canonical Olano tool: business_formations_compare.

### `sg_hdb_resale_search` (~30 tokens)

Compatibility route: sg_hdb_resale_search

Bounded official row search. Canonical Olano tool: hdb_resale_search.

### `sg_moe_search_schools` (~31 tokens)

Compatibility route: sg_moe_search_schools

Curated official school search. Canonical Olano tool: moe_schools_search.

### `sg_moe_school_by_name` (~33 tokens)

Compatibility route: sg_moe_school_by_name

Use an exact school name as the query. Canonical Olano tool: moe_schools_search.

### `sg_hdb_carpark_lookup` (~31 tokens)

Compatibility route: sg_hdb_carpark_lookup

Curated official carpark search. Canonical Olano tool: hdb_carparks_search.

### `sg_hdb_carparks_by_address` (~34 tokens)

Compatibility route: sg_hdb_carparks_by_address

Pass an address fragment as the search query. Canonical Olano tool: hdb_carparks_search.

### `sg_hdb_carparks_by_type` (~37 tokens)

Compatibility route: sg_hdb_carparks_by_type

Search the official type values and inspect metadata first when needed. Canonical Olano tool: hdb_carparks_search.

### `sg_gdp_latest` (~27 tokens)

Compatibility route: sg_gdp_latest

Curated GDP growth observations. Canonical Olano tool: gdp_growth_search.

### `sg_gdp_history` (~26 tokens)

Compatibility route: sg_gdp_history

Bounded official history. Canonical Olano tool: gdp_growth_search.

### `sg_cpi_latest` (~26 tokens)

Compatibility route: sg_cpi_latest

Curated official CPI lookup. Canonical Olano tool: cpi_search.

### `sg_cpi_history` (~30 tokens)

Compatibility route: sg_cpi_history

Official wide-series rows preserve the full published history. Canonical Olano tool: cpi_search.

### `sg_median_income_lookup` (~27 tokens)

Compatibility route: sg_median_income_lookup

Curated MOM income lookup. Canonical Olano tool: median_income_search.

### `sg_median_income_history` (~26 tokens)

Compatibility route: sg_median_income_history

Official published income history. Canonical Olano tool: median_income_search.

### `sg_employment_by_sector` (~27 tokens)

Compatibility route: sg_employment_by_sector

Curated sector row search. Canonical Olano tool: employment_sector_search.

### `sg_employment_sector_history` (~26 tokens)

Compatibility route: sg_employment_sector_history

Official wide-series history. Canonical Olano tool: employment_sector_search.

### `sg_ura_private_txn_latest` (~30 tokens)

Compatibility route: sg_ura_private_txn_latest

Curated public transaction search. Canonical Olano tool: ura_private_property_search.

### `sg_ura_private_txn_history` (~30 tokens)

Compatibility route: sg_ura_private_txn_history

Bounded public transaction evidence. Canonical Olano tool: ura_private_property_search.

### `sg_visitors_latest` (~30 tokens)

Compatibility route: sg_visitors_latest

Curated STB visitor-arrival lookup. Canonical Olano tool: visitor_arrivals_search.

### `sg_visitors_history` (~25 tokens)

Compatibility route: sg_visitors_history

Official published history. Canonical Olano tool: visitor_arrivals_search.

### `sg_retail_sales_latest` (~28 tokens)

Compatibility route: sg_retail_sales_latest

Curated Retail Sales Index lookup. Canonical Olano tool: retail_sales_search.

### `sg_retail_sales_history` (~26 tokens)

Compatibility route: sg_retail_sales_history

Official wide-series history. Canonical Olano tool: retail_sales_search.

### `sg_iras_collection` (~26 tokens)

Compatibility route: sg_iras_collection

Official tax collection lookup. Canonical Olano tool: iras_tax_search.

### `sg_iras_collection_history` (~26 tokens)

Compatibility route: sg_iras_collection_history

Official published history. Canonical Olano tool: iras_tax_search.

### `sg_ecda_search_centres` (~30 tokens)

Compatibility route: sg_ecda_search_centres

Official ECDA centre search. Canonical Olano tool: ecda_childcare_search.

### `sg_unemployment_latest` (~24 tokens)

Compatibility route: sg_unemployment_latest

Official MOM unemployment series. Canonical Olano tool: unemployment_search.

### `sg_unemployment_history` (~23 tokens)

Compatibility route: sg_unemployment_history

Official published history. Canonical Olano tool: unemployment_search.

### `sg_population_latest` (~22 tokens)

Compatibility route: sg_population_latest

Official population indicators. Canonical Olano tool: population_search.

### `sg_population_history` (~22 tokens)

Compatibility route: sg_population_history

Official published history. Canonical Olano tool: population_search.

### `sg_electricity_latest` (~26 tokens)

Compatibility route: sg_electricity_latest

Official EMA electricity generation data. Canonical Olano tool: electricity_search.

### `sg_electricity_history` (~24 tokens)

Compatibility route: sg_electricity_history

Official published history. Canonical Olano tool: electricity_search.

### `sg_births_latest` (~27 tokens)

Compatibility route: sg_births_latest

Official live-birth indicators. Canonical Olano tool: live_births_search.

### `sg_births_history` (~25 tokens)

Compatibility route: sg_births_history

Official published history. Canonical Olano tool: live_births_search.

### `sg_crime_latest` (~25 tokens)

Compatibility route: sg_crime_latest

Official recorded-crime aggregates. Canonical Olano tool: crime_search.

### `sg_crime_history` (~23 tokens)

Compatibility route: sg_crime_history

Official aggregate history. Canonical Olano tool: crime_search.

### `sg_tourism_latest` (~40 tokens)

Compatibility route: sg_tourism_latest

The curated receipts source may be stale; inspect freshness and cross-check current STB data. Canonical Olano tool: tourism_receipts_search.

### `sg_tourism_history` (~32 tokens)

Compatibility route: sg_tourism_history

Official published history with a visible stale-data constraint. Canonical Olano tool: tourism_receipts_search.

### `sg_hawker_search` (~32 tokens)

Compatibility route: sg_hawker_search

Official NEA hawker-centre search. Canonical Olano tool: hawker_centres_search.

### `sg_hawker_stats` (~28 tokens)

Compatibility route: sg_hawker_stats

Profiles official centre fields. Canonical Olano tool: hawker_centres_profile.

### `sg_formations_latest` (~31 tokens)

Compatibility route: sg_formations_latest

Official latest SingStat observations. Canonical Olano tool: singstat_business_formations_monthly_latest.

### `sg_formations_history` (~31 tokens)

Compatibility route: sg_formations_history

Official bounded SingStat history. Canonical Olano tool: singstat_business_formations_monthly_history.

### `sg_formations_monthly` (~30 tokens)

Compatibility route: sg_formations_monthly

Official formation series. Canonical Olano tool: singstat_business_formations_monthly_history.

### `sg_cessations_monthly` (~32 tokens)

Compatibility route: sg_cessations_monthly

Official cessation series. Canonical Olano tool: singstat_business_cessations_monthly_history.

### `sg_carpark_availability` (~33 tokens)

Compatibility route: sg_carpark_availability

Requires LTA_DATAMALL_API_KEY. Canonical Olano tool: lta_carpark_availability.

### `sg_weather_forecast` (~27 tokens)

Compatibility route: sg_weather_forecast

Official two-hour forecast. Canonical Olano tool: weather_two_hour_forecast.

### `sg_psi` (~23 tokens)

Compatibility route: sg_psi

Official PSI observations. Canonical Olano tool: weather_air_quality.

### `sg_rainfall` (~26 tokens)

Compatibility route: sg_rainfall

Official station rainfall observations. Canonical Olano tool: weather_rainfall.

### `sg_air_temperature` (~23 tokens)

Compatibility route: sg_air_temperature

Official station temperature observations. Canonical Olano tool: weather_temperature.

### `sg_dengue_clusters` (~25 tokens)

Compatibility route: sg_dengue_clusters

Official cluster records. Canonical Olano tool: dengue_clusters_search.

### `sg_household_income` (~28 tokens)

Compatibility route: sg_household_income

Official household income indicators. Canonical Olano tool: singstat_household_income_history.

### `sg_wages` (~26 tokens)

Compatibility route: sg_wages

Official nominal earnings indicators. Canonical Olano tool: singstat_wages_history.

### `sg_deaths` (~26 tokens)

Compatibility route: sg_deaths

Official deaths and rates. Canonical Olano tool: singstat_deaths_history.

### `sg_marriages` (~25 tokens)

Compatibility route: sg_marriages

Official marriage indicators. Canonical Olano tool: singstat_marriages_history.

### `sg_divorces` (~27 tokens)

Compatibility route: sg_divorces

Official divorce indicators. Canonical Olano tool: singstat_divorces_history.

### `sg_trade` (~27 tokens)

Compatibility route: sg_trade

Official merchandise trade indicators. Canonical Olano tool: singstat_merchandise_trade_history.

### `sg_labour_force` (~30 tokens)

Compatibility route: sg_labour_force

Official resident labour-force participation indicators. Canonical Olano tool: singstat_labour_force_history.

### `rail_source_metadata` (~28 tokens)

Describe Singapore rail data sources

Return authoritative source URLs, coverage dates, derivation details, and limitations for this rail package.

### `rail_network_summary` (~32 tokens)

Summarize the Singapore rail network snapshot

Summarize named station locations, exits, systems, line membership, and source coverage in the bundled official snapshots.

### `rail_list_stations` (~67 tokens)

List Singapore MRT and LRT stations

List station locations with official codes, lines, Chinese names, exit-derived coordinates, and snapshot status.

Input parameters:

- `codeSnapshotStatus` (string)
- `limit` (integer)
- `line` (string)
- `offset` (integer)
- `system` (string)

### `rail_search_stations` (~45 tokens)

Search Singapore MRT and LRT stations

Search by station name, station code, Chinese name, or line name, with exact matches ranked first.

Input parameters:

- `limit` (integer)
- `query` (string, required)

### `rail_get_station` (~38 tokens)

Get a Singapore rail station

Get one station complex by exact English station name or station code, including every line and code at an interchange.

Input parameters:

- `identifier` (string, required)

### `rail_list_exits` (~57 tokens)

List Singapore MRT and LRT station exits

List official station-exit points, optionally filtered by station name/code and exit label.

Input parameters:

- `exitCode` (string)
- `limit` (integer)
- `offset` (integer)
- `stationQuery` (string)

### `rail_get_station_connections` (~48 tokens)

Get published rail-code connections for a station

Show line membership, interchange status, and previous/next published station codes for an exact station name or code. This is snapshot topology, not live routing.

Input parameters:

- `identifier` (string, required)

### `rail_get_station_exits` (~36 tokens)

Get all exits for a Singapore rail station

Resolve an exact station name or code and return every official exit point for that station complex.

Input parameters:

- `identifier` (string, required)

### `rail_nearest_stations` (~69 tokens)

Find nearest Singapore rail stations

Find station complexes by straight-line distance to their mean official exit location. This is not walking-route distance.

Input parameters:

- `latitude` (number, required)
- `limit` (integer)
- `longitude` (number, required)
- `radiusMetres` (number)
- `system` (string)

### `rail_nearest_exits` (~57 tokens)

Find nearest Singapore rail station exits

Find individual official MRT/LRT exit points by straight-line distance from Singapore coordinates.

Input parameters:

- `latitude` (number, required)
- `limit` (integer)
- `longitude` (number, required)
- `radiusMetres` (number)

### `rail_nearest_stations_to_address` (~73 tokens)

Find nearest Singapore rail stations to an address

Resolve a Singapore address or postal code through OneMap, then find stations by straight-line distance to mean official exit locations. Requires ONEMAP_TOKEN.

Input parameters:

- `limit` (integer)
- `query` (string, required)
- `radiusMetres` (number)
- `system` (string)

### `rail_list_lines` (~43 tokens)

List official Singapore train line codes

List the line-code and direction records in LTA’s February 2024 snapshot, enriched with station-code prefixes and current package counts.

Input parameters:

- `system` (string)

### `rail_list_stations_by_line` (~52 tokens)

List stations on a Singapore rail line

List stations using an official LTA line code, station-code prefix, or exact line name.

Input parameters:

- `limit` (integer)
- `line` (string, required)
- `offset` (integer)

### `rail_list_interchanges` (~56 tokens)

List Singapore rail interchanges

List station complexes associated with more than one official line code in the January 2025 code snapshot.

Input parameters:

- `includeMrtLrtConnections` (boolean)
- `limit` (integer)
- `offset` (integer)

### `rail_historical_station_counts` (~55 tokens)

Get historical Singapore MRT and LRT station counts

Return LTA’s published historical station-count series. Coverage is 2004–2017 and excludes 2015–2016 records.

Input parameters:

- `fromYear` (integer)
- `toYear` (integer)

### `singapore_cache_info` (~20 tokens)

Inspect cache configuration

Show whether the optional persistent public-response cache is enabled.

### `singapore_location_brief` (~31 tokens)

Research a Singapore location

Combine OneMap address results with the current two-hour Singapore weather forecast.

Input parameters:

- `query` (string, required)

### `singapore_company_brief` (~43 tokens)

Research a Singapore company

Combine official ACRA public-entity matches with current SingStat business-formation context.

Input parameters:

- `maxShards` (integer)
- `query` (string, required)

### `singapore_property_area_brief` (~48 tokens)

Research a Singapore property area

Combine HDB or URA public transaction evidence with optional OneMap address context.

Input parameters:

- `limit` (integer)
- `market` (string)
- `query` (string, required)

### `singapore_market_context` (~40 tokens)

Get Singapore market context

Retrieve bounded official observations for GDP, CPI, retail sales, employment, income and exchange rates in one call.

Input parameters:

- `observationsPerDataset` (integer)

### `singapore_tool_profiles` (~50 tokens)

Discover Singapore MCP tool profiles

List the stable server-side tool profiles, their prefix contracts and exact tool counts. Optionally return the tool names for one profile.

Input parameters:

- `includeTools` (boolean)
- `profile` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore#diagnostics

## Score history

- 2026-09-20: 93
- 2026-09-19: 93
- 2026-09-18: 93
- 2026-09-17: 93
- 2026-09-16: 92
- 2026-09-15: 92
- 2026-09-14: 91
- 2026-09-13: 91
- 2026-09-12: 90
- 2026-09-11: 90
- 2026-09-10: 89
- 2026-09-09: 89
- 2026-09-08: 88
- 2026-09-07: 88
- 2026-09-06: 87
- 2026-09-05: 87
- 2026-09-04: 86
- 2026-09-03: 86
- 2026-09-02: 86
- 2026-09-01: 85
- 2026-08-31: 85
- 2026-08-30: 84
- 2026-08-29: 84
- 2026-08-28: 83
- 2026-08-27: 83
- 2026-08-26: 82
- 2026-08-25: 80
- 2026-08-24: 79
- 2026-08-23: 79
- 2026-08-22: 78

## Common questions

### What is the Singapore MCP by Olano server?

Singapore MCP by Olano is listed in the public MCP registry as io.github.olano-ai/mcp-singapore. Singapore public data, transport, rail, property, business, economy, weather, and analytics. This page covers its npm package (@olano/mcp-singapore).

### Is the Singapore MCP by Olano server safe to use?

Singapore MCP by Olano scores 93 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Singapore MCP by Olano server expose?

Singapore MCP by Olano exposes 291 tools: datagov_list_datasets, datagov_get_dataset_metadata, datagov_list_dataset_rows, datagov_get_realtime, onemap_search, and 286 more. Their descriptions and schemas cost roughly 12,264 tokens of context every time the server is loaded.

### Is the Singapore MCP by Olano server still maintained?

Singapore MCP by Olano is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Singapore MCP by Olano server under?

Singapore MCP by Olano declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@olano/mcp-singapore
- Socket report: https://socket.dev/npm/package/@olano/mcp-singapore
- Repository: https://github.com/olano-ai/mcp-singapore
- Website: https://olano.ai/
- Changelog RSS feed: https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore.xml
- Changelog JSON feed: https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore.json
- HTML version of this page: https://verifymcp.io/servers/olano-ai-mcp-singapore/olano-mcp-singapore
