no_trip
Plan door-to-door public transport trips between two European locations using NSR IDs. Get route options with departure times and results customization.
Instructions
Door-to-door trip planning between two StopPlaces (NSR IDs).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| from_id | Yes | ||
| to_id | Yes | ||
| date_time | No | ||
| results | No |
Implementation Reference
- tools/no.py:219-269 (handler)The main asynchronous handler function for the 'no_trip' tool. It validates inputs, constructs a GraphQL query for Entur's Journey Planner, and fetches trip patterns between from_id and to_id stop places.async def no_trip(from_id: str, to_id: str, date_time: str | None = None, results: int | None = 5) -> dict[str, object]: """ Args: from_id: NSR ID for origin (e.g., 'NSR:StopPlace:58368'). to_id: NSR ID for destination. date_time: ISO 8601 datetime (e.g., '2025-08-23T12:00:00+02:00'). Optional. results: Number of trip patterns. Default: 5. Returns: GraphQL `data` with trip -> tripPatterns -> legs. """ if not from_id or not to_id: raise ValueError("'from_id' and 'to_id' are required.") query = """ query PlanTrip($from: String!, $to: String!, $results: Int!, $dateTime: DateTime) { trip( from: { place: $from } to: { place: $to } numTripPatterns: $results dateTime: $dateTime ) { tripPatterns { duration walkDistance legs { mode distance aimedStartTime expectedStartTime aimedEndTime expectedEndTime fromPlace { name } toPlace { name } line { id name publicCode transportMode } } } } } """ variables = { "from": from_id.strip(), "to": to_id.strip(), "results": int(results or 5), "dateTime": date_time, # may be None } logger.info( "🇳🇴 Entur trip: %s -> %s (results=%s, dateTime=%s)", variables["from"], variables["to"], variables["results"], variables["dateTime"] ) return await _post_graphql(query, variables)
- tools/no.py:215-218 (registration)MCP tool registration decorator specifically for 'no_trip', including name and description.@mcp.tool( name="no_trip", description="Door-to-door trip planning between two StopPlaces (NSR IDs)." )
- tools/no.py:220-228 (schema)Docstring within the handler defining input parameters (from_id, to_id, date_time, results) and output (GraphQL data with tripPatterns).""" Args: from_id: NSR ID for origin (e.g., 'NSR:StopPlace:58368'). to_id: NSR ID for destination. date_time: ISO 8601 datetime (e.g., '2025-08-23T12:00:00+02:00'). Optional. results: Number of trip patterns. Default: 5. Returns: GraphQL `data` with trip -> tripPatterns -> legs. """
- tools/no.py:8-8 (schema)Module docstring listing the function signature and defaults for no_trip.- no_trip(from_id, to_id, date_time=None, results=5)
- tools/no.py:316-316 (registration)Includes 'no_trip' in the list of registered tool names returned by register_no_tools.return ["no_search_places", "no_stop_departures", "no_trip", "no_nearest_stops"]