Singapore MCP by Olano
NPM · @OLANO/MCP-SINGAPORE · SCANNED SEP 20
Singapore public data, transport, rail, property, business, economy, weather, and analytics.
Available components
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. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 15 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to olano-ai/mcp-singapore). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 29 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 12412 tokens (~42/item across 294 items; 291 tools + 3 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage68
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 4% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 291 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 293 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
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.
npm · @olano/mcp-singapore
claude mcp add olano-ai-mcp-singapore -- npx -y @olano/mcp-singapore
{
"mcpServers": {
"olano-ai-mcp-singapore": {
"command": "npx",
"args": [
"-y",
"@olano/mcp-singapore"
]
}
}
} {
"servers": {
"olano-ai-mcp-singapore": {
"command": "npx",
"args": [
"-y",
"@olano/mcp-singapore"
]
}
}
} codex mcp add olano-ai-mcp-singapore -- npx -y @olano/mcp-singapore
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"olano-ai-mcp-singapore": {
"type": "local",
"command": [
"npx",
"-y",
"@olano/mcp-singapore"
],
"enabled": true
}
}
} openclaw mcp add olano-ai-mcp-singapore --command npx --arg -y --arg @olano/mcp-singapore
mcp_servers:
olano-ai-mcp-singapore:
command: "npx"
args: ["-y", "@olano/mcp-singapore"] {
"McpServers": {
"olano-ai-mcp-singapore": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@olano/mcp-singapore"
]
}
}
} assistant mcp add olano-ai-mcp-singapore -t stdio -c npx -a -y @olano/mcp-singapore
{
"mcpServers": {
"olano-ai-mcp-singapore": {
"command": "npx",
"args": [
"-y",
"@olano/mcp-singapore"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 0
- Stability: 0.97 → pass security
- 17 Sept 26 +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.
- 15 Sept 26 +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.
- 13 Sept 26 +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.
- 11 Sept 26 +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.
- 9 Sept 26 +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.
- 7 Sept 26 +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.
- 5 Sept 26 +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.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/@olano/mcp-singapore@0.4.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | olano-ai/mcp-singapore |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/olano-ai/mcp-singapore/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 2546700080 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:187935bd999d6e663557ad3bd88671375fc8fd848d6027c5f4d2c5e764d2a21610ad0425f9079cdb32b6c742391da3210a65e26a11291fcbad6f45ed0 |
Background: How many MCP packages publish verified provenance →
Dependencies 15 packages
| Packages resolved | 15 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ecda_childcare_search Search Childcare and kindergarten centres ~71
Search and page through Childcare and kindergarten centres. Source: data.gov.sg dataset d_696c994c50745b079b3684f0e90ffc53 (ECDA).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
ecda_vacancy_summary Summarise published ECDA vacancy availability ~90
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.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | yes | – |
| month | string | – | – |
| postalPrefix | string | – | – |
| postal_prefix | string | – | – |
| query | string | – | – |
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
electricity_freshness Check Electricity generation freshness ~23
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
electricity_metadata Electricity generation: metadata ~47
Get official metadata and schema for Electricity generation. Source: data.gov.sg dataset d_ae4afbaf5bc96bde19d8ce85810ab9f4 (EMA).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
electricity_profile Profile Electricity generation ~29
Profile fields and numeric ranges from a bounded sample of Electricity generation.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
electricity_search Search Electricity generation ~66
Search and page through Electricity generation. Source: data.gov.sg dataset d_ae4afbaf5bc96bde19d8ce85810ab9f4 (EMA).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
employment_growth Calculate Singapore employment growth by sector ~37
Select an official annual employment sector series and calculate absolute and percentage annual changes.
| Name | Type | Req | Description |
|---|---|---|---|
| sector | string | yes | – |
| years | integer | – | – |
No output schema declared.
No examples provided.
employment_sector_freshness Check Employment by sector freshness ~24
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
employment_sector_metadata Employment by sector: metadata ~47
Get official metadata and schema for Employment by sector. Source: data.gov.sg dataset d_d2518fed6cc2014f0cd061b4570a9592 (DOS).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
employment_sector_profile Profile Employment by sector ~31
Profile fields and numeric ranges from a bounded sample of Employment by sector.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
employment_sector_search Search Employment by sector ~66
Search and page through Employment by sector. Source: data.gov.sg dataset d_d2518fed6cc2014f0cd061b4570a9592 (DOS).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
finance_mortgage_affordability Estimate Singapore mortgage repayment headroom ~90
Apply user-configurable MSR and TDSR assumptions. This is not an eligibility, approval, or regulatory determination.
| Name | Type | Req | Description |
|---|---|---|---|
| existingMonthlyDebt | number | – | – |
| grossMonthlyIncome | number | yes | – |
| monthlyMortgage | number | – | – |
| msrPercent | number | – | – |
| propertyType | string | – | – |
| tdsrPercent | number | – | – |
No output schema declared.
No examples provided.
finance_mortgage_payment Calculate an illustrative mortgage payment ~65
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annualRate | number | yes | – |
| principal | number | yes | – |
| years | integer | yes | – |
No output schema declared.
No examples provided.
finance_mortgage_rates_history Get official Singapore mortgage-rate history ~53
Retrieve bounded SORA and bank interest-rate history from a free official data.gov.sg API dataset.
| Name | Type | Req | Description |
|---|---|---|---|
| periods | integer | – | – |
| series | string | – | For example: 3 Month SORA |
No output schema declared.
No examples provided.
finance_mortgage_rates_latest Get latest official Singapore mortgage-rate context ~54
Retrieve latest SORA and bank interest-rate series from a free official data.gov.sg API dataset. These are reference rates, not lender offers.
| Name | Type | Req | Description |
|---|---|---|---|
| series | string | – | For example: SORA or housing |
No output schema declared.
No examples provided.
finance_mortgage_stress_test Stress-test a mortgage ~46
Compare monthly payments across user-supplied illustrative interest rates.
| Name | Type | Req | Description |
|---|---|---|---|
| principal | number | yes | – |
| rates | array | yes | – |
| years | integer | yes | – |
No output schema declared.
No examples provided.
finance_singapore_data_availability Check Singapore finance data availability ~35
Explain exactly which finance data Olano can access through stable free APIs and which categories require official or licensed sources.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
fx_basket Value a foreign-currency basket in SGD ~48
Apply official MAS monthly average rates to a bounded set of foreign-currency amounts with correct per-one or per-100 scaling.
| Name | Type | Req | Description |
|---|---|---|---|
| holdings | array | yes | – |
| period | string | – | – |
No output schema declared.
No examples provided.
fx_history Get normalized MAS exchange-rate history ~36
Get a bounded official monthly exchange-rate history with explicit foreign-unit scaling.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| periods | integer | – | – |
No output schema declared.
No examples provided.
fx_rate Get a normalized MAS exchange rate ~44
Get an official MAS average exchange-rate observation and make per-one versus per-100 foreign-currency units explicit.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| period | string | – | – |
No output schema declared.
No examples provided.
gdp_growth_freshness Check GDP year-on-year growth freshness ~25
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdp_growth_metadata GDP year-on-year growth: metadata ~51
Get official metadata and schema for GDP year-on-year growth. Source: data.gov.sg dataset d_a5ff719648a0e6d4b4c623ee383ab686 (DOS).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdp_growth_profile Profile GDP year-on-year growth ~34
Profile fields and numeric ranges from a bounded sample of GDP year-on-year growth.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
gdp_growth_search Search GDP year-on-year growth ~70
Search and page through GDP year-on-year growth. Source: data.gov.sg dataset d_a5ff719648a0e6d4b4c623ee383ab686 (DOS).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
gdp_industry_compare Rank Singapore industries by quarterly GDP growth ~42
Rank every numeric industry row by official year-on-year GDP growth for a requested quarter, while preserving the matched source column.
| Name | Type | Req | Description |
|---|---|---|---|
| quarter | string | yes | – |
No output schema declared.
No examples provided.
hawker_centres_freshness Check Government hawker centres freshness ~26
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hawker_centres_metadata Government hawker centres: metadata ~52
Get official metadata and schema for Government hawker centres. Source: data.gov.sg dataset d_68a42f09f350881996d83f9cd73ab02f (NEA).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hawker_centres_profile Profile Government hawker centres ~34
Profile fields and numeric ranges from a bounded sample of Government hawker centres.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
hawker_centres_search Search Government hawker centres ~71
Search and page through Government hawker centres. Source: data.gov.sg dataset d_68a42f09f350881996d83f9cd73ab02f (NEA).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
hdb_carparks_freshness Check HDB carpark information freshness ~26
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hdb_carparks_metadata HDB carpark information: metadata ~51
Get official metadata and schema for HDB carpark information. Source: data.gov.sg dataset d_23f946fa557947f93a8043bbef41dd09 (HDB).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hdb_carparks_profile Profile HDB carpark information ~35
Profile fields and numeric ranges from a bounded sample of HDB carpark information.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
hdb_carparks_search Search HDB carpark information ~70
Search and page through HDB carpark information. Source: data.gov.sg dataset d_23f946fa557947f93a8043bbef41dd09 (HDB).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
hdb_resale_freshness Check HDB resale flat prices freshness ~26
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hdb_resale_metadata HDB resale flat prices: metadata ~56
Get official metadata and schema for HDB resale flat prices. Source: data.gov.sg dataset d_8b84c4ee58e3cfc0ece0d773c8ca6abc (HDB).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hdb_resale_profile Profile HDB resale flat prices ~35
Profile fields and numeric ranges from a bounded sample of HDB resale flat prices.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
hdb_resale_search Search raw HDB resale transactions ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
No output schema declared.
No examples provided.
hdb_resale_stats Query and summarise HDB resale transactions ~157
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
insights_align_series Align two time series by calendar period ~56
Normalize common monthly, quarterly and annual period formats to the safest shared frequency and align overlapping observations.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregation | string | – | – |
| frequency | string | – | – |
| left | array | yes | – |
| right | array | yes | – |
No output schema declared.
No examples provided.
insights_compare_series Compare period-aligned time series ~53
Automatically align different calendar granularities, calculate differences, descriptive statistics and Pearson correlation.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregation | string | – | – |
| frequency | string | – | – |
| left | object | yes | – |
| right | object | yes | – |
No output schema declared.
No examples provided.
insights_visualize_series Visualise a labelled time series ~59
Create a sparkline, ASCII chart, statistics, point changes and chart-ready JSON from labelled observations.
| Name | Type | Req | Description |
|---|---|---|---|
| maxPoints | integer | – | – |
| observations | array | yes | – |
| title | string | – | – |
| unit | string | – | – |
No output schema declared.
No examples provided.
iras_tax_freshness Check IRAS tax collection freshness ~25
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
iras_tax_metadata IRAS tax collection: metadata ~49
Get official metadata and schema for IRAS tax collection. Source: data.gov.sg dataset d_21e22578cabce897e8b27801e5596140 (IRAS).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
iras_tax_mix Calculate Singapore tax collection mix ~38
Calculate category shares from official IRAS collections for one financial year in the published S$ thousand unit.
| Name | Type | Req | Description |
|---|---|---|---|
| financialYear | string | – | – |
No output schema declared.
No examples provided.
iras_tax_profile Profile IRAS tax collection ~33
Profile fields and numeric ranges from a bounded sample of IRAS tax collection.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
iras_tax_search Search IRAS tax collection ~68
Search and page through IRAS tax collection. Source: data.gov.sg dataset d_21e22578cabce897e8b27801e5596140 (IRAS).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
live_births_freshness Check Live births freshness ~25
Inspect official metadata and sample dates to flag stale or frozen data.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
live_births_metadata Live births: metadata ~46
Get official metadata and schema for Live births. Source: data.gov.sg dataset d_d05c760928eb5eaa58006d83462b834e (DOS).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
live_births_profile Profile Live births ~31
Profile fields and numeric ranges from a bounded sample of Live births.
| Name | Type | Req | Description |
|---|---|---|---|
| sampleSize | integer | – | – |
No output schema declared.
No examples provided.
live_births_search Search Live births ~65
Search and page through Live births. Source: data.gov.sg dataset d_d05c760928eb5eaa58006d83462b834e (DOS).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
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.