# DirectBus Singapore

> Find direct commuter buses in Singapore: routes, stops, departure times and fares.

- name: sg.directbus/directbus
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 82/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/sg.directbus%2Fdirectbus
- tools: https://api.protogrid.dev/v1/servers/sg.directbus%2Fdirectbus/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "directbus": {
      "type": "http",
      "url": "https://directbus.sg/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-2d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 82/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_bus (destructiveHint, idempotentHint); find_direct_buses (destructiveHint, idempotentHint); nearest_stops (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 792 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 792 tokens to load them all
- tool set hash: 3a2b4af5a24f68f218fe85440ec7fa22
- tools last changed: 2026-11-13T10:54:26.501Z
- badge: [![protogrid quality](https://protogrid.dev/badge/sg.directbus/directbus.svg)](https://protogrid.dev/servers/sg.directbus/directbus)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `list_areas` changed (title, annotations)
- 2026-11-13 `nearest_stops` changed (title, annotations)
- 2026-11-13 `get_bus` changed (title, annotations)
- 2026-11-13 `find_direct_buses` changed (title, annotations)

Full history: https://api.protogrid.dev/v1/servers/sg.directbus%2Fdirectbus/changes

## Remotes

- https://directbus.sg/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `find_direct_buses`: Find direct buses (Premium, City Direct, ShareTransport) in Singapore that stop near an office/destination. Give the office as office_area (a name or slug from list_areas, e.g. "Raffles Place", "one-north") or as office_lat/office_lng. Optionally give home as home_area (a neighbourhood like "Punggol") or home_lat/home_lng to keep only buses that pick up near home (within 1 km of home_lat/home_lng, or anywhere in the home_area neighbourhood). Returns up to 15 results with service number, type, operator, nearest stop, departure times, fare and the directbus.sg page URL.
- `get_bus`: Get full details for one direct bus service: all route stops with estimated arrival times, fare, operator contact, operator timetable or booking link, schedule (AM and PM runs) and the directbus.sg page URL. Accepts a service number (e.g. "776", "SKM1", "BA 2 (AM)") or a URL slug (e.g. "ba-2-am", "skm1", "776").
- `list_areas`: List all office areas (CBD, business parks) served by direct buses, and all residential neighbourhoods that have direct buses. Includes coordinates and directbus.sg page URLs. Use this to discover what areas exist and get coordinates to pass to find_direct_buses.
- `nearest_stops`: Find the nearest direct-bus pickup stops to a location in Singapore. Returns up to 10 stops with the buses that stop there and walking distance in metres.
