SG Parking Live
Server Details
Live HDB carpark availability for Singapore from the official data.gov.sg feed.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct resource+action: list_carparks for discovery, get_carpark_availability for live readings, get_carpark_history for stored snapshots, and health_check for liveness. The descriptions explicitly contrast live vs. stored data, so an agent cannot easily confuse availability with history.
Names are all snake_case and mostly follow verb_noun (get_carpark_*, list_carparks). health_check deviates slightly by being a noun_verb phrase rather than verb_noun, but it remains readable and conventional.
Four tools is lean but each earns its place: discovery, two complementary data reads (live and historical), and a health probe. No redundant or filler tools, though the surface is on the thin side for a data service.
The read-only lifecycle is well covered: discovery, current state, and historical snapshots are all present. Minor gaps exist, such as querying multiple carparks at once or filtering availability by lot type/region, but agents can work around these with repeated calls.
Available Tools
4 toolsget_carpark_availabilityAInspect
Current lots available per lot type for one HDB carpark code (live from data.gov.sg).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | carpark code, e.g. HE12 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It adds useful context that the data is live and sourced from data.gov.sg, but does not cover permissions, rate limits, output format, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant content. The parenthetical source note is useful and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description is nearly complete: it states the return content (availability per lot type), source, and scope. It does not cover edge cases or response structure, but little more is required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single code parameter, so the baseline is 3. The description reinforces that one HDB carpark code is expected but adds no format or validation details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: current lot availability per lot type for one HDB carpark code. It implicitly distinguishes itself from get_carpark_history (current vs. history) and list_carparks (one code vs. many).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the required input context (one HDB carpark code) but does not explicitly say when to use this tool instead of get_carpark_history or list_carparks. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_carpark_historyBInspect
Our stored snapshot history for one carpark code (availability sampled since launch). Deterministic read of our own snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | carpark code, e.g. HE12 | |
| limit | No | max snapshots (default 50, cap 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose two useful traits, that the read is deterministic and drawn from the service's own stored snapshots rather than a live upstream feed. It omits error behavior for unknown codes, pagination/limit behavior, and freshness or staleness characteristics of the snapshots.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core resource, with no filler. The second sentence is slightly redundant with 'stored snapshot history' but does add the determinism trait, so it still earns most of its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should say more about what a snapshot record contains and how results are ordered or bounded. 'Availability sampled since launch' hints at contents, but return shape and volume behavior remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both 'code' and 'limit' are already documented in the schema, and the description adds only the singular framing that history is per carpark code. The baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific noun phrase ('Our stored snapshot history for one carpark code') and scopes it with 'availability sampled since launch', so the resource and its time window are unambiguous. It does not explicitly name the sibling get_carpark_availability or state the live-vs-stored distinction, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can guess this is for historical snapshots rather than current availability, but the description never says when to prefer it over get_carpark_availability or list_carparks. No exclusions, prerequisites, or routing guidance are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkAInspect
Report whether this service is up and which version answered. Use it to confirm the endpoint is reachable before running a real job.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output (up status and version) and implies a read-only operation, but does not explicitly state side-effect safety, idempotency, authentication needs, or rate limits. For a simple zero-parameter health check this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with what the tool reports and then when to use it. Every sentence earns its place with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is very simple: no parameters, no output schema, no annotations. The description covers purpose, output, and usage context sufficiently. Explicit failure or error behavior is not described, but that is a minor gap for a health check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The schema has no properties and coverage is trivially 100%; the description needs no parameter details and provides none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Report' and the resources 'service is up' and 'version answered'. Clearly distinguishes itself from siblings compute_cost, get_rates, and list_sources, which serve unrelated purposes. An agent can identify this as a health/status probe without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it to confirm the endpoint is reachable before running a real job, giving a clear precondition. No when-not or alternative tools are named, but the sibling tools are not alternatives. Context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_carparksAInspect
List HDB carpark codes known from the live Singapore data.gov.sg feed (optionally filtered by code prefix).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max entries (default 50, cap 200) | |
| prefix | No | carpark code prefix filter, e.g. HE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that data comes from a 'live' feed, which tells the agent results are not static. It says nothing about ordering, pagination beyond the schema's limit, or the shape of the returned codes, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and resource, with the optional filter qualifier in parentheses. There is no filler and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but for a 'list of codes' tool the name and description convey what comes back. Source liveness and the filter are covered, and parameter defaults live in the schema. Only ordering/format of the returned list is unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and prefix are already fully documented in the schema. The description's mention of an optional code-prefix filter merely restates that, adding no extra meaning such as matching semantics or case sensitivity. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List'), a precise resource ('HDB carpark codes'), and the upstream source (Singapore data.gov.sg live feed). This inherently separates it from siblings like get_carpark_availability and get_carpark_history, which return different data. It does not explicitly cross-reference those siblings, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'carpark codes' versus the availability/history siblings, so an agent can infer when to reach for it. However, there is no explicit when-to-use statement, no exclusion, and no named alternative for retrieving codes versus live status. That is the definition of minimum-viable implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_carpark_availability - First observed
get_carpark_history - First observed
health_check - First observed
list_carparks
Related MCP Connectors
Provide real-time transportation data including bus arrivals, train service alerts, carpark availa…
data.gov.sg MCP — Singapore open data + real-time environment/transport feeds
Live Saudi smart-parking data: spots, EV chargers, stats, and blog. Read-only, no auth.
Get real-time bus arrival times for any Singapore bus stop by code, with optional service filterin…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceReal-time Singapore government data for AI agents. Weather forecasts, air quality (PSI/PM2.5), HDB carpark availability, and taxi supply from data.gov.sg.12 npm1ISC
- FlicenseAqualityDmaintenanceProvides real-time access to Singapore's Land Transport Authority data, including bus arrivals, traffic conditions, train updates, and carpark availability.7-
- AlicenseNot gradedqualityBmaintenanceEnables access to Singapore government open data and real-time environment/transport feeds including weather, air quality, taxi availability, and traffic incidents.151 npmMIT
- AlicenseAqualityDmaintenanceSingapore property prices, HDB resale transactions, land use/zoning, and nearby amenities via MCP. Uses only free public APIs, no API keys needed.815 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.