Petnecto
Server Details
Paw to paw. Shelter pets, one question away. Ask in plain words, in any of ten languages ("Use Petnecto to find me a calm older dog near Seattle that is good with cats") and get real adoptable pets near the place you name, with photos, ages, sizes, what each rescue says about them, and exactly how to reach the rescue. Listings come from open public data that shelters and governments publish (Taiwan's national adoption listings, King County WA and Montgomery County MD in the US, Zaragoza and Vienna in Europe), credited in every answer. Adoption always happens through the rescue: Petnecto takes no payments, applications or personal details, and needs no account.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Most tools target clearly distinct operations, but find_pets, search_by_description, and show_pets all retrieve pets and require careful reading to distinguish. The descriptions do provide explicit guidance (e.g. 'Prefer find_pets for structured values', 'Use it when someone wants to look at pets'), which mitigates the overlap.
Predominantly consistent verb_noun/snake_case: find_pets, get_pet, get_rescue, list_filters, resolve_place, resolve_breed, search_by_description, show_pets. Minor deviations like about_this_service (noun phrase) and similar_pets (adjective_noun) are readable and purposeful.
11 tools is well within the ideal 3-15 range, and each tool has a clear role: search, single-item retrieval, place/breed resolution, filter discovery, shelter lookup, and user-facing views. No tool feels redundant padding.
A read-only discovery service is well covered: structured and natural-language search, single pet/rescue retrieval, place and breed resolution, filter metadata, shelters, and similar-pet recommendations. Minor gaps exist (no way to save/favorite or initiate contact/inquiry), but core workflows are complete.
Available Tools
11 toolsabout_this_serviceAbout PetnectoBRead-onlyIdempotentInspect
Where we list pets (places and counts), where the listings come from, who runs this service, what it keeps, and how a rescue changes or removes its listings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds useful scope context (it explains listing sources and removal behavior) but discloses no further behavioral traits such as return format or granularity.
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?
A single short sentence that front-loads the first topic (where pets are listed). It is appropriately sized for a zero-arg informational tool, though the run-on list style and dangling 'what it keeps' cost a bit of crispness.
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 parameterless read-only tool with no output schema, the description covers the informational domains an agent would query. It stops short of indicating how the returned documentation is organized, but nothing essential to 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?
The tool takes zero parameters, so there is nothing for the description to document and the baseline is 4. Schema coverage is 100% with an empty properties object, matching the description's parameter-free nature.
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 enumerates the concrete topics the tool surfaces: pet listing locations and counts, listing provenance, service ownership, retention, and how rescues change or remove listings. That is a clear informational/meta purpose, though the phrasing ('what it keeps') is slightly vague and it never states plainly that it returns service documentation.
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?
No sentence tells the agent when to call this versus the sibling tools (find_pets, get_rescue, etc.). Usage is only inferable from the topic list; there is no explicit trigger, prerequisite, or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_petsFind pets to adoptARead-onlyIdempotentInspect
Search pets to adopt in the places we list (Taiwan, King County WA, Montgomery County MD, Zaragoza, Fukushima Prefecture, and Vienna, found pets only: marked found:true, not adoptable yet; found=exclude leaves them out). Nowhere else yet. Search near a place (nearest first), by species, age, size, sex, breed and color, or by words in any of 10 languages (q). No place and no country = everything we list. Returns names, short facts, distance, the rescue and a link to each listing, plus what q was understood as; an empty answer says what we do list.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text ("黑色柴犬") | |
| km | No | Radius, kilometres | |
| age | No | Taiwan says only Young or Adult | |
| sex | No | ||
| lang | No | The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en) | |
| near | No | a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県) (98101, 信義區, 臺北市), or lat,lon; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby | |
| page | No | ||
| size | No | Not stated in King County or Vienna | |
| sort | No | photo = best photo first | |
| breed | No | Breed name in any language, or Wikidata id | |
| color | No | ||
| found | No | Found pets (Vienna's, announced for their owners first) are included by default, marked found:true, NOT adoptable. exclude = adoptable only. Never call one adoptable | |
| limit | No | Pets per answer (find_pets default 10, show_pets 24) | |
| miles | No | Radius, miles (default 50) | |
| photo | No | good: only pets whose best photo passed our checks; unanalysed pets are left out (only Taiwan's are analysed) | |
| place | No | near as structured fields; never a street address | |
| cursor | No | next_cursor from the previous answer | |
| detail | No | find_pets default brief; full = every field of pet.v1 | |
| facets | No | Add counts by species, size, age, sex, region | |
| region | No | Taiwan county or city, e.g. Taipei City | |
| country | No | TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture). Not needed with near | |
| species | No | ||
| good_with | No | Only pets whose listing says so; rarely stated. kids is not offered; if it is passed anyway, the answer lists pets whose listing does not say (good_with_soft, each not_stated). For such wishes prefer search_by_description | |
| min_photo_px | No | Best photo's longest side, at least, in pixels |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/idempotent annotations already covering safety, the description adds substantial behavioural context: coverage is limited to listed regions, found pets are never adoptable, an uncovered place yields nearest pets 'marked not nearby', and an empty answer explains the inventory. These are operationally important facts absent from 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 resource and scope, then filters, then return shape; nearly every clause carries information. The parenthetical on found pets is dense and partly duplicates the schema's found description, costing some readability.
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 24-parameter tool with a nested place object and no output schema, the description states what is returned (names, facts, distance, rescue, link, q interpretation) and how empty results behave. Pagination and cursor semantics are left entirely to the schema, which is acceptable but a minor 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 coverage is 83%, so the baseline is 3, but the description adds value beyond the schema by enumerating the filter facets (species, age, size, sex, breed, color), the 10-language q behaviour, and the near-vs-country interaction. It also explains what q returns ('what q was understood as'), which no schema field states.
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 ('Search pets to adopt') plus the exact geographic inventory it covers and the facets it filters on. It only implicitly differentiates from siblings like show_pets and similar_pets, which surface solely via the limit default note and the search_by_description pointer inside a parameter description.
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 usage conditions: 'No place and no country = everything we list', 'Nowhere else yet', and the default found behaviour (included, marked found:true, not adoptable). It also routes one alternative explicitly ('For such wishes prefer search_by_description'), but never says when to call this versus show_pets or similar_pets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_shelters_nearFind local shelters and rescuesARead-onlyIdempotentInspect
Shelters and rescues near a US ZIP, 'town, ST' or lat,lon that are not on Petnecto yet, nearest first: address, phone, website, their own adoptable-pets page, hours, directions, source and licence. Use it when find_pets finds nothing near the person.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| near | No | US ZIP or 'Republic, MO' | |
| limit | No | ||
| radius_miles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower; the description still adds real value by disclosing ordering ('nearest first') and the returned fields (address, phone, website, adoptable-pets page, hours, directions, source, licence). It doesn't mention pagination or how many results come back by default, but the return-shape disclosure is unusually concrete for a tool with no output 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?
Two sentences, front-loaded with the resource and locator formats, then the routing hint. The field list is dense but each item earns its place; only the trailing 'source and licence' pairing reads as 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?
With no output schema, the description sensibly enumerates return fields and input formats, and gives a usage trigger for a 5-parameter tool. It is slightly incomplete in not clarifying that all parameters are optional (0 required) or how the defaults for limit/radius_miles behave.
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 only 20%, so the description must carry the load; it explains the accepted locator formats (US ZIP, 'town, ST', or lat,lon), which maps onto near/lat/lon. However limit and radius_miles are undocumented in both the schema and the description, leaving half the parameters opaque.
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+resource ('shelters and rescues near...') and a distinctive scope ('that are not on Petnecto yet'), which separates it from find_pets and get_rescue. An agent knows exactly what this returns without opening the 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 an explicit trigger tied to a named sibling: 'Use it when find_pets finds nothing near the person.' Clear context and an alternative, though it doesn't state when NOT to use it (e.g. when find_pets does return results).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_petGet one petARead-onlyIdempotentInspect
One pet by Petnecto ID, shelter pet ID, or PetHarbor listing URL: photos, stated facts, adoption fee, the shelter and how to reach it. Lists choices when an ID is shared.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Petnecto ID, shelter ID, or PetHarbor URL | |
| lang | No | The person's language (default en) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description still adds real value: it discloses the payload contents (photos, stated facts, adoption fee, shelter contact) and the disambiguation behavior — 'Lists choices when an ID is shared' — which is a behavioral trait 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?
One dense sentence plus a short trailing clause; the identifier forms and the return contents are front-loaded before the edge-case behavior. No filler, though the trailing disambiguation sentence is slightly disjointed from the opener.
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 no output schema, the description usefully enumerates what comes back (photos, facts, fee, shelter and contact route), and it flags the ambiguous-ID case. For a simple two-parameter lookup this is essentially complete; only explicit routing guidance to sibling tools 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 both parameters are already documented, giving a baseline of 3. The description echoes the three accepted ID forms but adds no syntax, format, or validation nuance beyond what the schema states.
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+resource — retrieving ONE pet — and enumerates the accepted identifier forms (Petnecto ID, shelter pet ID, PetHarbor URL). The singular scope implicitly separates it from list-oriented siblings like find_pets and show_pets, 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 identifier-based framing: use this when you already have an ID or URL, rather than searching. However, no explicit when-to-use/when-not statement or named alternative (e.g. find_pets for discovery) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rescueGet one rescueARead-onlyIdempotentInspect
One rescue or shelter by id (from a pet's rescue.id): where it is, its adoption page, email and phone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely useful behavioral context by enumerating the response contents (location, adoption page, contact details) — notable since there is no output schema. Minor gap: no note on behavior for an unknown id.
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?
A single tight sentence that front-loads the verb+resource and then the payoff (what fields come back). No filler, 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 one-parameter lookup with no output schema, the description is nearly sufficient: it explains what is returned and where the input id comes from. It could say slightly more about behavior on an unmatched or malformed id, but nothing essential is absent.
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 schema coverage at 0%, the description carries the burden, and it does add real meaning: it tells the agent the id originates from a pet's 'rescue.id', which is not encoded anywhere in the schema. It doesn't restate the accepted id patterns, but the provenance is the more valuable missing piece.
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+resource ('One rescue or shelter by id') plus the key fields returned (location, adoption page, email, phone), so an agent knows exactly what this returns. It distinguishes itself from find_shelters_near by the 'by id' lookup, though it doesn't name that sibling 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?
The parenthetical '(from a pet's rescue.id)' implies when to reach for it — after get_pet surfaces a rescue id — but there's no explicit when/when-not statement or named alternative to find_shelters_near. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filtersFilters each country hasARead-onlyIdempotentInspect
The countries and places we hold listings for, and per country how many live pets state each species, age, size, sex, colour and good-with value. Taiwan states no Baby or Senior ages, Vienna no sizes, and few listings anywhere say good-with: check here before suggesting a filter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it discloses data sparsity per locale (Taiwan lacks Baby/Senior ages, Vienna lacks sizes, good-with is rarely populated anywhere), which directly prevents an agent from proposing unusable filters. It stops short of 5 because nothing is said about result size, caching or freshness.
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, no filler, and the resource scope is front-loaded before the caveats. The first sentence's clause 'how many live pets state each species, age, size...' is grammatically tangled and needs a second read, which keeps it out of the top band, but every sentence earns its 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?
With zero parameters and no output schema, the description carries the burden of explaining the return shape and does so (per-country counts by attribute value), plus the locale-specific gaps. For a simple discovery endpoint this is sufficient, though a line about how to interpret counts (live listings only, current snapshot) would close the remaining 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?
The tool takes zero parameters, so per the rubric the baseline is 4 and there is no parameter syntax for the description to compensate for. Nothing in the description misrepresents or adds noise to the (empty) parameter surface.
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 resource (countries/places with listings) and what it returns (per-country counts of live pets across species, age, size, sex, colour, good-with values). An agent can tell this is a filter-availability/facet-discovery tool rather than a search tool. It does not explicitly distinguish itself from siblings such as about_this_service or resolve_place, so it falls short of a 5.
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 closing clause 'check here before suggesting a filter' gives an explicit usage trigger and ties the tool to the sibling family that suggests filters (find_pets, search_by_description). It does not name a when-not condition or an alternative to use instead, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_breedResolve a breed nameARead-onlyIdempotentInspect
Turn a breed name in any language (貴賓犬, pit bull, perro salchicha, 시바견) into Wikidata breed ids, to pass to find_pets as breed or to compare listings across countries.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| species | No |
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 bar is lower. The description adds the meaningful behavioral fact that the output is Wikidata breed ids usable as a cross-tool key — important since no output schema exists. It omits no-match/failure behavior and any rate or length limits.
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?
A single front-loaded sentence with no filler; the core action, input examples, output type, and downstream use all fit compactly.
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?
Covers the input concept and the return type, which partially compensates for the missing output schema. However, for a 2-parameter tool with a fully undocumented enum parameter and no guidance on unresolved names or species scoping, an agent is left guessing on important cases.
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 0%, so the description carries the full burden. It implicitly characterizes 'text' as a breed name in any language, but never mentions the 'species' parameter or its 8-value enum (Dog, Cat, Rabbit, ...), which is a significant omission for disambiguating names like 'Pig' or 'Bird'.
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 (resolve/turn) and resource (breed name in any language) with concrete multilingual examples (貴賓犬, pit bull, perro salchicha, 시바견) and names the output artifact (Wikidata breed ids). It is clearly distinct from siblings like resolve_place or find_pets.
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 explicit downstream context — pass the ids to find_pets as breed, or use them to compare listings across countries. That is clear when-to-use guidance tied to a named sibling, though it never states when not to use it (e.g. when a raw name string is already accepted).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_placeResolve a placeARead-onlyIdempotentInspect
Turn a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県), or lat,lon into the point find_pets would search around, to confirm with the person before searching. It finds places we list no pets near too (any Japanese prefecture, big cities): find_pets then says so. Positions are rounded to about 1 km and nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| near | Yes | a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県), or lat,lon |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the readOnly/idempotent annotations with details those hints cannot convey: positions are rounded to about 1 km, nothing is stored, and the tool returns hits for regions with no pet listings so the agent is not misled by an empty result. That is exactly the kind of behavioral context annotations cannot 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?
Two sentences, front-loaded with the conversion action and followed by the caveat about uncovered places. The long example list ('Zaragoza, Wien or Fukushima') is somewhat wordy but does communicate accepted input variety and locale handling.
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 single-parameter resolver with no output schema, the description does convey what comes back (a point) and its precision, plus the edge case where no pets exist nearby. Only the exact response structure is unspecified, a minor 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 the single parameter's description repeats the same examples as the tool description, so no meaning is added beyond the schema. The description implies the accepted formats and the length cap is schema-side, so 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?
Names a specific verb and resource ('Turn ... into the point find_pets would search around') and enumerates accepted input forms, so an agent knows exactly what it converts. It explicitly names the sibling tool (find_pets) whose input this feeds, distinguishing it from search/listing siblings.
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?
States the workflow context clearly: resolve the place first so the person can confirm it before find_pets runs. It also notes that unpets-covered places still resolve and that find_pets will report the absence, which prevents an agent from skipping the step. It does not name an explicit alternative for when not to call it, keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_descriptionSearch by descriptionARead-onlyIdempotentInspect
Find pets from wishes in the person's own words, in any language (“a calm small dog good with kids near Seattle”). Use it for wishes listings rarely state, like calm or good with kids: each pet's match says, per wish, stated, inferred (read from its text, with a %) or not_stated, and pets that do not say are left out and counted in not_stated unless include_unknown=true. The answer's understood.chips say what was searched; drop a wrong one with off=[chip id]; a chip noted approx or hint is not a fact about any pet. Found pets (found:true) are not adoptable. Prefer find_pets for structured values.
| Name | Required | Description | Default |
|---|---|---|---|
| off | No | Chip ids from a previous answer's understood.chips to leave out, e.g. ["good_with:kids"] | |
| lang | No | The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en) | |
| near | No | Where, if it is not in the query: a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県), or lat,lon | |
| page | No | ||
| limit | No | ||
| query | Yes | What the person wants, in their own words and language, e.g. “a senior dog in Zaragoza”, “a friendly cat near 98101”, “小型犬 台北” | |
| country | No | TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture) | |
| include_unknown | No | Also include pets whose listing does not say whether they are good with dogs/cats/kids (they are marked not_stated) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, it explains match semantics (stated / inferred with a % / not_stated), that unstated pets are excluded and counted, and that findings marked found:true are not adoptable. The remaining gap is the approx/hint caveat being phrased tersely ('a chip noted approx or hint is not a fact about any pet') without saying how such chips affect match confidence.
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, followed by match semantics, the off/chips mechanism, and the sibling alternative. It is dense and the third sentence is a run-on carrying several distinct facts, but essentially no sentence is 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?
There is no output schema, yet the description still explains the return shape an agent needs to act on: per-wish match statuses, understood.chips, and the found flag. Combined with the parameter coverage, an agent has enough to call it and interpret the result 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 75%, so the schema already documents near, country, lang and include_unknown. The description still adds cross-call meaning the schema cannot: 'off' works on chip ids from a previous answer's understood.chips, and include_unknown changes whether non-stating pets appear or are merely counted. It doesn't clarify paging behavior for page/limit.
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 pets from wishes in the person's own words, in any language') and immediately scopes it to fuzzy/qualitative wishes rather than structured attributes. It also names the sibling it is not ('Prefer find_pets for structured values'), so an agent can route 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?
Explicitly says when to use it ('wishes listings rarely state, like calm or good with kids') and names the alternative plus the condition that selects it ('Prefer find_pets for structured values'). It also documents the recovery path (drop a wrong chip with off=[chip id]) and the include_unknown escape hatch, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_petsShow pets to adoptARead-onlyIdempotentInspect
Show pets to adopt near a place as an interactive view: photos, facts, and a button to meet one at its rescue. Use it when someone wants to look at pets in a place we list (see the server instructions). Apps without interactive views get the same list as text.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text ("黑色柴犬") | |
| age | No | Taiwan says only Young or Adult | |
| lang | No | The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en) | |
| near | No | a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県) (98101, 信義區, 臺北市), or lat,lon; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby | |
| page | No | ||
| size | No | Not stated in King County or Vienna | |
| limit | No | Pets shown (default 24) | |
| country | No | TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture). Not needed with near | |
| species | No | ||
| good_with | No | Only pets whose listing says so; rarely stated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the bar is lower. The description adds real context the annotations do not: the result is rendered as an interactive UI view, and 'apps without interactive views get the same list as text' tells the agent to expect a graceful degradation path rather than a failure. It stops short of describing pagination or result count 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?
Three short sentences, front-loaded with what the tool produces, then usage, then fallback behavior. No filler, though the parenthetical pointer to server instructions slightly dilutes the self-containedness.
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 10 optional params, four enums, and no output schema, the description needs to convey the return shape — and it does ('photos, facts, and a button', plus the text fallback). What's missing is only directional guidance versus the sibling find_pets, which is a usage gap rather than a completeness one.
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 80% and the schema descriptions already explain q, near, country, age, size, and good_with in detail. The description only echoes 'near a place', adding nothing about syntax, place formats, or the 'not nearby' fallback that the schema handles. 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?
States a specific verb and resource plus the distinctive output form: 'show pets to adopt near a place as an interactive view: photos, facts, and a button to meet one at its rescue'. That differentiates it from a plain list tool by output shape, but it never names the obvious sibling (find_pets) as the non-interactive counterpart, leaving the agent to infer the pairing.
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 it when someone wants to look at pets in a place we list (see the server instructions)' gives a when-condition, but the actual selection logic is deferred to external server instructions rather than stated. There is no exclusion, no mention of when to prefer find_pets or search_by_description instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
similar_petsPets like this oneBRead-onlyIdempotentInspect
Pets similar to one pet id (from search results): same kind of pet and size, nearest in meaning of their listings. Use it after the person likes one pet.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| lang | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are similarity-ranked from listing text, but says nothing about result count, ordering guarantees, or behavior when no similar pets 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?
Two compact sentences with the core behavior front-loaded and the usage cue appended. "Nearest in meaning of their listings" is slightly awkward phrasing, but nothing is wasted.
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 read-only recommendation tool with no output schema, the description covers the essential trigger and similarity logic but leaves pagination/limit behavior and language handling unexplained. Adequate as a minimum, but an agent cannot tell how many results it will get or what to do with an empty set.
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 0% across 3 parameters, so the description carries the full burden. It adds real meaning for id (must come from search results), but lang and limit — including the 1-24 cap — are completely unaddressed in both schema and description.
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 concrete verb-like outcome and resource: pets similar to a given pet id, with the similarity criteria spelled out (same kind of pet and size, nearest listing meaning). This clearly distinguishes it from get_pet (single lookup) and find_pets/search_by_description, though it doesn't name those siblings 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?
"Use it after the person likes one pet" gives a concrete trigger condition, and "(from search results)" tells the agent where the id comes from. It stops short of naming alternatives or saying when not to use it (e.g. cold-start recommendations with no liked pet).
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.
4 tool updates
- Changed
find_pets4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near"New value: +"TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture). Not needed with near" - changed
Input schema / properties / country / enumPrevious value: -[ - "TW", - "US", - "ES", - "AT" -]New value: +[ + "TW", + "US", + "ES", + "AT", + "JP" +] - changed
Input schema / properties / near / descriptionPrevious value: -"A US ZIP (98101), lat,lon, a Taiwan county or township in any language (信義區, 臺北市), Zaragoza or Wien; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby"New value: +"a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県) (98101, 信義區, 臺北市), or lat,lon; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby" - changed
Input schema / properties / place / properties / area / descriptionPrevious value: -"A Taiwan county or township, Zaragoza or Wien"New value: +"a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県)"
- Changed
resolve_place1 field changed- changed
Input schema / properties / near / descriptionPrevious value: -"A US ZIP, lat,lon, a Taiwan county or township name, Zaragoza or Wien"New value: +"a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県), or lat,lon"
- Changed
search_by_description3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"TW (Taiwan), US (King County WA and Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only)"New value: +"TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture)" - changed
Input schema / properties / country / enumPrevious value: -[ - "TW", - "US", - "ES", - "AT" -]New value: +[ + "TW", + "US", + "ES", + "AT", + "JP" +] - changed
Input schema / properties / near / descriptionPrevious value: -"Where, if it is not in the query: a US ZIP (98101, 20850), lat,lon, a Taiwan place, Zaragoza or Wien"New value: +"Where, if it is not in the query: a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県), or lat,lon"
- Changed
show_pets3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near"New value: +"TW (Taiwan), US (King County WA, Montgomery County MD only), ES (Zaragoza), AT (Vienna, found pets only) or JP (Fukushima Prefecture). Not needed with near" - changed
Input schema / properties / country / enumPrevious value: -[ - "TW", - "US", - "ES", - "AT" -]New value: +[ + "TW", + "US", + "ES", + "AT", + "JP" +] - changed
Input schema / properties / near / descriptionPrevious value: -"A US ZIP (98101), lat,lon, a Taiwan county or township in any language (信義區, 臺北市), Zaragoza or Wien; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby"New value: +"a Taiwan county or township in any language, a US ZIP, Zaragoza, Wien or Fukushima (福島県) (98101, 信義區, 臺北市), or lat,lon; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby"
1 tool update
- Changed
get_rescue1 field changed- changed
Input schema / properties / id / patternPrevious value: -"^(?:rg-org-[a-z0-9]{1,12}|tw-shelter-\\d{1,6}|us-shelter-(?:mc|kc)|es-shelter-zgz|at-shelter-(?:tqt|ma60|rfz))$"New value: +"^(?:rg-org-[a-z0-9]{1,12}|tw-shelter-\\d{1,6}|us-shelter-(?:mc|kc)|es-shelter-zgz|jp-shelter-fks|at-shelter-(?:tqt|ma60|rfz))$"
2 tool updates
- Added
find_shelters_near - Changed
get_pet4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"The pet's id, exactly as a search (find_pets, show_pets, search_by_description) gave it: tw-<digits>, us-kc-<letters and digits>, us-mc-<letters and digits>, es-zgz-<digits> or at-vie-<digits>"New value: +"Petnecto ID, shelter ID, or PetHarbor URL" - added
Input schema / properties / id / maxLengthAdded value: +300 - added
Input schema / properties / id / minLengthAdded value: +1 - removed
Input schema / properties / id / patternRemoved value: -"^(?:(?:rg|tw|sample)-\\d{1,12}|us-(?:mc|kc)-[A-Za-z0-9]{1,12}|es-zgz-\\d{1,8}|at-vie-\\d{1,8})$"
2 tool updates
- Changed
find_pets21 fields changed- changed
Input schema / properties / age / descriptionPrevious value: -"Taiwan's shelters say only Young or Adult"New value: +"Taiwan says only Young or Adult" - changed
Input schema / properties / breed / descriptionPrevious value: -"A breed name in any language, or its Wikidata id (Q39315)"New value: +"Breed name in any language, or Wikidata id" - changed
Input schema / properties / country / descriptionPrevious value: -"Which country's listings: TW (Taiwan, every public shelter), US (King County WA and Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near"New value: +"TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near" - changed
Input schema / properties / cursor / descriptionPrevious value: -"next_cursor from the previous answer: the next page, without re-reading the earlier ones"New value: +"next_cursor from the previous answer" - changed
Input schema / properties / detail / descriptionPrevious value: -"find_pets default brief (short pets; get_pet has the full record); full = every field of pet.v1"New value: +"find_pets default brief; full = every field of pet.v1" - changed
Input schema / properties / facets / descriptionPrevious value: -"Add counts by species, size, age, sex, region and good-with"New value: +"Add counts by species, size, age, sex, region" - changed
Input schema / properties / found / descriptionPrevious value: -"Found pets (Vienna's list, announced for their owners first; a pet can stay listed for months) are included by default, each marked found:true and NOT adoptable yet. exclude = adoptable pets only; only = found pets only. Never call a found pet adoptable"New value: +"Found pets (Vienna's, announced for their owners first) are included by default, marked found:true, NOT adoptable. exclude = adoptable only. Never call one adoptable" - changed
Input schema / properties / good_with / descriptionPrevious value: -"Only pets whose listing says so. Rarely stated: a few dozen Taiwan listings, none elsewhere. No listing states good with kids, so kids is not offered; if it is passed anyway, the answer lists pets whose listing does not say (good_with_soft, each not_stated) and says so. For such wishes prefer search_by_description (stated / not_stated per pet)"New value: +"Only pets whose listing says so; rarely stated. kids is not offered; if it is passed anyway, the answer lists pets whose listing does not say (good_with_soft, each not_stated). For such wishes prefer search_by_description" - changed
Input schema / properties / km / descriptionPrevious value: -"Radius in kilometres, instead of miles"New value: +"Radius, kilometres" - changed
Input schema / properties / lang / descriptionPrevious value: -"The person's language for names and text: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)"New value: +"The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)" - changed
Input schema / properties / miles / descriptionPrevious value: -"Radius in miles (default 50)"New value: +"Radius, miles (default 50)" - changed
Input schema / properties / min_photo_px / descriptionPrevious value: -"Only pets whose best photo is at least this many pixels on its longest side"New value: +"Best photo's longest side, at least, in pixels" - changed
Input schema / properties / near / descriptionPrevious value: -"Where the person is: a US ZIP (98101, 20850), lat,lon (25.03,121.56; rounded to ~1 km), a Taiwan county or township in any language (信義區, Xinyi, 臺北市), Zaragoza or Wien. Sorted by distance; a place we do not cover gets the nearest pets we hold, marked as not nearby. Prefer this or place over free text"New value: +"A US ZIP (98101), lat,lon, a Taiwan county or township in any language (信義區, 臺北市), Zaragoza or Wien; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby" - changed
Input schema / properties / photo / descriptionPrevious value: -"good: only pets whose best photo passed our checks (analysed; not blurry, dark, tiny, or without a pet in it). Pets not analysed yet are left out, and so far only Taiwan's photos are analysed"New value: +"good: only pets whose best photo passed our checks; unanalysed pets are left out (only Taiwan's are analysed)" - changed
Input schema / properties / place / descriptionPrevious value: -"The same as near, as structured fields (do not put a street address or a whole sentence here; the server resolves it against its own place table)"New value: +"near as structured fields; never a street address" - changed
Input schema / properties / place / properties / area / descriptionPrevious value: -"A Taiwan county or township in any language, Zaragoza or Wien"New value: +"A Taiwan county or township, Zaragoza or Wien" - changed
Input schema / properties / place / properties / latitude / descriptionPrevious value: -"Only with longitude, and only if the person shared their location"New value: +"Only with longitude, if the person shared it" - changed
Input schema / properties / place / properties / postal_code / descriptionPrevious value: -"A US ZIP (we list King County WA and Montgomery County MD only)"New value: +"A US ZIP" - changed
Input schema / properties / q / descriptionPrevious value: -"Words in the person's own language: breeds, colors, ages, sizes, sex and places become filters (\"black shiba girl\", \"黑色柴犬\", \"perro mayor\"); other words are full-text search"New value: +"Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text (\"黑色柴犬\")" - changed
Input schema / properties / region / descriptionPrevious value: -"Taiwan county or city, e.g. Taipei City, New Taipei City, Taoyuan City"New value: +"Taiwan county or city, e.g. Taipei City" - changed
Input schema / properties / sort / descriptionPrevious value: -"distance is the default when near is given and needs it; photo = best photo first"New value: +"photo = best photo first"
- Changed
show_pets21 fields changed- changed
Input schema / properties / age / descriptionPrevious value: -"Taiwan's shelters say only Young or Adult"New value: +"Taiwan says only Young or Adult" - removed
Input schema / properties / breedRemoved value: -{ - "description": "A breed name in any language, or its Wikidata id (Q39315)", - "maxLength": 80, - "type": "string" -} - removed
Input schema / properties / colorRemoved value: -{ - "enum": [ - "black", - "white", - "brown", - "yellow", - "grey", - "orange", - "cream", - "tabby", - "calico", - "spotted" - ], - "type": "string" -} - changed
Input schema / properties / country / descriptionPrevious value: -"Which country's listings: TW (Taiwan, every public shelter), US (King County WA and Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near"New value: +"TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near" - removed
Input schema / properties / cursorRemoved value: -{ - "description": "next_cursor from the previous answer: the next page, without re-reading the earlier ones", - "maxLength": 80, - "type": "string" -} - removed
Input schema / properties / detailRemoved value: -{ - "description": "find_pets default brief (short pets; get_pet has the full record); full = every field of pet.v1", - "enum": [ - "brief", - "full" - ], - "type": "string" -} - removed
Input schema / properties / facetsRemoved value: -{ - "description": "Add counts by species, size, age, sex, region and good-with", - "type": "boolean" -} - removed
Input schema / properties / foundRemoved value: -{ - "description": "Found pets (Vienna's list, announced for their owners first; a pet can stay listed for months) are included by default, each marked found:true and NOT adoptable yet. exclude = adoptable pets only; only = found pets only. Never call a found pet adoptable", - "enum": [ - "include", - "exclude", - "only" - ], - "type": "string" -} - changed
Input schema / properties / good_with / descriptionPrevious value: -"Only pets whose listing says so. Rarely stated: a few dozen Taiwan listings, none elsewhere. No listing states good with kids, so kids is not offered; if it is passed anyway, the answer lists pets whose listing does not say (good_with_soft, each not_stated) and says so. For such wishes prefer search_by_description (stated / not_stated per pet)"New value: +"Only pets whose listing says so; rarely stated" - removed
Input schema / properties / kmRemoved value: -{ - "description": "Radius in kilometres, instead of miles", - "maximum": 800, - "minimum": 1, - "type": "integer" -} - changed
Input schema / properties / lang / descriptionPrevious value: -"The person's language for names and text: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)"New value: +"The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)" - changed
Input schema / properties / limit / descriptionPrevious value: -"Pets per answer (find_pets default 10, show_pets 24)"New value: +"Pets shown (default 24)" - removed
Input schema / properties / milesRemoved value: -{ - "description": "Radius in miles (default 50)", - "maximum": 500, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / min_photo_pxRemoved value: -{ - "description": "Only pets whose best photo is at least this many pixels on its longest side", - "maximum": 4000, - "minimum": 1, - "type": "integer" -} - changed
Input schema / properties / near / descriptionPrevious value: -"Where the person is: a US ZIP (98101, 20850), lat,lon (25.03,121.56; rounded to ~1 km), a Taiwan county or township in any language (信義區, Xinyi, 臺北市), Zaragoza or Wien. Sorted by distance; a place we do not cover gets the nearest pets we hold, marked as not nearby. Prefer this or place over free text"New value: +"A US ZIP (98101), lat,lon, a Taiwan county or township in any language (信義區, 臺北市), Zaragoza or Wien; never a street address. Nearest first; an uncovered place gets the nearest pets we hold, marked not nearby" - removed
Input schema / properties / photoRemoved value: -{ - "description": "good: only pets whose best photo passed our checks (analysed; not blurry, dark, tiny, or without a pet in it). Pets not analysed yet are left out, and so far only Taiwan's photos are analysed", - "enum": [ - "good" - ], - "type": "string" -} - removed
Input schema / properties / placeRemoved value: -{ - "additionalProperties": false, - "description": "The same as near, as structured fields (do not put a street address or a whole sentence here; the server resolves it against its own place table)", - "properties": { - "area": { - "description": "A Taiwan county or township in any language, Zaragoza or Wien", - "maxLength": 60, - "type": "string" - }, - "latitude": { - "description": "Only with longitude, and only if the person shared their location", - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "longitude": { - "maximum": 180, - "minimum": -180, - "type": "number" - }, - "postal_code": { - "description": "A US ZIP (we list King County WA and Montgomery County MD only)", - "maxLength": 12, - "type": "string" - } - }, - "type": "object" -} - changed
Input schema / properties / q / descriptionPrevious value: -"Words in the person's own language: breeds, colors, ages, sizes, sex and places become filters (\"black shiba girl\", \"黑色柴犬\", \"perro mayor\"); other words are full-text search"New value: +"Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text (\"黑色柴犬\")" - removed
Input schema / properties / regionRemoved value: -{ - "description": "Taiwan county or city, e.g. Taipei City, New Taipei City, Taoyuan City", - "maxLength": 30, - "type": "string" -} - removed
Input schema / properties / sexRemoved value: -{ - "enum": [ - "Male", - "Female" - ], - "type": "string" -} - removed
Input schema / properties / sortRemoved value: -{ - "description": "distance is the default when near is given and needs it; photo = best photo first", - "enum": [ - "relevance", - "newest", - "listed", - "distance", - "photo" - ], - "type": "string" -}
Publisher details
- Operator
- Squatch.cc LLC (Petnecto) · Publisher source
- Operator website
- https://petnecto.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://petnecto.com/#assistants · Publisher source
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Connectors
Find vets, emergency animal hospitals, and pet supplies via your AI assistant.
Match dog breeds to your life, compare them, plan a test drive and estimate U.S. vet costs.
DogsLife turns a dog's age and your day into a plan, with six read-only tools. Potty schedule (8 to 52 weeks): how long the puppy can usually hold it, how often to go out, whether to plan night trips, and a sample day with clock times. Sleep needs (8 weeks to 24 months): typical sleep per 24 hours, how much the night covers, and how many hours of naps are left. Walks and exercise (8 weeks to 20 years): daily minutes for the dog's age, size and energy. Feeding schedule (8 weeks to 24 months): meals a day, meal times and when to switch to adult food. Adult weight (6 to 18 months): an estimate from age and current weight. Dog age: human years from the AVMA chart (up to 16 years). Same rules and sources (VCA, AKC, PetMD, Agria, Zoetis, Royal Kennel Club, PDSA, AVMA) as the calculators on dogslifeapp.com. Answers in 23 languages, with an interactive day-timeline card (MCP Apps). Read-only, no sign-in, nothing stored. Docs: https://dogslifeapp.com/connect.html
Austin Animal Services MCP — live shelter intake & outcome records from Austin, TX's Austin Animal…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables searching for adoptable animals in Taiwan's public shelters and listing shelters.-
- AlicenseNot gradedqualityBmaintenanceEnables searching RescueGroups.org for adoptable animals by species, postal-code radius, breed, and traits, and exploring the rescues/shelters that list them, including full details, photos, contact info, and adoption process.10 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying live Sonoma County animal shelter intake and outcome records, including recent intakes, animal lookup by id/name/breed, and outcome summaries.11 npmMIT
- AlicenseAqualityCmaintenanceReal-time pet travel data for AI assistants. Connect Claude, ChatGPT, or any MCP-compatible AI to Pawgo's database of airline pet policies and country import requirements.5201 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.