Skip to main content
Glama

Adoteca — Adoção de Pets no Brasil

Buscar pets para adoção

search_pets
Read-only

Busca em TODO o catálogo de cães e gatos para adoção no Brasil, por filtros como cidade, espécie, porte e idade, ou pelo nome do pet. É a busca padrão de quem quer adotar. Inclui pets já adotados, indicados em status; cada pet traz o adoption_url da ficha.

Input Schema

NameRequiredDescriptionDefault
sexNoSexo: 'male'/'macho' ou 'female'/'femea'.
areaNoAmplia a busca em volta de `city`: 'city'/'cidade' (padrão, só a cidade), 'neighbors'/'vizinhas' (mais as cidades que fazem divisa) ou 'radius'/'raio' (mais as cidades a até `radius_km` km). Resultados: a cidade primeiro, depois as vizinhas, depois o resto. Não combina com `name`.
cityNoNome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que corrigir; isso não significa que a cidade não exista.
nameNoNome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. `name_match.confidence` diz quão certo é o pet encontrado. Se a lista vier vazia, o nome não foi encontrado como escrito.
pageNoPágina, começando em 1.
sizeNoPorte: 'small'/'pequeno', 'medium'/'medio', 'large'/'grande'.
breedNoRaça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida).
limitNoQuantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar.
stateNoSigla de duas letras da UF (SP, MG), apenas para desambiguar `city`. Busca só por estado NÃO é suportada: sempre envie `city` junto.
rescuerNoRestringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram da ONG. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro.
speciesNoEspécie: 'dog'/'cachorro' ou 'cat'/'gato'.
neuteredNotrue devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; o valor de cada pet está em `neutered`.
radius_kmNoRaio em km (1 a 100) para `area=radius`. Mandar só `radius_km` já significa raio.
vaccinatedNotrue devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. O valor de cada pet está em `vaccinated` (null = a ONG não informou).
include_olderNoSem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Um resultado pode ser antigo: `days_without_update`, quando vem, diz há quanto tempo.
special_needsNotrue devolve somente pets com cuidados especiais; false devolve somente os que não têm nenhum registrado.
age_max_monthsNoIdade máxima em meses. O catálogo só distingue três faixas — filhote, adulto e idoso — então sem porte 6 e 12 selecionam os mesmos pets. Os cortes mudam com espécie e porte: idoso a partir de 8 anos no cão grande, 9 no médio, 10 no pequeno e no gato.
good_with_catsNoSomente pets que convivem bem com gatos.
good_with_dogsNoSomente pets que convivem bem com cães.
good_with_kidsNoSomente pets que convivem bem com crianças.
widen_if_emptyNoSe a área pedida não tiver pets disponíveis com os filtros, amplia a partir dela: cidades vizinhas, depois raio de 50 km, depois 100 km, parando no primeiro passo com pets. `searched_area` diz o que foi usado.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / $defs / AgentSearchResponse / properties / available_total
      Added value: +{
      +  "description": "Quantos desses pets estão disponíveis para adoção (status 'available'). É o número do título do catálogo; use este, não `total`, ao dizer quantos pets há para adotar.",
      +  "title": "Available Total",
      +  "type": "integer"
      +}
    • changedOutput schema / $defs / AgentSearchResponse / required
      Previous value: -[
      -  "total",
      -  "page",
      -  "pets"
      -]New value: +[
      +  "total",
      +  "available_total",
      +  "page",
      +  "pets"
      +]
  2. Changed7 schema fields changed
    • changedInput schema / properties / breed / description
      Previous value: -"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida). Use a listagem de raças para ver as raças com pets hoje."New value: +"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida)."
    • changedInput schema / properties / city / description
      Previous value: -"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que fazer — leia e siga; não significa que a cidade não exista."New value: +"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que corrigir; isso não significa que a cidade não exista."
    • changedInput schema / properties / include_older / description
      Previous value: -"Sem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Não prometa à pessoa que um resultado é recente — confira a data do anúncio."New value: +"Sem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Um resultado pode ser antigo: `days_without_update`, quando vem, diz há quanto tempo."
    • changedInput schema / properties / name / description
      Previous value: -"Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. Leia `name_match.confidence` antes de afirmar de qual pet se trata. Se a lista vier vazia, diga que não achou e pergunte como se escreve."New value: +"Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. `name_match.confidence` diz quão certo é o pet encontrado. Se a lista vier vazia, o nome não foi encontrado como escrito."
    • changedInput schema / properties / neutered / description
      Previous value: -"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; leia `neutered` na ficha do pet."New value: +"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; o valor de cada pet está em `neutered`."
    • changedInput schema / properties / rescuer / description
      Previous value: -"Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram, como devolvidos pela busca de ONGs. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro."New value: +"Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram da ONG. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro."
    • changedInput schema / properties / vaccinated / description
      Previous value: -"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. Para saber de um pet específico, leia `vaccinated` na ficha (null = a ONG não informou)."New value: +"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. O valor de cada pet está em `vaccinated` (null = a ONG não informou)."
  3. Changed6 schema fields changed
    • addedInput schema / properties / area
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Amplia a busca em volta de `city`: 'city'/'cidade' (padrão, só a cidade), 'neighbors'/'vizinhas' (mais as cidades que fazem divisa) ou 'radius'/'raio' (mais as cidades a até `radius_km` km). Resultados: a cidade primeiro, depois as vizinhas, depois o resto. Não combina com `name`.",
      +  "title": "Area"
      +}
    • addedInput schema / properties / radius_km
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Raio em km (1 a 100) para `area=radius`. Mandar só `radius_km` já significa raio.",
      +  "title": "Radius Km"
      +}
    • addedInput schema / properties / widen_if_empty
      Added value: +{
      +  "default": false,
      +  "description": "Se a área pedida não tiver pets disponíveis com os filtros, amplia a partir dela: cidades vizinhas, depois raio de 50 km, depois 100 km, parando no primeiro passo com pets. `searched_area` diz o que foi usado.",
      +  "title": "Widen If Empty",
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / distance_km
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Distância em km entre o centro da cidade do pet e o da cidade buscada (0 = a própria cidade). Só vem quando a busca usou `area` ou `widen_if_empty`.",
      +  "title": "Distance Km"
      +}
    • addedOutput schema / $defs / AgentSearchResponse / properties / searched_area
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/AgentSearchedArea"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "A área que a busca realmente cobriu. Se `widened` for true, os pets não são da cidade pedida: diga isso antes de listá-los."
      +}
    • addedOutput schema / $defs / AgentSearchedArea
      Added value: +{
      +  "description": "The area the pet search actually ran — after any automatic widening.",
      +  "properties": {
      +    "area": {
      +      "description": "Área usada: 'city' (só a cidade), 'neighbors' (a cidade e as que fazem divisa com ela) ou 'radius' (também as cidades a até `radius_km`).",
      +      "enum": [
      +        "city",
      +        "neighbors",
      +        "radius"
      +      ],
      +      "title": "Area",
      +      "type": "string"
      +    },
      +    "cities": {
      +      "description": "Quantas cidades a área cobriu (0 = busca sem cidade).",
      +      "title": "Cities",
      +      "type": "integer"
      +    },
      +    "radius_km": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Raio em km quando `area` é 'radius'; senão null.",
      +      "title": "Radius Km"
      +    },
      +    "widened": {
      +      "description": "true quando a cidade não tinha pets e a busca foi ampliada sozinha (widen_if_empty). Diga isso à pessoa e cite a cidade de cada pet.",
      +      "title": "Widened",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "area",
      +    "radius_km",
      +    "widened",
      +    "cities"
      +  ],
      +  "title": "AgentSearchedArea",
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • addedOutput schema / $defs / AgentPetSummary / properties / adoption_evidence
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Só quando status='adopted': 'announced' (a ONG anunciou) ou 'unlisted' (o post saiu do ar e a ONG confirma isso como adoção). null nos demais status.",
      +  "title": "Adoption Evidence"
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / $defs / AgentPetSummary / properties / contact_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Link para falar com a ONG sobre este pet: abre uma página da Adoteca que leva ao post original no Instagram. Mostre este link ao indicar contato.",
      +  "title": "Contact Url"
      +}
    • changedOutput schema / $defs / AgentRescuer / properties / instagram_url / description
      Previous value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
  6. Changed1 schema field changed
    • changedOutput schema / $defs / AgentPetSummary / properties / status / description
      Previous value: -"'available', 'adopted', 'deceased' ou 'source_gone' (posts apagados, desfecho incerto). Nunca ofereça um pet que não esteja 'available'. E 'available' não confirma que o pet continua esperando: diz só que ninguém sinalizou mudança. Leia `days_without_update` antes de afirmar que está disponível."New value: +"'available', 'adopted', 'deceased' ou 'source_gone' (post original saiu do ar: pode ter sido adotado; confirme com o protetor). Nunca ofereça um pet que não esteja 'available'. 'available' só diz que ninguém sinalizou mudança: leia `days_without_update` antes de afirmar que está disponível."
  7. Changed1 schema field changed
    • changedOutput schema / $defs / AgentPetSummary / properties / status / description
      Previous value: -"'available', 'adopted' ou 'deceased'. Nunca ofereça um pet que não esteja 'available'. E 'available' não confirma que o pet continua esperando: diz só que ninguém sinalizou mudança. Leia `days_without_update` antes de afirmar que está disponível."New value: +"'available', 'adopted', 'deceased' ou 'source_gone' (posts apagados, desfecho incerto). Nunca ofereça um pet que não esteja 'available'. E 'available' não confirma que o pet continua esperando: diz só que ninguém sinalizou mudança. Leia `days_without_update` antes de afirmar que está disponível."
  8. Changed1 schema field changed
    • changedOutput schema / $defs / AgentPetSummary / properties / short_code / description
      Previous value: -"Código curto do pet (o mesmo de www.adoteca.com.br/p/{code})."New value: +"Código curto do pet (o mesmo de adoteca.com.br/p/{code})."
  9. Changed1 schema field changed
    • changedOutput schema / $defs / AgentPetSummary / properties / short_code / description
      Previous value: -"Código curto do pet (o mesmo de adoteca.com.br/p/{code})."New value: +"Código curto do pet (o mesmo de www.adoteca.com.br/p/{code})."
  10. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  11. Changed2 schema fields changed
    • addedOutput schema / $defs / AgentPetSummary / properties / days_without_update
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Dias desde a última notícia nova sobre este pet (publicação da ONG ou sinal de adoção). null = desfecho confirmado ou data desconhecida. Passado um mês, diga que nada novo chegou desde então e que o pet pode ou não continuar disponível; quem confirma é quem cuida dele.",
      +  "title": "Days Without Update"
      +}
    • changedOutput schema / $defs / AgentPetSummary / properties / status / description
      Previous value: -"'available', 'adopted' ou 'deceased'. Nunca ofereça um pet que não esteja 'available'."New value: +"'available', 'adopted' ou 'deceased'. Nunca ofereça um pet que não esteja 'available'. E 'available' não confirma que o pet continua esperando: diz só que ninguém sinalizou mudança. Leia `days_without_update` antes de afirmar que está disponível."
  12. Changed1 schema field changed
    • changedInput schema / properties / age_max_months / description
      Previous value: -"Idade máxima em meses. O catálogo só distingue três faixas — filhote (até 12 meses), adulto (12 a 96) e idoso (96+) — então 6 e 12 selecionam os mesmos pets."New value: +"Idade máxima em meses. O catálogo só distingue três faixas — filhote, adulto e idoso — então sem porte 6 e 12 selecionam os mesmos pets. Os cortes mudam com espécie e porte: idoso a partir de 8 anos no cão grande, 9 no médio, 10 no pequeno e no gato."
  13. Changed1 schema field changed
    • changedInput schema / properties / include_older / description
      Previous value: -"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos. Buscar por `name` já ignora essa janela de 90 dias: quem pergunta pelo nome já sabe que o pet existe."New value: +"Sem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Não prometa à pessoa que um resultado é recente — confira a data do anúncio."
  14. Changed8 schema fields changed
    • addedOutput schema / $defs / AgentPetSummary / properties / dewormed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou.",
      +  "title": "Dewormed"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / foster_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "'aceita lar temporário' ou 'precisa de lar temporário'. Muda o que se pede à pessoa: não é adoção definitiva. null = não classificado.",
      +  "title": "Foster Status"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / good_with_cats
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou.",
      +  "title": "Good With Cats"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / good_with_dogs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou.",
      +  "title": "Good With Dogs"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / good_with_kids
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou.",
      +  "title": "Good With Kids"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / microchipped
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou.",
      +  "title": "Microchipped"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / neutered
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou. Nunca afirme 'não castrado' quando for null.",
      +  "title": "Neutered"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / vaccinated
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "null = a ONG não informou. Nunca afirme 'não vacinado' quando for null.",
      +  "title": "Vaccinated"
      +}
  15. Changed1 schema field changed
    • removedInput schema / properties / foster
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "boolean"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "true devolve somente pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: a maioria dos anúncios não fala em lar temporário.",
      -  "title": "Foster"
      -}
  16. Changed1 schema field changed
    • addedInput schema / properties / foster
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "true devolve somente pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: a maioria dos anúncios não fala em lar temporário.",
      +  "title": "Foster"
      +}
  17. Changed6 schema fields changed
    • addedInput schema / properties / rescuer
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram, como devolvidos pela busca de ONGs. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro.",
      +  "title": "Rescuer"
      +}
    • removedOutput schema / $defs / AgentNgo
      Removed value: -{
      -  "properties": {
      -    "instagram_url": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "Perfil oficial da ONG no Instagram.",
      -      "title": "Instagram Url"
      -    },
      -    "name": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "Nome da ONG ou protetor responsável pelo pet.",
      -      "title": "Name"
      -    }
      -  },
      -  "required": [
      -    "name",
      -    "instagram_url"
      -  ],
      -  "title": "AgentNgo",
      -  "type": "object"
      -}
    • removedOutput schema / $defs / AgentPetSummary / properties / ngo
      Removed value: -{
      -  "$ref": "#/$defs/AgentNgo",
      -  "description": "Quem cuida do pet."
      -}
    • addedOutput schema / $defs / AgentPetSummary / properties / rescuer
      Added value: +{
      +  "$ref": "#/$defs/AgentRescuer",
      +  "description": "Quem cuida do pet."
      +}
    • changedOutput schema / $defs / AgentPetSummary / required
      Previous value: -[
      -  "short_code",
      -  "name",
      -  "species",
      -  "sex",
      -  "size",
      -  "breed",
      -  "age",
      -  "age_category",
      -  "city",
      -  "status",
      -  "photo_url",
      -  "adoption_url",
      -  "ngo"
      -]New value: +[
      +  "short_code",
      +  "name",
      +  "species",
      +  "sex",
      +  "size",
      +  "breed",
      +  "age",
      +  "age_category",
      +  "city",
      +  "status",
      +  "photo_url",
      +  "adoption_url",
      +  "rescuer"
      +]
    • addedOutput schema / $defs / AgentRescuer
      Added value: +{
      +  "properties": {
      +    "instagram_url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Perfil oficial da ONG no Instagram.",
      +      "title": "Instagram Url"
      +    },
      +    "name": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Nome da ONG ou protetor responsável pelo pet.",
      +      "title": "Name"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "instagram_url"
      +  ],
      +  "title": "AgentRescuer",
      +  "type": "object"
      +}
  18. Changed7 schema fields changed
    • changedInput schema / properties / include_older / description
      Previous value: -"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos."New value: +"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos. Buscar por `name` já ignora essa janela de 90 dias: quem pergunta pelo nome já sabe que o pet existe."
    • changedInput schema / properties / limit / description
      Previous value: -"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24."New value: +"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar."
    • addedInput schema / properties / name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. Leia `name_match.confidence` antes de afirmar de qual pet se trata. Se a lista vier vazia, diga que não achou e pergunte como se escreve.",
      +  "title": "Name"
      +}
    • addedOutput schema / $defs / AgentNameMatch
      Added value: +{
      +  "properties": {
      +    "confidence": {
      +      "description": "'high' = é este pet: afirme direto. 'low' = NÃO afirme qual é; mostre os pets da lista e pergunte qual deles.",
      +      "enum": [
      +        "high",
      +        "low"
      +      ],
      +      "title": "Confidence",
      +      "type": "string"
      +    },
      +    "query": {
      +      "description": "O nome que foi buscado.",
      +      "title": "Query",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "confidence"
      +  ],
      +  "title": "AgentNameMatch",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / AgentPetSummary / properties / published_recently
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/AgentPublishedRecently"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Preenchido só na busca por nome: a Adoteca postou este pet nesta rede há pouco. Use para situar a pessoa ('o que postamos no Instagram') em vez de afirmar sem contexto."
      +}
    • addedOutput schema / $defs / AgentPublishedRecently
      Added value: +{
      +  "properties": {
      +    "platform": {
      +      "description": "Rede onde a Adoteca postou este pet, ex.: 'Instagram'.",
      +      "title": "Platform",
      +      "type": "string"
      +    },
      +    "published_at": {
      +      "description": "Quando a Adoteca postou.",
      +      "format": "date-time",
      +      "title": "Published At",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "platform",
      +    "published_at"
      +  ],
      +  "title": "AgentPublishedRecently",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / AgentSearchResponse / properties / name_match
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/AgentNameMatch"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Só quando a busca enviou `name`. Leia `confidence` antes de afirmar de qual pet a pessoa está falando."
      +}
  19. Changed2 schema fields changed
    • addedInput schema / properties / breed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida). Use a listagem de raças para ver as raças com pets hoje.",
      +  "title": "Breed"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Quantos pets devolver por página. Valores acima de 24 são reduzidos a 24."New value: +"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24."
  20. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/destructive=false, so safety is covered; the description still adds genuinely useful context the annotations don't carry: results include already-adopted pets flagged in `status`, and every record carries the `adoption_url`. That 'includes adopted, check status' nuance is the kind of thing an agent would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, and the headline scope ('TODO o catálogo') is front-loaded before the filter list and the output note. Nothing repeats the title or the schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Against an output schema plus full parameter documentation, the description covers scope, default role, and the important status/adoption_url return nuance. The remaining gap is sibling routing — for a 21-parameter search tool with a near-twin (search_similar_pets), one sentence on when to prefer each would close the loop.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the per-parameter descriptions are already unusually rich (radius semantics, widen_if_empty cascade, why `false` is ignored for vaccinated/neutered), so the description adds little beyond listing which filters exist. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('busca em TODO o catálogo de cães e gatos'), the geography (Brasil), and the dimensions covered (city, species, size, age, name). 'É a busca padrão' signals its role among siblings, but it never names search_similar_pets or get_pet_details, so the agent must infer the boundary rather than read it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'É a busca padrão de quem quer adotar' implies the default usage case, but there are no explicit when-not rules and no named alternatives among the ten siblings, even though search_similar_pets and search_rescuers clearly overlap. The mutual-exclusion note (name vs area) only lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources