DogPolicies
Server Details
Verified dog rules for California and Nevada travel: parks, beaches, hotels, fees, sourced and dated
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- xultrax-web/dogpolicies-mcp
- GitHub Stars
- 0
- Server Listing
- DogPolicies MCP Server
TDQS
Scored across 26 tools
The 13 underlying operations are genuinely distinct (search vs get_place vs near vs plan_trip vs route_stops vs compare_places vs find_hotels), and descriptions cross-reference each other well. However, every operation is duplicated verbatim under the dogrulebook_ prefix, so the tool list presents 26 entries for 13 capabilities and an agent must notice the 'Alias of…' wording to avoid treating them as different tools.
Within each prefix the names are consistently snake_case verb_noun (search_places, get_place, find_hotels, compare_places), which is good. But the surface uses two parallel prefixes for identical functions, which is a structural naming inconsistency even if each half is internally clean.
26 tools is heavy for this domain, and the inflation comes entirely from 13 legacy aliases that add no capability. The genuine 13-tool surface would be well-scoped; as presented it is roughly double what is needed and adds selection noise.
Coverage is excellent: discovery (search_places, near, browse_answers), detail (get_place, get_rule, get_brand_policy), decision support (compare_places, find_hotels, plan_trip, route_stops), freshness (changes_since, changes_near) and a write path (report_correction). All lifecycle stages for a dog-policy lookup/trip-planning domain are present with no obvious dead ends.
Available Tools
26 toolsdogpolicies_browse_answersBrowse answered questionsARead-onlyIdempotentInspect
Ready-made lists that answer common questions (list the state parks, national parks, beaches or hotels that allow dogs), such as "Which California national parks allow dogs?" or "Where can dogs go off leash on California beaches?".
Without a slug, lists every question with its slug and result count. With a slug, returns that question's places.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Question slug from the list, e.g. "off-leash-dog-beaches-california" | |
| limit | No | Maximum results to return | |
| offset | No | Results to skip, for pagination | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| total | Yes | |
| places | No | |
| license | Yes | |
| questions | No | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, and non-destructive behavior. The description adds valuable mode-dependent return behavior: listing all questions with slug and result count, or returning places for a given slug. It does not detail pagination, but the schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loads the core purpose with examples. The second paragraph efficiently explains the two modes. It is slightly verbose with examples but every sentence contributes useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description is complete enough for an agent to call the tool correctly. It explains both modes, including how to obtain slugs from the list mode, which is essential for chaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines each parameter. The description adds meaning beyond the schema by explaining that omitting slug lists all questions with their slugs and counts, while providing a slug returns that question's places. This clarifies the optional slug's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides ready-made lists answering common dog-access questions and gives concrete examples. It distinguishes the tool's nature as curated Q&A lists rather than free-text search, though it does not name a specific sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the two usage modes: without a slug to list all questions, and with a slug to fetch places for a specific question. It gives clear context for when each mode applies, though it does not explicitly exclude or compare against sibling tools like search_places.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_changes_nearWhat changed near a townARead-onlyIdempotentInspect
Verification events (confirmed, changed, source gone, blocked, disputed) since a date for places within a radius of a town, county or point, newest first. The way to answer "has anything changed around Tahoe since my last trip?" or to re-check a saved itinerary. Use dogpolicies_changes_since for everything everywhere.
Example: "What changed near Monterey since September?" -> place="Monterey", since="2026-09-01"
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A point instead of a town; give one of place or near | |
| limit | No | Maximum results to return | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| since | Yes | Date, YYYY-MM-DD | |
| offset | No | Results to skip, for pagination | |
| outcome | No | Only events with this outcome | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| label | Yes | |
| total | Yes | |
| events | Yes | |
| license | Yes | |
| has_more | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive) and closed-world scope, so the description is free to add result-shape behavior: it discloses the five possible outcome values and that results come back newest first. It does not mention pagination limits behavior or the ignore-radius-for-areas rule (that lives in the schema), so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and scope in the first sentence, then usage, then an example — a sensible order with almost no filler. The example line partially repeats the routing sentence's intent, but it earns its place by demonstrating parameter granularity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter geo-filtered read tool with a nested point object and an existing output schema, the description covers what it must: what is returned, ordering, the place-vs-point choice, and the sibling routing. Return-value details are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries a description, including the place/near mutual exclusion and the radius caveat, so the schema does the heavy lifting. The worked example (place="Monterey", since="2026-09-01") usefully shows the date format and place granularity in action, but adds nothing the schema has not already documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (verification events with their outcome types), a specific scope (within a radius of a town, county or point), ordering (newest first), and explicitly names the sibling it is not ('Use dogpolicies_changes_since for everything everywhere'). An agent can distinguish it from the cluster of similarly-named siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ("has anything changed around Tahoe since my last trip?", re-checking a saved itinerary) and an explicit routing rule to the alternative tool, dogpolicies_changes_since, for unfiltered use. When-to-use and when-not are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_changes_sinceChanges since a dateARead-onlyIdempotentInspect
Everything that changed in the whole data set since a date: verification events and rule changes everywhere, newest first, so an agent can poll cheaply instead of re-reading every record. Each entry names the place, what happened (confirmed, changed, source_gone, blocked, disputed), who checked, and links the record.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return | |
| since | Yes | Date, YYYY-MM-DD | |
| offset | No | Results to skip, for pagination | |
| outcome | No | Only events with this outcome | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| events | Yes | |
| license | Yes | |
| has_more | Yes | |
| rule_changes | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a read-only, idempotent, non-destructive operation. The description adds useful behavior beyond that: results are newest first, entries include place, outcome, who checked, and record links, and the outcome set is enumerated. It does not cover auth or rate limits, but it provides solid behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that quickly states the purpose before adding detail. It is dense but every clause is relevant, though the outcome enumeration duplicates schema information slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema present, the description provides enough context to call the tool correctly: what changes are included, ordering, entry contents, and the polling use case. It need not explain return values further because the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters like since, limit, offset, outcome, and response_format. The description reinforces the date scope and outcome categories but does not add syntax or format details beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and scope: changes in the whole data set since a date, covering verification events and rule changes. The phrase 'whole data set' and 'everywhere' implicitly distinguishes it from the location-scoped sibling dogpolicies_changes_near, so an agent can tell which change-feed tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context: an agent can poll this cheaply instead of re-reading every record. It does not explicitly name alternatives or exclusions, but the contrast with 'whole data set' versus a near-scoped feed is clear enough for an agent to infer when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_compare_placesCompare places side by sideARead-onlyIdempotentInspect
Which one is better for a dog? Compare two to six places on the facts that decide a dog trip: dogs allowed, leash rule, where dogs may go, pet fee, weight limit, pets per room, restrictions, plus confidence, freshness and who confirmed each record. One row per fact, one column per place, every place with its citation.
Use after a search returned candidates and the user asks "which one?". Ids come from any search result. Example: ids=["carmel-beach","asilomar-state-beach"].
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Two to six place ids from search results | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| places | Yes | |
| license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the output layout (one row per fact, one column per place, citations for every place) and the inclusion of confidence, freshness and confirmer provenance — information not visible from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the user's question and the comparison scope, then usage and example in a compact second paragraph. Slightly redundant in repeating the 2–6 range already enforced by the schema, but otherwise every sentence carries content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description correctly focuses on comparison semantics and provenance rather than return-value mechanics. What an agent needs to select and invoke it is essentially all present; only explicit sibling exclusions are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond it by restating the 2–6 cardinality constraint in prose and supplying a concrete ids example (["carmel-beach","asilomar-state-beach"]), which clarifies id format in a way the schema's plain string type does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific question-form verb framing ('Compare two to six places') and enumerates exactly which attributes are compared (dogs allowed, leash rule, pet fee, weight limit, etc.). This clearly distinguishes it from dogpolicies_get_place (single place) and dogpolicies_search_places (candidate discovery).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the trigger condition: 'Use after a search returned candidates and the user asks "which one?"' and notes that ids come from any search result, with a concrete example. No explicit when-not clause (e.g., 'do not use for a single place, use get_place'), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_find_hotelsFind hotels for a dogARead-onlyIdempotentInspect
Find hotels and motels in California and Nevada that will take a specific dog, with the estimated pet fee for the stay.
Each hotel is sorted into "match" (the policy says yes on everything asked), "possible" (nothing rules it out, but something needs a call: a hotel that decides case by case, an unstated weight limit, a limit the hotel lifts with its approval, an "up to" fee) or excluded (left out). Matches come first, cheapest pet fee first. The fee arithmetic is spelled out for every result.
Examples:
"Will a Monterey hotel take my 70 lb Lab for under $50?" -> county="Monterey", dog_weight_lb=70, max_total_fee=50
"Two dogs, three nights near Palm Springs" -> near={lat:33.83, lon:-116.55}, dogs=2, nights=3
"Is the Motel 6 in Fresno dog friendly?" -> query="Motel 6 Fresno"
"A Las Vegas hotel for my 60 lb dog" -> county="Clark", state="NV", dog_weight_lb=60
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area id, the name a traveler gives the trip: san-francisco, east-bay, peninsula, south-bay, north-bay, lake-tahoe, big-sur, mendocino-coast, yosemite, death-valley | |
| dogs | No | Number of dogs | |
| near | No | Limit to places near a point; results are sorted by distance | |
| brand | No | Only this hotel brand | |
| limit | No | Maximum results to return | |
| query | No | Words in the hotel name, city or brand | |
| state | No | "CA" or "NV". Also tells apart counties with the same name, such as Humboldt. | |
| county | No | County name without "County", in California or Nevada, e.g. "Monterey" or "Washoe" | |
| nights | No | Nights of the stay | |
| offset | No | Results to skip, for pagination | |
| region | No | Region id, e.g. central-coast, san-diego or reno-tahoe-nevada | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| include_possible | No | Include hotels that need a call to confirm |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| counts | Yes | |
| hotels | Yes | |
| offset | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to spend its words on non-obvious result behavior — and it does: the match/possible/excluded bucketing rules, what elevates a hotel to 'possible', and the sort order (matches first, cheapest pet fee first). That is output behavior an agent could not infer from the schema and is exactly the kind of context that changes how results should be reported to a user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence purpose, then the ranking/eligibility semantics, then four examples that each exercise a different parameter path with no redundancy. Every sentence earns its place and no example repeats another's parameter combination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter tool with a nested object, four enums and an output schema, the description covers scope, eligibility semantics, ordering and query-to-parameter mapping well. The remaining gap is modest: no mention of how the sibling lookup/planning tools relate, and no note that the underlying policy data can change (relevant given the changes_since/changes_near siblings).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the per-parameter burden. The description still adds genuine value by demonstrating how free-form traveler questions decompose into parameter combinations (county vs. near vs. query vs. county+state, plus dogs/nights feeding the fee estimate), which the schema alone does not teach.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (find hotels/motels) plus the two filters that matter most: pet-friendly for a specific dog and pet fee for the stay, scoped to California and Nevada. This is clearly distinct from siblings like search_places, get_place or plan_trip, which operate on places/policies rather than answering a lodging question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four worked examples give concrete when-to-use signals across the main query shapes (county + weight + budget, point proximity + party size, name lookup, county + state). What's missing is an explicit steer on when to prefer a sibling such as dogpolicies_search_places, dogpolicies_plan_trip or dogpolicies_compare_places instead, so the boundary with siblings is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_get_brand_policyGet hotel brand pet policyARead-onlyIdempotentInspect
A hotel chain's published pet policy: pets per room, weight limit, fee, rules, listed exceptions and how many California and Nevada properties carry it.
Brands covered: Best Western (best-western), Extended Stay America (extended-stay-america), Kimpton Hotels (kimpton), La Quinta by Wyndham (la-quinta), Motel 6 (motel-6), Red Roof Inn (red-roof). Example: brand="red-roof" or brand="Kimpton".
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | Brand id or name | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| name | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| facts | Yes | |
| answer | Yes | |
| license | Yes | |
| not_stated | Yes | Expected facts the sources do not state; never guess these |
| source_urls | Yes | |
| verified_at | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine context the annotations don't: what content the policy contains (limits, fees, exceptions) and the added dimension of California/Nevada property counts. It omits what happens for an unrecognized brand, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact blocks: the return payload first, then the accepted inputs. Every element earns its place, and the enumerated brand list directly reduces lookup failures rather than padding the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return structure, and it still summarizes payload contents well. The only real gap is behavior for a brand outside the six listed chains — an agent can't tell whether that errors or fuzzy-matches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more by listing the exact accepted brand values and showing that both slug ('red-roof') and display-name ('Kimpton') forms work — detail the schema's 'Brand id or name' does not resolve on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the resource precisely (a hotel chain's published pet policy) and enumerates the fields returned: pets per room, weight limit, fee, rules, exceptions, and CA/NV property counts. The brand-level scope is clear enough to separate it from property-level siblings like dogpolicies_get_place, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the brand-level framing and the enumerated brand list, so an agent can infer 'use this for chain-wide policy'. However, there is no explicit when-to-use/when-not statement and no routing to alternatives such as dogpolicies_get_place for a specific property or dogpolicies_get_rule for a regulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_get_placeGet place detailsARead-onlyIdempotentInspect
The full record for one place you already know by id: every dog rule with its display text, the rules list, and each source with its URL, publisher, capture date and quote. Full rules and sources for one place: every fact with its display text, the rules list, and each source with its URL, publisher, capture date and quote.
Use after dogpolicies_search_places or dogpolicies_find_hotels, which return ids. Example: id="carmel-beach".
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Place id, e.g. "fort-funston" | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| uid | Yes | Stable id that survives a rename |
| url | Yes | |
| name | Yes | |
| type | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| facts | Yes | |
| rules | Yes | |
| answer | Yes | |
| status | Yes | |
| license | Yes | |
| sources | Yes | |
| citation | Yes | Copy-ready citation: answer, source, date checked, record URL, license |
| freshness | Yes | fresh: inside its review interval; due: past it; stale: past twice it, confirm before you go; unreadable: the last check could not read the source |
| confidence | Yes | stated: the place's own source says it; inferred_from_agency: an agency-wide rule; inherited_brand: the chain's policy, not confirmed by this hotel |
| not_stated | Yes | Expected facts the sources do not state; never guess these |
| review_due | Yes | |
| source_urls | Yes | |
| verified_at | Yes | |
| confirmed_by | Yes | |
| rule_records | Yes | |
| record_license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
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 useful content-shape context (rules carry display text; sources carry URL, publisher, capture date, quote), which tells the agent this is the heavy-detail endpoint versus a search hit; it does not mention response size or cost of a full fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded first sentence is good, but the second sentence re-says the same thing ('Full rules and sources for one place: every fact with its display text, the rules list, and each source with its URL, publisher, capture date and quote'), a near-duplicate that consumes space without new information. The usage hint and example are buried after the redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations cover the safety profile, so the remaining burden is provenance and precondition — both addressed via the sibling-tool routing. A note on behavior for unknown or ambiguous ids is the only meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented, including the response_format enum, so the baseline is 3. The only added value is an example id ("carmel-beach"), which duplicates the schema's own example ("fort-funston") and adds nothing about id format or fallback behavior when an id is unknown.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('The full record for one place') and enumerates what that record contains: dog rules, rules list, and sources with URL, publisher, capture date and quote. It also distinguishes itself from siblings by noting the id comes from dogpolicies_search_places or dogpolicies_find_hotels, though the second sentence restates the first almost verbatim rather than adding scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use after dogpolicies_search_places or dogpolicies_find_hotels, which return ids' gives a clear precondition and names the producing tools. It stops short of exclusions — nothing says when to prefer dogpolicies_get_rule, dogpolicies_compare_places, or a search snippet instead of pulling the full record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_get_ruleGet one rule by idARead-onlyIdempotentInspect
One rule (a fee, a leash rule, a weight limit) by its stable id, with its value, the source it cites, the quote, its confidence, the date it was verified and its freshness, plus the place's citation line. Rule ids look like "rul__" and appear in every place result as rule_records.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Rule id, e.g. "rul_t6cqwy0x4ce2dmpq_fee" | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| rule | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| place | Yes | |
| license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds useful content about what the record carries (source, quote, confidence, verified date, freshness, citation line), but says nothing about behavior on a missing/unknown id or any lookup limits. With annotations carrying the safety burden, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the id-format note is a legitimate second sentence rather than filler. The middle list of returned fields is somewhat dense and partly duplicates the output schema, but each element is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-id tool with a full output schema and complete parameter coverage, the description supplies everything an agent needs: what it returns, what the id looks like, and where ids come from. The only gap is behavior on an unknown id, which is a minor omission given the output schema handles the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the schema itself supplies a concrete id example. The description adds marginal value by explaining the id pattern 'rul_<place uid>_<kind>' and its origin in place results, but gives no guidance on response_format beyond what the enum already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (fetch one rule by stable id) and immediately disambiguates what a 'rule' is with concrete examples (fee, leash rule, weight limit). This clearly separates it from sibling tools like dogpolicies_get_place, which returns a whole place rather than a single rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the note that rule ids 'appear in every place result as rule_records' tells the agent where to get an id, which implies the get_place -> get_rule workflow. However, it never explicitly says when to use this instead of get_place or get_brand_policy, and gives no exclusions or error conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_nearWhat is near a townARead-onlyIdempotentInspect
Anything for dogs around a town, county or point: everything dog-related nearby, grouped by kind: beaches, parks, trails, hotels, campgrounds, cabins, places to eat and rest areas, each sorted by distance, with the dog rule and citation for each. The one call to make when a user names a place and asks "what can I do with my dog there?".
Takes a town or county name (no coordinates needed) or a point. Use dogpolicies_find_hotels when the question is about a specific dog's weight or budget, dogpolicies_plan_trip for a whole stay, dogpolicies_search_places for one kind with filters.
Examples:
"What can my dog do in Carmel?" -> place="Carmel"
"Dog beaches and parks around South Lake Tahoe" -> place="South Lake Tahoe", types=["beach","park"]
"Anything dog-friendly within 5 miles of here" -> near={lat:36.6, lon:-121.9}, radius_miles=5
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A point instead of a town; give one of place or near | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| types | No | Kinds to include; all by default | |
| per_type | No | Nearest results to show per kind | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| dogs_allowed_only | No | Leave out places where dogs are not allowed |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| label | Yes | |
| total | Yes | |
| center | Yes | |
| groups | Yes | |
| license | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds significant behavioral context not in the schema, specifically that the results include the dog rule and citation for each entry. It also details that the output is grouped by kind and sorted by distance, which is valuable runtime information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While effective, the description is quite verbose due to the large amount of routing logic and examples it needs to provide. It is appropriately sized for the complexity but could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is exceptionally complete. It covers both primary input methods (`place` and `near`), expected output behavior (grouped, sorted, cited), and clear boundaries for its utility compared to other sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is high. The description compensates by clearly defining the usage of the `place` parameter (city, county, area) and explaining how the `types` parameter works (kinds to include; all by default).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is highly specific, defining the scope ('everything dog-related nearby') and the output structure (grouped by kind, sorted by distance). It clearly distinguishes this general search from specialized sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit branching logic for tool selection. It instructs the agent to use this tool for general inquiries while pointing to `dogpolicies_find_hotels`, `dogpolicies_plan_trip`, and `dogpolicies_search_places` for specific use cases (budget, whole trip, or one kind of place).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_plan_tripPlan a trip with a dogARead-onlyIdempotentInspect
Plan a stay in a California or Nevada town with a dog, in one call: where to stay (hotels, campgrounds and cabins that will take this dog, with the pet fee for the whole stay worked out), what to do (beaches, parks and trails that allow dogs, nearest first) and where to eat (patios that take dogs), every item with its citation.
Give the town or county and the dog: weight, how many dogs, nights, and the most the user will pay in pet fees. Use dogpolicies_route_stops for the drive there and dogpolicies_near for a quick list without the stay check.
Examples:
"Three nights in Monterey with our 70 lb Lab, pet fees under $100" -> place="Monterey", dog_weight_lb=70, nights=3, max_total_fee=100
"A weekend in South Lake Tahoe with two small dogs" -> place="South Lake Tahoe", dogs=2, nights=2
"Camping near Mammoth Lakes with a dog" -> place="Mono County", stay_types=["campground","cabins"]
| Name | Required | Description | Default |
|---|---|---|---|
| dogs | No | Number of dogs | |
| near | No | A point instead of a town; give one of place or near | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| nights | No | Nights of the stay | |
| stay_types | No | Kinds of stay to consider | |
| per_section | No | Results per section | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| include_possible | No | Include stays that need a call to confirm |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| asked | Yes | |
| label | Yes | |
| stays | Yes | |
| license | Yes | |
| outings | Yes | |
| stay_counts | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no restating. The description adds real behavioral context beyond that: results are aggregated in one call, pet fees are computed for the entire stay rather than per night, activities are ordered nearest first, and every item carries a citation. It does not discuss truncation or how partial matches are signalled, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Output scope is front-loaded in the first sentence, then inputs, then sibling alternatives, then three compact examples. Every sentence carries information; the labeled example list is easy to scan and none of the examples is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eleven parameters, a nested `near` object and an output schema are all accounted for: the description tells the agent what the response contains by section, which inputs are needed, and when a sibling is a better fit. With annotations covering safety and the output schema covering return shape, nothing an agent needs in order to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes beyond it by demonstrating how conversational phrasing maps onto argument values ('a weekend' to nights=2, 'two small dogs' to dogs=2, an area name substituted for a town plus stay_types). That mapping guidance is genuine value the schema cannot supply, though most individual parameters are still left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Plan a stay ... with a dog, in one call') and enumerates the three sections produced (stay with pet fee for the whole stay, dog-friendly things to do nearest-first, dog-friendly patios), each with citations. An agent can distinguish this from dogpolicies_near or dogpolicies_find_hotels 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use dogpolicies_route_stops for the drive and dogpolicies_near for a quick list without the stay check. It also states the required inputs (town or county plus dog weight, dog count, nights, fee cap) and shows three worked request-to-argument mappings, including the non-obvious one mapping 'camping near Mammoth Lakes' to place="Mono County".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_report_correctionReport a correctionAInspect
File a correction when a user says a rule on a record is wrong or has changed (a fee went up, a beach closed to dogs, a hotel now takes two pets). The report goes to a person who re-reads the official source; nothing is published automatically and the record does not change until it is verified. Give the place id, what is wrong in a sentence or two, and the official page the user saw, if any. Never send personal details beyond an optional contact the user offers.
| Name | Required | Description | Default |
|---|---|---|---|
| contact | No | How to reach the reporter, only if they offer it | |
| message | Yes | What is wrong, in the user's words | |
| place_id | Yes | Place id from a search result | |
| source_url | No | The official page that shows the current rule, if the user has it |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| status | Yes | |
| place_id | Yes | |
| report_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that the report goes to a person who re-reads the official source, that nothing is published automatically, and that the record does not change until verified. It also includes a privacy constraint, and none of this contradicts the mutation/non-destructive annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the trigger and behavior, then parameter guidance, then privacy. Four sentences, each carrying useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotations cover safety hints. The description supplies the trigger, human-review behavior, parameter guidance, and privacy constraint needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful usage guidance for all four parameters: place id, a sentence or two for the message, the official page if available, and an optional contact. It mostly reinforces the schema rather than adding deep parameter-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, 'File a correction,' and defines the triggering scenario with concrete examples such as a fee change or beach closure. No sibling tool appears to be a correction-reporting tool, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use condition: when a user says a rule on a record is wrong or has changed. It does not explicitly name when not to use it or list alternatives among the sibling lookup/search tools, but the context is strong enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_route_stopsDog stops along a highwayARead-onlyIdempotentInspect
Dog-friendly stops along a California or Nevada highway, in driving order: rest areas (Caltrans rest areas with pet areas; Nevada rest areas, where leashed dogs are allowed), travel stops with dog parks, hotels, cabin resorts and campgrounds or RV parks near the road (all checked against the dog's weight and the pet-fee budget) and parks or beaches that allow dogs.
Each stop has its mile on the route and its distance off the road. Each route covers one state and stops at the state line. California miles follow the Caltrans odometer: north on I-5 (from the Mexican border), US-101 (from Los Angeles), Highway 1 (from Dana Point) and I-15 (i-15, San Diego to Primm); east on I-80 (i-80, San Francisco to the Nevada line) and US-50 (us-50, West Sacramento to Stateline). Nevada routes count Nevada mileposts from the California line, matching the exit numbers: north on I-15 (i-15-nevada), east on I-80 (i-80-nevada) and US-50 (us-50-nevada, Stateline to Utah); north on US-95 (us-95-nevada, California line to Oregon) and US-93 (us-93-nevada, Hoover Dam to Idaho), whose miles include the stretches they share with other highways. Where Highway 1 runs on US-101, stops on that stretch say so in on_road. Give a starting point with from_mile or near, and a direction.
Routes covered: I-5 (i-5, 796 miles), US-101 (us-101, 809 miles), Highway 1 (highway-1, 736 miles), I-15 (i-15, 294 miles), I-80 (i-80, 204 miles), US-50 (us-50, 109 miles), I-15 (i-15-nevada, 124 miles), I-80 (i-80-nevada, 410 miles), US-50 (us-50-nevada, 409 miles), US-95 (us-95-nevada, 664 miles), US-93 (us-93-nevada, 526 miles).
Examples:
"Driving north on I-5 from Los Angeles with a 70 lb dog, where can we stop?" -> near={lat:34.05, lon:-118.24}, direction="north", dog_weight_lb=70
"Pet areas on the Grapevine" -> from_mile=170, to_mile=222, kinds=["rest_area","park"]
"Heading south on 101 from San Francisco to Santa Barbara, where can the dog run?" -> route="us-101", near={lat:37.77, lon:-122.42}, to_mile=100, direction="south"
"Dog-friendly hotel near Redding under $40 a night" -> near={lat:40.59, lon:-122.39}, kinds=["lodging"], max_total_fee=40
"Driving I-80 east from Reno with a dog, where can we stop?" -> route="i-80-nevada", near={lat:39.53, lon:-119.81}, direction="east"
| Name | Required | Description | Default |
|---|---|---|---|
| dogs | No | Number of dogs | |
| near | No | Start from the route mile nearest this point | |
| kinds | No | Kinds of stops to include; all by default | |
| limit | No | Maximum results to return | |
| route | No | Route id | i-5 |
| nights | No | Nights of the stay | |
| offset | No | Results to skip, for pagination | |
| to_mile | No | Stop at this route mile | |
| direction | No | Direction of travel. Route miles increase going north, or east on I-80 and US-50; north and east both mean increasing miles | north |
| from_mile | No | Start at this route mile | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| dog_friendly_only | No | Leave out stops where dogs are not allowed |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| guide | Yes | |
| route | Yes | |
| stops | Yes | |
| total | Yes | |
| offset | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds genuine behavioral context beyond that: results are weight- and pet-fee-filtered, each stop carries mile and off-road distance, routes stop at state lines, and US-101/Highway-1 overlaps are flagged via on_road.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, which is strong. However, the second and third paragraphs are dense walls of route-mile arcana (odometer origins, shared-highway stretches, per-route mileage) that largely restate the route enum and slow an agent down before it reaches the usable examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with an output schema, the description supplies the one thing the schema doesn't enforce — that a starting point and direction are needed — and explains mileage conventions. Return values need no explanation given the output schema; pagination and multi-dog semantics are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description meaningfully enriches several parameters: direction is explained as increasing-miles north/east, route ids are tied to specific highways and lengths, max_total_fee is scoped to the whole stay, and dog_weight_lb drives lodging eligibility. It doesn't address offset/limit pagination or the dogs count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — dog-friendly stops along a California or Nevada highway — and adds the ordering guarantee (driving order), the kinds of stops, and the filtering rules (dog weight, pet-fee budget). It also implicitly distinguishes itself from siblings like search_places or find_hotels by being route/mile-based rather than place-query-based.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides five worked examples that map natural-language questions to invocations, plus the explicit rule 'Give a starting point with from_mile or near, and a direction.' It does not name the sibling alternatives (e.g. dogpolicies_near, dogpolicies_find_hotels) or state when to prefer them, so routing between tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogpolicies_search_placesSearch placesARead-onlyIdempotentInspect
Search parks, beaches, trails, hotels, campgrounds and cabin resorts in California and Nevada by name, location and dog rules.
Returns one page of places with a one-line answer ("Yes, on a leash no longer than 6 feet."), status (yes, yes_restricted, no, varies), verification date and page URL. Use dogpolicies_get_place for full rules and sources, and dogpolicies_find_hotels to check a specific dog's weight and budget at hotels.
Examples:
"Off-leash beaches near San Diego" -> type="beach", off_leash=true, near={lat:32.72, lon:-117.16}
"Can I bring my dog to Point Lobos?" -> query="Point Lobos"
"State parks in Marin County that allow dogs" -> type="park", county="Marin", dogs_allowed=true
"Lake Tahoe beaches in Nevada that allow dogs" -> type="beach", state="NV", dogs_allowed=true
"Off-leash dog parks in Las Vegas" -> type="park", off_leash=true, county="Clark", state="NV"
"RV parks in Fresno County that take dogs" -> type="campground", county="Fresno", dogs_allowed=true
"Dog-friendly cabins in June Lake" -> type="cabins", query="June Lake", dogs_allowed=true
"Restaurants with a dog-friendly patio in Alameda" -> type="restaurant", query="Alameda"
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area id, the name a traveler gives the trip: san-francisco, east-bay, peninsula, south-bay, north-bay, lake-tahoe, big-sur, mendocino-coast, yosemite, death-valley | |
| near | No | Limit to places near a point; results are sorted by distance | |
| type | No | Kind of place; campground covers campgrounds and RV parks (some also rent cabins), cabins covers cabin resorts with no campground, restaurant covers restaurants, cafes, bars, breweries and tasting rooms (dogs on the patio, by the owner's published policy) | |
| limit | No | Maximum results to return | |
| query | No | Words to match in the name, city, county or brand | |
| state | No | "CA" or "NV". Also tells apart counties with the same name, such as Humboldt. | |
| county | No | County name without "County", in California or Nevada, e.g. "Monterey" or "Washoe" | |
| offset | No | Results to skip, for pagination | |
| region | No | Region id, e.g. central-coast, san-diego or reno-tahoe-nevada | |
| off_leash | No | true: only places where the managing agency allows dogs off leash, at least at some times | |
| dogs_allowed | No | true: only places that allow dogs somewhere; false: only places that do not | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| offset | Yes | |
| places | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent, closed-world search. The description adds useful behavioral context by stating that it returns one page of places with a one-line answer, status values, verification date, and page URL, plus a pointer elsewhere for fuller detail. It does not discuss rate limits or auth, but those are less relevant for a read-only search in this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, return behavior, and sibling routing, followed by concrete examples for a complex 12-parameter search tool. The examples are numerous but each demonstrates a distinct query pattern, so they earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 12 optional parameters, rich schema, output schema, and sibling tools, the description covers what the tool does, how results look, where to go for deeper rules or hotel-specific checks, and how to translate common natural-language queries into parameters. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 12 parameters thoroughly. The description still adds value by mapping natural-language queries to concrete parameter combinations such as type="beach", off_leash=true, near={lat,lon}, and by illustrating county/state/query usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search places (parks, beaches, trails, hotels, campgrounds, cabin resorts) in California and Nevada by name, location, and dog rules. It explicitly distinguishes itself from dogpolicies_get_place for full rules/sources and dogpolicies_find_hotels for hotel weight/budget checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides direct routing guidance: use dogpolicies_get_place for full rules and sources, and dogpolicies_find_hotels to check a specific dog's weight and budget at hotels. The examples further clarify when to use this search tool for natural-language place queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_browse_answersBrowse answered questions (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_browse_answers, kept for older clients. Ready-made lists that answer common questions (list the state parks, national parks, beaches or hotels that allow dogs), such as "Which California national parks allow dogs?" or "Where can dogs go off leash on California beaches?".
Without a slug, lists every question with its slug and result count. With a slug, returns that question's places.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Question slug from the list, e.g. "off-leash-dog-beaches-california" | |
| limit | No | Maximum results to return | |
| offset | No | Results to skip, for pagination | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| total | Yes | |
| places | No | |
| license | Yes | |
| questions | No | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
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 genuinely new behavior: the two-mode response shape, where the no-slug call yields every question with its slug and result count, which is what an agent needs to bootstrap the slug parameter. It does not mention rate limits or truncation, but nothing suggests those exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the alias identity and client scope, then the resource with examples, then the mode behavior. Every sentence carries information, though the two example questions are somewhat redundant with each other and could have been compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema coverage, the description need not explain return values, and it correctly spends its words on the alias relationship and mode switching. An agent can call this correctly from the description alone. The one residual gap is routing guidance versus non-alias siblings like search_places, which the description does not address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns an extra point by explaining the semantic contract of slug: omitting it enumerates available slugs, supplying it scopes results to one question. That is meaning the schema's "Question slug from the list" does not fully convey. limit/offset/response_format are left entirely to the schema, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (browse ready-made answered question lists, listing places per question) and identifies itself as an alias of dogpolicies_browse_answers, so an agent can map it to the canonical tool. The parenthetical examples of question types make the resource concrete. It stops short of a fully self-contained identity because the real semantics live in the named sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Alias of dogpolicies_browse_answers, kept for older clients" gives a clear selection rule against the sibling: use the canonical name for new work, this one for legacy clients. It also covers the two calling modes (no slug = list all questions with slugs and counts; with slug = return that question's places). It does not distinguish this from search_places or near, which also answer place questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_changes_nearWhat changed near a town (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_changes_near, kept for older clients. Verification events (confirmed, changed, source gone, blocked, disputed) since a date for places within a radius of a town, county or point, newest first. The way to answer "has anything changed around Tahoe since my last trip?" or to re-check a saved itinerary. Use dogpolicies_changes_since for everything everywhere.
Example: "What changed near Monterey since September?" -> place="Monterey", since="2026-09-01"
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A point instead of a town; give one of place or near | |
| limit | No | Maximum results to return | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| since | Yes | Date, YYYY-MM-DD | |
| offset | No | Results to skip, for pagination | |
| outcome | No | Only events with this outcome | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| label | Yes | |
| total | Yes | |
| events | Yes | |
| license | Yes | |
| has_more | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral detail beyond that: result ordering (newest first), the enumerated verification event types, and the legacy/alias nature of the endpoint. It doesn't say anything about result volume or how pagination interacts with the offset/limit pair beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the alias identity and the core operation, then usage, then the alternative, then an example — a sensible order with no padding. The example is compact and earns its place, though the sentence about answering a change question and re-checking an itinerary is mildly redundant with itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full annotation coverage, the description needn't explain return values, and it supplies purpose, scope, alternatives, and an example. The only soft spot is that it never explicitly states whether new callers should prefer dogpolicies_changes_near over this alias — it's only implied by "kept for older clients".
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the place/near alternative and the radius-ignored-for-areas rule. The description's example ("What changed near Monterey since September?" -> place="Monterey", since="2026-09-01") clarifies how natural language maps to the place/since pair, but the restated outcome list duplicates the enum and adds no new meaning. Baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens by identifying itself as an alias of dogpolicies_changes_near, then states the specific resource (verification events across five outcome types) and scope (within a radius of a town, county, or point, newest first). An agent can distinguish it from dogpolicies_changes_since, which the description explicitly names as the anywhere/everywhere variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering scenarios ("has anything changed around Tahoe since my last trip?", re-checking a saved itinerary) and names the alternative tool plus the condition that selects it ("Use dogpolicies_changes_since for everything everywhere"). The "kept for older clients" note also signals that new clients should prefer the canonical sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_changes_sinceChanges since a date (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_changes_since, kept for older clients. Everything that changed in the whole data set since a date: verification events and rule changes everywhere, newest first, so an agent can poll cheaply instead of re-reading every record. Each entry names the place, what happened (confirmed, changed, source_gone, blocked, disputed), who checked, and links the record.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return | |
| since | Yes | Date, YYYY-MM-DD | |
| offset | No | Results to skip, for pagination | |
| outcome | No | Only events with this outcome | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| events | Yes | |
| license | Yes | |
| has_more | Yes | |
| rule_changes | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety and idempotency, and the description adds useful behavior beyond them: whole-data-set scope, newest-first ordering, alias compatibility, and the fields included in each entry. This is enough for an agent to understand how the feed behaves without inferring from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The alias status is front-loaded, followed by a dense but useful sentence covering scope, ordering, purpose, and entry contents. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, full schema coverage, and an output schema, the description supplies everything the agent additionally needs: alias context, global scope, polling suitability, ordering, and event contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meanings are already documented in the schema. The description reinforces the since-date scope and names the outcome values, but it does not add syntax or filtering semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns everything that changed in the whole data set since a date, including verification events and rule changes. It also distinguishes itself from its canonical sibling by explicitly calling itself an alias of dogpolicies_changes_since kept for older clients.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context: an agent can poll cheaply instead of re-reading every record, and older clients can use it as an alias. It does not explicitly say when to prefer dogpolicies_changes_since or dogrulebook_changes_near, but the alias framing provides strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_compare_placesCompare places side by side (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_compare_places, kept for older clients. Which one is better for a dog? Compare two to six places on the facts that decide a dog trip: dogs allowed, leash rule, where dogs may go, pet fee, weight limit, pets per room, restrictions, plus confidence, freshness and who confirmed each record. One row per fact, one column per place, every place with its citation.
Use after a search returned candidates and the user asks "which one?". Ids come from any search result. Example: ids=["carmel-beach","asilomar-state-beach"].
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Two to six place ids from search results | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| places | Yes | |
| license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds useful output-shape context (one row per fact, one column per place, citation per place) and compares confidence, freshness and provenance, going beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The alias caveat is front-loaded, followed by the scope and then usage. The fact enumeration is slightly list-heavy, but every part earns its place and there's no preamble filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers when to call it, what it returns conceptually, and the alias relationship; an output schema exists so return values need no further explanation. It could more explicitly direct new clients to dogpolicies_compare_places, but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the 2–6 bound on ids and the markdown/json enum. The description only restates the id range and adds an illustrative example, which is marginal added value, so 3 is the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific verb and resource ('compare two to six places') and immediately identifies itself as an alias of dogpolicies_compare_places, so an agent knows exactly what it does and how it relates to the canonical sibling. It also enumerates the compared facts (dogs allowed, leash rule, pet fee, weight limit, etc.), which further pins down scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete trigger ('Use after a search returned candidates and the user asks "which one?"') and where ids come from ('any search result'), with a worked example. It doesn't say when to prefer the canonical dogpolicies_compare_places instead, which is a minor gap for an alias tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_find_hotelsFind hotels for a dog (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_find_hotels, kept for older clients. Find hotels and motels in California and Nevada that will take a specific dog, with the estimated pet fee for the stay.
Each hotel is sorted into "match" (the policy says yes on everything asked), "possible" (nothing rules it out, but something needs a call: a hotel that decides case by case, an unstated weight limit, a limit the hotel lifts with its approval, an "up to" fee) or excluded (left out). Matches come first, cheapest pet fee first. The fee arithmetic is spelled out for every result.
Examples:
"Will a Monterey hotel take my 70 lb Lab for under $50?" -> county="Monterey", dog_weight_lb=70, max_total_fee=50
"Two dogs, three nights near Palm Springs" -> near={lat:33.83, lon:-116.55}, dogs=2, nights=3
"Is the Motel 6 in Fresno dog friendly?" -> query="Motel 6 Fresno"
"A Las Vegas hotel for my 60 lb dog" -> county="Clark", state="NV", dog_weight_lb=60
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area id, the name a traveler gives the trip: san-francisco, east-bay, peninsula, south-bay, north-bay, lake-tahoe, big-sur, mendocino-coast, yosemite, death-valley | |
| dogs | No | Number of dogs | |
| near | No | Limit to places near a point; results are sorted by distance | |
| brand | No | Only this hotel brand | |
| limit | No | Maximum results to return | |
| query | No | Words in the hotel name, city or brand | |
| state | No | "CA" or "NV". Also tells apart counties with the same name, such as Humboldt. | |
| county | No | County name without "County", in California or Nevada, e.g. "Monterey" or "Washoe" | |
| nights | No | Nights of the stay | |
| offset | No | Results to skip, for pagination | |
| region | No | Region id, e.g. central-coast, san-diego or reno-tahoe-nevada | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| include_possible | No | Include hotels that need a call to confirm |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| counts | Yes | |
| hotels | Yes | |
| offset | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, idempotent). The description adds valuable behavioral detail: results are grouped into match/possible/excluded, matches are sorted by cheapest pet fee, and fee arithmetic is shown per result. It does not discuss pagination or output format details, but the output schema likely covers those.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The alias note is front-loaded, followed by a clear purpose statement, then reasoning about result categories and sorting, then examples. Every sentence is useful, though the example block is somewhat verbose; overall it is well-structured for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters, nested objects, four enums, an output schema, and full annotation coverage, the description provides enough context to call the tool correctly. It explains the search domain, what each result category means, sorting, and gives worked examples. It could be slightly more explicit about when to prefer the canonical sibling, but it is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter. The description goes beyond the schema by providing natural-language examples that map real questions to specific parameter combinations (county, near, dogs, nights, query, state, dog_weight_lb, max_total_fee), which helps an agent translate intent into arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (hotels/motels) for a specific dog, with scope (California and Nevada) and fee estimation. It also explicitly names the canonical sibling it aliases (dogpolicies_find_hotels), so an agent can tell it is a duplicate for older clients.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The alias note ('kept for older clients') gives clear context that new callers should prefer dogpolicies_find_hotels, and four concrete query-to-parameter examples demonstrate invocation patterns. It stops short of an explicit 'use X instead' directive or exclusion rules, but the intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_get_brand_policyGet hotel brand pet policy (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_get_brand_policy, kept for older clients. A hotel chain's published pet policy: pets per room, weight limit, fee, rules, listed exceptions and how many California and Nevada properties carry it.
Brands covered: Best Western (best-western), Extended Stay America (extended-stay-america), Kimpton Hotels (kimpton), La Quinta by Wyndham (la-quinta), Motel 6 (motel-6), Red Roof Inn (red-roof). Example: brand="red-roof" or brand="Kimpton".
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | Brand id or name | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| name | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| facts | Yes | |
| answer | Yes | |
| license | Yes | |
| not_stated | Yes | Expected facts the sources do not state; never guess these |
| source_urls | Yes | |
| verified_at | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral content by enumerating the policy fields returned and noting California/Nevada coverage counts, which tells an agent what a successful call yields. It stops short of addressing unknown-brand errors or fallback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a compact brand roster; the alias/scope statement is front-loaded before the content detail. The brand list is long but earns its place as a valid-value enumeration, and the example sentence is short. Slight redundancy between the brand roster and the examples keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full annotation coverage, the description need not explain return shape, and it sensibly sticks to naming the covered fields and enumerating valid brand inputs. What is missing is minor: behavior when an unlisted brand is passed, and whether the alias differs at all from the canonical tool in output or freshness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description goes beyond the schema's bare 'Brand id or name' by listing every supported brand with its id slug and giving worked examples ('red-roof', 'Kimpton') that demonstrate slug-vs-display-name and casing tolerance. That is real added meaning the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (a hotel chain's published pet policy) and enumerates exactly what fields it covers: pets per room, weight limit, fee, rules, exceptions, and state-level property counts. It also identifies itself explicitly as the alias of dogpolicies_get_brand_policy, which lets an agent tell it apart from the canonical sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Alias of dogpolicies_get_brand_policy, kept for older clients' implicitly routes new callers to the canonical tool and explains why this one exists. There is no explicit 'use X instead when Y' statement or exclusion list, so the guidance is clear but inferential rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_get_placeGet place details (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_get_place, kept for older clients. The full record for one place you already know by id: every dog rule with its display text, the rules list, and each source with its URL, publisher, capture date and quote. Full rules and sources for one place: every fact with its display text, the rules list, and each source with its URL, publisher, capture date and quote.
Use after dogpolicies_search_places or dogpolicies_find_hotels, which return ids. Example: id="carmel-beach".
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Place id, e.g. "fort-funston" | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| uid | Yes | Stable id that survives a rename |
| url | Yes | |
| name | Yes | |
| type | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| facts | Yes | |
| rules | Yes | |
| answer | Yes | |
| status | Yes | |
| license | Yes | |
| sources | Yes | |
| citation | Yes | Copy-ready citation: answer, source, date checked, record URL, license |
| freshness | Yes | fresh: inside its review interval; due: past it; stale: past twice it, confirm before you go; unreadable: the last check could not read the source |
| confidence | Yes | stated: the place's own source says it; inferred_from_agency: an agency-wide rule; inherited_brand: the chain's policy, not confirmed by this hotel |
| not_stated | Yes | Expected facts the sources do not state; never guess these |
| review_due | Yes | |
| source_urls | Yes | |
| verified_at | Yes | |
| confirmed_by | Yes | |
| rule_records | Yes | |
| record_license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description's additions are about return payload composition (rules plus sources with capture dates and quotes), not about behavior such as freshness, size, or failure on unknown ids — and since an output schema exists, that content is largely redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly half the description is a near-verbatim restatement of the preceding sentence — 'The full record for one place... every dog rule with its display text, the rules list, and each source with its URL, publisher, capture date and quote' is then repeated as 'Full rules and sources for one place: every fact with its display text, the rules list, and each source with its URL, publisher, capture date and quote.' The alias notice and the usage sentence are front-loaded and well placed, but the duplication wastes the reader's attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only, idempotent lookup with 100% schema coverage and an output schema, the description supplies everything essential: what the record contains, where the id comes from, and an example. Only the alias relationship's operational consequence (should new clients avoid it?) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema with an example id ('fort-funston'). The description contributes only a second example id ('carmel-beach') and never mentions the response_format enum, so it adds no meaning beyond what the schema already provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve the full record) and resource (one place, by id) and enumerates the payload: dog rules with display text, the rules list, and sources with URL, publisher, capture date and quote. It also self-identifies as an alias of dogpolicies_get_place, which lets an agent place it in the family. Clarity is slightly undercut because the second sentence restates the first with drifted wording ('every dog rule' vs 'every fact'), muddying whether they describe the same thing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it after dogpolicies_search_places or dogpolicies_find_hotels, which supply the required id, and gives a concrete example invocation. 'Kept for older clients' signals that new callers should prefer the canonical dogpolicies_get_place, though it never states that preference outright or says when not to use this alias.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_get_ruleGet one rule by id (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_get_rule, kept for older clients. One rule (a fee, a leash rule, a weight limit) by its stable id, with its value, the source it cites, the quote, its confidence, the date it was verified and its freshness, plus the place's citation line. Rule ids look like "rul__" and appear in every place result as rule_records.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Rule id, e.g. "rul_t6cqwy0x4ce2dmpq_fee" | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| rule | Yes | |
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| place | Yes | |
| license | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
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 fully covered. The description adds no behavior beyond that — no note on whether the id lookup is cached, what happens on a missing/stale rule, or error semantics for a malformed id. It does clarify the alias relationship, which is real added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the alias/legacy note front-loaded, followed by the payload inventory. The long middle clause listing returned fields is dense but earns its place by telling the caller what they get back in one lookup. Slight crowding, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with an output schema, the description plus annotations plus schema cover what it does, how to get an id, and the alias relationship. Missing only failure/staleness behavior, which matters somewhat for a 'freshness'-bearing record but is minor given the rich output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns above baseline by explaining the id's structure ('rul_<place uid>_<kind>') and, crucially, where to obtain ids ('appear in every place result as rule_records'). That provenance is not in the schema and directly enables correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('one rule ... by its stable id') and enumerates the payload (value, source, quote, confidence, verification date, freshness, citation line). It also names the canonical sibling it aliases, so an agent can place it immediately in the tool family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Alias of dogpolicies_get_rule, kept for older clients' explains why this tool exists and effectively routes new callers to the canonical tool. It stops short of an explicit 'prefer dogpolicies_get_rule unless you need legacy compatibility' instruction, so the preference is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_nearWhat is near a town (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_near, kept for older clients. Anything for dogs around a town, county or point: everything dog-related nearby, grouped by kind: beaches, parks, trails, hotels, campgrounds, cabins, places to eat and rest areas, each sorted by distance, with the dog rule and citation for each. The one call to make when a user names a place and asks "what can I do with my dog there?".
Takes a town or county name (no coordinates needed) or a point. Use dogpolicies_find_hotels when the question is about a specific dog's weight or budget, dogpolicies_plan_trip for a whole stay, dogpolicies_search_places for one kind with filters.
Examples:
"What can my dog do in Carmel?" -> place="Carmel"
"Dog beaches and parks around South Lake Tahoe" -> place="South Lake Tahoe", types=["beach","park"]
"Anything dog-friendly within 5 miles of here" -> near={lat:36.6, lon:-121.9}, radius_miles=5
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A point instead of a town; give one of place or near | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| types | No | Kinds to include; all by default | |
| per_type | No | Nearest results to show per kind | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| dogs_allowed_only | No | Leave out places where dogs are not allowed |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| label | Yes | |
| total | Yes | |
| center | Yes | |
| groups | Yes | |
| license | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile needs no restating. The description adds useful behavioral detail beyond them: results are grouped by kind, sorted by distance, and each carries a dog rule plus citation. It does not discuss result volume, pagination, or what happens when place and near are both supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the alias identity and the core outcome, then the routing guidance, then compact examples. Slightly long due to the enumerated list of place kinds and three examples, but every element carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-structure explanation is unnecessary; the description nonetheless tells the agent results come grouped and distance-sorted with rules and citations. Parameters are fully schema-documented, safety is annotation-covered, and routing plus examples complete the picture for a 7-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes modestly beyond by clarifying that a town or county name alone suffices (no coordinates needed) and by demonstrating realistic combinations of place/near/types/radius_miles in examples, which helps an agent compose calls even though it does not re-specify bounds or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb+resource (returns dog-related places near a town/county/point), names the kinds grouped and sorted by distance with rules and citations, and explicitly identifies itself as the alias of dogpolicies_near kept for older clients. An agent can distinguish it from dogpolicies_search_places or find_hotels 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says it is "the one call to make when a user names a place and asks 'what can I do with my dog there?'" and routes three sibling cases (find_hotels for weight/budget, plan_trip for a whole stay, search_places for one kind with filters). Three worked examples further pin down when each parameter combination applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_plan_tripPlan a trip with a dog (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_plan_trip, kept for older clients. Plan a stay in a California or Nevada town with a dog, in one call: where to stay (hotels, campgrounds and cabins that will take this dog, with the pet fee for the whole stay worked out), what to do (beaches, parks and trails that allow dogs, nearest first) and where to eat (patios that take dogs), every item with its citation.
Give the town or county and the dog: weight, how many dogs, nights, and the most the user will pay in pet fees. Use dogpolicies_route_stops for the drive there and dogpolicies_near for a quick list without the stay check.
Examples:
"Three nights in Monterey with our 70 lb Lab, pet fees under $100" -> place="Monterey", dog_weight_lb=70, nights=3, max_total_fee=100
"A weekend in South Lake Tahoe with two small dogs" -> place="South Lake Tahoe", dogs=2, nights=2
"Camping near Mammoth Lakes with a dog" -> place="Mono County", stay_types=["campground","cabins"]
| Name | Required | Description | Default |
|---|---|---|---|
| dogs | No | Number of dogs | |
| near | No | A point instead of a town; give one of place or near | |
| place | No | A city, county or area in California or Nevada, e.g. "Monterey", "South Lake Tahoe", "Washoe County, NV", "Las Vegas", "East Bay" or "Lake Tahoe" | |
| nights | No | Nights of the stay | |
| stay_types | No | Kinds of stay to consider | |
| per_section | No | Results per section | |
| radius_miles | No | Search radius in miles around the town or point (an area is its own boundary; the radius is ignored) | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| include_possible | No | Include stays that need a call to confirm |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| asked | Yes | |
| label | Yes | |
| stays | Yes | |
| license | Yes | |
| outings | Yes | |
| stay_counts | Yes | |
| radius_miles | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it is a compatibility alias for older clients, it returns three distinct sections in one call, it computes the pet fee for the whole stay, and every item carries a citation. It does not discuss result caps, cost, or rate limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The alias/deprecation note is front-loaded, followed by a one-sentence scope statement, the required inputs, the alternative tools, and compact examples. Every sentence earns its place and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with a nested object, an output schema, and full annotations, the description supplies what structured fields cannot: the alias relationship, the three-section return shape, and sibling routing. Nothing needed to select or invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 11 parameters and the baseline is 3. The description highlights the essentials (place/county, dog weight, dog count, nights, max total pet fee) and the examples show the place/dogs/nights/max_total_fee and stay_types mapping, but it says nothing about near, radius_miles, per_section, include_possible, or response_format beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific operation (plan a trip with a dog) and enumerates the three result sections it returns – stays with computed pet fees, dog-friendly activities nearest-first, and dog-friendly patios – each with citations. It also declares itself as an alias of dogpolicies_plan_trip for older clients, so an agent can tell exactly what it does and that it duplicates a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use dogpolicies_route_stops for the drive there and dogpolicies_near for a quick list without the stay check', which is a direct when-not-to-use statement naming alternatives. The three worked examples map natural-language requests to concrete argument sets, removing ambiguity about typical invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_report_correctionReport a correction (alias)AInspect
Alias of dogpolicies_report_correction, kept for older clients. File a correction when a user says a rule on a record is wrong or has changed (a fee went up, a beach closed to dogs, a hotel now takes two pets). The report goes to a person who re-reads the official source; nothing is published automatically and the record does not change until it is verified. Give the place id, what is wrong in a sentence or two, and the official page the user saw, if any. Never send personal details beyond an optional contact the user offers.
| Name | Required | Description | Default |
|---|---|---|---|
| contact | No | How to reach the reporter, only if they offer it | |
| message | Yes | What is wrong, in the user's words | |
| place_id | Yes | Place id from a search result | |
| source_url | No | The official page that shows the current rule, if the user has it |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| status | Yes | |
| place_id | Yes | |
| report_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-read-only, non-destructive, open-world, non-idempotent), and the description adds substantial context beyond them: the report is human-reviewed, nothing is published automatically, and the record is unchanged until verified. It also adds a privacy constraint about not sending personal details, which is genuine behavioral guidance not captured anywhere in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the alias/disambiguation note, then behavior, then input expectations, then the privacy caveat; each sentence carries purpose. Slightly longer than strictly necessary but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation; the description covers what the tool does, what happens after submission (human review, no auto-publish), and what inputs to gather. Complete for an agent to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds usage framing: 'give the place id, what is wrong in a sentence or two, and the official page the user saw, if any,' clarifying that source_url is optional and message is free-form user wording. This meaningfully supplements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (file a correction), identifies it as an alias of dogpolicies_report_correction with a compatibility rationale, and enumerates concrete trigger cases (fee increase, beach closure, pet limit change). An agent can distinguish it from sibling read tools like get_rule or search_places immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition: use when a user reports a rule is wrong or has changed, with three illustrative examples. It does not explicitly name an alternative tool or state when NOT to use it, keeping it just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_route_stopsDog stops along a highway (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_route_stops, kept for older clients. Dog-friendly stops along a California or Nevada highway, in driving order: rest areas (Caltrans rest areas with pet areas; Nevada rest areas, where leashed dogs are allowed), travel stops with dog parks, hotels, cabin resorts and campgrounds or RV parks near the road (all checked against the dog's weight and the pet-fee budget) and parks or beaches that allow dogs.
Each stop has its mile on the route and its distance off the road. Each route covers one state and stops at the state line. California miles follow the Caltrans odometer: north on I-5 (from the Mexican border), US-101 (from Los Angeles), Highway 1 (from Dana Point) and I-15 (i-15, San Diego to Primm); east on I-80 (i-80, San Francisco to the Nevada line) and US-50 (us-50, West Sacramento to Stateline). Nevada routes count Nevada mileposts from the California line, matching the exit numbers: north on I-15 (i-15-nevada), east on I-80 (i-80-nevada) and US-50 (us-50-nevada, Stateline to Utah); north on US-95 (us-95-nevada, California line to Oregon) and US-93 (us-93-nevada, Hoover Dam to Idaho), whose miles include the stretches they share with other highways. Where Highway 1 runs on US-101, stops on that stretch say so in on_road. Give a starting point with from_mile or near, and a direction.
Routes covered: I-5 (i-5, 796 miles), US-101 (us-101, 809 miles), Highway 1 (highway-1, 736 miles), I-15 (i-15, 294 miles), I-80 (i-80, 204 miles), US-50 (us-50, 109 miles), I-15 (i-15-nevada, 124 miles), I-80 (i-80-nevada, 410 miles), US-50 (us-50-nevada, 409 miles), US-95 (us-95-nevada, 664 miles), US-93 (us-93-nevada, 526 miles).
Examples:
"Driving north on I-5 from Los Angeles with a 70 lb dog, where can we stop?" -> near={lat:34.05, lon:-118.24}, direction="north", dog_weight_lb=70
"Pet areas on the Grapevine" -> from_mile=170, to_mile=222, kinds=["rest_area","park"]
"Heading south on 101 from San Francisco to Santa Barbara, where can the dog run?" -> route="us-101", near={lat:37.77, lon:-122.42}, to_mile=100, direction="south"
"Dog-friendly hotel near Redding under $40 a night" -> near={lat:40.59, lon:-122.39}, kinds=["lodging"], max_total_fee=40
"Driving I-80 east from Reno with a dog, where can we stop?" -> route="i-80-nevada", near={lat:39.53, lon:-119.81}, direction="east"
| Name | Required | Description | Default |
|---|---|---|---|
| dogs | No | Number of dogs | |
| near | No | Start from the route mile nearest this point | |
| kinds | No | Kinds of stops to include; all by default | |
| limit | No | Maximum results to return | |
| route | No | Route id | i-5 |
| nights | No | Nights of the stay | |
| offset | No | Results to skip, for pagination | |
| to_mile | No | Stop at this route mile | |
| direction | No | Direction of travel. Route miles increase going north, or east on I-80 and US-50; north and east both mean increasing miles | north |
| from_mile | No | Start at this route mile | |
| dog_weight_lb | No | The dog's weight in pounds | |
| max_total_fee | No | Most the guest will pay in pet fees for the whole stay, USD | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
| dog_friendly_only | No | Leave out stops where dogs are not allowed |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| guide | Yes | |
| route | Yes | |
| stops | Yes | |
| total | Yes | |
| offset | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely behavioral context the annotations cannot: routes are single-state and terminate at the state line, stops are filtered against dog weight and the pet-fee budget, and California vs. Nevada mile conventions differ. It does not discuss result volume or what happens when a start point is off-route, which is why this is a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and constraints are front-loaded and the worked examples earn their space. But the 'Routes covered:' inventory largely restates the route enum already present in the schema, adding only mile lengths, and the prose paragraph above it covers much of the same ground — roughly a third of the text is redundant with structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with a nested `near` object and an output schema, this description supplies what structured data cannot: the mile/direction model, per-route jurisdictions, and the filtering semantics for weight and fees. Nothing an agent needs in order to construct a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes well beyond it: it explains that direction means increasing miles (north/east), that California miles follow the Caltrans odometer from named origins while Nevada counts mileposts from the state line, and that on_road marks Highway 1 stretches running on US-101. That is interpretation an agent cannot derive from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Dog-friendly stops along a California or Nevada highway, in driving order') and enumerates exactly which kinds of stops are included, plus the alias relationship to dogpolicies_route_stops. An agent can tell this apart from dogpolicies_near or dogpolicies_plan_trip without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alias condition ('kept for older clients') and states a hard usage requirement: 'Give a starting point with from_mile or near, and a direction.' Five worked examples map natural-language requests to concrete argument sets. It does not, however, say when to prefer this over dogpolicies_plan_trip or dogpolicies_near, which the sibling list makes plausible alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dogrulebook_search_placesSearch places (alias)ARead-onlyIdempotentInspect
Alias of dogpolicies_search_places, kept for older clients. Search parks, beaches, trails, hotels, campgrounds and cabin resorts in California and Nevada by name, location and dog rules.
Returns one page of places with a one-line answer ("Yes, on a leash no longer than 6 feet."), status (yes, yes_restricted, no, varies), verification date and page URL. Use dogpolicies_get_place for full rules and sources, and dogpolicies_find_hotels to check a specific dog's weight and budget at hotels.
Examples:
"Off-leash beaches near San Diego" -> type="beach", off_leash=true, near={lat:32.72, lon:-117.16}
"Can I bring my dog to Point Lobos?" -> query="Point Lobos"
"State parks in Marin County that allow dogs" -> type="park", county="Marin", dogs_allowed=true
"Lake Tahoe beaches in Nevada that allow dogs" -> type="beach", state="NV", dogs_allowed=true
"Off-leash dog parks in Las Vegas" -> type="park", off_leash=true, county="Clark", state="NV"
"RV parks in Fresno County that take dogs" -> type="campground", county="Fresno", dogs_allowed=true
"Dog-friendly cabins in June Lake" -> type="cabins", query="June Lake", dogs_allowed=true
"Restaurants with a dog-friendly patio in Alameda" -> type="restaurant", query="Alameda"
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area id, the name a traveler gives the trip: san-francisco, east-bay, peninsula, south-bay, north-bay, lake-tahoe, big-sur, mendocino-coast, yosemite, death-valley | |
| near | No | Limit to places near a point; results are sorted by distance | |
| type | No | Kind of place; campground covers campgrounds and RV parks (some also rent cabins), cabins covers cabin resorts with no campground, restaurant covers restaurants, cafes, bars, breweries and tasting rooms (dogs on the patio, by the owner's published policy) | |
| limit | No | Maximum results to return | |
| query | No | Words to match in the name, city, county or brand | |
| state | No | "CA" or "NV". Also tells apart counties with the same name, such as Humboldt. | |
| county | No | County name without "County", in California or Nevada, e.g. "Monterey" or "Washoe" | |
| offset | No | Results to skip, for pagination | |
| region | No | Region id, e.g. central-coast, san-diego or reno-tahoe-nevada | |
| off_leash | No | true: only places where the managing agency allows dogs off leash, at least at some times | |
| dogs_allowed | No | true: only places that allow dogs somewhere; false: only places that do not | |
| response_format | No | 'markdown' for readable text, 'json' for structured data | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Date the data was built (YYYY-MM-DD) |
| count | Yes | |
| total | Yes | |
| offset | Yes | |
| places | Yes | |
| license | Yes | |
| has_more | Yes | |
| attribution_url | Yes | |
| attribution_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavior beyond that: results are one page, each hit carries a one-line answer, a status in {yes, yes_restricted, no, varies}, a verification date and a page URL. It does not mention freshness cadence or what an empty result means, but the added context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The prose is front-loaded and tight, but eight example bullets is more than needed — several (San Diego beaches, Tahoe beaches, Las Vegas parks) demonstrate essentially the same filter-and-geography pattern, so the example block is padded relative to the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not restate return fields, yet it still summarizes the answer/status/verification shape usefully; params are fully documented in-schema and annotations cover the safety profile. The only gap is that it never says whether this alias and the canonical tool behave identically or which to prefer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the worked examples add genuine meaning beyond the schema by showing how a natural-language ask maps onto parameter combinations (type=beach + off_leash=true + near, type=campground + county + dogs_allowed). It does not explain interplay like query vs area precedence or how offset/limit combine with near-distance sorting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens by naming the canonical tool it aliases and then states a specific verb+resource: searching parks, beaches, trails, hotels, campgrounds and cabin resorts across CA/NV by name, location and dog rules. It also distinguishes itself from dogpolicies_get_place and dogpolicies_find_hotels in the same paragraph, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes adjacent intents: dogpolicies_get_place for full rules/sources, dogpolicies_find_hotels for a specific dog's weight/budget. The 'alias ... kept for older clients' framing implies the canonical name is preferred but never states 'prefer dogpolicies_search_places', leaving a small ambiguity when both names are in scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
26 tool updates
- First observed
dogpolicies_browse_answers - First observed
dogpolicies_changes_near - First observed
dogpolicies_changes_since - First observed
dogpolicies_compare_places - First observed
dogpolicies_find_hotels - First observed
dogpolicies_get_brand_policy - First observed
dogpolicies_get_place - First observed
dogpolicies_get_rule - First observed
dogpolicies_near - First observed
dogpolicies_plan_trip - First observed
dogpolicies_report_correction - First observed
dogpolicies_route_stops - First observed
dogpolicies_search_places - First observed
dogrulebook_browse_answers - First observed
dogrulebook_changes_near - First observed
dogrulebook_changes_since - First observed
dogrulebook_compare_places - First observed
dogrulebook_find_hotels - First observed
dogrulebook_get_brand_policy - First observed
dogrulebook_get_place - First observed
dogrulebook_get_rule - First observed
dogrulebook_near - First observed
dogrulebook_plan_trip - First observed
dogrulebook_report_correction - First observed
dogrulebook_route_stops - First observed
dogrulebook_search_places
Related MCP Connectors
US backcountry permit and campground rules, dates and recorded openings. Read-only, no sign-in.
Los Angeles hotel facts with sources: parking prices, fees, pets, check-in, pools, distances.
US and Canadian national park alerts, closures, road events, campgrounds open today and conditions.
US outdoor recreation: 37k+ trails, 30k+ campgrounds, parks, weather + wildfire safety. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables assistants to plan and verify road trips in a rooftop tent, campervan or motorhome by checking each night, route, schedule and arrival against vehicle rules, camping legality and sunset times. It also surfaces candidate overnight stops, supplies, prices, amenities and host contacts, and can draft information requests to hosts without sending them.MIT
- FlicenseNot gradedqualityCmaintenanceEnables conversational exploration of California restaurant data, vibe-based recommendations, and access to structured restaurant details and reviews.-
- AlicenseNot gradedqualityBmaintenanceAccess California DMV data on vehicle registrations, EV adoption, field offices, forms, insurer NAIC codes, and driver licenses by county.202 npmMIT

@pipeworx/us-dmvofficial
AlicenseNot gradedqualityFmaintenanceAccess US state DMV data including vehicle registrations, EV adoption, DMV office locations and services, live wait times, and California forms and insurer lookups. Supports multiple states with per-state quirks documented.1 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.