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

A
Description quality
97%
Schema completeness
77%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_rescue' description lacks action verbin get_rescue

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,514Tokens (tool definitions)
~2.2 KBTypical response size
Significant attention impact (2.75% of 128k context)

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-http

What it can do

Tool inventory

Tools (11)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools
verifiedversion not recorded9 tools