Skip to main content
Glama

Connections

connections

Find exact TTC trips between two places with timed transfers, departure and arrival times, Pareto-ranked options, and relevant disruptions. Search by depart-at or arrive-by for route planning.

Instructions

Timetable-exact trips between two places on the TTC: every ride is a real trip with its departure and arrival, transfers are timed (walking or station pathways plus a 2-minute change buffer), and the options are the Pareto set over arrival time and transfers, ranked by arrival. origin and destination are a stop number, a station id or alias, or {"lat", "lon"} from a geocoder. depart_at (ISO, Toronto when it has no offset; default now) with window_min (0 to 60, default 30) returns the journeys found every five minutes across the window (every ten when window_min is over 30), one per route sequence; arrive_by instead returns the latest departures that arrive on time, latest first, the first within five minutes of the latest that does; give one or the other. max_transfers is 0 to 3, walk_m (metres to and from the stops) 1 to 2000, limit 1 to 10. Each ride carries basis realtime (an update was applied to its trip, within an hour of now), schedule, or estimate; the first ride lists the next departures in its direction. A closure masks the closed section; when its shuttle runs the shuttle is an estimated leg (assumed headway and speed, stated in its note) and the option is flagged estimate: true and ranked last. A detoured route's trips skip their stops with the published delay. Every option lists the disruptions it touches with the legs they affect, and an empty answer says why. Closures are judged at the query instant, so the note names one that starts or ends inside the search. Live departures and disruptions are best effort, from the TTC's own site endpoints.

Input Schema

NameRequiredDescriptionDefault
limitNo
originYes
walk_mNo
arrive_byNo
depart_atNo
window_minNo
destinationYes
max_transfersNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the whole burden and does so: it discloses the sampling cadence (every five minutes, ten past a 30-minute window), the Pareto ranking over arrival and transfers, the basis taxonomy (realtime/schedule/estimate) and the one-hour realtime freshness bound. It also anticipates failure modes — closures masking a section, shuttle legs assumed rather than timed and ranked last with estimate: true, detours carrying published delays, and empty answers stating why — plus that live data is best effort.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but justified — the length is bought by eight undocumented parameters and rich behavioral caveats, and the purpose is stated in the first clause before detail. It loses a point for being a single run-on paragraph where parameter ranges are buried mid-prose, which makes scanning harder than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no annotations and no schema descriptions, this is complete: it covers valid inputs, defaults, mutual exclusion, ranking, live-data caveats and degradation paths. Return-value explanation is not needed because an output schema exists, yet it still tells the agent what each ride and option carries (basis, disruptions per leg, first-ride next departures).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry everything, and it does: it documents the four accepted origin/destination forms (stop number, station id, alias, {"lat","lon"} from a geocoder), the ISO timezone fallback for depart_at, and explicit ranges for window_min (0-60), max_transfers (0-3), walk_m (1-2000 m) and limit (1-10). It also explains the semantic difference between depart_at and arrive_by rather than just their types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Timetable-exact trips between two places on the TTC,' and immediately qualifies the output as real trips with departure/arrival, not schedules or stop lists. No sibling tool performs point-to-point journey planning, so an agent can distinguish it from find_stops, scheduled_departures or next_trains without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit either/or for the two mutually exclusive time modes ('give one or the other') and states what each returns, which is exactly the decision an agent has to make. It stops short of naming when to prefer a sibling (e.g. scheduled_departures for a single stop), so it is clear context without explicit sibling routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.