Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Singapore MCP by Olano

NPM · @OLANO/MCP-SINGAPORE · SCANNED SEP 20

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

+2 this week 93 Trust /100
Trust breakdown (7 categories)

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
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.

npm · @olano/mcp-singapore

# add to Claude Code
claude mcp add olano-ai-mcp-singapore -- npx -y @olano/mcp-singapore
// .cursor/mcp.json
{
  "mcpServers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
# add to Codex CLI
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
    }
  }
}
# add to OpenClaw
openclaw mcp add olano-ai-mcp-singapore --command npx --arg -y --arg @olano/mcp-singapore
# ~/.hermes/config.yaml
mcp_servers:
  olano-ai-mcp-singapore:
    command: "npx"
    args: ["-y", "@olano/mcp-singapore"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "olano-ai-mcp-singapore": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
# add to Vellum
assistant mcp add olano-ai-mcp-singapore -t stdio -c npx -a -y @olano/mcp-singapore
// mcp.json
{
  "mcpServers": {
    "olano-ai-mcp-singapore": {
      "command": "npx",
      "args": [
        "-y",
        "@olano/mcp-singapore"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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 →

MCP tools · 291 exposed · ~12,264 tokens

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 →

Tool Tokens
ecda_childcare_search ~71

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

ecda_vacancy_summary ~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.

NameTypeReqDescription
levelstringyes
monthstring
postalPrefixstring
postal_prefixstring
querystring
sampleSizeinteger

No output schema declared.

No examples provided.

electricity_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 ~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 ~29

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

electricity_search ~66

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

employment_growth ~37

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

NameTypeReqDescription
sectorstringyes
yearsinteger

No output schema declared.

No examples provided.

employment_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 ~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 ~31

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

employment_sector_search ~66

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

finance_mortgage_affordability ~90

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

NameTypeReqDescription
existingMonthlyDebtnumber
grossMonthlyIncomenumberyes
monthlyMortgagenumber
msrPercentnumber
propertyTypestring
tdsrPercentnumber

No output schema declared.

No examples provided.

finance_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.

NameTypeReqDescription
annualRatenumberyes
principalnumberyes
yearsintegeryes

No output schema declared.

No examples provided.

finance_mortgage_rates_history ~53

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

NameTypeReqDescription
periodsinteger
seriesstringFor example: 3 Month SORA

No output schema declared.

No examples provided.

finance_mortgage_rates_latest ~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.

NameTypeReqDescription
seriesstringFor example: SORA or housing

No output schema declared.

No examples provided.

finance_mortgage_stress_test ~46

Compare monthly payments across user-supplied illustrative interest rates.

NameTypeReqDescription
principalnumberyes
ratesarrayyes
yearsintegeryes

No output schema declared.

No examples provided.

finance_singapore_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 ~48

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

NameTypeReqDescription
holdingsarrayyes
periodstring

No output schema declared.

No examples provided.

fx_history ~36

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

NameTypeReqDescription
currencystringyes
periodsinteger

No output schema declared.

No examples provided.

fx_rate ~44

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

NameTypeReqDescription
currencystringyes
periodstring

No output schema declared.

No examples provided.

gdp_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 ~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 ~34

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

gdp_growth_search ~70

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

gdp_industry_compare ~42

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

NameTypeReqDescription
quarterstringyes

No output schema declared.

No examples provided.

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 ~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 ~34

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

hawker_centres_search ~71

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

hdb_carparks_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 ~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 ~35

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

hdb_carparks_search ~70

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

hdb_resale_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 ~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 ~35

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

hdb_resale_search ~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.

NameTypeReqDescription
blockstring
flatModelstring
flatTypestring
limitinteger
monthstring
offsetinteger
querystringLegacy data.gov.sg full-text query. Prefer the structured filters because multi-term q searches may be rejected upstream.
sortOrderstring
streetstring
townstring

No output schema declared.

No examples provided.

hdb_resale_stats ~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.

NameTypeReqDescription
endMonthstring
flatTypestring
latestMonthsintegerNumber of latest available matching months to include when startMonth and endMonth are omitted.
sampleSizeinteger
startMonthstring
streetstring
townstring
transactionLimitintegerMaximum selected transaction rows to return alongside the statistics.

No output schema declared.

No examples provided.

insights_align_series ~56

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

NameTypeReqDescription
aggregationstring
frequencystring
leftarrayyes
rightarrayyes

No output schema declared.

No examples provided.

insights_compare_series ~53

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

NameTypeReqDescription
aggregationstring
frequencystring
leftobjectyes
rightobjectyes

No output schema declared.

No examples provided.

insights_visualize_series ~59

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

NameTypeReqDescription
maxPointsinteger
observationsarrayyes
titlestring
unitstring

No output schema declared.

No examples provided.

iras_tax_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 ~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 ~38

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

NameTypeReqDescription
financialYearstring

No output schema declared.

No examples provided.

iras_tax_profile ~33

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

iras_tax_search ~68

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

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 ~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 ~31

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

NameTypeReqDescription
sampleSizeinteger

No output schema declared.

No examples provided.

live_births_search ~65

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

NameTypeReqDescription
limitinteger
offsetinteger
querystring

No output schema declared.

No examples provided.

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.