Petnecto
Paw to paw. Shelter pets, one question away: adoptable pets near you, and how to reach the rescue.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_rescue
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pets": {
"url": "https://petnecto.com/mcp"
}
}
}Remote endpoints
https://petnecto.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
π’show_pets(near, q, species, age, size, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"near": {
"description": "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",
"type": "string",
"maxLength": 60
},
"q": {
"description": "Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text (\"ι»θ²ζ΄η¬\")",
"type": "string",
"maxLength": 200
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
},
"age": {
"description": "Taiwan says only Young or Adult",
"type": "string",
"enum": [
"Baby",
"Young",
"Adult",
"Senior"
]
},
"size": {
"description": "Not stated in King County or Vienna",
"type": "string",
"enum": [
"Small",
"Medium",
"Large",
"X-Large"
]
},
"country": {
"description": "TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near",
"type": "string",
"enum": [
"TW",
"US",
"ES",
"AT"
]
},
"good_with": {
"description": "Only pets whose listing says so; rarely stated",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"dogs",
"cats"
]
}
},
"lang": {
"description": "The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)",
"type": "string",
"maxLength": 20
},
"limit": {
"description": "Pets shown (default 24)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’find_pets(country, region, near, place, miles, ...)
Search pets to adopt in the places we list (Taiwan, King County WA, Montgomery County MD, Zaragoza, 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.
Input Schema
{
"type": "object",
"properties": {
"country": {
"description": "TW, US (King County WA, Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only). Not needed with near",
"type": "string",
"enum": [
"TW",
"US",
"ES",
"AT"
]
},
"region": {
"description": "Taiwan county or city, e.g. Taipei City",
"type": "string",
"maxLength": 30
},
"near": {
"description": "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",
"type": "string",
"maxLength": 60
},
"place": {
"description": "near as structured fields; never a street address",
"type": "object",
"properties": {
"postal_code": {
"description": "A US ZIP",
"type": "string",
"maxLength": 12
},
"latitude": {
"description": "Only with longitude, if the person shared it",
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"area": {
"description": "A Taiwan county or township, Zaragoza or Wien",
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
},
"miles": {
"description": "Radius, miles (default 50)",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"km": {
"description": "Radius, kilometres",
"type": "integer",
"minimum": 1,
"maximum": 800
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
},
"age": {
"description": "Taiwan says only Young or Adult",
"type": "string",
"enum": [
"Baby",
"Young",
"Adult",
"Senior"
]
},
"size": {
"description": "Not stated in King County or Vienna",
"type": "string",
"enum": [
"Small",
"Medium",
"Large",
"X-Large"
]
},
"sex": {
"type": "string",
"enum": [
"Male",
"Female"
]
},
"good_with": {
"description": "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",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"dogs",
"cats"
]
}
},
"q": {
"description": "Words in the person's language: breeds, colors, ages, sizes, sex and places become filters, the rest is full-text (\"ι»θ²ζ΄η¬\")",
"type": "string",
"maxLength": 200
},
"breed": {
"description": "Breed name in any language, or Wikidata id",
"type": "string",
"maxLength": 80
},
"color": {
"type": "string",
"enum": [
"black",
"white",
"brown",
"yellow",
"grey",
"orange",
"cream",
"tabby",
"calico",
"spotted"
]
},
"sort": {
"description": "photo = best photo first",
"type": "string",
"enum": [
"relevance",
"newest",
"listed",
"distance",
"photo"
]
},
"photo": {
"description": "good: only pets whose best photo passed our checks; unanalysed pets are left out (only Taiwan's are analysed)",
"type": "string",
"enum": [
"good"
]
},
"min_photo_px": {
"description": "Best photo's longest side, at least, in pixels",
"type": "integer",
"minimum": 1,
"maximum": 4000
},
"found": {
"description": "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",
"type": "string",
"enum": [
"include",
"exclude",
"only"
]
},
"facets": {
"description": "Add counts by species, size, age, sex, region",
"type": "boolean"
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"cursor": {
"description": "next_cursor from the previous answer",
"type": "string",
"maxLength": 80
},
"limit": {
"description": "Pets per answer (find_pets default 10, show_pets 24)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"detail": {
"description": "find_pets default brief; full = every field of pet.v1",
"type": "string",
"enum": [
"brief",
"full"
]
},
"lang": {
"description": "The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)",
"type": "string",
"maxLength": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’resolve_place(near)
Turn a US ZIP, lat,lon, a Taiwan county or township name (any language), Zaragoza or Wien into the point find_pets would search around, to confirm with the person before searching. It finds places we list no pets near too: find_pets then says so. Positions are rounded to about 1 km and nothing is stored.
Input Schema
{
"type": "object",
"properties": {
"near": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "A US ZIP, lat,lon, a Taiwan county or township name, Zaragoza or Wien"
}
},
"required": [
"near"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’find_shelters_near(near, lat, lon, radius_miles, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"near": {
"description": "US ZIP or 'Republic, MO'",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_miles": {
"type": "integer",
"minimum": 1,
"maximum": 400
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’resolve_breed(text, species)
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.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
}
},
"required": [
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’get_pet(id, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Petnecto ID, shelter ID, or PetHarbor URL"
},
"lang": {
"description": "The person's language (default en)",
"type": "string",
"maxLength": 20
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’get_rescue(id)
One rescue or shelter by id (from a pet's rescue.id): where it is, its adoption page, email and phone.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^(?:rg-org-[a-z0-9]{1,12}|tw-shelter-\\d{1,6}|us-shelter-(?:mc|kc)|es-shelter-zgz|at-shelter-(?:tqt|ma60|rfz))$"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’list_filters
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’search_by_description(query, near, off, include_unknown, country, ...)
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 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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "What the person wants, in their own words and language, e.g. βa senior dog in Zaragozaβ, βa friendly cat near 98101β, βε°εη¬ ε°εβ"
},
"near": {
"description": "Where, if it is not in the query: a US ZIP (98101, 20850), lat,lon, a Taiwan place, Zaragoza or Wien",
"type": "string",
"maxLength": 60
},
"off": {
"description": "Chip ids from a previous answer's understood.chips to leave out, e.g. [\"good_with:kids\"]",
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"maxLength": 48
}
},
"include_unknown": {
"description": "Also include pets whose listing does not say whether they are good with dogs/cats/kids (they are marked not_stated)",
"type": "boolean"
},
"country": {
"description": "TW (Taiwan), US (King County WA and Montgomery County MD only), ES (Zaragoza) or AT (Vienna, found pets only)",
"type": "string",
"enum": [
"TW",
"US",
"ES",
"AT"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"lang": {
"description": "The person's language: en, es, zh-Hant, zh-Hans, ko, ja, vi, fr, ar, tl (default en)",
"type": "string",
"maxLength": 20
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’similar_pets(id, limit, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^((rg|tw|sample)-\\d{1,12}|us-(mc|kc)-[A-Za-z0-9]{1,12}|[a-z]{2}-[a-z]+-[A-Za-z0-9]{1,12})$"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 24
},
"lang": {
"type": "string",
"maxLength": 20
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’about_this_service
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence