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.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Each tool targets a distinct resource/action: city resolution, catalog queries, city stats, pet/rescuer details, guides, and similar-pet recommendations. Search_pets and search_similar_pets are clearly separated by scope, and get_city_stats explicitly says it does not list rescuers, avoiding boundary confusion. No two tools appear interchangeable.
All tool names use lowercase snake_case and follow a consistent verb_noun pattern: get_* for detail/link operations, search_* for discovery/filtering, and list_breeds for enumeration. The naming is uniform and predictable, with no mixed casing or vague generic verbs.
Ten tools is well-scoped for an adoption-catalog assistant: discovery, details, stats, guides, rescuers, and catalog links each have a dedicated tool. The surface is neither bloated nor too thin, and every tool serves a clear user intent.
The tool set covers the full read-side adoption journey: resolving city names, searching pets, viewing pet details, finding similar pets, contacting rescuers, getting city stats, building catalog links, and accessing educational guides. Since this is a catalog/assistant server rather than an adoption-management system, no significant operations are missing.
Available Tools
10 toolsget_catalog_linkMontar link do catálogoARead-onlyInspect
Monta o link do catálogo com os filtros pedidos e confirma que existem pets neles. Use quando a pessoa quiser ver a lista no site. Se url vier null, não há link: leia note e ofereça tirar um filtro. Nunca escreva um link de catálogo à mão.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | 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). | |
| sex | No | Sexo: 'male'/'macho' ou 'female'/'femea'. | |
| city | No | 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. | |
| size | No | Portes, um ou mais: 'small'/'pequeno', 'medium'/'medio', 'large'/'grande'. Envie os dois quando a pessoa aceitar os dois. | |
| sort | No | Ordem da página: 'recentes' (padrão, os anúncios mais novos primeiro) ou 'disponiveis' (os que ainda estão para adoção primeiro, empurrando os já adotados para o fim). | |
| breed | No | 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. | |
| state | No | Sigla de duas letras da UF (SP, MG), apenas para desambiguar `city`. Busca só por estado NÃO é suportada: sempre envie `city` junto. | |
| species | No | Espécie: 'dog'/'cachorro' ou 'cat'/'gato'. | |
| neutered | No | true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; leia `neutered` na ficha do pet. | |
| vaccinated | No | 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). | |
| special_needs | No | true monta o link só com pets com cuidados especiais. `false` é IGNORADO: o catálogo não tem o filtro inverso. | |
| good_with_cats | No | Somente pets que convivem bem com gatos. | |
| good_with_dogs | No | Somente pets que convivem bem com cães. | |
| good_with_kids | No | Somente pets que convivem bem com crianças. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavior beyond that: a null url means no link exists, the agent should read the note and offer removing a filter, and the agent must never hand-write a catalog link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler, front-loads the core action, and every sentence earns its place by adding usage or edge-case guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 14 parameters and a full output schema, the description covers the key invocation caveats: null url handling, note reading, and the prohibition on hand-writing links. The parameter details are already delegated to the schema, so the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, including rich guidance per parameter, so the baseline is 3. The tool description only refers to 'filtros pedidos' and mentions removing a filter, adding no parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it builds the catalog link from requested filters and verifies pets exist in the filtered result. It is clear and distinct from sibling search tools, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it when the person wants to see the list on the site, giving clear context for when the tool applies. It does not list exclusions or contrast with alternatives such as search_pets, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_city_statsVer números do catálogo na cidadeARead-onlyInspect
Números do catálogo em UMA cidade já resolvida: quantos pets, por espécie, porte e idade, entradas em 24h, adoções, quantas ONGs e as raças mais comuns. Use para 'quantos pets tem em X?'. Não devolve pets, não resolve o nome da cidade e não diz QUAIS são as ONGs — para isso, use a busca de ONGs.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Nome 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. | |
| state | No | Sigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds valuable behavioral context: the tool does not resolve city names, does not return pet records, and gives a specific error behavior when the city is ambiguous or has no pets today. These disclosures go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences front-load the tool's purpose and returned metrics, then state the use case, then list exclusions with alternatives. Every clause earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's scope, limitations, error behavior, and alternatives, and an output schema exists to define the return structure. Combined with the annotations, an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the 'already-resolved city' constraint that also appears in the schema's city parameter, but it doesn't add significant new parameter-level meaning beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Ver números do catálogo') and clearly enumerates the resource scope: a single already-resolved city, with detailed metrics (pets by species/size/age, 24h entries, adoptions, NGO count, common breeds). It explicitly distinguishes itself from siblings by stating what it does NOT do — resolve the city name, return individual pets, or identify which NGOs — making tool differentiation immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit usage cue: 'Use para "quantos pets tem em X?"' and equally explicit exclusions with routing to alternatives ('não resolve o nome da cidade... use a busca de ONGs'). This tells an agent exactly when to invoke this tool versus the listed sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pet_detailsVer ficha completa do petARead-onlyInspect
Ficha completa de um pet: saúde, cuidados, convivência e como falar com a ONG. Aceita o código curto do link ou o id devolvido pela busca de pets. Leia status antes de oferecer, e o status de cada health_conditions antes de falar da saúde dele.
| Name | Required | Description | Default |
|---|---|---|---|
| pet_ref | Yes | Código curto do pet (ex.: 'ab12cd') ou o identificador da ficha. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds actionable behavior: read the pet's top-level `status` before offering it, and read each `health_conditions` status before discussing health. This is valuable operational guidance not present in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences cover the record contents, input format, and critical status-reading guidance with no filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single well-documented parameter, readOnly annotations, and an output schema, the description fully covers what an agent needs to call the tool correctly. The status-reading instructions add the one behavioral nuance that schema and annotations cannot convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already defines pet_ref at 100% coverage, so the baseline is 3. The description adds value by clarifying the two accepted formats and tying the ID to the pet search flow, reinforcing the schema rather than merely repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it retrieves a pet's complete record covering health, care, cohabitation, and NGO contact. It also clarifies the accepted references (short link code or ID from pet search), distinguishing it from sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the tool accepts the ID returned by the pet search, which implies it is meant to be used after search_pets or search_similar_pets. It does not explicitly name alternatives or exclusions, but the calling context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rescuer_detailsVer ficha da ONG ou protetorARead-onlyInspect
Ficha de uma ONG ou protetor: cidades atendidas, contatos, site e página de doação. Aceita o código curto do link ou o @ do Instagram, devolvidos pela busca de ONGs. Para doações, mostre donation_url ou profile_url — nunca peça nem repasse chave PIX.
| Name | Required | Description | Default |
|---|---|---|---|
| rescuer_ref | Yes | Código curto da ONG (ex.: 'ab12cd', o mesmo de adoteca.com.br/o/{code}) ou o @ do Instagram dela, sem arroba. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior. The description adds valuable behavioral context beyond that: the donation-handling rule ('nunca peça nem repasse chave PIX') and the instruction to display specific URL fields. This is meaningful guidance for an agent, though it doesn't cover error cases or rate limits, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first front-loads the purpose and contents, the second gives the input format and a critical donation-handling rule. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema is present, so return values are already documented. The description covers the input source, the data fields contained in the profile, and a specific behavioral rule for donations. Nothing an agent needs to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a full description of the single parameter, including format examples (short code like 'ab12cd' or Instagram @ without @) and the URL pattern. Since schema coverage is 100%, the baseline is 3. The description reinforces the input formats but adds little new semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool provides a profile ('Ficha') of an NGO or protector, listing the specific contents: cities served, contacts, website, and donation page. This is a specific verb+resource and clearly differentiates it from siblings like search_rescuers (which searches) and get_pet_details (which is for pets).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly notes that the accepted refs (short code or Instagram @) are 'devolvidos pela busca de ONGs', indicating this tool is the follow-up to a search. It also gives a concrete behavioral instruction for donations (show donation_url or profile_url, never ask for or pass a PIX key), which guides how to use the output. It doesn't explicitly name alternatives, but the context makes the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breedsListar raças com petsARead-onlyInspect
Raças com pets no catálogo hoje, mais comuns primeiro, com o slug para enviar em breed. Use antes de filtrar por raça e quando perguntarem quais raças existem. A maioria do catálogo é SRD (sem raça definida): ofereça SRD em vez de dizer que não há pets.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | Espécie: 'dog'/'cachorro' ou 'cat'/'gato'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds real behavior: results are ordered most-common-first, reflect today's catalog, and include SRD as the majority class. It does not describe pagination, but the output schema covers return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all substantive: what the list contains and its order, when to use it, and the SRD caveat. The most important operational facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema, one optional well-documented parameter, and read-only annotations, the description leaves no major calling decision uncovered. It even covers the edge case that SRD should be suggested instead of reporting no pets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional species parameter is already fully described in the schema with value examples. The description adds the intended use and breed-slug context but no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: listing breeds that have pets in today's catalog, ordered by frequency, and says the slug is to be sent in `breed`. This clearly distinguishes it from sibling search tools such as search_pets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: before breed filtering and whenever asked which breeds exist. It also gives tactical guidance to offer SRD rather than claim no pets, but it does not name alternatives or when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_citiesEncontrar a cidade no catálogoARead-onlyInspect
Converte o nome de uma cidade (com ou sem acento, com erro de grafia) no slug oficial do catálogo. Use antes das outras buscas quando a pessoa citar uma cidade. Se ambiguous for true, escolha pelo contexto ou pergunte; nunca chute. Para os números da cidade, use as estatísticas.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Nome do município como a pessoa escreveu, ex.: 'sao paulo', 'Cachoeirinha'. | |
| state | No | Sigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, open-world behavior. The description adds useful context about normalization, ambiguity handling, and the boundary that this tool does not provide city numbers. The reference to an `ambiguous` field is slightly vague, but the output schema likely clarifies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first defines the core purpose, the second gives usage priority and ambiguity guidance, and the third prevents confusion with statistics. Information is front-loaded and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotations and the presence of an output schema, the description covers what the tool does, when to use it, how to handle ambiguity, and what it is not for. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `city` and `state` parameters. The description adds context about messy input and accents, but does not materially extend parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific conversion operation: turning a user-supplied city name into the catalog's official slug, including support for accents and misspellings. This clearly distinguishes it from siblings like get_city_stats and other search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool before other searches when a person mentions a city, and gives concrete handling for ambiguous results: choose by context or ask, never guess. It also routes numeric city data to statistics, separating it from get_city_stats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_guidesConsultar guias da AdotecaARead-onlyInspect
Guias da Adoteca sobre adoção, saúde e cuidados especiais (FIV, FeLV, leishmaniose, pet surdo, custos) e ajuda sobre como o site funciona. Use para dúvidas que não são busca de pets. Responda com base no summary, mostre o url e, se a lista vier vazia, diga que não temos guia sobre isso.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld, and the description adds valuable behavioral context: instructing the agent to respond based on the `summary`, show the `url`, and handle empty lists by saying no guide exists. This goes beyond the annotations and helps the agent behave correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each with a clear role: scope, usage condition, and response instructions. There is no filler, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only search tool with an output schema, this description covers topic scope, when to use it, how to format the answer, and the empty-result fallback. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single `query` parameter fully, including an example and a note that accents/typos are tolerated. The tool description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource ('Guias da Adoteca sobre adoção, saúde e cuidados especiais...') and scope, and explicitly distinguishes the tool from pet searches ('dúvidas que não são busca de pets'), setting it apart from sibling search_pets. The verb 'search/consultar' plus resource makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage condition: 'Use para dúvidas que não são busca de pets', effectively stating when-not to use this tool. However, it does not name the alternative tool (search_pets) explicitly, leaving a small inference step to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_petsBuscar pets para adoçãoARead-onlyInspect
Busca em TODO o catálogo de cães e gatos para adoção no Brasil, por filtros como cidade, espécie, porte e idade, ou pelo nome do pet. É a busca padrão de quem quer adotar. Inclui pets já adotados: leia status e só ofereça os 'available'. Mostre o adoption_url e nunca invente pets.
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | Sexo: 'male'/'macho' ou 'female'/'femea'. | |
| city | No | 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. | |
| name | No | 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. | |
| page | No | Página, começando em 1. | |
| size | No | Porte: 'small'/'pequeno', 'medium'/'medio', 'large'/'grande'. | |
| breed | No | 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. | |
| limit | No | Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar. | |
| state | No | Sigla de duas letras da UF (SP, MG), apenas para desambiguar `city`. Busca só por estado NÃO é suportada: sempre envie `city` junto. | |
| rescuer | No | 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. | |
| species | No | Espécie: 'dog'/'cachorro' ou 'cat'/'gato'. | |
| neutered | No | true devolve somente pets castrados. `false` é IGNORADO pelo mesmo motivo de `vaccinated`; leia `neutered` na ficha do pet. | |
| vaccinated | No | 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). | |
| include_older | No | 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. | |
| special_needs | No | true devolve somente pets com cuidados especiais; false devolve somente os que não têm nenhum registrado. | |
| age_max_months | No | 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. | |
| good_with_cats | No | Somente pets que convivem bem com gatos. | |
| good_with_dogs | No | Somente pets que convivem bem com cães. | |
| good_with_kids | No | Somente pets que convivem bem com crianças. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already mark this as a safe read-only operation, the description discloses a critical non-obvious behavior: the search 'Inclui pets já adotados', so the agent must read `status` and only offer 'available'. It also instructs the agent to show `adoption_url` and 'nunca invente pets', adding operational guardrails beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four dense sentences with no filler. It front-loads the core scope and filters, then adds the adoption-status caveat and the anti-hallucination rule. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a highly parameterized tool with an output schema and read-only annotations, the description covers the essential behavioral caveats an agent needs: catalog scope, adopted-pet handling, required output field, and hallucination warnings. The rich schema already documents parameter details, so no critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter baseline is 3. The main description only re-lists example filter categories ('cidade, espécie, porte e idade, ou pelo nome'), which adds no meaning beyond the already-detailed parameter descriptions in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Busca em TODO o catálogo de cães e gatos para adoção no Brasil'. It also frames itself as 'a busca padrão de quem quer adotar', which makes its role as the broad adoption-search entry point unmistakable relative to siblings like get_pet_details, search_rescuers, and search_similar_pets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool ('É a busca padrão de quem quer adotar'), and the schema-level notes reference related tools like the ONG search and breed listing. However, the main description does not explicitly state when not to use it or name direct alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_rescuersBuscar ONGs e protetores na cidadeARead-onlyInspect
Use quando perguntarem QUAIS ONGs ou protetores existem em uma cidade. Lista quem tem pets no catálogo ali, com o link de cada um. Anúncios podem ser antigos: não afirme que a ONG está ativa. Não é registro completo, e NÃO diz se alguma pode acolher — nunca afirme que tem vaga.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Nome 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. | |
| page | No | Página, começando em 1. | |
| limit | No | Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar. | |
| state | No | Sigla de duas letras da UF (SP, MG), se a pessoa informou. Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses important behavioral caveats: listings may be stale, the catalog is incomplete, and the tool cannot determine whether a rescuer has space. These are exactly the kinds of overclaims an agent might otherwise make, so the warning adds substantial value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences, each earning its place: the usage trigger, the core behavior with link output, and two critical caveats. It is front-loaded with the decisive use case and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a rich output schema and strong annotations, the description covers all essential behavioral context: scope, link output, staleness risk, incompleteness, and a hard prohibition on vacancy claims. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the formal schema already documents city, page, limit, and state thoroughly. The tool description does not add additional parameter-level detail, which is acceptable given the high schema coverage; the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with an explicit trigger ('Use quando perguntarem QUAIS ONGs ou protetores existem em uma cidade') and specifies the exact resource: ONGs/protetores with pets in the catalog, including links. This separates it clearly from nearby siblings like search_pets or get_rescuer_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit when-to-use condition and states what the tool does NOT support (no active-status claims, no full registry, no vacancy information). It does not name alternative sibling tools directly, but the usage boundary is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_similar_petsVer pets parecidosARead-onlyInspect
Pets parecidos com UM pet específico, mesma espécie e mesma cidade — não é a busca geral do catálogo. Use quando o pet desejado já não estiver disponível. Pode vir vazia: use searchPets, nunca invente pets. Mostre o adoption_url. total é o tamanho desta lista; não há página 2.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantos pets parecidos devolver, no máximo 24. Esta lista não tem páginas: não existe `page` aqui. | |
| pet_ref | Yes | Código curto do pet (ex.: 'ab12cd') ou o identificador da ficha. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals important behavioral traits: results are constrained by species and city, the list may be empty, there is no pagination ('não há página 2'), and the caller should surface adoption_url. This adds substantial operational context beyond readOnlyHint/openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense: purpose, scope, usage trigger, fallback instruction, output guidance, and pagination warning all appear in a few sentences. It is front-loaded with the core purpose and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the input schema is fully covered, the description covers all essential decision points: when to use it, how it differs from search_pets, what to do if empty, what field to display, and the absence of additional pages. No critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both limit and pet_ref already well documented, so the baseline is 3. The description reinforces that pet_ref refers to 'UM pet específico' but does not add meaningful parameter syntax or new format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: finding pets similar to ONE specific pet, with the same species and city. It also explicitly distinguishes itself from the general catalog search ('não é a busca geral do catálogo'), which clearly separates it from sibling search_pets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use condition: use when the desired pet is no longer available. It also names the alternative ('use searchPets'), advises never inventing pets, and handles the empty-result case, leaving no ambiguity about fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Changed
get_pet_details2 fields changed- added
Output schema / $defs / AgentPetDetail / properties / contact_urlAdded 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" +} - changed
Output schema / $defs / AgentRescuer / properties / instagram_url / descriptionPrevious value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
- Changed
get_rescuer_details2 fields changed- added
Output schema / $defs / AgentRescuerDetail / properties / contact_urlAdded 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" +} - changed
Output schema / $defs / AgentRescuerDetail / properties / instagram_url / descriptionPrevious value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
- Changed
search_pets2 fields changed- added
Output schema / $defs / AgentPetSummary / properties / contact_urlAdded 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" +} - changed
Output schema / $defs / AgentRescuer / properties / instagram_url / descriptionPrevious value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
- Changed
search_rescuers2 fields changed- added
Output schema / $defs / AgentRescuerSummary / properties / contact_urlAdded 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" +} - changed
Output schema / $defs / AgentRescuerSummary / properties / instagram_url / descriptionPrevious value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
- Changed
search_similar_pets2 fields changed- added
Output schema / $defs / AgentPetSummary / properties / contact_urlAdded 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" +} - changed
Output schema / $defs / AgentRescuer / properties / instagram_url / descriptionPrevious value: -"Perfil oficial da ONG no Instagram."New value: +"Perfil oficial da ONG no Instagram. Para indicar contato, mostre contact_url."
3 tool updates
- Changed
get_pet_details1 field changed- changed
Output schema / $defs / AgentPetDetail / properties / status / descriptionPrevious 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."
- Changed
search_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious 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."
- Changed
search_similar_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious value: -"'available', 'adopted', 'deceased' ou 'source_gone' (posts apagados, desfecho incerto). Nunca ofereça um pet que não esteja 'available'. E 'available' não confirma que o pet continua esperando: diz só que ninguém sinalizou mudança. Leia `days_without_update` antes de afirmar que está disponível."New value: +"'available', 'adopted', 'deceased' ou 'source_gone' (post original saiu do ar: pode ter sido adotado; confirme com o protetor). Nunca ofereça um pet que não esteja 'available'. 'available' só diz que ninguém sinalizou mudança: leia `days_without_update` antes de afirmar que está disponível."
3 tool updates
- Changed
get_pet_details1 field changed- changed
Output schema / $defs / AgentPetDetail / properties / status / descriptionPrevious 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."
- Changed
search_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious 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."
- Changed
search_similar_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious 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."
5 tool updates
- Changed
get_pet_details1 field changed- changed
Output schema / $defs / AgentPetDetail / properties / short_code / descriptionPrevious 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})."
- Changed
get_rescuer_details2 fields changed- changed
Input schema / properties / rescuer_ref / descriptionPrevious 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." - changed
Output schema / $defs / AgentRescuerDetail / properties / short_code / descriptionPrevious 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})."
- Changed
search_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / short_code / descriptionPrevious 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})."
- Changed
search_rescuers1 field changed- changed
Output schema / $defs / AgentRescuerSummary / properties / short_code / descriptionPrevious 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})."
- Changed
search_similar_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / short_code / descriptionPrevious value: -"Código curto do pet (o mesmo de www.adoteca.com.br/p/{code})."New value: +"Código curto do pet (o mesmo de adoteca.com.br/p/{code})."
5 tool updates
- Changed
get_pet_details1 field changed- changed
Output schema / $defs / AgentPetDetail / properties / short_code / descriptionPrevious 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})."
- Changed
get_rescuer_details2 fields changed- changed
Input schema / properties / rescuer_ref / descriptionPrevious 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." - changed
Output schema / $defs / AgentRescuerDetail / properties / short_code / descriptionPrevious 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})."
- Changed
search_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / short_code / descriptionPrevious 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})."
- Changed
search_rescuers1 field changed- changed
Output schema / $defs / AgentRescuerSummary / properties / short_code / descriptionPrevious 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})."
- Changed
search_similar_pets1 field changed- changed
Output schema / $defs / AgentPetSummary / properties / short_code / descriptionPrevious value: -"Código curto do pet (o mesmo de adoteca.com.br/p/{code})."New value: +"Código curto do pet (o mesmo de www.adoteca.com.br/p/{code})."
10 tool updates
- Changed
get_catalog_link1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_city_stats4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / $defs / AgentBreedCount / properties / by_speciesAdded 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" +} - added
Output schema / $defs / AgentCityStats / properties / available_countAdded 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" +} - changed
Output schema / $defs / AgentCityStats / requiredPrevious 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" +]
- Changed
get_pet_details1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_rescuer_details1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_breeds1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_cities1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_guides1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_pets1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_rescuers1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_similar_pets1 field changed- added
Input schema / additionalPropertiesAdded value: +false
3 tool updates
- Changed
get_pet_details2 fields changed- added
Output schema / $defs / AgentPetDetail / properties / days_without_updateAdded 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" +} - changed
Output schema / $defs / AgentPetDetail / properties / status / descriptionPrevious 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."
- Changed
search_pets2 fields changed- added
Output schema / $defs / AgentPetSummary / properties / days_without_updateAdded 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" +} - changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious 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."
- Changed
search_similar_pets2 fields changed- added
Output schema / $defs / AgentPetSummary / properties / days_without_updateAdded 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" +} - changed
Output schema / $defs / AgentPetSummary / properties / status / descriptionPrevious 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."
2 tool updates
- Changed
get_catalog_link1 field changed- changed
Input schema / properties / age / descriptionPrevious 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)."
- Changed
search_pets1 field changed- changed
Input schema / properties / age_max_months / descriptionPrevious 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."
6 tool updates
- Changed
get_city_stats3 fields changed- changed
Output schema / $defs / AgentCityStats / properties / national_pct / descriptionPrevious 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`." - changed
Output schema / $defs / AgentCityStats / properties / pet_count / descriptionPrevious 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." - changed
Output schema / $defs / AgentCityStats / properties / total_ever / descriptionPrevious 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'."
- Changed
get_rescuer_details1 field changed- changed
Output schema / $defs / AgentRescuerDetail / properties / available_count / descriptionPrevious 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."
- Changed
list_breeds1 field changed- changed
Output schema / $defs / AgentBreed / properties / count / descriptionPrevious 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."
- Changed
search_cities1 field changed- changed
Output schema / $defs / AgentCityMatch / properties / pet_count / descriptionPrevious 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."
- Changed
search_pets1 field changed- changed
Input schema / properties / include_older / descriptionPrevious 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."
- Changed
search_rescuers2 fields changed- changed
Output schema / $defs / AgentRescuerSearchResponse / properties / note / descriptionPrevious 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." - changed
Output schema / $defs / AgentRescuerSummary / properties / available_count / descriptionPrevious 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."
3 tool updates
- Changed
get_pet_details2 fields changed- changed
Output schema / $defs / AgentPetDetail / properties / foster_status / descriptionPrevious 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." - changed
Output schema / $defs / AgentPetDetail / properties / neutered / descriptionPrevious value: -"null = a ONG não informou."New value: +"null = a ONG não informou. Nunca afirme 'não castrado' quando for null."
- Changed
search_pets8 fields changed- added
Output schema / $defs / AgentPetSummary / properties / dewormedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Dewormed" +} - added
Output schema / $defs / AgentPetSummary / properties / foster_statusAdded 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" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_catsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Cats" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_dogsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Dogs" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_kidsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Kids" +} - added
Output schema / $defs / AgentPetSummary / properties / microchippedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Microchipped" +} - added
Output schema / $defs / AgentPetSummary / properties / neuteredAdded 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" +} - added
Output schema / $defs / AgentPetSummary / properties / vaccinatedAdded 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" +}
- Changed
search_similar_pets8 fields changed- added
Output schema / $defs / AgentPetSummary / properties / dewormedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Dewormed" +} - added
Output schema / $defs / AgentPetSummary / properties / foster_statusAdded 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" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_catsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Cats" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_dogsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Dogs" +} - added
Output schema / $defs / AgentPetSummary / properties / good_with_kidsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Good With Kids" +} - added
Output schema / $defs / AgentPetSummary / properties / microchippedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou.", + "title": "Microchipped" +} - added
Output schema / $defs / AgentPetSummary / properties / neuteredAdded 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" +} - added
Output schema / $defs / AgentPetSummary / properties / vaccinatedAdded 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" +}
1 tool update
- Changed
get_rescuer_details2 fields changed- changed
Output schema / $defs / AgentRescuerDetail / descriptionPrevious 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`." - added
Output schema / $defs / AgentRescuerDetail / properties / cnpjAdded 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" +}
2 tool updates
- Changed
get_catalog_link1 field changed- removed
Input schema / properties / fosterRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "true monta o link só com pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: o catálogo não tem o filtro inverso.", - "title": "Foster" -}
- Changed
search_pets1 field changed- removed
Input schema / properties / fosterRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "true devolve somente pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: a maioria dos anúncios não fala em lar temporário.", - "title": "Foster" -}
1 tool update
- Changed
get_catalog_link1 field changed- added
Input schema / properties / fosterAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "true monta o link só com pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: o catálogo não tem o filtro inverso.", + "title": "Foster" +}
2 tool updates
- Changed
get_pet_details1 field changed- added
Output schema / $defs / AgentPetDetail / properties / foster_statusAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "null = a ONG não informou ou não classificou.", + "title": "Foster Status" +}
- Changed
search_pets1 field changed- added
Input schema / properties / fosterAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "true devolve somente pets que aceitam ou precisam de lar temporário. `false` é IGNORADO: a maioria dos anúncios não fala em lar temporário.", + "title": "Foster" +}
1 tool update
- Changed
get_city_stats8 fields changed- changed
Output schema / $defs / AgentCityStats / properties / by_age / descriptionPrevious value: -"Quantos por faixa etária: 'filhote', 'adulto', 'idoso'. Pets sem idade informada ficam de fora, então pode somar menos que `pet_count`."New value: +"Quantos por faixa etária: 'filhote', 'adulto', 'idoso'. Pets sem idade informada ficam de fora, então pode somar menos que `total_ever`." - changed
Output schema / $defs / AgentCityStats / properties / by_size / descriptionPrevious value: -"Quantos por porte: 'pequeno', 'médio', 'grande'. Pets sem porte informado ficam de fora, então pode somar menos que `pet_count`."New value: +"Quantos por porte: 'pequeno', 'médio', 'grande'. Pets sem porte informado ficam de fora, então pode somar menos que `total_ever`." - changed
Output schema / $defs / AgentCityStats / properties / by_species / descriptionPrevious value: -"Quantos por espécie: chaves 'cachorro' e 'gato'. Somam `pet_count`."New value: +"Quantos por espécie: chaves 'cachorro' e 'gato'. Somam `total_ever`." - changed
Output schema / $defs / AgentCityStats / properties / national_pct / descriptionPrevious value: -"Percentual do catálogo nacional que está nessa cidade, ex.: 2.4."New value: +"Percentual de todo o catálogo histórico que está nessa cidade, ex.: 2.4. Calculado sobre `total_ever`, não sobre o que está anunciado agora." - changed
Output schema / $defs / AgentCityStats / properties / rank / descriptionPrevious value: -"Posição da cidade no ranking nacional por `pet_count` (1 = 1º)."New value: +"Posição da cidade no ranking nacional por `total_ever` (1 = 1º)." - changed
Output schema / $defs / AgentCityStats / properties / top_breeds / descriptionPrevious value: -"As raças mais comuns na cidade, as mais numerosas primeiro."New value: +"As raças mais comuns na cidade em todo o histórico, as mais numerosas primeiro." - added
Output schema / $defs / AgentCityStats / properties / total_everAdded value: +{ + "description": "Pets já anunciados nessa cidade desde o início do catálogo, sem recorte de tempo. É a base dos campos por espécie, idade e porte, do `rank` e do `national_pct` — todos históricos. Para saber o que está anunciado agora, use `pet_count`.", + "title": "Total Ever", + "type": "integer" +} - changed
Output schema / $defs / AgentCityStats / requiredPrevious value: -[ - "city", - "pet_count", - "by_species", - "by_age", - "by_size", - "new_last_24h", - "adopted_total", - "rescuer_count", - "rank", - "national_pct", - "top_breeds" -]New value: +[ + "city", + "pet_count", + "total_ever", + "by_species", + "by_age", + "by_size", + "new_last_24h", + "adopted_total", + "rescuer_count", + "rank", + "national_pct", + "top_breeds" +]
10 tool updates
- Changed
get_city_stats3 fields changed- removed
Output schema / $defs / AgentCityStats / properties / ngo_countRemoved value: -{ - "description": "ONGs e protetores com pets anunciados nessa cidade.", - "title": "Ngo Count", - "type": "integer" -} - added
Output schema / $defs / AgentCityStats / properties / rescuer_countAdded value: +{ + "description": "ONGs e protetores com pets anunciados nessa cidade.", + "title": "Rescuer Count", + "type": "integer" +} - changed
Output schema / $defs / AgentCityStats / requiredPrevious value: -[ - "city", - "pet_count", - "by_species", - "by_age", - "by_size", - "new_last_24h", - "adopted_total", - "ngo_count", - "rank", - "national_pct", - "top_breeds" -]New value: +[ + "city", + "pet_count", + "by_species", + "by_age", + "by_size", + "new_last_24h", + "adopted_total", + "rescuer_count", + "rank", + "national_pct", + "top_breeds" +]
- Removed
get_ngo_details - Changed
get_pet_details7 fields changed- removed
Output schema / $defs / AgentNgoRemoved value: -{ - "properties": { - "instagram_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Perfil oficial da ONG no Instagram.", - "title": "Instagram Url" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Nome da ONG ou protetor responsável pelo pet.", - "title": "Name" - } - }, - "required": [ - "name", - "instagram_url" - ], - "title": "AgentNgo", - "type": "object" -} - removed
Output schema / $defs / AgentPetDetail / properties / ngoRemoved value: -{ - "$ref": "#/$defs/AgentNgo", - "description": "Quem cuida do pet." -} - removed
Output schema / $defs / AgentPetDetail / properties / ngo_contactsRemoved value: -{ - "description": "Contatos gerais da ONG — use quando 'contacts' estiver vazio.", - "items": { - "$ref": "#/$defs/AgentContact" - }, - "title": "Ngo Contacts", - "type": "array" -} - added
Output schema / $defs / AgentPetDetail / properties / rescuerAdded value: +{ + "$ref": "#/$defs/AgentRescuer", + "description": "Quem cuida do pet." +} - added
Output schema / $defs / AgentPetDetail / properties / rescuer_contactsAdded value: +{ + "description": "Contatos gerais da ONG — use quando 'contacts' estiver vazio.", + "items": { + "$ref": "#/$defs/AgentContact" + }, + "title": "Rescuer Contacts", + "type": "array" +} - changed
Output schema / $defs / AgentPetDetail / requiredPrevious value: -[ - "short_code", - "name", - "species", - "sex", - "size", - "breed", - "age", - "age_category", - "city", - "status", - "photo_url", - "adoption_url", - "ngo" -]New value: +[ + "short_code", + "name", + "species", + "sex", + "size", + "breed", + "age", + "age_category", + "city", + "status", + "photo_url", + "adoption_url", + "rescuer" +] - added
Output schema / $defs / AgentRescuerAdded value: +{ + "properties": { + "instagram_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Perfil oficial da ONG no Instagram.", + "title": "Instagram Url" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Nome da ONG ou protetor responsável pelo pet.", + "title": "Name" + } + }, + "required": [ + "name", + "instagram_url" + ], + "title": "AgentRescuer", + "type": "object" +}
- Added
get_rescuer_details - Removed
list_ngo_pets - Changed
search_cities3 fields changed- removed
Output schema / $defs / AgentCityMatch / properties / ngo_countRemoved value: -{ - "description": "ONGs e protetores com pets anunciados nessa cidade.", - "title": "Ngo Count", - "type": "integer" -} - added
Output schema / $defs / AgentCityMatch / properties / rescuer_countAdded value: +{ + "description": "ONGs e protetores com pets anunciados nessa cidade.", + "title": "Rescuer Count", + "type": "integer" +} - changed
Output schema / $defs / AgentCityMatch / requiredPrevious value: -[ - "slug", - "name", - "state", - "pet_count", - "ngo_count" -]New value: +[ + "slug", + "name", + "state", + "pet_count", + "rescuer_count" +]
- Removed
search_ngos - Changed
search_pets6 fields changed- added
Input schema / properties / rescuerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Restringe a busca a UMA ONG ou protetor: o código curto do link ou o @ do Instagram, como devolvidos pela busca de ONGs. Combina com os outros filtros ('gatos filhotes desta ONG'). Sem ele a busca cobre o catálogo inteiro.", + "title": "Rescuer" +} - removed
Output schema / $defs / AgentNgoRemoved value: -{ - "properties": { - "instagram_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Perfil oficial da ONG no Instagram.", - "title": "Instagram Url" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Nome da ONG ou protetor responsável pelo pet.", - "title": "Name" - } - }, - "required": [ - "name", - "instagram_url" - ], - "title": "AgentNgo", - "type": "object" -} - removed
Output schema / $defs / AgentPetSummary / properties / ngoRemoved value: -{ - "$ref": "#/$defs/AgentNgo", - "description": "Quem cuida do pet." -} - added
Output schema / $defs / AgentPetSummary / properties / rescuerAdded value: +{ + "$ref": "#/$defs/AgentRescuer", + "description": "Quem cuida do pet." +} - changed
Output schema / $defs / AgentPetSummary / requiredPrevious value: -[ - "short_code", - "name", - "species", - "sex", - "size", - "breed", - "age", - "age_category", - "city", - "status", - "photo_url", - "adoption_url", - "ngo" -]New value: +[ + "short_code", + "name", + "species", + "sex", + "size", + "breed", + "age", + "age_category", + "city", + "status", + "photo_url", + "adoption_url", + "rescuer" +] - added
Output schema / $defs / AgentRescuerAdded value: +{ + "properties": { + "instagram_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Perfil oficial da ONG no Instagram.", + "title": "Instagram Url" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Nome da ONG ou protetor responsável pelo pet.", + "title": "Name" + } + }, + "required": [ + "name", + "instagram_url" + ], + "title": "AgentRescuer", + "type": "object" +}
- Added
search_rescuers - Changed
search_similar_pets5 fields changed- removed
Output schema / $defs / AgentNgoRemoved value: -{ - "properties": { - "instagram_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Perfil oficial da ONG no Instagram.", - "title": "Instagram Url" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Nome da ONG ou protetor responsável pelo pet.", - "title": "Name" - } - }, - "required": [ - "name", - "instagram_url" - ], - "title": "AgentNgo", - "type": "object" -} - removed
Output schema / $defs / AgentPetSummary / properties / ngoRemoved value: -{ - "$ref": "#/$defs/AgentNgo", - "description": "Quem cuida do pet." -} - added
Output schema / $defs / AgentPetSummary / properties / rescuerAdded value: +{ + "$ref": "#/$defs/AgentRescuer", + "description": "Quem cuida do pet." +} - changed
Output schema / $defs / AgentPetSummary / requiredPrevious value: -[ - "short_code", - "name", - "species", - "sex", - "size", - "breed", - "age", - "age_category", - "city", - "status", - "photo_url", - "adoption_url", - "ngo" -]New value: +[ + "short_code", + "name", + "species", + "sex", + "size", + "breed", + "age", + "age_category", + "city", + "status", + "photo_url", + "adoption_url", + "rescuer" +] - added
Output schema / $defs / AgentRescuerAdded value: +{ + "properties": { + "instagram_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Perfil oficial da ONG no Instagram.", + "title": "Instagram Url" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Nome da ONG ou protetor responsável pelo pet.", + "title": "Name" + } + }, + "required": [ + "name", + "instagram_url" + ], + "title": "AgentRescuer", + "type": "object" +}
5 tool updates
- Changed
get_pet_details2 fields changed- added
Output schema / $defs / AgentPetDetail / properties / published_recentlyAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentPublishedRecently" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Preenchido só na busca por nome: a Adoteca postou este pet nesta rede há pouco. Use para situar a pessoa ('o que postamos no Instagram') em vez de afirmar sem contexto." +} - added
Output schema / $defs / AgentPublishedRecentlyAdded value: +{ + "properties": { + "platform": { + "description": "Rede onde a Adoteca postou este pet, ex.: 'Instagram'.", + "title": "Platform", + "type": "string" + }, + "published_at": { + "description": "Quando a Adoteca postou.", + "format": "date-time", + "title": "Published At", + "type": "string" + } + }, + "required": [ + "platform", + "published_at" + ], + "title": "AgentPublishedRecently", + "type": "object" +}
- Changed
list_ngo_pets6 fields changed- changed
Input schema / properties / include_older / descriptionPrevious value: -"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos."New value: +"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos. Buscar por `name` já ignora essa janela de 90 dias: quem pergunta pelo nome já sabe que o pet existe." - changed
Input schema / properties / limit / descriptionPrevious value: -"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24."New value: +"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar." - added
Output schema / $defs / AgentNameMatchAdded value: +{ + "properties": { + "confidence": { + "description": "'high' = é este pet: afirme direto. 'low' = NÃO afirme qual é; mostre os pets da lista e pergunte qual deles.", + "enum": [ + "high", + "low" + ], + "title": "Confidence", + "type": "string" + }, + "query": { + "description": "O nome que foi buscado.", + "title": "Query", + "type": "string" + } + }, + "required": [ + "query", + "confidence" + ], + "title": "AgentNameMatch", + "type": "object" +} - added
Output schema / $defs / AgentPetSummary / properties / published_recentlyAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentPublishedRecently" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Preenchido só na busca por nome: a Adoteca postou este pet nesta rede há pouco. Use para situar a pessoa ('o que postamos no Instagram') em vez de afirmar sem contexto." +} - added
Output schema / $defs / AgentPublishedRecentlyAdded value: +{ + "properties": { + "platform": { + "description": "Rede onde a Adoteca postou este pet, ex.: 'Instagram'.", + "title": "Platform", + "type": "string" + }, + "published_at": { + "description": "Quando a Adoteca postou.", + "format": "date-time", + "title": "Published At", + "type": "string" + } + }, + "required": [ + "platform", + "published_at" + ], + "title": "AgentPublishedRecently", + "type": "object" +} - added
Output schema / $defs / AgentSearchResponse / properties / name_matchAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentNameMatch" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Só quando a busca enviou `name`. Leia `confidence` antes de afirmar de qual pet a pessoa está falando." +}
- Changed
search_ngos1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24."New value: +"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar."
- Changed
search_pets7 fields changed- changed
Input schema / properties / include_older / descriptionPrevious value: -"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos."New value: +"Por padrão só devolvemos pets anunciados nos últimos 90 dias, para não oferecer pets que provavelmente já foram adotados. Só ative se a pessoa pedir explicitamente anúncios antigos. Buscar por `name` já ignora essa janela de 90 dias: quem pergunta pelo nome já sabe que o pet existe." - changed
Input schema / properties / limit / descriptionPrevious value: -"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24."New value: +"Quantos resultados devolver por página. Valores acima de 24 são reduzidos a 24. Buscar por `name` devolve no máximo 5: é uma lista para confirmar, não para navegar." - added
Input schema / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Nome do pet como a pessoa escreveu ('nina', 'bebe'). Acentos e maiúsculas não importam; erros de grafia geralmente NÃO são encontrados. Leia `name_match.confidence` antes de afirmar de qual pet se trata. Se a lista vier vazia, diga que não achou e pergunte como se escreve.", + "title": "Name" +} - added
Output schema / $defs / AgentNameMatchAdded value: +{ + "properties": { + "confidence": { + "description": "'high' = é este pet: afirme direto. 'low' = NÃO afirme qual é; mostre os pets da lista e pergunte qual deles.", + "enum": [ + "high", + "low" + ], + "title": "Confidence", + "type": "string" + }, + "query": { + "description": "O nome que foi buscado.", + "title": "Query", + "type": "string" + } + }, + "required": [ + "query", + "confidence" + ], + "title": "AgentNameMatch", + "type": "object" +} - added
Output schema / $defs / AgentPetSummary / properties / published_recentlyAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentPublishedRecently" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Preenchido só na busca por nome: a Adoteca postou este pet nesta rede há pouco. Use para situar a pessoa ('o que postamos no Instagram') em vez de afirmar sem contexto." +} - added
Output schema / $defs / AgentPublishedRecentlyAdded value: +{ + "properties": { + "platform": { + "description": "Rede onde a Adoteca postou este pet, ex.: 'Instagram'.", + "title": "Platform", + "type": "string" + }, + "published_at": { + "description": "Quando a Adoteca postou.", + "format": "date-time", + "title": "Published At", + "type": "string" + } + }, + "required": [ + "platform", + "published_at" + ], + "title": "AgentPublishedRecently", + "type": "object" +} - added
Output schema / $defs / AgentSearchResponse / properties / name_matchAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentNameMatch" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Só quando a busca enviou `name`. Leia `confidence` antes de afirmar de qual pet a pessoa está falando." +}
- Changed
search_similar_pets4 fields changed- added
Output schema / $defs / AgentNameMatchAdded value: +{ + "properties": { + "confidence": { + "description": "'high' = é este pet: afirme direto. 'low' = NÃO afirme qual é; mostre os pets da lista e pergunte qual deles.", + "enum": [ + "high", + "low" + ], + "title": "Confidence", + "type": "string" + }, + "query": { + "description": "O nome que foi buscado.", + "title": "Query", + "type": "string" + } + }, + "required": [ + "query", + "confidence" + ], + "title": "AgentNameMatch", + "type": "object" +} - added
Output schema / $defs / AgentPetSummary / properties / published_recentlyAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentPublishedRecently" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Preenchido só na busca por nome: a Adoteca postou este pet nesta rede há pouco. Use para situar a pessoa ('o que postamos no Instagram') em vez de afirmar sem contexto." +} - added
Output schema / $defs / AgentPublishedRecentlyAdded value: +{ + "properties": { + "platform": { + "description": "Rede onde a Adoteca postou este pet, ex.: 'Instagram'.", + "title": "Platform", + "type": "string" + }, + "published_at": { + "description": "Quando a Adoteca postou.", + "format": "date-time", + "title": "Published At", + "type": "string" + } + }, + "required": [ + "platform", + "published_at" + ], + "title": "AgentPublishedRecently", + "type": "object" +} - added
Output schema / $defs / AgentSearchResponse / properties / name_matchAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/AgentNameMatch" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Só quando a busca enviou `name`. Leia `confidence` antes de afirmar de qual pet a pessoa está falando." +}
Related MCP Connectors
Catálogo de veículos do Brasil: preço FIPE com histórico, ficha técnica, custo de uso e vendas.
Empresas, sócios e conexões por CNPJ. Brazilian company data, ownership and corporate networks.
Acervo jurídico brasileiro: busca, Markdown, grafo de normas e precedentes, citação verificável.
Preço do m² por bairro em 109 cidades do Brasil, nos 27 estados. Dados abertos, todo mês.
61
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConsulta 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.1MIT
- AlicenseNot gradedqualityCmaintenanceConsulta 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
- AlicenseNot gradedqualityCmaintenanceConsulta de dados oficiais da Prefeitura SP Mogi das Cruzes (CPOM) em fonte oficial, com ferramenta de leitura para agentes de IA via HTTP.MIT
- AlicenseNot gradedqualityCmaintenanceConsulta em fonte oficial documentos de transferência de município via uma ferramenta de leitura, com pagamento por uso e hospedagem na plataforma.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.