Petnecto
Find adoptable shelter pets and how to contact the shelter. Read-only, no sign-in, 10 languages.
我该使用它吗
质量与安全性
发现(1)
- LOW在 get_rescue 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"pets": {
"url": "https://petnecto.com/mcp"
}
}
}远程端点
https://petnecto.com/mcpstreamable-http它能做什么
工具清单
工具(9)
🟢show_pets(country, region, near, place, miles, ...)
Show adoptable pets 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 to adopt. Apps without interactive views get the same list as text.
输入模式
{
"type": "object",
"properties": {
"country": {
"description": "Which country's shelters: US, CA, TW (Taiwan), ES (Spain) or AT (Austria). Optional when near is a US ZIP or a Taiwan place",
"type": "string",
"enum": [
"US",
"CA",
"TW",
"ES",
"AT"
]
},
"region": {
"description": "Taiwan county or city, e.g. Taipei City, New Taipei City, Taoyuan City",
"type": "string",
"maxLength": 30
},
"near": {
"description": "Where the person is: a US ZIP (65738), lat,lon (25.03,121.56; rounded to ~1 km), or a Taiwan county or township in any language (信義區, Xinyi, 臺北市). Results are sorted by distance. Prefer this or place over free text",
"type": "string",
"maxLength": 60
},
"place": {
"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)",
"type": "object",
"properties": {
"postal_code": {
"description": "US ZIP or Canadian postal code",
"type": "string",
"maxLength": 12
},
"latitude": {
"description": "Only with longitude, and only if the person shared their location",
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"area": {
"description": "A Taiwan county or township, in any language",
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
},
"miles": {
"description": "Radius in miles (default 50)",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"km": {
"description": "Radius in kilometres, instead of miles",
"type": "integer",
"minimum": 1,
"maximum": 800
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Horse",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
},
"age": {
"type": "string",
"enum": [
"Baby",
"Young",
"Adult",
"Senior"
]
},
"size": {
"type": "string",
"enum": [
"Small",
"Medium",
"Large",
"X-Large"
]
},
"sex": {
"type": "string",
"enum": [
"Male",
"Female"
]
},
"good_with": {
"description": "Only pets the rescue says are good with these",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"dogs",
"cats",
"kids"
]
}
},
"q": {
"description": "Words in the person's own language: breeds, colors, ages, sizes, sex and places become filters (\"black shiba girl Taipei\", \"黑色柴犬\", \"perro mayor\"); other words are full-text search",
"type": "string",
"maxLength": 200
},
"breed": {
"description": "A breed name in any language, or its Wikidata id (Q39315)",
"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 (analysed; not blurry, dark, tiny, or without a pet in it). Pets not analysed yet are left out",
"type": "string",
"enum": [
"good"
]
},
"min_photo_px": {
"description": "Only pets whose best photo is at least this many pixels on its longest side",
"type": "integer",
"minimum": 1,
"maximum": 4000
},
"found": {
"description": "Found pets (Vienna's list, announced for their owners for 30 days) 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",
"type": "string",
"enum": [
"include",
"exclude",
"only"
]
},
"facets": {
"description": "Add counts by species, size, age, sex, region and good-with",
"type": "boolean"
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"lang": {
"description": "The person's language for names and text: 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"
}🟢find_pets(country, region, near, place, miles, ...)
Search adoptable pets at rescues and shelters (and, in some cities, found pets: marked found:true, announced for their owners first, not adoptable yet; pass found=exclude to leave them out): near a US ZIP, lat,lon or a Taiwan county or township in any language (near, with miles or km; sorted by distance); by species, age, size, sex, breed, color and whether they are good with dogs, cats or kids; or by words in any of 10 languages (q). Returns names, short facts, distance, the rescue and a link to each listing, plus what q was understood as.
输入模式
{
"type": "object",
"properties": {
"country": {
"description": "Which country's shelters: US, CA, TW (Taiwan), ES (Spain) or AT (Austria). Optional when near is a US ZIP or a Taiwan place",
"type": "string",
"enum": [
"US",
"CA",
"TW",
"ES",
"AT"
]
},
"region": {
"description": "Taiwan county or city, e.g. Taipei City, New Taipei City, Taoyuan City",
"type": "string",
"maxLength": 30
},
"near": {
"description": "Where the person is: a US ZIP (65738), lat,lon (25.03,121.56; rounded to ~1 km), or a Taiwan county or township in any language (信義區, Xinyi, 臺北市). Results are sorted by distance. Prefer this or place over free text",
"type": "string",
"maxLength": 60
},
"place": {
"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)",
"type": "object",
"properties": {
"postal_code": {
"description": "US ZIP or Canadian postal code",
"type": "string",
"maxLength": 12
},
"latitude": {
"description": "Only with longitude, and only if the person shared their location",
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"area": {
"description": "A Taiwan county or township, in any language",
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
},
"miles": {
"description": "Radius in miles (default 50)",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"km": {
"description": "Radius in kilometres, instead of miles",
"type": "integer",
"minimum": 1,
"maximum": 800
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Horse",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
},
"age": {
"type": "string",
"enum": [
"Baby",
"Young",
"Adult",
"Senior"
]
},
"size": {
"type": "string",
"enum": [
"Small",
"Medium",
"Large",
"X-Large"
]
},
"sex": {
"type": "string",
"enum": [
"Male",
"Female"
]
},
"good_with": {
"description": "Only pets the rescue says are good with these",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"dogs",
"cats",
"kids"
]
}
},
"q": {
"description": "Words in the person's own language: breeds, colors, ages, sizes, sex and places become filters (\"black shiba girl Taipei\", \"黑色柴犬\", \"perro mayor\"); other words are full-text search",
"type": "string",
"maxLength": 200
},
"breed": {
"description": "A breed name in any language, or its Wikidata id (Q39315)",
"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 (analysed; not blurry, dark, tiny, or without a pet in it). Pets not analysed yet are left out",
"type": "string",
"enum": [
"good"
]
},
"min_photo_px": {
"description": "Only pets whose best photo is at least this many pixels on its longest side",
"type": "integer",
"minimum": 1,
"maximum": 4000
},
"found": {
"description": "Found pets (Vienna's list, announced for their owners for 30 days) 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",
"type": "string",
"enum": [
"include",
"exclude",
"only"
]
},
"facets": {
"description": "Add counts by species, size, age, sex, region and good-with",
"type": "boolean"
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"lang": {
"description": "The person's language for names and text: 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 or a Taiwan county or township name (any language) into the point and radius find_pets would search around, to confirm with the person before searching. Positions are rounded to about 1 km and nothing is stored.
输入模式
{
"type": "object",
"properties": {
"near": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "A US ZIP, lat,lon, or a Taiwan county or township name"
}
},
"required": [
"near"
],
"$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.
输入模式
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"species": {
"type": "string",
"enum": [
"Dog",
"Cat",
"Rabbit",
"Bird",
"Horse",
"Small pet",
"Reptile",
"Pig",
"Barnyard"
]
}
},
"required": [
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_pet(id, lang)
One adoptable pet by id (from find_pets): photos, temperament, good-with, adoption fee, the rescue and how to reach it.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^(?:(?: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})$",
"description": "The pet's id, e.g. rg-8013243, tw-470460, us-mc-A508423 or es-zgz-2922"
},
"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.
输入模式
{
"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"
}🟢search_by_description(query, near, off, include_unknown, country, ...)
Find pets to adopt from a sentence in any language (found pets, marked found:true, are not adoptable yet): “a calm small dog that is good with kids, under 10 kg, near Springfield”. Returns the pets AND what was understood (understood.chips: species, breed, age, size, good-with, place, radius...), so you can tell the person what was searched and drop a wrong one with off=[chip id]. Good-with and similar facts are only filters when a listing states them; each pet has match[] saying stated / not_stated. Weight caps are approximated by size group and energy is only a hint. If the AI parts are unavailable it still answers from the words (degraded says so). Prefer find_pets when you already have structured values.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "What the person wants, in their own words and language, e.g. “a calm small dog good with kids, under 10 kg, near 65738”"
},
"near": {
"description": "A US ZIP, lat,lon or a Taiwan place, if it is not in the query",
"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": {
"type": "string",
"enum": [
"US",
"CA",
"TW"
]
},
"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.
输入模式
{
"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 the listings come from, who runs this service, what it keeps, and how a rescue changes or removes its listings.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据