GnistAI GnistAI
Log in

GBFS Bikeshare

Real-time bike and scooter sharing availability across 30+ city systems worldwide — stations, bikes available, docks, and system info via the open GBFS standard.

Overview   |   MCP   |   REST API   |   OpenAPI   |   CLI   |   Tutorial   |   Toolkits   |   Home
status: healthy status status healthy healthy tools: 5 tools tools 5 5 type: api wrapper type type api wrapper api wrapper lifecycle: maintained lifecycle lifecycle maintained maintained Transport

Data source: GBFS (General Bikeshare Feed Specification) — city operators

MCP Endpoint (Streamable HTTP) https://context.gnist.ai/mcp/gbfs/
Authentication

All requests require a Gnist-API-Key header (or api_key query parameter).

Free tier: 100 calls/day. Get your API key.

Tools (5)

list_systems

List available bikeshare/scooter systems from the catalog.

Returns a curated list of 30+ major city bike/scooter sharing systems
worldwide that publish GBFS (General Bikeshare Feed Specification) data.
Filter by country or search by name/city/operator.

Use this first to discover system_ids, then call get_stations or
get_system_info with the chosen system_id.

Args:
country: 2-letter ISO country code filter (e.g. "NO" for Norway).
query: Search text matching name, city, or operator name.
limit: Maximum systems to return (1-100).

Returns:
List of systems with system_id, name, city, country, operator.

ParameterTypeRequiredDescription
countryanyoptionalISO 3166-1 alpha-2 country code to filter systems (e.g. "NO", "US", "GB", "FR").
queryanyoptionalText search across system name, city, and operator (e.g. 'Oslo', 'Lime', 'Citi Bike').
limitintegeroptionalMaximum systems to return (1-100, default 50). (default: 50)
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "list_systems",
    "arguments": {}
  }
}
get_system_info

Get metadata for a specific bikeshare system.

Fetches the system_information.json GBFS feed for the system and
returns operator details, timezone, contact info, and available feeds.

Args:
system_id: System identifier from list_systems (e.g. "oslobysykkel").

Returns:
System metadata including name, operator, URL, timezone, and
a list of available GBFS feed names.

ParameterTypeRequiredDescription
system_idstringrequiredSystem identifier from list_systems (e.g. "oslobysykkel", "lyft_nyc", "divvy").
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "get_system_info",
    "arguments": {
      "system_id": "example"
    }
  }
}
get_stations

Get stations with real-time bike/dock availability for a bikeshare system.

Merges static station info (name, location, capacity) with live status
(bikes available, docks available, vehicle types). Returns all stations
or filters by name/address text search.

Use get_station_status for detailed info on a single station.

Args:
system_id: System identifier (e.g. "oslobysykkel").
query: Optional text filter on station name or address.
limit: Maximum stations to return (1-100, default 50).

Returns:
Stations with name, lat/lon, capacity, bikes_available, docks_available,
is_renting, is_returning, last_reported timestamp.

ParameterTypeRequiredDescription
system_idstringrequiredSystem identifier from list_systems (e.g. "oslobysykkel", "lyft_nyc").
queryanyoptionalText filter on station name or address (e.g. 'Central Station', 'Main St').
limitintegeroptionalMaximum stations to return (1-100, default 50). (default: 50)
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "get_stations",
    "arguments": {
      "system_id": "example"
    }
  }
}
get_station_status

Get real-time availability for a specific bikeshare station.

Returns live data including bikes available, docks available,
operational status (is_renting, is_returning), and last update timestamp.
Also includes static info (name, address, coordinates, capacity).

Args:
system_id: System identifier (e.g. "oslobysykkel").
station_id: Station identifier from get_stations results.

Returns:
Station details with name, address, lat/lon, capacity, bikes_available,
docks_available, is_installed, is_renting, is_returning, last_reported.

ParameterTypeRequiredDescription
system_idstringrequiredSystem identifier from list_systems (e.g. "oslobysykkel", "lyft_nyc").
station_idstringrequiredStation identifier from get_stations results.
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "get_station_status",
    "arguments": {
      "system_id": "example",
      "station_id": "example"
    }
  }
}
report_feedback

Report a bug, feature request, or general feedback for this data source.

Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.

Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.

ParameterTypeRequiredDescription
feedbackstringrequired
feedback_typestringoptional (default: "general")
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "report_feedback",
    "arguments": {
      "feedback": "example"
    }
  }
}

Quick Start

Shell
curl -X POST "https://context.gnist.ai/mcp/gbfs/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_system_info", "arguments": {"system_id": "example"}}}'
Python
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/gbfs/",
    headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "get_system_info",
    "arguments": {
      "system_id": "example"
    }
  }
},
)
print(resp.json())

Related Toolkits (Transport)

Resources