Skip to main content
Glama

Adoteca — Adoção de Pets no Brasil

Server Details

Cães e gatos para adoção no Brasil, de ONGs e protetores. Busque por cidade, porte, idade e saúde.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.5/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource/action: city resolution, catalog queries, city stats, pet/rescuer details, guides, and similar-pet recommendations. Search_pets and search_similar_pets are clearly separated by scope, and get_city_stats explicitly says it does not list rescuers, avoiding boundary confusion. No two tools appear interchangeable.

Naming Consistency5/5

All tool names use lowercase snake_case and follow a consistent verb_noun pattern: get_* for detail/link operations, search_* for discovery/filtering, and list_breeds for enumeration. The naming is uniform and predictable, with no mixed casing or vague generic verbs.

Tool Count5/5

Ten tools is well-scoped for an adoption-catalog assistant: discovery, details, stats, guides, rescuers, and catalog links each have a dedicated tool. The surface is neither bloated nor too thin, and every tool serves a clear user intent.

Completeness5/5

The tool set covers the full read-side adoption journey: resolving city names, searching pets, viewing pet details, finding similar pets, contacting rescuers, getting city stats, building catalog links, and accessing educational guides. Since this is a catalog/assistant server rather than an adoption-management system, no significant operations are missing.

Available Tools

10 tools
get_city_statsVer números do catálogo na cidadeA
Read-only
Inspect

Números do catálogo em UMA cidade já resolvida: quantos pets, por espécie, porte e idade, entradas em 24h, adoções, quantas ONGs e as raças mais comuns. Use para 'quantos pets tem em X?'. Não devolve pets, não resolve o nome da cidade e não diz QUAIS são as ONGs — para isso, use a busca de ONGs.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesNome do MUNICÍPIO por extenso, ou o slug devolvido pela resolução de cidade. Obrigatório: a resposta é sempre de uma cidade. Se o nome for ambíguo ou ninguém tiver pets ali hoje, o erro diz o que fazer.
stateNoSigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds valuable behavioral context: the tool does not resolve city names, does not return pet records, and gives a specific error behavior when the city is ambiguous or has no pets today. These disclosures go well beyond the annotations.

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?

Two dense sentences front-load the tool's purpose and returned metrics, then state the use case, then list exclusions with alternatives. Every clause earns its place; no filler or repetition.

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?

The description fully covers the tool's scope, limitations, error behavior, and alternatives, and an output schema exists to define the return structure. Combined with the annotations, an agent has everything needed to select and call this tool correctly.

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 description coverage is 100%, so the baseline is 3. The description reinforces the 'already-resolved city' constraint that also appears in the schema's city parameter, but it doesn't add significant new parameter-level meaning beyond what the schema already documents.

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?

The description uses a specific verb ('Ver números do catálogo') and clearly enumerates the resource scope: a single already-resolved city, with detailed metrics (pets by species/size/age, 24h entries, adoptions, NGO count, common breeds). It explicitly distinguishes itself from siblings by stating what it does NOT do — resolve the city name, return individual pets, or identify which NGOs — making tool differentiation immediate.

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

Usage Guidelines5/5

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

It provides an explicit usage cue: 'Use para "quantos pets tem em X?"' and equally explicit exclusions with routing to alternatives ('não resolve o nome da cidade... use a busca de ONGs'). This tells an agent exactly when to invoke this tool versus the listed sibling tools.

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

get_pet_detailsVer ficha completa do petA
Read-only
Inspect

Ficha completa de um pet: saúde, cuidados, convivência e como falar com a ONG. Aceita o código curto do link ou o id devolvido pela busca de pets. Leia status antes de oferecer, e o status de cada health_conditions antes de falar da saúde dele.

ParametersJSON Schema
NameRequiredDescriptionDefault
pet_refYesCódigo curto do pet (ex.: 'ab12cd') ou o identificador da ficha.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds actionable behavior: read the pet's top-level `status` before offering it, and read each `health_conditions` status before discussing health. This is valuable operational guidance not present in annotations or schema.

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 short, front-loaded sentences cover the record contents, input format, and critical status-reading guidance with no filler. Every sentence earns its place.

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?

With a single well-documented parameter, readOnly annotations, and an output schema, the description fully covers what an agent needs to call the tool correctly. The status-reading instructions add the one behavioral nuance that schema and annotations cannot convey.

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

Parameters4/5

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

The schema already defines pet_ref at 100% coverage, so the baseline is 3. The description adds value by clarifying the two accepted formats and tying the ID to the pet search flow, reinforcing the schema rather than merely repeating it.

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?

The description states a specific verb and resource: it retrieves a pet's complete record covering health, care, cohabitation, and NGO contact. It also clarifies the accepted references (short link code or ID from pet search), distinguishing it from sibling search tools.

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?

The description explicitly says the tool accepts the ID returned by the pet search, which implies it is meant to be used after search_pets or search_similar_pets. It does not explicitly name alternatives or exclusions, but the calling context is clear enough.

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

get_rescuer_detailsVer ficha da ONG ou protetorA
Read-only
Inspect

Ficha de uma ONG ou protetor: cidades atendidas, contatos, site e página de doação. Aceita o código curto do link ou o @ do Instagram, devolvidos pela busca de ONGs. Para doações, mostre donation_url ou profile_url — nunca peça nem repasse chave PIX.

ParametersJSON Schema
NameRequiredDescriptionDefault
rescuer_refYesCódigo curto da ONG (ex.: 'ab12cd', o mesmo de adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only and non-destructive behavior. The description adds valuable behavioral context beyond that: the donation-handling rule ('nunca peça nem repasse chave PIX') and the instruction to display specific URL fields. This is meaningful guidance for an agent, though it doesn't cover error cases or rate limits, which is acceptable given the annotations.

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?

The description is two sentences: the first front-loads the purpose and contents, the second gives the input format and a critical donation-handling rule. Every sentence earns its place with no redundancy.

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?

An output schema is present, so return values are already documented. The description covers the input source, the data fields contained in the profile, and a specific behavioral rule for donations. Nothing an agent needs to call this tool 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?

The input schema already provides a full description of the single parameter, including format examples (short code like 'ab12cd' or Instagram @ without @) and the URL pattern. Since schema coverage is 100%, the baseline is 3. The description reinforces the input formats but adds little new semantic detail beyond the schema.

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?

The description states the tool provides a profile ('Ficha') of an NGO or protector, listing the specific contents: cities served, contacts, website, and donation page. This is a specific verb+resource and clearly differentiates it from siblings like search_rescuers (which searches) and get_pet_details (which is for pets).

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?

It explicitly notes that the accepted refs (short code or Instagram @) are 'devolvidos pela busca de ONGs', indicating this tool is the follow-up to a search. It also gives a concrete behavioral instruction for donations (show donation_url or profile_url, never ask for or pass a PIX key), which guides how to use the output. It doesn't explicitly name alternatives, but the context makes the intended usage clear.

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

list_breedsListar raças com petsA
Read-only
Inspect

Raças com pets no catálogo hoje, mais comuns primeiro, com o slug para enviar em breed. Use antes de filtrar por raça e quando perguntarem quais raças existem. A maioria do catálogo é SRD (sem raça definida): ofereça SRD em vez de dizer que não há pets.

ParametersJSON Schema
NameRequiredDescriptionDefault
speciesNoEspécie: 'dog'/'cachorro' ou 'cat'/'gato'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive, and the description adds real behavior: results are ordered most-common-first, reflect today's catalog, and include SRD as the majority class. It does not describe pagination, but the output schema covers return shape.

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 short sentences, all substantive: what the list contains and its order, when to use it, and the SRD caveat. The most important operational facts are front-loaded.

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?

Given an output schema, one optional well-documented parameter, and read-only annotations, the description leaves no major calling decision uncovered. It even covers the edge case that SRD should be suggested instead of reporting no pets.

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?

The single optional species parameter is already fully described in the schema with value examples. The description adds the intended use and breed-slug context but no additional parameter semantics, so the baseline of 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?

The description names a specific verb and resource: listing breeds that have pets in today's catalog, ordered by frequency, and says the slug is to be sent in `breed`. This clearly distinguishes it from sibling search tools such as search_pets.

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?

It explicitly states when to use it: before breed filtering and whenever asked which breeds exist. It also gives tactical guidance to offer SRD rather than claim no pets, but it does not name alternatives or when not to use it, so it stops short of a 5.

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

search_citiesEncontrar a cidade no catálogoA
Read-only
Inspect

Converte o nome de uma cidade (com ou sem acento, com erro de grafia) no slug oficial do catálogo. Use antes das outras buscas quando a pessoa citar uma cidade. Se ambiguous for true, escolha pelo contexto ou pergunte; nunca chute. Para os números da cidade, use as estatísticas.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesNome do município como a pessoa escreveu, ex.: 'sao paulo', 'Cachoeirinha'.
stateNoSigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, open-world behavior. The description adds useful context about normalization, ambiguity handling, and the boundary that this tool does not provide city numbers. The reference to an `ambiguous` field is slightly vague, but the output schema likely clarifies it.

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 with no filler: the first defines the core purpose, the second gives usage priority and ambiguity guidance, and the third prevents confusion with statistics. Information is front-loaded and compact.

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?

Given the read-only annotations and the presence of an output schema, the description covers what the tool does, when to use it, how to handle ambiguity, and what it is not for. Nothing essential is missing for an agent to invoke it correctly.

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 description coverage is 100%, so the schema already documents both `city` and `state` parameters. The description adds context about messy input and accents, but does not materially extend parameter semantics beyond what the schema provides.

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?

The description states a specific conversion operation: turning a user-supplied city name into the catalog's official slug, including support for accents and misspellings. This clearly distinguishes it from siblings like get_city_stats and other search tools.

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

Usage Guidelines5/5

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

The description explicitly says to use this tool before other searches when a person mentions a city, and gives concrete handling for ambiguous results: choose by context or ask, never guess. It also routes numeric city data to statistics, separating it from get_city_stats.

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

search_guidesConsultar guias da AdotecaA
Read-only
Inspect

Guias da Adoteca sobre adoção, saúde e cuidados especiais (FIV, FeLV, leishmaniose, pet surdo, custos) e ajuda sobre como o site funciona. Use para dúvidas que não são busca de pets. Responda com base no summary, mostre o url e, se a lista vier vazia, diga que não temos guia sobre isso.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA dúvida da pessoa, como ela escreveu, ex.: 'meu gato tem FIV' ou 'quanto custa ter um cachorro'. Acentos e erros de grafia são tolerados.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld, and the description adds valuable behavioral context: instructing the agent to respond based on the `summary`, show the `url`, and handle empty lists by saying no guide exists. This goes beyond the annotations and helps the agent behave correctly.

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?

The description is three short sentences, each with a clear role: scope, usage condition, and response instructions. There is no filler, and the most important information is front-loaded.

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 single-parameter, read-only search tool with an output schema, this description covers topic scope, when to use it, how to format the answer, and the empty-result fallback. Nothing essential 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?

The input schema already documents the single `query` parameter fully, including an example and a note that accents/typos are tolerated. The tool description adds no additional parameter semantics, so the baseline of 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?

The description identifies a specific resource ('Guias da Adoteca sobre adoção, saúde e cuidados especiais...') and scope, and explicitly distinguishes the tool from pet searches ('dúvidas que não são busca de pets'), setting it apart from sibling search_pets. The verb 'search/consultar' plus resource makes the purpose unambiguous.

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?

The description provides a clear usage condition: 'Use para dúvidas que não são busca de pets', effectively stating when-not to use this tool. However, it does not name the alternative tool (search_pets) explicitly, leaving a small inference step to the agent.

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

search_petsBuscar pets para adoçãoA
Read-only
Inspect

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: leia status e só ofereça os 'available'. Mostre o adoption_url e nunca invente pets.

ParametersJSON Schema
NameRequiredDescriptionDefault
sexNoSexo: 'male'/'macho' ou 'female'/'femea'.
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 fazer — leia e siga; 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. 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.
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). Use a listagem de raças para ver as raças com pets hoje.
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, como devolvidos pela busca de ONGs. 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`; leia `neutered` na ficha do pet.
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. Para saber de um pet específico, leia `vaccinated` na ficha (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. Não prometa à pessoa que um resultado é recente — confira a data do anúncio.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Even though annotations already mark this as a safe read-only operation, the description discloses a critical non-obvious behavior: the search 'Inclui pets já adotados', so the agent must read `status` and only offer 'available'. It also instructs the agent to show `adoption_url` and 'nunca invente pets', adding operational guardrails beyond the structured annotations.

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?

The description is four dense sentences with no filler. It front-loads the core scope and filters, then adds the adoption-status caveat and the anti-hallucination rule. Every sentence earns its place.

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 highly parameterized tool with an output schema and read-only annotations, the description covers the essential behavioral caveats an agent needs: catalog scope, adopted-pet handling, required output field, and hallucination warnings. The rich schema already documents parameter details, so no critical context 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 description coverage is 100%, so the parameter baseline is 3. The main description only re-lists example filter categories ('cidade, espécie, porte e idade, ou pelo nome'), which adds no meaning beyond the already-detailed parameter descriptions in the input schema.

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?

The description opens with a specific verb and resource: 'Busca em TODO o catálogo de cães e gatos para adoção no Brasil'. It also frames itself as 'a busca padrão de quem quer adotar', which makes its role as the broad adoption-search entry point unmistakable relative to siblings like get_pet_details, search_rescuers, and search_similar_pets.

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?

It gives clear context for when to use the tool ('É a busca padrão de quem quer adotar'), and the schema-level notes reference related tools like the ONG search and breed listing. However, the main description does not explicitly state when not to use it or name direct alternatives, so it stops short of a 5.

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

search_rescuersBuscar ONGs e protetores na cidadeA
Read-only
Inspect

Use quando perguntarem QUAIS ONGs ou protetores existem em uma cidade. Lista quem tem pets no catálogo ali, com o link de cada um. Anúncios podem ser antigos: não afirme que a ONG está ativa. Não é registro completo, e NÃO diz se alguma pode acolher — nunca afirme que tem vaga.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesNome do MUNICÍPIO por extenso, ou o slug devolvido pela resolução de cidade. Obrigatório: a resposta é sempre de uma cidade. Se o nome for ambíguo ou ninguém tiver pets ali hoje, o erro diz o que fazer.
pageNoPágina, começando em 1.
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), se a pessoa informou. Opcional.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/openWorld annotations, the description discloses important behavioral caveats: listings may be stale, the catalog is incomplete, and the tool cannot determine whether a rescuer has space. These are exactly the kinds of overclaims an agent might otherwise make, so the warning adds substantial value.

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?

The description is four short sentences, each earning its place: the usage trigger, the core behavior with link output, and two critical caveats. It is front-loaded with the decisive use case and contains no filler.

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 read-only list tool with a rich output schema and strong annotations, the description covers all essential behavioral context: scope, link output, staleness risk, incompleteness, and a hard prohibition on vacancy claims. Nothing an agent needs to call 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 description coverage is 100%, so the formal schema already documents city, page, limit, and state thoroughly. The tool description does not add additional parameter-level detail, which is acceptable given the high schema coverage; the baseline of 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?

The description opens with an explicit trigger ('Use quando perguntarem QUAIS ONGs ou protetores existem em uma cidade') and specifies the exact resource: ONGs/protetores with pets in the catalog, including links. This separates it clearly from nearby siblings like search_pets or get_rescuer_details.

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?

It provides an explicit when-to-use condition and states what the tool does NOT support (no active-status claims, no full registry, no vacancy information). It does not name alternative sibling tools directly, but the usage boundary is clear enough to route an agent correctly.

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

search_similar_petsVer pets parecidosA
Read-only
Inspect

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. Pode vir vazia: use searchPets, nunca invente pets. Mostre o adoption_url. total é o tamanho desta lista; não há página 2.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description reveals important behavioral traits: results are constrained by species and city, the list may be empty, there is no pagination ('não há página 2'), and the caller should surface adoption_url. This adds substantial operational context beyond readOnlyHint/openWorldHint.

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?

The description is compact yet information-dense: purpose, scope, usage trigger, fallback instruction, output guidance, and pagination warning all appear in a few sentences. It is front-loaded with the core purpose and every sentence earns its place.

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?

Given the output schema exists and the input schema is fully covered, the description covers all essential decision points: when to use it, how it differs from search_pets, what to do if empty, what field to display, and the absence of additional pages. No critical calling information 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 description coverage is 100%, with both limit and pet_ref already well documented, so the baseline is 3. The description reinforces that pet_ref refers to 'UM pet específico' but does not add meaningful parameter syntax or new format details beyond the schema.

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?

The description states a specific verb and resource: finding pets similar to ONE specific pet, with the same species and city. It also explicitly distinguishes itself from the general catalog search ('não é a busca geral do catálogo'), which clearly separates it from sibling search_pets.

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

Usage Guidelines5/5

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

The description gives an explicit when-to-use condition: use when the desired pet is no longer available. It also names the alternative ('use searchPets'), advises never inventing pets, and handles the empty-result case, leaving no ambiguity about fallback behavior.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedget_pet_details2 fields changed
      • addedOutput schema / $defs / AgentPetDetail / 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."
    • Changedget_rescuer_details2 fields changed
      • addedOutput schema / $defs / AgentRescuerDetail / properties / contact_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Link para falar com a ONG: abre uma página da Adoteca que leva ao Instagram dela. Mostre este link ao indicar contato.",
        +  "title": "Contact Url"
        +}
      • changedOutput schema / $defs / AgentRescuerDetail / 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."
    • Changedsearch_pets2 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."
    • Changedsearch_rescuers2 fields changed
      • addedOutput schema / $defs / AgentRescuerSummary / properties / contact_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Link para falar com a ONG: abre uma página da Adoteca que leva ao Instagram dela. Mostre este link ao indicar contato.",
        +  "title": "Contact Url"
        +}
      • changedOutput schema / $defs / AgentRescuerSummary / 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."
    • Changedsearch_similar_pets2 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."
  2. 3 tool updates
    • Changedget_pet_details1 field changed
      • changedOutput schema / $defs / AgentPetDetail / 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."
    • Changedsearch_pets1 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."
    • Changedsearch_similar_pets1 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."
  3. 3 tool updates
    • Changedget_pet_details1 field changed
      • changedOutput schema / $defs / AgentPetDetail / 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."
    • Changedsearch_pets1 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."
    • Changedsearch_similar_pets1 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."
  4. 5 tool updates
    • Changedget_pet_details1 field changed
      • changedOutput schema / $defs / AgentPetDetail / 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})."
    • Changedget_rescuer_details2 fields changed
      • changedInput schema / properties / rescuer_ref / description
        Previous value: -"Código curto da ONG (ex.: 'ab12cd', o mesmo de www.adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba."New value: +"Código curto da ONG (ex.: 'ab12cd', o mesmo de adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba."
      • changedOutput schema / $defs / AgentRescuerDetail / properties / short_code / description
        Previous value: -"Código curto da ONG (o mesmo de www.adoteca.com.br/o/{code})."New value: +"Código curto da ONG (o mesmo de adoteca.com.br/o/{code})."
    • Changedsearch_pets1 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})."
    • Changedsearch_rescuers1 field changed
      • changedOutput schema / $defs / AgentRescuerSummary / properties / short_code / description
        Previous value: -"Código curto da ONG (o mesmo de www.adoteca.com.br/o/{code})."New value: +"Código curto da ONG (o mesmo de adoteca.com.br/o/{code})."
    • Changedsearch_similar_pets1 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})."
  5. 5 tool updates
    • Changedget_pet_details1 field changed
      • changedOutput schema / $defs / AgentPetDetail / 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})."
    • Changedget_rescuer_details2 fields changed
      • changedInput schema / properties / rescuer_ref / description
        Previous value: -"Código curto da ONG (ex.: 'ab12cd', o mesmo de adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba."New value: +"Código curto da ONG (ex.: 'ab12cd', o mesmo de www.adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba."
      • changedOutput schema / $defs / AgentRescuerDetail / properties / short_code / description
        Previous value: -"Código curto da ONG (o mesmo de adoteca.com.br/o/{code})."New value: +"Código curto da ONG (o mesmo de www.adoteca.com.br/o/{code})."
    • Changedsearch_pets1 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})."
    • Changedsearch_rescuers1 field changed
      • changedOutput schema / $defs / AgentRescuerSummary / properties / short_code / description
        Previous value: -"Código curto da ONG (o mesmo de adoteca.com.br/o/{code})."New value: +"Código curto da ONG (o mesmo de www.adoteca.com.br/o/{code})."
    • Changedsearch_similar_pets1 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})."
  6. 10 tool updates
    • Changedget_catalog_link1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_city_stats4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedOutput schema / $defs / AgentBreedCount / properties / by_species
        Added value: +{
        +  "additionalProperties": {
        +    "type": "integer"
        +  },
        +  "description": "Quantos desses são de cada espécie: chaves 'cachorro' e 'gato', e somam `count`. Uma raça pode aparecer nas duas — SRD (sem raça definida) aparece. Se a pessoa perguntou por uma espécie só, leia daqui: `name` e `count` juntam as duas.",
        +  "title": "By Species",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AgentCityStats / properties / available_count
        Added value: +{
        +  "description": "Pets dessa cidade disponíveis para adoção agora. É este o número para dizer quantos pets a cidade TEM — `pet_count` e os campos por espécie, idade, porte e raça contam também os já adotados e os anúncios antigos, então são sempre maiores ou iguais a este.",
        +  "title": "Available Count",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentCityStats / required
        Previous value: -[
        -  "city",
        -  "pet_count",
        -  "total_ever",
        -  "by_species",
        -  "by_age",
        -  "by_size",
        -  "new_last_24h",
        -  "adopted_total",
        -  "rescuer_count",
        -  "rank",
        -  "national_pct",
        -  "top_breeds"
        -]New value: +[
        +  "city",
        +  "pet_count",
        +  "available_count",
        +  "total_ever",
        +  "by_species",
        +  "by_age",
        +  "by_size",
        +  "new_last_24h",
        +  "adopted_total",
        +  "rescuer_count",
        +  "rank",
        +  "national_pct",
        +  "top_breeds"
        +]
    • Changedget_pet_details1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_rescuer_details1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_breeds1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_cities1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_guides1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_pets1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_rescuers1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_similar_pets1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  7. 3 tool updates
    • Changedget_pet_details2 fields changed
      • addedOutput schema / $defs / AgentPetDetail / 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 / AgentPetDetail / 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."
    • Changedsearch_pets2 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."
    • Changedsearch_similar_pets2 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."
  8. 2 tool updates
    • Changedget_catalog_link1 field changed
      • changedInput schema / properties / age / description
        Previous value: -"Faixa etária, uma só: 'filhote' (até 12 meses), 'adulto' (12 a 96) ou 'idoso' (96+). São as três faixas que o catálogo distingue."New value: +"Faixa etária, uma só: 'filhote', 'adulto' ou 'idoso'. São as três faixas que o catálogo distingue; 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)."
    • Changedsearch_pets1 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."
  9. 6 tool updates
    • Changedget_city_stats3 fields changed
      • changedOutput schema / $defs / AgentCityStats / properties / national_pct / description
        Previous value: -"Percentual de todo o catálogo histórico que está nessa cidade, ex.: 2.4. Calculado sobre `total_ever`, não sobre o que está anunciado agora."New value: +"Percentual de todo o catálogo histórico que está nessa cidade, ex.: 2.4. Calculado sobre `total_ever`."
      • changedOutput schema / $defs / AgentCityStats / properties / pet_count / description
        Previous value: -"Pets anunciados nessa cidade nos últimos 90 dias. Inclui os já adotados, então pode ser maior que o número disponível agora."New value: +"Pets já anunciados nessa cidade, de qualquer data. Inclui os já adotados e anúncios antigos, então pode ser bem maior que o número disponível agora. Não prometa à pessoa que são recentes."
      • changedOutput schema / $defs / AgentCityStats / properties / total_ever / description
        Previous value: -"Pets já anunciados nessa cidade desde o início do catálogo, sem recorte de tempo. É a base dos campos por espécie, idade e porte, do `rank` e do `national_pct` — todos históricos. Para saber o que está anunciado agora, use `pet_count`."New value: +"Pets já anunciados nessa cidade desde o início do catálogo, sem recorte de tempo. É a base dos campos por espécie, idade e porte, do `rank` e do `national_pct` — todos históricos. `pet_count` carrega hoje o mesmo número: este retorno não tem um recorte de 'anunciado agora'."
    • Changedget_rescuer_details1 field changed
      • changedOutput schema / $defs / AgentRescuerDetail / properties / available_count / description
        Previous value: -"Pets disponíveis para adoção agora."New value: +"Pets com anúncio ativo para adoção. O anúncio pode ser antigo — não prometa à pessoa que é recente."
    • Changedlist_breeds1 field changed
      • changedOutput schema / $defs / AgentBreed / properties / count / description
        Previous value: -"Pets dessa raça anunciados nos últimos 90 dias, somando o Brasil inteiro. Inclui os já adotados, então pode ser maior que o número disponível agora — e não diz se há algum na cidade da pessoa."New value: +"Pets dessa raça já anunciados, somando o Brasil inteiro. Inclui os já adotados e anúncios antigos, então pode ser bem maior que o número disponível agora — e não diz se há algum na cidade da pessoa. Não prometa que são recentes."
    • Changedsearch_cities1 field changed
      • changedOutput schema / $defs / AgentCityMatch / properties / pet_count / description
        Previous value: -"Pets anunciados nessa cidade nos últimos 90 dias. Inclui os já adotados, então pode ser maior que o número disponível agora."New value: +"Pets já anunciados nessa cidade, de qualquer data. Inclui os já adotados e anúncios antigos, então pode ser bem maior que o número disponível agora. Não prometa à pessoa que são recentes."
    • Changedsearch_pets1 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."
    • Changedsearch_rescuers2 fields changed
      • changedOutput schema / $defs / AgentRescuerSearchResponse / properties / note / description
        Previous value: -"Contexto obrigatório: a lista cobre só quem tem pets anunciados AGORA — não é um registro de todas as ONGs da cidade."New value: +"Contexto obrigatório: a lista cobre só quem tem pets anunciados no catálogo, de qualquer data — não é um registro de todas as ONGs da cidade, nem garantia de que estejam ativas hoje."
      • changedOutput schema / $defs / AgentRescuerSummary / properties / available_count / description
        Previous value: -"Pets disponíveis para adoção agora."New value: +"Pets com anúncio ativo para adoção. O anúncio pode ser antigo — não prometa à pessoa que é recente."
  10. 3 tool updates
    • Changedget_pet_details2 fields changed
      • changedOutput schema / $defs / AgentPetDetail / properties / foster_status / description
        Previous value: -"null = a ONG não informou ou não classificou."New value: +"'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."
      • changedOutput schema / $defs / AgentPetDetail / properties / neutered / description
        Previous value: -"null = a ONG não informou."New value: +"null = a ONG não informou. Nunca afirme 'não castrado' quando for null."
    • Changedsearch_pets8 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"
        +}
    • Changedsearch_similar_pets8 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"
        +}
  11. 1 tool update
    • Changedget_rescuer_details2 fields changed
      • changedOutput schema / $defs / AgentRescuerDetail / description
        Previous value: -"The summary PLUS the fields a person needs before contacting an ONG.\n\nDeliberately NOT everything `account_to_detail` carries: `pix_key`, `cnpj`\nand `like_count` are excluded (as is `display_name`, which only the admin\nmapper emits) — see `agent_rescuer_detail`."New value: +"The summary PLUS the fields a person needs before contacting an ONG.\n\nDeliberately NOT everything `account_to_detail` carries: `pix_key` and\n`like_count` are excluded (as is `display_name`, which only the admin\nmapper emits) — see `agent_rescuer_detail`."
      • addedOutput schema / $defs / AgentRescuerDetail / properties / cnpj
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "CNPJ da ONG, quando é uma entidade registrada. É um sinal de confiança, não um dado administrativo: antes de doar, a pessoa deve conferir se o nome que aparece na tela do PIX bate com este CNPJ. 14 dígitos, sem pontuação.",
        +  "title": "Cnpj"
        +}
  12. 2 tool updates
    • Changedget_catalog_link1 field changed
      • removedInput schema / properties / foster
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "true monta o link só com pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: o catálogo não tem o filtro inverso.",
        -  "title": "Foster"
        -}
    • Changedsearch_pets1 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"
        -}
  13. 1 tool update
    • Changedget_catalog_link1 field changed
      • addedInput schema / properties / foster
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "true monta o link só com pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: o catálogo não tem o filtro inverso.",
        +  "title": "Foster"
        +}
  14. 2 tool updates
    • Changedget_pet_details1 field changed
      • addedOutput schema / $defs / AgentPetDetail / properties / foster_status
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "null = a ONG não informou ou não classificou.",
        +  "title": "Foster Status"
        +}
    • Changedsearch_pets1 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"
        +}
  15. 1 tool update
    • Changedget_city_stats8 fields changed
      • changedOutput schema / $defs / AgentCityStats / properties / by_age / description
        Previous value: -"Quantos por faixa etária: 'filhote', 'adulto', 'idoso'. Pets sem idade informada ficam de fora, então pode somar menos que `pet_count`."New value: +"Quantos por faixa etária: 'filhote', 'adulto', 'idoso'. Pets sem idade informada ficam de fora, então pode somar menos que `total_ever`."
      • changedOutput schema / $defs / AgentCityStats / properties / by_size / description
        Previous value: -"Quantos por porte: 'pequeno', 'médio', 'grande'. Pets sem porte informado ficam de fora, então pode somar menos que `pet_count`."New value: +"Quantos por porte: 'pequeno', 'médio', 'grande'. Pets sem porte informado ficam de fora, então pode somar menos que `total_ever`."
      • changedOutput schema / $defs / AgentCityStats / properties / by_species / description
        Previous value: -"Quantos por espécie: chaves 'cachorro' e 'gato'. Somam `pet_count`."New value: +"Quantos por espécie: chaves 'cachorro' e 'gato'. Somam `total_ever`."
      • changedOutput schema / $defs / AgentCityStats / properties / national_pct / description
        Previous value: -"Percentual do catálogo nacional que está nessa cidade, ex.: 2.4."New value: +"Percentual de todo o catálogo histórico que está nessa cidade, ex.: 2.4. Calculado sobre `total_ever`, não sobre o que está anunciado agora."
      • changedOutput schema / $defs / AgentCityStats / properties / rank / description
        Previous value: -"Posição da cidade no ranking nacional por `pet_count` (1 = 1º)."New value: +"Posição da cidade no ranking nacional por `total_ever` (1 = 1º)."
      • changedOutput schema / $defs / AgentCityStats / properties / top_breeds / description
        Previous value: -"As raças mais comuns na cidade, as mais numerosas primeiro."New value: +"As raças mais comuns na cidade em todo o histórico, as mais numerosas primeiro."
      • addedOutput schema / $defs / AgentCityStats / properties / total_ever
        Added value: +{
        +  "description": "Pets já anunciados nessa cidade desde o início do catálogo, sem recorte de tempo. É a base dos campos por espécie, idade e porte, do `rank` e do `national_pct` — todos históricos. Para saber o que está anunciado agora, use `pet_count`.",
        +  "title": "Total Ever",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentCityStats / required
        Previous value: -[
        -  "city",
        -  "pet_count",
        -  "by_species",
        -  "by_age",
        -  "by_size",
        -  "new_last_24h",
        -  "adopted_total",
        -  "rescuer_count",
        -  "rank",
        -  "national_pct",
        -  "top_breeds"
        -]New value: +[
        +  "city",
        +  "pet_count",
        +  "total_ever",
        +  "by_species",
        +  "by_age",
        +  "by_size",
        +  "new_last_24h",
        +  "adopted_total",
        +  "rescuer_count",
        +  "rank",
        +  "national_pct",
        +  "top_breeds"
        +]
  16. 10 tool updates
    • Changedget_city_stats3 fields changed
      • removedOutput schema / $defs / AgentCityStats / properties / ngo_count
        Removed value: -{
        -  "description": "ONGs e protetores com pets anunciados nessa cidade.",
        -  "title": "Ngo Count",
        -  "type": "integer"
        -}
      • addedOutput schema / $defs / AgentCityStats / properties / rescuer_count
        Added value: +{
        +  "description": "ONGs e protetores com pets anunciados nessa cidade.",
        +  "title": "Rescuer Count",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentCityStats / required
        Previous value: -[
        -  "city",
        -  "pet_count",
        -  "by_species",
        -  "by_age",
        -  "by_size",
        -  "new_last_24h",
        -  "adopted_total",
        -  "ngo_count",
        -  "rank",
        -  "national_pct",
        -  "top_breeds"
        -]New value: +[
        +  "city",
        +  "pet_count",
        +  "by_species",
        +  "by_age",
        +  "by_size",
        +  "new_last_24h",
        +  "adopted_total",
        +  "rescuer_count",
        +  "rank",
        +  "national_pct",
        +  "top_breeds"
        +]
    • Removedget_ngo_details
    • Changedget_pet_details7 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 / AgentPetDetail / properties / ngo
        Removed value: -{
        -  "$ref": "#/$defs/AgentNgo",
        -  "description": "Quem cuida do pet."
        -}
      • removedOutput schema / $defs / AgentPetDetail / properties / ngo_contacts
        Removed value: -{
        -  "description": "Contatos gerais da ONG — use quando 'contacts' estiver vazio.",
        -  "items": {
        -    "$ref": "#/$defs/AgentContact"
        -  },
        -  "title": "Ngo Contacts",
        -  "type": "array"
        -}
      • addedOutput schema / $defs / AgentPetDetail / properties / rescuer
        Added value: +{
        +  "$ref": "#/$defs/AgentRescuer",
        +  "description": "Quem cuida do pet."
        +}
      • addedOutput schema / $defs / AgentPetDetail / properties / rescuer_contacts
        Added value: +{
        +  "description": "Contatos gerais da ONG — use quando 'contacts' estiver vazio.",
        +  "items": {
        +    "$ref": "#/$defs/AgentContact"
        +  },
        +  "title": "Rescuer Contacts",
        +  "type": "array"
        +}
      • changedOutput schema / $defs / AgentPetDetail / 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"
        +}
    • Addedget_rescuer_details
    • Removedlist_ngo_pets
    • Changedsearch_cities3 fields changed
      • removedOutput schema / $defs / AgentCityMatch / properties / ngo_count
        Removed value: -{
        -  "description": "ONGs e protetores com pets anunciados nessa cidade.",
        -  "title": "Ngo Count",
        -  "type": "integer"
        -}
      • addedOutput schema / $defs / AgentCityMatch / properties / rescuer_count
        Added value: +{
        +  "description": "ONGs e protetores com pets anunciados nessa cidade.",
        +  "title": "Rescuer Count",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentCityMatch / required
        Previous value: -[
        -  "slug",
        -  "name",
        -  "state",
        -  "pet_count",
        -  "ngo_count"
        -]New value: +[
        +  "slug",
        +  "name",
        +  "state",
        +  "pet_count",
        +  "rescuer_count"
        +]
    • Removedsearch_ngos
    • Changedsearch_pets6 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"
        +}
    • Addedsearch_rescuers
    • Changedsearch_similar_pets5 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"
        +}
  17. 5 tool updates
    • Changedget_pet_details2 fields changed
      • addedOutput schema / $defs / AgentPetDetail / 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"
        +}
    • Changedlist_ngo_pets6 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."
      • 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."
        +}
    • Changedsearch_ngos1 field changed
      • 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."
    • Changedsearch_pets7 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."
        +}
    • Changedsearch_similar_pets4 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."
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Consulta dados cadastrais de CNPJ (razão social, sócios, CNAE) e descobre processos judiciais da empresa e sócios no Diário de Justiça Eletrônico Nacional.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Consulta o cadastro de profissionais no Conselho Federal de Medicina Veterinária (CFMV) em fonte oficial, permitindo verificar registros de médicos-veterinários e zootecnistas via linguagem natural.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Consulta de dados oficiais da Prefeitura SP Mogi das Cruzes (CPOM) em fonte oficial, com ferramenta de leitura para agentes de IA via HTTP.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Consulta em fonte oficial documentos de transferência de município via uma ferramenta de leitura, com pagamento por uso e hospedagem na plataforma.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources