Skip to main content
Glama
DogPolicies MCP Server

DogPolicies MCP Server

by xultrax-web

I-5 corridor by stretch

dogpolicies_i5_corridor
Read-onlyIdempotent

Find dog-friendly stops along California's I-5 by named stretch, mile range, or distance ahead, with sourced restrooms, water, pet areas, dog parks, hours, and nearby exits.

Instructions

The I-5 corridor in California as eleven named stretches (strips) on the I-5 centerline, from San Ysidro (s = 0 m) to the Oregon line (s ≈ 1,281,400 m), and the dog stops in any stretch, mile range or window ahead of a point. Every stop carries its s in meters from San Ysidro, its Caltrans odometer mile, the side of the road it serves (right or left of northbound travel, or both), its distance off the freeway, the road's elevation, and restrooms, water, pet area, dog park and hours as its official source states them. A family stop is one whose official source states restrooms and a pet area or dog park. A paired stop is a freeway exit with places to stop for people nearby (located through OpenStreetMap, counted by kind, never named and not verified for restrooms) matched to the nearest DogPolicies place that allows dogs within about a mile, with its rule and source.

With no stretch, miles or point, the result is the list of stretches with their s and mile ranges and stop counts. Strips: sandiego (San Ysidro → Camp Pendleton), orange-la (Camp Pendleton → East LA), grapevine (East LA → Wheeler Ridge), kern-westside (Wheeler Ridge → Kettleman), westside (Kettleman → Santa Nella), delta (Santa Nella → Stockton), sacramento (Stockton → Woodland), valley (Woodland → Williams), tehama (Williams → Red Bluff), shasta (Red Bluff → Mt Shasta), siskiyou (Mt Shasta → Siskiyou Summit).

Examples:

  • "What is between the Grapevine and Kettleman?" -> strip="grapevine" (East LA to Wheeler Ridge) and strip="kern-westside" (Wheeler Ridge to Kettleman)

  • "The next 5 family stops northbound from Stockton" -> near={lat:37.95, lon:-121.29}, direction="north", family=true, limit=5

  • "Every stop between mile 300 and 340" -> from_mile=300, to_mile=340

  • "Exits with somewhere for people and a park for the dog in the Sacramento stretch" -> strip="sacramento", paired=true

Input Schema

NameRequiredDescriptionDefault
nearNoA point on or near I-5; the window starts at the nearest point of the road
kindsNoKinds of stops to include; all by default
limitNoMaximum stops to return
stripNoA stretch by id (sandiego, orange-la, grapevine, kern-westside, westside, delta, sacramento, valley, tehama, shasta, siskiyou)
familyNoOnly family stops
offsetNoStops to skip
pairedNoAlso list the paired stops in the window
to_mileNoEnd of a mile range
directionNoDirection of travel from near; north means increasing snorth
from_mileNoStart of a mile range (Caltrans odometer)
ahead_milesNoWindow in miles from near in the direction of travel
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown
dog_friendly_onlyNoLeave out stops where dogs are not allowed

Output Schema

NameRequiredDescriptionDefault
as_ofYesDate the data was built (YYYY-MM-DD)
stopsYes
totalYes
stripsYes
windowYes
licenseYes
axis_versionYes
paired_stopsYes
attribution_urlYes
attribution_textYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description adds real behavior beyond that: the default result when no arguments are given is the stretch list with s/mile ranges and counts, and paired stops are disclosed as OpenStreetMap-derived, counted by kind, never named, and not verified for restrooms. It also states the default window (50 miles) and default filtering (dog_friendly_only), though it says nothing about ordering or truncation behavior when limit is hit.

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?

The structure is front-loaded: core definition, then output fields, then the two composite concepts, then default behavior, then the strip table, then examples. Some redundancy exists — the eleven strip ids appear in the prose, again in the 'Strips:' list, and again as the schema enum — but the geographic boundaries in the prose list earn their place.

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 a 13-parameter tool with nested objects, enums, and an output schema, the description supplies what the schema cannot: what each returned field means (s in meters, Caltrans mile, side of road, distance off freeway, amenities as stated by the official source), what the composites select, and what the no-argument default returns. An agent can construct a correct call and interpret the response from the description plus schema alone.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter carries its own description, so the baseline is 3. The description does add value by giving each strip id a real-world extent (e.g. grapevine = East LA to Wheeler Ridge) and by defining what 'family' and 'paired' actually select, which the schema only labels tersely; it does not clarify the interactions between near, strip, and from_mile/to_mile when several are supplied.

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?

The opening sentence names the exact resource (I-5 corridor in California as eleven named stretches) and the derived results (dog stops by stretch, mile range, or window), which is a precise verb-plus-resource statement. The enumerated strip ids with their geographic endpoints remove any ambiguity about what 'stretch' means, and the special composites (family stop, paired stop) are defined inline.

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?

Four worked examples map natural-language requests onto concrete parameter sets (grapevine/kern-westside for a between-two-places question, near+direction+family+limit for 'next 5', from_mile/to_mile for a mile range, strip+paired for exits with people-and-dog facilities), which is strong implicit when-to-use guidance. What is missing is any routing against overlapping siblings such as dogpolicies_route_stops, dogpolicies_near, or dogpolicies_plan_trip, so the agent must infer which corridor tool to pick.

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