Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the PTV Timetable API - Version 3, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fptv.vic.gov.au%2Fptv-vic" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fptv.vic.gov.au%2Fptv-vic" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with PTV Timetable API - Version 3 API.
Get upcoming departures from a stop for every route or one route, with direction_id, max_results, include_cancelled, and look_backwards options
Find stops and myki ticket outlets near a latitude and longitude within a max_distance
Search stops, routes, and outlets by a search term, optionally matching by suburb or GTFS stop id
List current or planned disruptions for all route types, one route, one stop, or a route and stop together
GET STARTED
Trace a service run's stopping pattern, including skipped stops and vehicle position when Run is expanded
Estimate a myki fare between a minimum and maximum zone, including free tram zone journeys
Read stop facilities such as amenities, accessibility, staffing, and ticketing at Metro and V/Line stations
Patterns agents use PTV Timetable API - Version 3 API for, with concrete tasks.
★ Agent answers for Victorian commuters
An AI assistant asked when the next service leaves can search the PTV Timetable API for the stop by name, then call the departures operation for that stop and route type to return the next few services, with the Run expanded to include vehicle position where PTV publishes real-time data. A follow-up disruption lookup for the same stop lets the agent warn about delays in the same answer.
Search for 'Flinders Street', take the returned train stop_id, then get departures for route_type 0 at that stop with max_results 5 and expand Run
Disruption alerts for a route
Apps and bots that notify riders filter disruptions by route or stop and by disruption_status of current or planned. The disruption modes operation lists the categories in use, and a single disruption can be fetched by id for its full detail, so an alert service can post a change only once.
Get disruptions for route_id 6 with disruption_status current and summarise each one by title and affected stops
Nearby stops and ticket outlets
Location-aware apps call the stops-by-geolocation operation with a latitude, longitude, route_types filter, and max_distance to list the closest stops, and the outlets-by-geolocation operation to find where to buy or top up a myki card. Stop details then return station facilities such as accessibility and staffing for Metro and V/Line stations.
List stops near latitude -37.8183 and longitude 144.9671 with route_types 1 and max_distance 400, then fetch stop_accessibility details for the closest one
26 endpoints — the ptv timetable api returns public transport victoria's scheduled and real-time departures, routes, stops, and service runs for metropolitan and regional train, tram, and bus services across victoria, including night network.
METHOD
PATH
DESCRIPTION
/v3/departures/route_type/{route_type}/stop/{stop_id}
Departures for all routes from a stop
/v3/stops/location/{latitude},{longitude}
Stops near a location
/v3/search/{search_term}
Search stops, routes, and outlets
/v3/disruptions
Disruptions for all route types
/v3/disruptions/route/{route_id}
Disruptions for a route
/v3/pattern/run/{run_ref}/route_type/{route_type}
Stopping pattern for a service run
/v3/fare_estimate/min_zone/{minZone}/max_zone/{maxZone}
Estimate a fare by zone
/v3/outlets/location/{latitude},{longitude}
Ticket outlets near a location
/v3/departures/route_type/{route_type}/stop/{stop_id}
Departures for all routes from a stop
/v3/stops/location/{latitude},{longitude}
Stops near a location
/v3/search/{search_term}
Search stops, routes, and outlets
/v3/disruptions
Disruptions for all route types
/v3/disruptions/route/{route_id}
Disruptions for a route
/v3/pattern/run/{run_ref}/route_type/{route_type}
Stopping pattern for a service run
/v3/fare_estimate/min_zone/{minZone}/max_zone/{maxZone}
Estimate a fare by zone
What agents get from Jentic-routed access to this vendor.
Setup
Wiring the PTV Timetable API by hand means registering a developer id, computing the request signature PTV's docs describe, and threading route_type, stop_id, and run_ref between calls. Through Jentic you install once, import the PTV Timetable API from the API Directory, and your agent finds each operation by intent with its parameters already described.
Permission scoping
The PTV Timetable API puts the stop id, route id, and run reference in the URL path (/v3/departures/route_type/{route_type}/stop/{stop_id}), so a rule can pin your agent to one stop or one route and the operations you pick. Every operation in this spec is a read, and you decide which lookups the agent may call.
Credential isolation
The spec declares no security scheme, and the devid and signature values travel as ordinary query parameters. Any secret you do keep in your own Jentic One instance is held encrypted, injected at execution time, and never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'next departures from a stop' or 'current disruptions on a route', and Jentic returns the matching PTV operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using PTV Timetable API - Version 3 API through Jentic.
What authentication does the PTV Timetable API use?
The PTV Timetable API OpenAPI spec declares no security scheme. Instead, its operations accept devid and signature query parameters, described as your developer id and the authentication signature for the request. PTV's website explains how to register for a developer id and calculate the signature, so check those instructions before calling the live API.
Can I get real-time departures with the PTV Timetable API?
Yes, where PTV makes real-time data available for metropolitan train, tram, and bus services. GET /v3/departures/route_type/{route_type}/stop/{stop_id} returns departures for a stop, and expanding Run with the expand parameter adds VehiclePosition and VehicleDescriptor information.
What are the rate limits for the PTV Timetable API?
The OpenAPI spec does not specify rate limits for the PTV Timetable API. Check PTV's API FAQ at http://ptv.vic.gov.au/apifaq for current usage terms.
How do I find stops near a location with the PTV Timetable API through Jentic?
Search Jentic for 'find stops near a location', which returns GET /v3/stops/location/{latitude},{longitude} with its input schema, then pass the coordinates with optional route_types, max_results, and max_distance filters. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Is there a PTV Timetable MCP server?
You don't need an MCP server to give your agent the PTV Timetable API. Jentic connects it directly from the API Directory: import it and your agent calls its operations, which it finds on demand by intent rather than loading every tool definition into its context.
Can I limit what my agent is allowed to do with the PTV Timetable API?
Yes. Write a rule that allows only the departures and disruptions operations, and pin the departures path to one stop id such as /v3/departures/route_type/0/stop/1071, so a commuter bot answers for its home station and nothing wider, and every call it makes is logged.
Know of an official OpenAPI document? Contribute it →
For Agents
Look up departures from a Victorian train, tram, or bus stop, find stops and myki outlets near a location, read current or planned disruptions, and estimate a fare between zones. Covers metropolitan and regional services, including real-time data where PTV publishes it.
Use for: When is the next tram from stop 2120?, Find all train stations within 500 metres of my location, Check whether there are current disruptions on the Frankston line, List all planned disruptions for metropolitan trains
Not supported: Does not handle journey planning between two addresses, ticket purchase, or myki card top-ups. Use for Victorian public transport departures, stops, disruptions, and fare estimates only.
The PTV Timetable API returns Public Transport Victoria's scheduled and real-time departures, routes, stops, and service runs for metropolitan and regional train, tram, and bus services across Victoria, including Night Network. It finds stops and myki ticket outlets near a latitude and longitude or by search term, reports current and planned disruptions by route or stop, and estimates fares between myki zones. Train timetable data is updated daily and the remaining data weekly, and it is the same API PTV uses for its own apps.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
/v3/outlets/location/{latitude},{longitude}
Ticket outlets near a location
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>