Skip to main content
Glama

Adoteca — Adoção de Pets no Brasil

Ver pets parecidos

search_similar_pets
Read-only

Pets parecidos com UM pet específico, mesma espécie e mesma cidade — não é a busca geral do catálogo. Use quando o pet desejado já não estiver disponível. Só traz pets disponíveis, cada um com o adoption_url, e pode vir vazia. total é o tamanho desta lista; não há página 2.

Input Schema

NameRequiredDescriptionDefault
limitNoQuantos pets parecidos devolver, no máximo 24. Esta lista não tem páginas: não existe `page` aqui.
pet_refYesCódigo curto do pet (ex.: 'ab12cd') ou o identificador da ficha.

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. Changed3 schema fields changed
    • 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"
      +}
  3. 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"
      +}
  4. 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."
  5. 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."
  6. 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."
  7. 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})."
  8. 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})."
  9. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  10. 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."
  11. 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"
      +}
  12. Changed5 schema fields changed
    • 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"
      +}
  13. Changed4 schema fields changed
    • 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."
      +}
  14. Added

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the readOnly/openWorld annotations, the description discloses that only available pets are returned, that each carries an `adoption_url`, that the result may be empty, and that there is no pagination. That is meaningful behavioral context; it stops short of auth or rate-limit information, but annotations already establish the safety profile.

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

Conciseness4/5

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

Four short sentences, each carrying information, with the core scope stated first. The no-page-2 point is repeated in the `limit` schema description, so there is minor redundancy, but nothing is wasted.

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

Completeness5/5

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

For a two-parameter search tool with an output schema, the description covers everything that matters: matching criteria, availability filter, empty-result possibility, the meaning of `total`, and absence of pagination. Nothing needed to invoke or interpret it correctly is missing.

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%, so `pet_ref` and `limit` are already documented with format hints (short code or ficha identifier, max 24). The description adds no parameter-level detail beyond restating the no-pagination fact already present on `limit`; baseline 3 applies.

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

Purpose5/5

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

States a specific operation (find pets similar to one given pet) with the exact matching criteria — same species, same city — and explicitly contrasts itself with the general catalog search. The agent can distinguish it from search_pets 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.

Usage Guidelines4/5

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

"Use quando o pet desejado já não estiver disponível" gives a clear triggering condition, and "não é a busca geral do catálogo" implicitly routes the agent away from search_pets. The alternative is described rather than named, so the routing is slightly less explicit than it could be.

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