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
Uptime
100.0% over 76 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Os nomes e descrições deixam claros os limites entre ferramentas parecidas: search_pets (busca geral), search_similar_pets (só para um pet específico), get_catalog_link (gera link) e get_city_stats (apenas números) se distinguem explicitamente. Ainda há alguma sobreposição entre search_rescuers, get_city_stats e search_public_services por serem todas escopadas por cidade, mas as descrições resolvem a maioria dos casos.

Naming Consistency5/5

Todos os nomes seguem snake_case com padrão previsível verbo_objeto (get_, list_, search_) e alvo claro. Nenhuma mistura de convenções.

Tool Count5/5

Onze ferramentas é um escopo enxuto e adequado para um catálogo de adoção, cada uma cobrindo uma faceta distinta (busca, detalhe, localização, ONGs, guias, serviços públicos).

Completeness4/5

O ciclo de descoberta está bem coberto: resolver cidade, buscar pets, ver detalhe do pet e da ONG, raças, guias e serviços. Faltam arestas menores, como paginação explícita ou um caminho direto para filtrar pets por raça sem passar por search_pets, mas nada configura beco sem saída.

Available Tools

11 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 lista QUAIS são as ONGs.

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

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive/openWorld, so safety is covered. The description adds genuinely useful behavioral context beyond that: the result is aggregated counts only, no pet records are returned, city names are not resolved, and NGO identities are withheld. It does not discuss pagination or latency, but for a read-only aggregation that is a minor gap.

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 tight sentences: what it counts, when to use it, and what it is not. The scope constraint is front-loaded and no sentence is redundant.

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 an output schema present, return-shape detail is unnecessary, and annotations carry the safety profile. The description covers the aggregate contents, the resolution prerequisite, and the non-capabilities, leaving nothing an agent needs in order to call 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 explains both 'city' (name or resolved slug) and optional 'state'. The description's 'cidade já resolvida' reinforces the resolution prerequisite but adds little syntax or format detail beyond what the schema already states about ambiguity errors.

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

Purpose5/5

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

States a specific verb+resource (aggregate catalog numbers for a single already-resolved city) and enumerates exactly what is counted: pets by species/size/age, 24h entries, adoptions, NGO count and top breeds. The scope marker 'UMA cidade' immediately separates it from multi-city or listing siblings like 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?

Gives a literal trigger ('quantos pets tem em X?') and three explicit exclusions (does not return pets, does not resolve the city name, does not list which NGOs), which steers the agent away from get_pet_details/search_pets and implies city resolution must happen first. It never names the sibling to use for resolution, so the routing is implied rather than spelled out.

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 de um pet já listado. Traz o status do pet e o resultado de cada item de health_conditions.

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

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that the response carries the pet's `status` and per-item `health_conditions` results, but since an output schema exists that content is partially redundant, and nothing is said about external lookups despite openWorldHint.

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

Conciseness4/5

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

Three short sentences with the resource and contents front-loaded, then input forms, then key return fields. No filler; slight redundancy between the first and third sentence about what the ficha contains.

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

Completeness4/5

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

With a full output schema, complete parameter coverage and annotations, the description only needs to state purpose, accepted inputs and highlights. It does all three; the only gap is not clarifying relationship to sibling tools like search_similar_pets or get_rescuer_details.

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% and the single parameter already documents both accepted forms (short code or ficha identifier). The description restates this with the added nuance that the id comes from an already-listed pet, but adds no format or validation detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description uses a specific verb+resource ("Ficha completa de um pet") and enumerates what the record covers: saúde, cuidados, convivência and how to contact the ONG. This makes it distinguishable from listing tools like search_pets, even though no sibling is named explicitly.

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

Usage Guidelines3/5

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

"Aceita o código curto do link ou o id de um pet já listado" implies the tool is used on a pet that was previously found via a listing or link, which is useful implied guidance. However, no explicit when-to-use/when-not or alternative tool (search_similar_pets, get_rescuer_details) is mentioned.

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 (donation_url). Aceita o código curto do link ou o @ do Instagram da ONG. Não traz chave PIX.

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

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds a meaningful exclusion (no PIX key) which is useful behavioral context, but doesn't cover auth, rate limits, or error behavior.

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, front-loaded with the resource and its return fields, then input formats, then the PIX exclusion. No wasted words.

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

Completeness4/5

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

Output schema exists so return values needn't be explained, and the description still names key fields and the PIX caveat. An agent has enough to call it correctly, though a pointer to search_rescuers for discovery would complete the picture.

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?

Schema coverage is 100% and the schema description already explains rescuer_ref with an example. The description reinforces the two accepted formats (short code or Instagram @, no arroba), adding slight value 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?

States a specific verb (retrieve profile) and resource (NGO/protector), and enumerates the fields returned: cities served, contacts, site, and donation_url. It also distinguishes itself from siblings like search_rescuers by being a single-record detail lookup.

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

Usage Guidelines3/5

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

Usage is implied by the input format (short code or Instagram handle) and by the sibling name search_rescuers, but the description never says when to use this versus search_rescuers. The negative note about PIX hints at what it does not cover without naming alternatives.

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 aceito no filtro breed. Use quando perguntarem quais raças existem ou antes de filtrar por raça. A maioria do catálogo é SRD (sem raça definida).

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

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely useful behavior beyond that: the result ordering ('mais comuns primeiro'), the caveat that most of the catalog is SRD, and the fact that returned slugs feed a `breed` filter elsewhere.

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 clauses, front-loaded with scope and ordering before the usage trigger and caveat. Nothing is redundant and every sentence carries information an agent needs.

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

Completeness4/5

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

With an output schema present, return values need no explaining, and the description still covers scope, ordering, a data caveat and cross-tool linkage. The only gap is any hint about what the `species` filter does, which the schema happens to cover.

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 `species` parameter is fully documented in the schema (100% coverage), so the baseline is 3. The description never mentions `species` at all; its `breed`/slug sentence concerns how the output plugs into other tools, not the input parameter.

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

Purpose5/5

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

States a specific verb+resource ('Raças com pets no catálogo hoje') and adds scope that the title alone does not convey: only breeds that actually have pets listed, sorted by commonality. No sibling overlaps with this function, so an agent can distinguish it immediately from search_pets and the 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 Guidelines4/5

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

Gives an explicit trigger ('Use quando perguntarem quais raças existem ou antes de filtrar por raça'), which routes the agent well. It stops short of naming alternatives or stating when NOT to use it, so it lacks the exclusion half 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, com a UF. Use quando a pessoa citar uma cidade. ambiguous vem true quando o nome existe em mais de um estado. Não traz os números da cidade.

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

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only cover the safety profile (readOnly, openWorld, non-destructive), and the description adds genuinely new behavior: fuzzy/accent-insensitive matching, the meaning of the `ambiguous` flag when a name spans multiple states, and the explicit statement that city statistics are not returned. It does not discuss latency, rate limits, or result ordering, so it falls short of a 5.

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 tight sentences, front-loaded with the core input→output transformation, then usage, then the caveat. Every sentence carries distinct information with no padding.

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 an output schema present, return values need not be enumerated, and the description still flags the `ambiguous` field and the exclusion of city statistics. Purpose, trigger, tolerance, and scope limits are all covered for a two-parameter lookup tool.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about the `city` input: it accepts unaccented forms and misspellings, which the schema example ('sao paulo') only hints at. The `state` parameter receives no extra semantic treatment 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?

States a concrete transformation: converts a city name into the official catalog slug plus UF, explicitly tolerating accents and typos. It also distinguishes itself from data-bearing siblings with 'Não traz os números da cidade', so an agent can separate it from get_city_stats without opening a schema.

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

Usage Guidelines4/5

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

'Use quando a pessoa citar uma cidade' gives a clear triggering condition, and the closing sentence carves out what this tool is not for. It stops short of naming the alternative tool (e.g. get_city_stats) that should be used when numbers are wanted, so the routing is implied rather than explicit.

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. Cada guia traz summary e url; lista vazia significa que não há guia sobre o tema.

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

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: each guide returns `summary` and `url`, and an empty list is meaningful (no guide on the topic).

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, each earning its place: topic scope first, usage condition second, output/edge-case semantics third. 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?

A read-only single-param lookup with annotations covering safety and an output schema covering returns; the description adds the empty-result meaning and topic boundaries. Nothing needed 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% and already documents the single `query` param richly (examples, tolerance for accents/typos). The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific resource (Adoteca guides) and enumerates the topic scope (adoption, health, special care, site help), then explicitly distinguishes it from pet search. An agent can tell it apart from search_pets without opening the schema.

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

Usage Guidelines4/5

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

'Use para dúvidas que não são busca de pets' gives an explicit use condition and an implicit exclusion of the pet-search siblings. It stops short of naming the alternative tool by name, but the routing is clear.

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, indicados em status; cada pet traz o adoption_url da ficha.

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

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters3/5

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

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

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

Purpose4/5

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

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

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

Usage Guidelines3/5

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

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

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

search_public_servicesBuscar serviços públicos para animaisA
Read-only
Inspect

Serviços públicos para animais numa cidade, conferidos à mão e com data: hospital veterinário público ou de universidade, zoonoses, castração, bem-estar animal da prefeitura e canais de denúncia. Filtra por necessidade. A cobertura é parcial, cidade a cidade, e a resposta pode vir vazia.

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.
needYesA necessidade: emergencia, atendimento, castracao, mordida, morcego, zoonose, adocao, denuncia, silvestre, animal_preso ou orientacao (ou o mesmo em inglês).
limitNoQuantos lugares no máximo, de 1 a 5. Padrão 3.
stateNoSigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnly/openWorld/no-destructive, and the description adds genuinely new behavioral context: entries are hand-verified and dated, coverage is partial and city-by-city, and the response may legitimately be empty. That empty-result disclosure is valuable operational context. It stops short of explaining freshness guarantees beyond 'com data' or any rate/latency behavior.

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 sentences, front-loaded with what the tool returns, followed by the filtering and coverage caveats. No filler, no repetition of the title, and every clause carries information.

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

Completeness4/5

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

An output schema exists, so return shape need not be described, and the description covers the non-obvious risks: partial geographic coverage and possible empty responses. A note on result freshness or on what to do when the city is ambiguous would complete it, but the essentials are present.

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 city, need, limit and state are all fully documented in the schema itself, including the ambiguous-city error behavior and the enum-like need values. The description only restates the need filter ('Filtra por necessidade') and adds nothing beyond the structured fields, which is the expected baseline.

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

Purpose5/5

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

States a specific verb+resource ('serviços públicos para animais numa cidade') and enumerates exactly what is covered: public/university veterinary hospital, zoonoses, castration, municipal animal welfare and complaint channels. That enumeration cleanly separates it from siblings like search_pets, search_rescuers and get_city_stats without needing to name them.

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

Usage Guidelines3/5

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

'Filtra por necessidade' implies the need parameter drives selection, and the note that coverage is partial and the response can be empty hints at expected conditions. However, it never says when to use this tool versus siblings, nor what an agent should do when the result comes back empty, so usage is only implied.

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. Vem só de anúncios, que podem ser antigos: não é registro completo e não indica se a ONG está ativa nem se tem vaga para acolher.

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

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 readOnlyHint=true and destructiveHint=false, but the description goes well beyond them: it discloses the data source (listings only, possibly stale), and explicitly warns it is not a complete registry and does not indicate whether the NGO is active or has capacity. That is high-value context an agent needs to avoid over-claiming results.

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 tightly-written sentences: trigger first, then what is returned (with links), then the sourcing caveat. Every sentence carries distinct, useful information 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 exists, so return-shape explanation is unnecessary, and the annotations cover the safety profile. Combined with the description's coverage of purpose, source limitations, and invocation trigger, nothing material is missing for correct use.

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 all four parameters (city, page, limit, state) are already documented in the schema, including the 24-result cap and the 5-result cap for name search. The tool description adds no parameter-level meaning beyond the schema, 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?

States a specific verb and resource (list NGOs/rescuers for a city) plus the exact scope: only those who have pets in the catalog there. This implicitly distinguishes it from siblings like search_pets (finds pets) and get_rescuer_details (one rescuer's detail), so an agent can route correctly without opening schemas.

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?

Opens with an explicit trigger condition in caps ('Use quando perguntarem QUAIS ONGs ou protetores existem em uma cidade'), which is clear context for invocation. However, it names no alternatives or exclusions (e.g., when to prefer get_rescuer_details or search_pets instead), leaving that inference 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_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. Só traz pets disponíveis, cada um com o adoption_url, e pode vir vazia. total é o tamanho desta lista; não há página 2.

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

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

Schema coverage is 100%, so `pet_ref` and `limit` are already documented with format hints (short code or ficha identifier, max 24). The description adds no parameter-level detail beyond restating the no-pagination fact already present on `limit`; baseline 3 applies.

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

Purpose5/5

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

States a specific operation (find pets similar to one given pet) with the exact matching criteria — same species, same city — and explicitly contrasts itself with the general catalog search. The agent can distinguish it from search_pets without opening either schema.

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

Usage Guidelines4/5

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

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

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

Tool Schema Changelog

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

  1. 2 tool updates
    • Changedsearch_pets2 fields changed
      • addedOutput schema / $defs / AgentSearchResponse / properties / available_total
        Added value: +{
        +  "description": "Quantos desses pets estão disponíveis para adoção (status 'available'). É o número do título do catálogo; use este, não `total`, ao dizer quantos pets há para adotar.",
        +  "title": "Available Total",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentSearchResponse / required
        Previous value: -[
        -  "total",
        -  "page",
        -  "pets"
        -]New value: +[
        +  "total",
        +  "available_total",
        +  "page",
        +  "pets"
        +]
    • Changedsearch_similar_pets2 fields changed
      • addedOutput schema / $defs / AgentSearchResponse / properties / available_total
        Added value: +{
        +  "description": "Quantos desses pets estão disponíveis para adoção (status 'available'). É o número do título do catálogo; use este, não `total`, ao dizer quantos pets há para adotar.",
        +  "title": "Available Total",
        +  "type": "integer"
        +}
      • changedOutput schema / $defs / AgentSearchResponse / required
        Previous value: -[
        -  "total",
        -  "page",
        -  "pets"
        -]New value: +[
        +  "total",
        +  "available_total",
        +  "page",
        +  "pets"
        +]
  2. 2 tool updates
    • Changedget_catalog_link4 fields changed
      • changedInput schema / properties / breed / description
        Previous value: -"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida). Use a listagem de raças para ver as raças com pets hoje."New value: +"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida)."
      • changedInput schema / properties / city / description
        Previous value: -"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que fazer — leia e siga; não significa que a cidade não exista."New value: +"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que corrigir; isso não significa que a cidade não exista."
      • changedInput schema / properties / neutered / description
        Previous value: -"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; leia `neutered` na ficha do pet."New value: +"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; o valor de cada pet está em `neutered`."
      • changedInput schema / properties / vaccinated / description
        Previous value: -"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. Para saber de um pet específico, leia `vaccinated` na ficha (null = a ONG não informou)."New value: +"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. O valor de cada pet está em `vaccinated` (null = a ONG não informou)."
    • Changedsearch_pets7 fields changed
      • changedInput schema / properties / breed / description
        Previous value: -"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida). Use a listagem de raças para ver as raças com pets hoje."New value: +"Raça: slug ('golden-retriever') ou nome em português ('pastor alemão'). A maioria do catálogo é SRD (sem raça definida)."
      • changedInput schema / properties / city / description
        Previous value: -"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que fazer — leia e siga; não significa que a cidade não exista."New value: +"Nome do MUNICÍPIO por extenso, não do bairro nem abreviado: 'Belo Horizonte', não 'BH'. Acento é opcional. Se o nome for ambíguo, ou se nenhuma ONG tiver pets ali hoje, o erro explica o que corrigir; isso não significa que a cidade não exista."
      • changedInput schema / properties / include_older / description
        Previous value: -"Sem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Não prometa à pessoa que um resultado é recente — confira a data do anúncio."New value: +"Sem efeito no momento: o catálogo devolve os pets anunciados em qualquer data, independente deste parâmetro. Mantido por compatibilidade. Um resultado pode ser antigo: `days_without_update`, quando vem, diz há quanto tempo."
      • changedInput schema / properties / name / description
        Previous value: -"Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. Leia `name_match.confidence` antes de afirmar de qual pet se trata. Se a lista vier vazia, diga que não achou e pergunte como se escreve."New value: +"Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. `name_match.confidence` diz quão certo é o pet encontrado. Se a lista vier vazia, o nome não foi encontrado como escrito."
      • changedInput schema / properties / neutered / description
        Previous value: -"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; leia `neutered` na ficha do pet."New value: +"true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; o valor de cada pet está em `neutered`."
      • changedInput schema / properties / rescuer / description
        Previous value: -"Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram, como devolvidos pela busca de ONGs. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro."New value: +"Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram da ONG. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro."
      • changedInput schema / properties / vaccinated / description
        Previous value: -"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. Para saber de um pet específico, leia `vaccinated` na ficha (null = a ONG não informou)."New value: +"true devolve somente pets vacinados. `false` é IGNORADO: a maioria dos anúncios não informa vacinação, então filtrar por 'não vacinado' esconderia quase todo o catálogo. O valor de cada pet está em `vaccinated` (null = a ONG não informou)."
  3. 1 tool update
    • Addedsearch_public_services
  4. 3 tool updates
    • Changedget_pet_details1 field changed
      • addedOutput schema / $defs / AgentPetDetail / properties / distance_km
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Distância em km entre o centro da cidade do pet e o da cidade buscada (0 = a própria cidade). Só vem quando a busca usou `area` ou `widen_if_empty`.",
        +  "title": "Distance Km"
        +}
    • Changedsearch_pets6 fields changed
      • addedInput schema / properties / area
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Amplia a busca em volta de `city`: 'city'/'cidade' (padrão, só a cidade), 'neighbors'/'vizinhas' (mais as cidades que fazem divisa) ou 'radius'/'raio' (mais as cidades a até `radius_km` km). Resultados: a cidade primeiro, depois as vizinhas, depois o resto. Não combina com `name`.",
        +  "title": "Area"
        +}
      • addedInput schema / properties / radius_km
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Raio em km (1 a 100) para `area=radius`. Mandar só `radius_km` já significa raio.",
        +  "title": "Radius Km"
        +}
      • addedInput schema / properties / widen_if_empty
        Added value: +{
        +  "default": false,
        +  "description": "Se a área pedida não tiver pets disponíveis com os filtros, amplia a partir dela: cidades vizinhas, depois raio de 50 km, depois 100 km, parando no primeiro passo com pets. `searched_area` diz o que foi usado.",
        +  "title": "Widen If Empty",
        +  "type": "boolean"
        +}
      • addedOutput schema / $defs / AgentPetSummary / properties / distance_km
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Distância em km entre o centro da cidade do pet e o da cidade buscada (0 = a própria cidade). Só vem quando a busca usou `area` ou `widen_if_empty`.",
        +  "title": "Distance Km"
        +}
      • addedOutput schema / $defs / AgentSearchResponse / properties / searched_area
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/AgentSearchedArea"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "A área que a busca realmente cobriu. Se `widened` for true, os pets não são da cidade pedida: diga isso antes de listá-los."
        +}
      • addedOutput schema / $defs / AgentSearchedArea
        Added value: +{
        +  "description": "The area the pet search actually ran — after any automatic widening.",
        +  "properties": {
        +    "area": {
        +      "description": "Área usada: 'city' (só a cidade), 'neighbors' (a cidade e as que fazem divisa com ela) ou 'radius' (também as cidades a até `radius_km`).",
        +      "enum": [
        +        "city",
        +        "neighbors",
        +        "radius"
        +      ],
        +      "title": "Area",
        +      "type": "string"
        +    },
        +    "cities": {
        +      "description": "Quantas cidades a área cobriu (0 = busca sem cidade).",
        +      "title": "Cities",
        +      "type": "integer"
        +    },
        +    "radius_km": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Raio em km quando `area` é 'radius'; senão null.",
        +      "title": "Radius Km"
        +    },
        +    "widened": {
        +      "description": "true quando a cidade não tinha pets e a busca foi ampliada sozinha (widen_if_empty). Diga isso à pessoa e cite a cidade de cada pet.",
        +      "title": "Widened",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "area",
        +    "radius_km",
        +    "widened",
        +    "cities"
        +  ],
        +  "title": "AgentSearchedArea",
        +  "type": "object"
        +}
    • Changedsearch_similar_pets3 fields changed
      • addedOutput schema / $defs / AgentPetSummary / properties / distance_km
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Distância em km entre o centro da cidade do pet e o da cidade buscada (0 = a própria cidade). Só vem quando a busca usou `area` ou `widen_if_empty`.",
        +  "title": "Distance Km"
        +}
      • addedOutput schema / $defs / AgentSearchResponse / properties / searched_area
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/AgentSearchedArea"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "A área que a busca realmente cobriu. Se `widened` for true, os pets não são da cidade pedida: diga isso antes de listá-los."
        +}
      • addedOutput schema / $defs / AgentSearchedArea
        Added value: +{
        +  "description": "The area the pet search actually ran — after any automatic widening.",
        +  "properties": {
        +    "area": {
        +      "description": "Área usada: 'city' (só a cidade), 'neighbors' (a cidade e as que fazem divisa com ela) ou 'radius' (também as cidades a até `radius_km`).",
        +      "enum": [
        +        "city",
        +        "neighbors",
        +        "radius"
        +      ],
        +      "title": "Area",
        +      "type": "string"
        +    },
        +    "cities": {
        +      "description": "Quantas cidades a área cobriu (0 = busca sem cidade).",
        +      "title": "Cities",
        +      "type": "integer"
        +    },
        +    "radius_km": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Raio em km quando `area` é 'radius'; senão null.",
        +      "title": "Radius Km"
        +    },
        +    "widened": {
        +      "description": "true quando a cidade não tinha pets e a busca foi ampliada sozinha (widen_if_empty). Diga isso à pessoa e cite a cidade de cada pet.",
        +      "title": "Widened",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "area",
        +    "radius_km",
        +    "widened",
        +    "cities"
        +  ],
        +  "title": "AgentSearchedArea",
        +  "type": "object"
        +}
  5. 3 tool updates
    • Changedget_pet_details1 field changed
      • addedOutput schema / $defs / AgentPetDetail / properties / adoption_evidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Só quando status='adopted': 'announced' (a ONG anunciou) ou 'unlisted' (o post saiu do ar e a ONG confirma isso como adoção). null nos demais status.",
        +  "title": "Adoption Evidence"
        +}
    • Changedsearch_pets1 field changed
      • addedOutput schema / $defs / AgentPetSummary / properties / adoption_evidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Só quando status='adopted': 'announced' (a ONG anunciou) ou 'unlisted' (o post saiu do ar e a ONG confirma isso como adoção). null nos demais status.",
        +  "title": "Adoption Evidence"
        +}
    • Changedsearch_similar_pets1 field changed
      • addedOutput schema / $defs / AgentPetSummary / properties / adoption_evidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Só quando status='adopted': 'announced' (a ONG anunciou) ou 'unlisted' (o post saiu do ar e a ONG confirma isso como adoção). null nos demais status.",
        +  "title": "Adoption Evidence"
        +}
  6. 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."
  7. 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."
  8. 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."
  9. 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})."
  10. 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})."
  11. 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
  12. 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."
  13. 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."
  14. 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."
  15. 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"
        +}
  16. 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"
        +}

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