Skip to main content
Glama

plan_route

Plans road-cycling loops, out-and-backs, and one-way routes by start/end, target distance, and flow, climb, or flat preference, returning ranked route options.

Instructions

Plan routes. mode: loop | out_and_back | one_way. start/end: 'lat,lon' or a place name (geocoded; the resolved place is echoed). Loops and out-and-backs need length_km (+-10%) or min_km and max_km; one_way needs end and ignores length. objective: flow (fewest stops/turns) | climb | flat. return_mode: same | free. settings: optional dict from list_presets (e.g. turn_cost, lane_bonus, weights; main_road_penalty 1..5 multiplies the cost of primary, secondary and trunk roads, 2.5 = 'quiet roads' preset). Loops take 30-60 s. Returns a markdown table of ranked routes (use the ids with route_details / export_gpx) plus plan notes.

Input Schema

NameRequiredDescriptionDefault
nNo
endNo
modeYes
startYes
max_kmNo
min_kmNo
bearingsNo
settingsNo
length_kmNo
objectiveNoflow
return_modeNosame

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it discloses geocoding of place names (echoed back), a 30-60 s latency for loops, and that length is ignored for one_way. It does not say whether the call is read-only/side-effect free, what happens on unresolvable place names, or the shape of plan notes.

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?

Telegraphic parameter-grouped style with the most load-bearing facts (modes, distance rules, objective) up front and return behavior last. Every clause carries information, though the run-on density and the stray line break make it slightly harder to scan than it needs to be.

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

Completeness4/5

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

For an 11-parameter tool with an output schema, the description covers all the semantically complex inputs plus a one-line note on the returned markdown table and plan notes. The gaps are the unmentioned n (result count) and bearings parameters, which no structured field explains.

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

Parameters4/5

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

Schema description coverage is 0%, so the description does nearly all the work: it defines mode values, start/end formats, the length family and its tolerance, objective values, return_mode values, and the settings dict including the main_road_penalty 1..5 scale with a concrete 2.5 example. Two parameters, n and bearings, are left entirely undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Plan routes') and immediately enumerates the mode vocabulary, so an agent knows this is the route-generation entry point. It also implies its place in the pipeline by telling the caller to feed returned ids into route_details / export_gpx, though it never explicitly contrasts itself with those siblings.

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 concrete conditional rules: loops and out-and-backs require length_km (+-10%) or min_km/max_km, one_way requires end and ignores length, and settings should come from list_presets. Alternatives are implicit via the downstream id usage rather than stated as explicit when-not-to-use guidance.

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