UPí — upCampo
Server Details
Farm management for Brazilian farms: pest scouting, rainfall, work orders, inventory, fleet, post-harvest and cost per field. Reads and records, with OAuth on the user's own upCampo account. Nothing is ever deleted.
- Status
- Healthy
- Uptime
- 90.2% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 36 tools
The cadastrar_* tools each target a distinct entity (cultura, variedade, talhao, produto, etc.), the consultar_* tools split cleanly by domain (estoque, financeiro, compras, frota, produção...), and the lancar_* tools are distinct write operations. There is minor overlap where listar_safras, consultar_cadastros(visão safras) and cadastrar_safra all touch safras, and consultar_base_upcampo overlaps consultar_cadastros on classes/produtos, but the descriptions disambiguate well.
Every tool follows the same Portuguese verb_noun convention: cadastrar_*, consultar_*, lancar_*, listar_*, plus buscar_ajuda and ler_artigo_ajuda. The pattern is entirely predictable and domain terms are used consistently across the set.
At 36 tools the surface is heavy (above the typical 15 threshold), driven by 15 near-identical cadastrar_* entity tools and 12 large multi-view consultar_* tools. Each tool is genuinely scoped to a distinct entity or domain of a farm ERP, so it is justified rather than redundant, but the sheer count makes navigation costly.
Coverage spans the full lifecycle: cadastro of all core entities (with include/update/desativar folded into the cadastrar_* list semantics), read-side consultation across estoque, finanças, compras, frota, OS, produção and pós-colheita, and write operations for the main field entries (chuva, abastecimento, OS, execução, entrada de nota). Gaps are deliberate and stated (compras/financeiro are read-only), leaving only minor dead ends such as no tool for opening requisições/cotações.
Available Tools
36 toolsbuscar_ajudaBuscar na Central de AjudaARead-onlyInspect
Procura na Central de Ajuda da upCampo (suporte.upcampo.com.br) os artigos que explicam como usar o sistema: onde cada tela fica no menu, para que serve cada campo, como fazer um cadastro ou um processo, e as perguntas frequentes de cada tela. Use para dúvida de USO ("como cadastro um talhão", "onde lanço abastecimento", "por que o sistema não deixa finalizar a ordem"). Não traz dado da fazenda: para quanto, qual ou quantos nos dados do usuário, use as tools consultar_*. Devolve os artigos mais relevantes com um trecho; para ler um artigo inteiro, chame ler_artigo_ajuda com o slug.
| Name | Required | Description | Default |
|---|---|---|---|
| termo | Yes | O que procurar: as palavras do usuário ou o nome da tela. Ex.: "cadastrar talhão", "horímetro no abastecimento". | |
| limite | No | Quantos artigos devolver. Padrão 5. |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| total | Yes | |
| artigos | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered; the description adds real behavioral context by stating the return shape (most relevant articles plus an excerpt) and the escalation path to ler_artigo_ajuda. It stops short of noting result limits or ranking behavior, so it is strong but not exhaustive.
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?
Front-loaded with the action and scope, then usage conditions, then the non-use case, then return behavior and the next step — a logical order with no filler sentences. It is dense but each clause carries routing information.
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 search tool with a full schema and an output schema, the description supplies everything an agent needs: domain, query style, exclusions, return format and follow-up tool. Nothing material 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% — both 'termo' and 'limite' are documented with examples, ranges and defaults in the schema itself. The description's phrasing about using the user's words or the screen name overlaps with what the schema already says, adding little beyond the baseline.
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?
States a specific verb and resource — searching the upCampo Help Center (support.upcampo.com.br) for usage articles — and enumerates the kinds of content covered (menu locations, field meaning, how-to, FAQ). It clearly distinguishes itself from the consultar_* family by scoping to 'how to use' questions.
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?
Gives explicit when-to-use examples in the user's own voice ('como cadastro um talhão', 'onde lanço abastecimento') and an explicit when-not: farm data questions should go to consultar_*. It also names the follow-up tool (ler_artigo_ajuda) and the argument (slug) for reading a full article.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_classe_produtoCadastro de classe de produtoAInspect
Classes de produto da empresa (Herbicida, Fungicida, Adubo, Semente, Peça…). A base da upCampo (consultar_base_upcampo visão classes) serve para sugerir nomes; a classe é do cliente.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses important transactional behavior: the batch is all-or-nothing, a rejected item prevents any write, and the response identifies which item failed and why. It also explains duplicate-name rejection, deactivation side effects, and the required confirmation workflow before writing.
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 front-loaded with the domain and key distinction, then moves through batch rules, atomicity, and confirmation. It is appropriately sized for a batch write tool, though some sentences repeat details already present in the schema.
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 annotations and the presence of an output schema, the description covers what an agent needs: write intent, batch atomicity, include/update/deactivate modes, duplicate handling, and confirmation. No major behavioral or usage gap remains for this tool.
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 the item fields and farm parameter in detail. The description largely restates the id/desativar conditions and the 50-item limit rather than adding new parameter-level meaning. The duplicate-name behavior is useful but is more behavioral than parameter semantics.
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/resource by explaining that it writes product classes ('GRAVA no upCampo') and covers include/update/deactivate modes. It also distinguishes the tool from the sibling consultar_base_upcampo by clarifying that the base only suggests names while the class belongs to the client.
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 operational context: send the full list at once, use no id to include, id to alter, and id plus desativar to deactivate. It also instructs the agent to show the user the list and confirm before calling. It lacks an explicit when-not-to-use statement, but the alternatives and conditions are otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_culturaCadastro de culturaAInspect
Culturas da empresa. Prefira trazer da base da upCampo (id_cultura_base, de consultar_base_upcampo visão culturas): a cultura vem com os estágios fenológicos prontos.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag a non-idempotent, non-destructive write. The description adds high-value behavior beyond that: the all-or-nothing transaction ('se um item for recusado, NENHUM é gravado'), the duplicate-name rejection with the existing id, and the requirement to preview and confirm before calling.
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?
Every sentence carries a distinct instruction (source preference, batch semantics, transaction behavior, duplicate handling, confirmation step) with no filler. The opening fragment 'Culturas da empresa' is a slightly abrupt hook rather than a clean lead, and the density makes it a bit blocky.
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 mutation tool with an output schema, the description covers the missing pieces: write semantics, transactionality, batch limits, default farm behavior, and error reporting ('a resposta diz qual item e por quê'). Nothing an agent needs to invoke it safely is absent.
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 coverage is 100%, so the baseline is 3. The description still adds meaning: it frames 'itens' as a batch with a 50-item cap and explains the id/desativar/id_cultura_base tri-mode semantics and the default-fazenda behavior in narrative form, going beyond restating 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?
States a specific verb (cadastrar/GRAVA) and resource (culturas da empresa) and points to the authoritative source (consultar_base_upcampo). It is clear what is written, though it does not explicitly distinguish itself from close siblings like cadastrar_variedade or cadastrar_safra.
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?
Gives explicit when-to-use guidance: prefer importing from the upCampo base, send the whole dictated list in one call (max 50), include vs alter vs desativar driven by the id/desativar flags, and ask the user before overwriting on a duplicate-name rejection. Alternatives and conditions are spelled out, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_equipamentoCadastro de equipamentoAInspect
Máquinas, veículos e implementos da fazenda. Máquina nasce com horímetro e pronta para abastecimento e ordem de serviço; implemento (plantadeira, grade, pulverizador de arrasto) nasce sem medidor e fora do abastecimento. Placa repetida na fazenda é recusada. Dois equipamentos com o mesmo nome precisam de placa ou código diferentes.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: all-or-nothing transaction (if one item is rejected, none are saved), explicit rejection reasons (duplicate plate, duplicate name with existing id), default medidor behavior per equipment type, and the requirement to confirm with the user before writing to upCampo. These details are not derivable from the annotations alone. No contradiction with readOnlyHint=false, idempotentHint=false, or destructiveHint=false.
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 information-dense and front-loads the core distinction between machines and implements. It uses three short paragraphs for rules, list semantics, and required confirmation. There is minor repetition (duplicate-name rule appears twice), but every sentence carries operational value.
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 batch registration tool with multiple fields, a transaction constraint, and an output schema, the description covers the critical behaviors an agent needs: default field values, conflict handling, all-or-nothing semantics, and the required user confirmation step. The output schema exists, so return-value explanation is appropriately omitted.
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 baseline is 3. The description goes further by explaining batch semantics for the 'itens' array (up to 50 per call, send all at once) and the combined effect of id and desativar, which enriches the parameter meaning beyond the individual schema field descriptions.
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 the resource precisely (máquinas, veículos, implementos) and distinguishes it from siblings by contrasting machines (with horímetro, abastecimento) and implements (with no meter, outside fueling). It also clarifies registration semantics like plate uniqueness per farm, making it easy to tell apart from cadastrar_tipo_equipamento.
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 operational context: send the whole list at once, use id to alter, id+desativar to deactivate, and 'mostre ao usuário a lista... e confirme antes de chamar.' It also handles the duplicate-name conflict by telling the agent to ask whether to alter. However, it does not explicitly name an alternative tool (e.g., consultar_cadastros to check existing records).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_fornecedorCadastro de fornecedorAInspect
Fornecedores da empresa. O documento é gravado sem máscara (CPF 11 caracteres, CNPJ 14 — o CNPJ novo tem letras); documento repetido é recusado.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag a non-read, non-destructive, non-idempotent write; the description goes far beyond them by disclosing the all-or-nothing transaction ('se um item for recusado, NENHUM é gravado'), duplicate-document and duplicate-name rejection behavior, the response reporting the offending item, and the required user confirmation before writing.
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?
Dense but efficient: each sentence carries either a rule (masking, duplicates, all-or-nothing) or an instruction (batch the whole dictation, confirm before writing). The vague opening line and the some-what repetitive duplicate-name warning cost it the top mark.
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 mutation tool with an output schema present, the description covers the essential behavioral contracts (transactionality, rejection reporting, confirmation flow) so return values needn't be described. Only minor gaps remain, such as what fields are required beyond `razao_social` on insert.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning: the 50-item list cap, the batch semantics of `itens`, the `id`-driven insert/edit/deactivate branching, and the unmasked document format. This goes beyond restating 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 names a specific verb+resource (registering company suppliers) and details the CRUD behaviors of the tool, plus the document-normalization rules. The opening 'Fornecedores da empresa' is slightly vague, and it never names which sibling (e.g. consultar_cadastros) it complements, but the operation itself is unmistakable.
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 clearly states the conditions that pick each mode: no `id` inserts, `id` alone edits only supplied fields, `id`+`desativar` deactivates, and it instructs to show the list and confirm before calling. It does not explicitly contrast with sibling registration tools, but the when-to-use conditions are strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_funcionarioCadastro de funcionárioAInspect
Funcionários da fazenda — operadores, tratoristas, aplicadores —, que depois entram na execução de OS e no abastecimento. Nome repetido na fazenda é recusado: é pelo nome que a UPí acha o funcionário. Equipes são montadas pelo portal.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag it as a non-read-only, non-destructive, non-idempotent write. The description goes well beyond that: all-or-nothing transaction semantics with per-item rejection reporting, duplicate-name rejection returning the existing id, name as the identity key used by UPí, team assembly happening elsewhere, and an explicit confirmation workflow. This is rich behavioral context the annotations cannot convey.
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?
Well front-loaded: purpose first, then batch/transaction rules, then persistence target and confirmation. The double emphasis on 'nome repetido' (once in the intro, once in the batch paragraph) is slightly redundant, but overall it is tight and every paragraph 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?
Covers purpose, batching limit, transaction semantics, error reporting, duplicate handling, persistence target (upCampo), and the required user confirmation. With an output schema present, return values need not be explained. Nothing an agent needs to invoke this 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 schema already documents each field (id, nome, codigo, desativar, valor_hora, fazenda). The description reinforces the 'id excludes/includes/alters/desactivates' semantics and the fazenda default, adding moderate value but largely mirroring the schema. Baseline 3 is appropriate.
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?
Names the specific resource (funcionários da fazenda) and the concrete roles it covers, plus the downstream flows it feeds (execução de OS, abastecimento). Clearly distinguished from the many cadastrar_* siblings by being the only one dealing with people.
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?
Gives strong operational guidance: batch up to 50, send everything the user dictated at once, show the list and confirm before calling. Implies when to use 'id' vs no 'id'. However it does not explicitly name the sibling to use for lookup (consultar_cadastros is referenced only inside the schema description of 'id', not in the tool description).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_local_estoqueCadastro de local de estoqueAInspect
Locais de estoque da fazenda (depósito, galpão, barracão). Silo e posto de abastecimento são cadastrados pelo portal.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-destructive, non-idempotent. The description goes well beyond: all-or-nothing semantics ('se um item for recusado, NENHUM é gravado'), the response naming the offending item and reason, duplicate-name rejection returning the existing id, that deactivation hides from lists but preserves history, and that writes land in upCampo. That is the behavioral detail the annotations cannot carry.
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?
Four dense sentences, front-loaded with the resource scope and then the batch/write semantics. Every sentence earns its place, though the stray blank line and the layering of batch rules, duplicate handling and confirmation flow make it slightly heavier than needed.
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 exists, so return-shape explanation is unnecessary, and the description still notes the response identifies the rejected item and reason. Given the batch, confirm-before-write and deactivation semantics, nothing an agent needs to invoke this 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 `id`, `codigo`, `desativar`, `descricao` and `fazenda` are already documented per-field. The description consolidates the id/no-id/desativar interaction model but adds little syntax beyond the schema; the duplicate-name rule it contributes is behavioral rather than parametric. Baseline 3 is appropriate.
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?
States a specific verb and resource (cadastrar local de estoque) and names the concrete scope: depósito, galpão, barracão. It also rules out silo and posto de abastecimento, which are handled by the portal, so an agent can distinguish this from siblings like cadastrar_talhao or consultar_estoque without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to batch everything the user dictated in one call (up to 50), and states the three operating modes: no `id` inserts, `id` updates only the given fields, `id`+`desativar` deactivates. It adds a workflow instruction (show the list and confirm before calling) and an exclusion (silo/posto via portal), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_plantioPlantio da safraAInspect
O que está plantado em cada talhão na safra: sem isso não há ordem de serviço, colheita nem produtividade. Um por talhão e safra, com UMA variedade (talhão com várias variedades é pelo portal). Para trocar safra, talhão ou cultura, desative e inclua de novo.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-read-only, non-idempotent, non-destructive; the description adds the real behavioral contract: batch of up to 50 items, upsert-by-id semantics (no id = insert, id = partial update, id + desativar = soft delete keeping history), all-or-nothing transactionality, duplicate rejection with the existing id, and the target system (upCampo). This is exactly the beyond-annotations disclosure the dimension asks for.
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?
Front-loaded with purpose and the cardinality rule, then batch semantics, then the write/confirm instruction; every paragraph carries distinct operational information. It is on the long side for a single tool, but there is little filler and no 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?
An output schema exists, so return values need not be restated, and the description still covers the one response detail that matters operationally (which item failed and why, on an all-or-nothing write). For a batch mutation with complex conditional semantics, 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 coverage is 100%, so the baseline is 3, but the description adds aggregate-level meaning the per-field descriptions do not carry: the list is a single transactional batch, items are dispatched all at once, and the id/desativar combination drives insert-vs-update-vs-deactivate. That interplay is documented in prose rather than only in field descriptions.
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?
States a specific verb and resource in context: it records what is planted per talhão per safra, and ties the record to downstream artifacts (ordem de serviço, colheita, produtividade). That framing distinguishes it from cadastrar_safra, cadastrar_talhao and cadastrar_cultura without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: one variety per talhão/safra, multiple varieties must go through the portal, and changing safra/talhão/cultura requires deactivating and re-including. It also tells the agent to confirm with the user before calling, which is an actionable usage condition rather than a generic disclaimer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_pluviometroCadastro de pluviômetroAInspect
Pluviômetros da fazenda e os talhões que cada um cobre. Talhão em dois pluviômetros é aceito, mas volta um AVISO: ao lançar chuva nele, será preciso escolher o pluviômetro.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=false, idempotent=false), the description discloses transactional atomicity ('é tudo ou nada'), duplicate-name rejection with the existing id returned, the AVISO about a talhão shared by two pluviômetros, and that writes go to upCampo. This is exactly the extra behavioral context annotations can't convey.
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?
Front-loaded with the resource and then the mode rules; each paragraph is information-dense. Slightly verbose with some restatement of id semantics already in the schema, but nothing is wasted enough to drop a tier.
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 an output schema present, return values need not be explained, and the description still covers the failure-response content ('a resposta diz qual item e por quê'). Combined with the write-target and confirmation guidance, an agent has everything needed 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 coverage is 100%, so baseline is 3; the description nevertheless adds meaning by restating id semantics (insert vs. alter vs. deactivate) and reinforcing the all-or-nothing and duplicate behaviors tied to those params. It stops short of adding syntax/format 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?
Opens with a specific verb+resource ('cadastrar pluviômetro') and immediately clarifies scope: rain gauges and the plots (talhões) each one covers. The reader can distinguish it from sibling cadastrar_* tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes all three modes: no `id` inserts, `id` alters only given fields, `id`+`desativar` deactivates. It also states batching (up to 50), the all-or-nothing rule, duplicate-name handling, and the mandate to show the list and confirm before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_produtoCadastro de produtoAInspect
Produtos da empresa (defensivo, adubo, semente, combustível, peça). Use a base da upCampo (consultar_base_upcampo visão produtos) para sugerir unidade, classe e grafia, mas cadastre com o que o cliente confirmar: o produto é dele.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write profile (readOnly=false, idempotent=false, destructive=false), and the description adds substantial context beyond that: batch size up to 50, all-or-nothing transaction semantics with the failing item reported, duplicate-name rejection returning the existing id, the target system (upCampo), and a required confirmation step before writing. This is unusually complete behavioral disclosure.
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?
Multi-paragraph but front-loaded with the resource definition, then the batch/mutation rules, then the confirmation requirement. Every paragraph carries a distinct instruction (routing, batch semantics, write target, confirmation). Slightly long, but nothing reads as 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 write tool with an output schema present, return-value detail is unnecessary, and the description still notes that the response identifies which item failed and why. Combined with the annotation profile and full schema coverage, an agent has everything needed to call it correctly, including the pre-write confirmation step.
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 already 100%, so the schema baseline is 3. The description adds operational semantics the schema only implies: the id/no-id/desativar tri-state behavior and the fact that `codigo` is auto-generated if omitted. It does not add extra detail on the typed boolean flags (semente, combustivel) or ncm, so it stays just above baseline.
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?
States a specific verb (cadastrar) and resource (produto), and immediately scopes the resource by naming the product categories (defensivo, adubo, semente, combustível, peça). This distinguishes it cleanly from siblings like cadastrar_classe_produto and cadastrar_variedade without needing their schemas.
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?
Explicit routing: use consultar_base_upcampo (visão produtos) to suggest unidade/classe/grafia, but register whatever the client confirms. It also states when to omit `fazenda` (default to current farm, only supply if another is named) and the when-to-use rule for `id`/`desativar`. Alternatives and exclusions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_safraCadastro de safraAInspect
Safras da empresa (valem para todas as fazendas dela). Início e fim são obrigatórios: é por eles que a UPí sabe qual é a safra corrente.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the transactional contract ('É tudo ou nada'), that the response identifies the offending item and reason, that duplicate names are refused with the existing id, and that deactivation removes the record from lists while keeping history. These are real behavioral traits (atomicity, error shape, conflict handling, write target upCampo) not derivable from readOnlyHint=false / destructiveHint=false / idempotentHint=false.
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?
Front-loaded with the highest-value facts (required fields, write target) and organized into short paragraphs by concern (scope, batch modes, conflict handling, confirmation). It is denser than strictly necessary and mixes operational guidance with usage rules, but every sentence carries information.
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 an output schema present, return values need not be re-explained; the description instead covers everything an agent must decide before calling (mode selection, batching, confirmation, conflict handling). Nothing material is missing for a 2-parameter write tool.
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 coverage is 100% so the per-parameter descriptions already do the heavy lifting (baseline 3). The description adds cross-field semantics not obvious from the schema alone: the início/fim pair defining the current safra, the id-vs-no-id rule governing include/alter, and id+desativar combination. No syntax or format beyond what the schema states is added.
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 (gravar/cadastrar) and resource (safras), and usefully scopes them as company-wide ('valem para todas as fazendas dela'), which distinguishes them from farm-scoped siblings like cadastrar_talhao or cadastrar_plantio. It never names a sibling explicitly, so the differentiation is inferred from scope rather than stated, keeping it from a 5.
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 explicit when-to-use rules for every mode: no id = include, id = alter only the informed fields, id + desativar = deactivate. It also specifies the batch workflow ('mande tudo o que o usuário ditou de uma vez'), the required confirmation step, and how to react to a duplicate-name rejection (ask whether to alter). Little is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_subtipoCadastro de subtipoAInspect
Subtipos do tipo de atividade (a "Identificação Resumida (Subtipo)" da ordem de serviço): a subdivisão que o cliente usa — "1ª aplicação de fungicida", "Dessecação pré-plantio"… — e em quais tipos de atividade cada um vale. Na OS, um tipo de atividade com subtipo vinculado mostra SÓ os seus; sem nenhum, mostra todos. Vincular o primeiro subtipo a um tipo restringe a lista dele (vem um AVISO). Subtipo já usado em OS não pode ser renomeado: a OS guarda o nome.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: all-or-nothing atomicity with the offending item reported, duplicate-name rejection returning the existing id, the rule that an OS-used subtype cannot be renamed, the AVISO when the first subtype restricts an activity type's list, and the destination store (upCampo). The soft-delete semantics ('sai das listas, o histórico fica') align with destructiveHint=false rather than contradicting 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?
Long but dense and front-loaded, leading with the domain concept before the operational rules and the confirm-before-calling instruction. Each paragraph carries a distinct rule, though the prose is heavier than strictly necessary for a two-parameter tool.
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 an output schema present, 100% schema description coverage, and full annotations, the description fills the remaining gap — atomicity, duplication handling, rename restriction and write target — so 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 coverage is 100% so the baseline is 3, but the description adds real meaning: the 50-item limit, the id-vs-no-id contract for update/insert/deactivate, and the all-or-nothing consequence on the itens array. It does not clarify tipos_atividade being the COMPLETE list beyond what the schema already says.
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?
States a specific verb and resource (cadastrar_subtipo) and spends its opening defining the domain object (subdivision of activity type shown on the OS), including how it behaves when linked. An agent can distinguish this from cadastrar_tipo_atividade without reading either schema.
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?
Explicitly explains the three modes — no id inserts, id updates only given fields, id + desativar deactivates — and instructs batching all user-dictated items into one call, plus a confirmation workflow. It does not name an alternative sibling for the insert case, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_talhaoCadastro de talhãoAInspect
Talhões da fazenda, com a área em hectares, o setor e o MAPA DO TALHÃO (o contorno, em coordenadas). O mapa pode vir junto na inclusão ou depois, numa alteração — e troca o mapa anterior. Com mapa, a área pode ficar de fora: vale a do mapa. Se o usuário mandar um KML ou GeoJSON, leia os pontos do polígono de cada talhão e mande um item por talhão; nesses formatos cada ponto vem como longitude,latitude — inverta para [latitude, longitude].
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: map submission replaces the previous map, area may be omitted when a map is supplied (map area wins), the write is all-or-nothing with per-item rejection reporting, duplicate names are refused with the existing id, and the tool writes to 'upCampo'. Deactivation keeping history is consistent with destructiveHint=false.
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?
Front-loads the resource and key data, then layers list semantics and map-handling rules. The length is justified by the tool's complexity, though the map/format paragraph could be tightened slightly.
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?
Covers everything an agent needs for a batch mutation tool: input format conversions, area/map precedence, id-based create/update/deactivate branching, atomicity, duplicate-name handling, and a confirmation step. An output schema exists, so return-value explanation is correctly omitted.
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 coverage is 100%, so the schema carries the baseline, but the description adds genuinely interpretive meaning: the area/map precedence rule and the longitude,latitude → [latitude, longitude] inversion for KML/GeoJSON input. That is more than restating schema text.
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 definition names the resource (talhões) with its constituent data (área, setor, mapa) and then pins down the exact operations: 'Sem `id` inclui; com `id` altera só os campos informados; com `id` e `desativar` desativa.' An agent can tell this is the plot-registration tool and not a query tool like consultar_cadastros from the text alone.
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?
Gives strong operative guidance: send all dictated items in one list, handle KML/GeoJSON by emitting one item per polygon, and show the list to the user before calling. It does not name a sibling alternative or state 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.
cadastrar_tipo_atividadeCadastro de tipo de atividadeAInspect
Tipos de atividade da fazenda (plantio, colheita, aplicação, adubação…) — sem eles não se lança ordem de serviço. Cada um nasce de um MODELO da base da upCampo (consultar_base_upcampo visão tipos_atividade), que traz o comportamento pronto; o cliente só dá o nome dele. Mande todos os que o cliente usa numa chamada só.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic write profile (readOnly=false, destructive=false, idempotent=false). The description adds high-value behavior beyond that: all-or-nothing atomicity ('se um item for recusado, NENHUM é gravado'), duplicate-name rejection with the existing id returned, the requirement to confirm with the user before writing, and that it writes to upCampo.
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?
Front-loaded with the domain concept before the operational mechanics, and the write/confirm warning is placed last as a call-to-action. Slightly redundant in repeating the 'send everything in one call' instruction twice, but 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 2-parameter batch-write tool with a full output schema, the description covers prerequisites, batch semantics, failure behavior, and confirmation flow. Return-value details are correctly left to the output schema.
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 coverage is 100%, so the baseline is 3. The description adds cross-parameter mode semantics the schema does not spell out: no id = include, id = partial update, id+desativar = deactivate, plus the 50-item batch limit and the model-derived default name. This is genuinely additive but overlaps the per-field schema text.
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?
States a specific verb+resource (register activity types) and defines what an activity type is with concrete examples (plantio, colheita, aplicação, adubação). It distinguishes itself from the many cadastrar_* siblings by explaining the model-driven creation flow that only this tool has.
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?
Gives explicit when-to-use context: activity types are required before a service order can be launched, and each must be derived from a model fetched via consultar_base_upcampo (visão tipos_atividade). It also spells out the include vs. alter vs. deactivate conditions and instructs sending everything in one call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_tipo_equipamentoCadastro de tipo de equipamentoAInspect
Tipos de equipamento da empresa (Trator, Colhedora, Pulverizador, Caminhão…). A base da upCampo (consultar_base_upcampo visão tipos_equipamento) sugere os nomes. Com abreviação, o código dos equipamentos do tipo passa a ser abreviação + número (ex.: TR0001).
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell us this is a non-read-only, non-idempotent write; the description adds substantial context beyond that: the all-or-nothing transaction (one rejected item blocks the whole batch), the duplicate-name rejection that returns the existing id, the deactivation semantics (leaves lists, history retained), the 50-item cap, and the code-generation rule tied to abreviação. This is exactly the behavioral disclosure annotations cannot carry.
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?
Front-loaded with what the tool is, then modes, then transaction/duplicate behavior, then the confirm-before-write instruction. Multi-paragraph but each block carries distinct information; no filler sentences.
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 exists, so return values need no explanation. The description still covers selection modes, prerequisites (helpers for ids/names), failure semantics, confirmation flow, and the default-vs-explicit fazenda choice — nothing an agent needs to call 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 coverage is already 100%, so the baseline is 3. The description adds genuine meaning beyond the schema: it explains how abreviacao drives the generated equipment code (abreviação + número, e.g. TR0001), reiterates the batch semantics of itens, and justifies the fazenda default behavior. Not fully additive on every field, so a 4.
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?
States a specific verb (grava/cadastra) and resource (tipo de equipamento, e.g. Trator, Colhedora), and explicitly distinguishes itself from siblings by naming consultar_base_upcampo for suggested names and consultar_cadastros for ids. An agent can identify this as the write tool for equipment-type master data without opening any schema.
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?
Gives clear mode-selection rules (no id = insert, id = update only informed fields, id + desativar = deactivate) and names the helper tools for related lookups. It also mandates confirmation before calling. It stops short of explicitly contrasting against the sibling cadastrar_equipamento, so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadastrar_variedadeCadastro de variedadeAInspect
Variedades (cultivares) da fazenda, cada uma de uma cultura já cadastrada na empresa.
Recebe uma LISTA (até 50 por chamada): mande tudo o que o usuário ditou de uma vez. Sem id inclui; com id altera só os campos informados; com id e desativar desativa. É tudo ou nada: se um item for recusado, NENHUM é gravado, e a resposta diz qual item e por quê. Nome repetido é recusado com o id do que já existe — pergunte se é para alterar.
GRAVA no upCampo. Mostre ao usuário a lista do que será gravado e confirme antes de chamar.
| Name | Required | Description | Default |
|---|---|---|---|
| itens | Yes | Os itens a gravar. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| avisos | No | |
| fazenda | Yes | |
| gravado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (not read-only, not idempotent, non-destructive). The description adds hard behavioral facts the annotations cannot: all-or-nothing atomicity with no partial writes, the response identifying which item failed and why, duplicate-name rejection including the existing id, deactivation preserving history, and an explicit instruction to confirm with the user before calling.
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?
Front-loaded with the resource definition, then batching rules, then mode semantics, then the atomicity warning, ending with the write/confirm directive. Four short paragraphs, each earning its place. Slightly dense but 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?
An output schema exists, so return-value detail is unnecessary, and the description still covers the failure-reporting shape. For a 2-parameter batch-write tool with rich annotations and a nested-item schema, an agent has everything needed: modes, limits, atomicity, duplicate handling, and confirmation policy.
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?
With 100% schema coverage, the baseline is 3, but the description adds real semantics: the id/no-id/desativar tri-state is spelled out narratively, and it clarifies the 50-item cap and list-batching intent. It reinforces rather than merely repeats the schema, though it does not add new meaning for codigo, ciclo_dias, or tecnologia.
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 resource (variedades/cultivares) and the operation (registration into upCampo), with the constraint that each belongs to an already-registered cultura. It is clearly distinguishable from cadastrar_cultura and cadastrar_produto via the explicit 'cada uma de uma cultura já cadastrada' framing. The opening sentence reads more as a definition than a verb+action, but the intent is unmistakable.
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 concrete operating instructions: send the whole user-dictated list at once, up to 50 per call, and a clear mode table (no id = include; id = update; id + desativar = deactivate). It also tells the agent to ask the user on a duplicate-name conflict. It stops short of naming alternative tools for adjacent tasks (e.g., consultar_cadastros for listing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_base_upcampoBase da upCampoARead-onlyInspect
Consulta a base de ajuda da upCampo, para cadastrar: culturas com estágios e modelos de tipo de atividade (que se trazem para a fazenda pelo id), e classes, produtos, tipos de equipamento e unidades (que só servem para sugerir — o cadastro do cliente é dele).
culturas: Culturas da base, com quantos estágios fenológicos trazem. ID_CULTURA_BASE vai em cadastrar_cultura.
tipos_atividade: Modelos de tipo de atividade: ID_MODELO vai em cadastrar_tipo_atividade. NATUREZA diz o que o tipo faz no sistema (plantio, colheita, aplicação…). Escolha o modelo pela natureza e pelo nome; o cliente dá o nome dele.
classes: Classes de produto da base, para sugerir nome e tipo.
produtos: Produtos da base, para sugerir unidade, classe e grafia. Exige busca: são mais de mil. Não copie: cadastre com o que o cliente confirmar.
tipos_equipamento: Tipos de equipamento da base (Trator, Colhedora, Pulverizador…), para sugerir o nome.
unidades: Unidades aceitas no cadastro de produto: use o CODIGO.
| Name | Required | Description | Default |
|---|---|---|---|
| busca | No | Trecho do nome, sem precisar de acento. | |
| visao | Yes | O que consultar. | |
| limite | No | Padrão 50. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| visao | Yes | |
| linhas | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: which records are importable by ID versus advisory-only, the explicit warning not to copy product data ('Não copie: cadastre com o que o cliente confirmar'), and the scale constraint on produtos. Minor gap: no mention of result limits/pagination beyond the schema's limite.
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?
Front-loads the one-sentence purpose and then uses a scannable bulleted list keyed to the enum values, so every bullet maps to a branch the agent must choose between. It is somewhat long, but the length is earned by six views that need differentiation.
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 exists, so return-value explanation is unnecessary. The description covers all six view branches, the suggestion-vs-import distinction, and ID hand-off; combined with the rich schema descriptions (including the fazenda default), an agent has everything needed to call 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 coverage is 100%, so the baseline is 3, but the description goes further by expanding each 'visao' enum value into an explanation of its content and downstream use, which the schema only labels. It also reinforces how the returned codes (ID_CULTURA_BASE, ID_MODELO, CODIGO) should be consumed.
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?
States a specific verb and resource (query the upCampo reference/help base) and then decomposes the six 'visao' values, explaining exactly what each returns (phenological stages, activity-type models with NATUREZA, product classes, products, equipment types, units). It explicitly links each result to the sibling registration tool it feeds (ID_CULTURA_BASE -> cadastrar_cultura, ID_MODELO -> cadastrar_tipo_atividade), so an agent can distinguish it from the cadastrar_* and consultar_* siblings without opening any schema.
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?
Gives per-view usage context: 'produtos' requires a search because there are 1000+, models are chosen by nature and name, and results are described as either carried into the farm (culturas, tipos_atividade) or merely suggestive (classes, produtos, tipos_equipamento, unidades). It does not explicitly say when to prefer this over lookalikes such as consultar_cadastros or buscar_ajuda, so routing to alternatives is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cadastrosCadastrosARead-onlyInspect
Os cadastros da fazenda — safras, culturas, variedades, talhões, plantio, tipos de atividade, pluviômetros, locais de estoque, classes, produtos e fornecedores —, com os ids que as tools cadastrar_* pedem para alterar e para ligar um cadastro ao outro. A visão andamento mostra o que a fazenda já tem: é por ela que se começa uma implantação.
Visões disponíveis (parâmetro "visao"):
andamento: Uma linha com a contagem de cada cadastro da fazenda. Ordem da implantação: safra → cultura → variedade → talhão (e o mapa do talhão) → plantio → tipo de atividade → subtipo → pluviômetro → local de estoque → classe → produto → fornecedor → tipo de equipamento → equipamento → funcionário → estoque inicial (lancar_entrada_nota, Entrada avulsa). O próximo passo é o primeiro que estiver zerado. Filtros: nenhum.
safras: Safras da empresa, com período e quantos talhões plantados cada uma tem. Filtros: nome.
culturas: Culturas da empresa. DA_BASE_UPCAMPO: veio da base da upCampo, com estágios. Filtros: nome.
variedades: Variedades da fazenda, com a cultura de cada uma. Filtros: nome, cultura.
talhoes: Talhões da fazenda, com área (ha), setor, quantos plantios em andamento e se já têm MAPA DO TALHÃO (TEM_MAPA; CENTRO_LATITUDE/CENTRO_LONGITUDE é o ponto do talhão). Filtros: nome, setor.
plantios: O que está plantado em cada talhão, por safra: cultura, variedade, área e data. VARIAS_VARIEDADES: o talhão tem mais de uma variedade (mantido pelo portal). Filtros: safra, nome, cultura, aceita período.
tipos_atividade: Tipos de atividade da fazenda, com a categoria, a natureza (plantio, colheita, aplicação…) e o que a execução da OS exige. Filtros: nome, natureza.
pluviometros: Pluviômetros da fazenda, um por linha, com os talhões que cada um cobre. Filtros: nome.
locais: Locais de estoque da fazenda, com quantos produtos têm saldo em cada um. Filtros: nome.
classes: Classes de produto da empresa, com quantos produtos cada uma tem. Filtros: nome.
produtos: Produtos da empresa, com unidade e classe. Filtros: nome, classe. Lista no máximo 100 linhas por chamada.
entidades: Fornecedores, clientes e demais entidades da empresa. DOCUMENTO é o CPF ou CNPJ como está gravado (os antigos podem ter máscara). Filtros: nome, documento, fornecedor. Lista no máximo 100 linhas por chamada.
tipos_equipamento: Tipos de equipamento da empresa, com quantos equipamentos a fazenda tem de cada. Filtros: nome.
equipamentos: Máquinas, veículos e implementos da fazenda, com tipo, medidor, última leitura e placa. IMPLEMENTO distingue implemento de máquina. Filtros: nome, tipo, placa. Lista no máximo 100 linhas por chamada.
subtipos: Subtipos (Identificação Resumida) da fazenda, com a etapa e os tipos de atividade em que cada um vale. QTDE_TIPOS_ATIVIDADE 0: não está vinculado a nenhum tipo. Filtros: nome, tipo_atividade.
funcionarios: Funcionários da fazenda, com função e contato. Filtros: nome, funcao.
Quando "visao" não é informada, usa "andamento". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| nome | No | Nome da safra. Vale nas visões: safras, culturas, variedades, talhoes, plantios, tipos_atividade, pluviometros, locais, classes, produtos, entidades, tipos_equipamento, equipamentos, subtipos, funcionarios. | |
| tipo | No | Tipo do equipamento. Vale nas visões: equipamentos. | |
| placa | No | Placa, ou parte dela. Vale nas visões: equipamentos. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra. Vale nas visões: plantios. | |
| setor | No | Nome do setor. Vale nas visões: talhoes. | |
| visao | No | Qual recorte consultar. Padrão: andamento. | |
| classe | No | Nome da classe. Vale nas visões: produtos. | |
| funcao | No | Função. Vale nas visões: funcionarios. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| cultura | No | Nome da cultura. Vale nas visões: variedades, plantios. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| natureza | No | Plantio, Colheita, Aplicação, Adubação, Preparo de solo… Vale nas visões: tipos_atividade. | |
| documento | No | CPF ou CNPJ, ou parte dele. Vale nas visões: entidades. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| fornecedor | No | Só fornecedores. Vale nas visões: entidades. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| tipo_atividade | No | Tipo de atividade em que o subtipo vale. Vale nas visões: subtipos. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses filter-matching behavior (substring match, case- and accent-insensitive, except '(valor exato)' fields like código/placa/número), that the response carries total_disponivel, that fazenda defaults to the user's current farm and one farm is queried per call, and explicit pagination advice ('Chame uma vez só… nunca repita a consulta mudando só o limite'). This is rich behavioral context that annotations alone cannot convey.
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?
It is long, but the length is largely earned by 16 distinct views; it is front-loaded with the resource inventory and the starting-view guidance, then bulleted per view. Some redundancy exists because the per-view 'Filtros:' lists duplicate what the schema already states for each parameter.
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 an output schema present, return values need not be re-explained, yet the description still flags total_disponivel and limit behavior. For a 0-required, 18-param, 16-view tool it covers view selection, filtering, defaults, and pagination thoroughly — an agent has everything needed to call 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 coverage is 100%, so the schema already documents each parameter's applicable views; baseline would be 3. The description adds meaning by restating which filters apply per view and, more importantly, by explaining the text-filter matching semantics and the exato-marker exception that the schema does not encode.
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+resource and enumerates exactly which registries are covered (safras, culturas, variedades, talhões, plantio, produtos, fornecedores, etc.), plus its relationship to the cadastrar_* tools that consume the returned ids. An agent can immediately tell this is the read/registry-query tool and what data it exposes, rather than a create or operational tool.
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 strong internal routing guidance: default visao=andamento, that andamento is where an implementation starts, the recommended ordering of the rollout, and per-view filters. It does not explicitly state when NOT to use it or contrast against the sibling consultar_* tools (estoque, produção, frota), so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_chuvaChuva e climaARead-onlyInspect
Chuva registrada nos pluviômetros, por coleta, por talhão ou consolidada na safra, e o cadastro dos pluviômetros com os talhões que cada um cobre.
Visões disponíveis (parâmetro "visao"):
coletas: Cada coleta de pluviômetro, uma linha por registro. Filtros: pluviometro, talhao, setor, aceita período.
resumo_talhao: Chuva por talhão e por dia, já consolidando os pluviômetros que cobrem o talhão. Filtros: talhao, setor, aceita período.
resumo_safra: Chuva acumulada na safra, por talhão: total, média e máximo diário. Filtros: safra, talhao, setor.
pluviometros: Cadastro dos pluviômetros, UM POR LINHA: total_disponivel é o número de pluviômetros. TALHOES lista os talhões cobertos e QTDE_TALHOES os conta; sem talhão (QTDE_TALHOES 0), o pluviômetro é geral da fazenda. O filtro talhao acha os pluviômetros que cobrem aquele talhão. Use ID_PLUVIOMETRO para lancar_chuva. Filtros: pluviometro, talhao, setor.
pluviometros_talhoes: Pluviômetro × talhão: UMA LINHA POR TALHÃO COBERTO, com ID_QUADRA — não serve para contar pluviômetros (use a visão pluviometros). Para saber que pluviômetro cobre um talhão e se o talhão está em mais de um (aí pergunte em qual lançar). ID_QUADRA vazio: pluviômetro geral da fazenda. Filtros: pluviometro, talhao, setor.
Quando "visao" não é informada, usa "resumo_talhao". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: resumo_safra. | |
| setor | No | Nome do setor. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros, pluviometros_talhoes. | |
| visao | No | Qual recorte consultar. Padrão: resumo_talhao. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| talhao | No | Nome do talhão. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros, pluviometros_talhoes. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| pluviometro | No | Nome do pluviômetro. Vale nas visões: coletas, pluviometros, pluviometros_talhoes. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carries most of the behavioral load and does so well: it discloses substring/case/accent-insensitive matching except for '(valor exato)' fields, that responses include total_disponivel, and the pular+limite pagination pattern. This is context an agent needs and that neither annotations nor schema provide.
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 overview and defaults are front-loaded, then a clean per-visao breakdown. It is longer than strictly necessary, with some repetition of filter lists that also appear in the schema, but every section is scannable and 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 10-parameter tool with five distinct visões, the description covers each mode, its filters, the default, pagination, and filter-matching semantics. An output schema exists, so return-value explanation is not required, and nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the schema documents formats and per-visao applicability. The description still adds value by consolidating which filters apply to which visao and clarifying date formats and the 'fazenda' default behavior. Since the schema already repeats much of this, a 4 rather than 5.
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 opening sentence gives a specific verb-and-resource statement: rain registered by pluviometer, per collection, per plot, or consolidated in the harvest, plus the pluviometer registry. It also implicitly distinguishes itself from the write sibling lancar_chuva by framing the tool as a query. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates all five 'visao' values with their applicable filters and explicitly routes the agent: use 'pluviometros' to count, use 'pluviometros_talhoes' for the coverage mapping, and the default when 'visao' is omitted. It also adds a strong operational rule ('call once with the limit you will use; never repeat changing only the limit') and points to lancar_chuva for the ID to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_comprasComprasARead-onlyInspect
Requisições, cotações, coletas de preço e pedidos de compra. Somente consulta: não aprova, não cria nem altera pedido. Cadeia: ORDEM DE MANUTENÇÃO > REQUISIÇÃO (a demanda) > COTAÇÃO (agrupa itens para pesquisar preço) > COLETA DE PREÇO (a resposta de um fornecedor para um item) > PEDIDO (a compra fechada). Um item pode ir da requisição direto ao pedido, sem cotação. Atraso: nunca compare datas. SITUACAO_ENTREGA do pedido já vem pronta ("Recebido", "Atrasado", "Pendente") e DIAS_ATRASO já vem calculado. "Pedidos atrasados": situacao_entrega ["Atrasado"]; "o que falta chegar": ["Atrasado", "Pendente"]. Aprovação é outra coisa e não entra na conta de atraso. Departamento: é o campo "Departamento" das telas de pedido e de requisição. "Pedidos do departamento X": visão pedidos, filtro departamento. Nos pedidos a coluna é DEPARTAMENTO; nas requisições o mesmo dado sai na coluna GRUPO_MANUTENCAO. Quantidades: QUANTIDADE_PENDENTE (requisição) e QUANTIDADE_RESTANTE (pedido) já vêm prontas — nunca subtraia colunas. QUANTIDADE_NOTA_FISCAL é a mesma coisa que a recebida: não some as duas. Item de requisição do tipo "Saída de estoque" não gera compra, sai direto do estoque. Não conte esses itens quando a pergunta for sobre compra, cotação ou pedido. Nome de fornecedor ou produto: filtre por trecho; se vierem nomes diferentes, pergunte qual e siga pelo identificador (id_fornecedor, id_pedido, id_cotacao, id_requisicao). Volume: para a fazenda inteira use "agrupar_por" em vez de listar requisição ou pedido um a um. "Quantas coletas teve o pedido" se responde com QTDE_COLETAS_PRECO da visão pedidos.
Visões disponíveis (parâmetro "visao"):
pedidos: Uma linha por pedido de compra: fornecedor, departamento, valores, aprovação, recebimento e atraso já resolvidos. Período pela data do pedido. Filtros: situacao_entrega (lista de valores exatos), status (lista de valores exatos), status_aprovacao (lista de valores exatos), departamento, fornecedor, id_fornecedor (valor exato), setor, centro_custo, safra, codigo_pedido, id_pedido (valor exato), codigo_cotacao, id_cotacao (valor exato), aceita período. Agrupa por: departamento, fornecedor, situacao_entrega, status, setor, centro_custo, safra.
itens_pedido: Uma linha por item de pedido: quantidade pedida, recebida e restante, valor e se a compra foi feita pelo menor preço coletado (COMPROU_MENOR_PRECO). Não aceita período — filtre pelo pedido. Filtros: id_pedido (valor exato), codigo_pedido, status (lista de valores exatos), fornecedor, produto, id_cotacao (valor exato), comprou_menor_preco. Agrupa por: fornecedor, produto, status.
requisicoes: Uma linha por item de requisição: quem pediu, para qual ordem de manutenção e equipamento, e o que ainda falta atender (QUANTIDADE_PENDENTE). "O que a ordem X ainda espera": id_ordem_manutencao e pendente true. Período pela data da requisição. Filtros: status (lista de valores exatos), situacao_item (lista de valores exatos), tipo_item (lista de valores exatos), prioridade (valor exato), pendente, departamento, produto, equipamento, solicitante, centro_custo, codigo_requisicao, id_requisicao (valor exato), id_ordem_manutencao (valor exato), aceita período. Agrupa por: departamento, status, situacao_item, tipo_item, equipamento, produto, solicitante, centro_custo.
cotacoes: Uma linha por item de cotação, com o resumo das coletas: quantas houve, quantas foram respondidas, menor, maior e médio preço e o fornecedor mais barato. Período pela data da cotação. Filtros: status (lista de valores exatos), produto, codigo_cotacao, id_cotacao (valor exato), aceita período.
coletas: Uma linha por coleta de preço (item da cotação x fornecedor): preço, desconto, prazo, se respondeu, em quantos dias e se foi a escolhida. Cresce rápido: para ver os preços de uma cotação, filtre id_cotacao; para comparar fornecedores, use agrupar_por fornecedor. Período pela data de envio ao fornecedor. Filtros: status (lista de valores exatos), fornecedor, id_fornecedor (valor exato), produto, codigo_cotacao, id_cotacao (valor exato), respondida, escolhida, aceita período. Agrupa por: fornecedor, produto, status.
trilha: Rastreabilidade de UM documento: cada caminho do item, da ordem de manutenção e da requisição até a cotação e o pedido, com o valor rateado. Exige id_pedido, id_cotacao, id_requisicao ou id_ordem_manutencao: sem o documento, liste antes pedidos, cotações ou requisições e pergunte qual. Filtros: id_pedido (valor exato), id_cotacao (valor exato), id_requisicao (valor exato), id_ordem_manutencao (valor exato).
Quando "visao" não é informada, usa "pedidos". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta. Para totais e contagens use "agrupar_por"; a listagem é limitada e serve para ver itens. Com "agrupar_por", a resposta vem somada pelo banco: uma linha por grupo, com QTDE_LINHAS, as somas e os maiores e menores valores (MAIOR_*, MENOR_*). Use isso em vez de somar linhas por conta própria.
| Name | Required | Description | Default |
|---|---|---|---|
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: pedidos. | |
| setor | No | Nome do setor. Vale nas visões: pedidos. | |
| visao | No | Qual recorte consultar. Padrão: pedidos. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| status | No | Um ou mais valores exatos do status do documento da visão. Pedido: "Em digitação", "Aberto", "Aguardando aprovação", "Aprovado", "Rejeitado", "Finalizado", "Cancelado". Requisição: "Aberto", "Finalizado". Cotação: "Aberto", "Em processamento", "Finalizado". Coleta: "Aguardando preenchimento", "Preenchido pelo comprador", "Preenchido pelo fornecedor aguardando envio", "Enviado pelo fornecedor". Vale nas visões: pedidos, itens_pedido, requisicoes, cotacoes, coletas. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| produto | No | Nome do produto. Vale nas visões: itens_pedido, requisicoes, cotacoes, coletas. | |
| pendente | No | true: só itens com quantidade ainda por atender. false: só os já atendidos. Vale nas visões: requisicoes. | |
| escolhida | No | true: a coleta escolhida para a compra. Vale nas visões: coletas. | |
| id_pedido | No | Identificador do pedido, tirado de uma consulta anterior. Vale nas visões: pedidos, itens_pedido, trilha. | |
| tipo_item | No | Um ou mais valores exatos: "Solicitar para comprar", "Solicitar para comprar p/ Estoque", "Saída de estoque". Para falar de compra, deixe "Saída de estoque" de fora. Vale nas visões: requisicoes. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| fornecedor | No | Nome do fornecedor (casa por trecho). Vale nas visões: pedidos, itens_pedido, coletas. | |
| id_cotacao | No | Identificador da cotação, tirado de uma consulta anterior. Vale nas visões: pedidos, itens_pedido, cotacoes, coletas, trilha. | |
| prioridade | No | "Baixa", "Média" ou "Alta". Vale nas visões: requisicoes. | |
| respondida | No | true: o fornecedor respondeu. false: ainda não respondeu. Vale nas visões: coletas. | |
| agrupar_por | No | Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela. | |
| equipamento | No | Equipamento da ordem de manutenção. Vale nas visões: requisicoes. | |
| solicitante | No | Quem fez a requisição. Vale nas visões: requisicoes. | |
| centro_custo | No | Centro de custo. Vale nas visões: pedidos, requisicoes. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| departamento | No | Departamento responsável pela compra (casa por trecho). Vale nas visões: pedidos, requisicoes. | |
| codigo_pedido | No | Número do pedido. Casa por trecho, porque o código vem com zeros à esquerda ("0006483"). Vale nas visões: pedidos, itens_pedido. | |
| id_fornecedor | No | Identificador do fornecedor, tirado de uma consulta anterior. Vale nas visões: pedidos, coletas. | |
| id_requisicao | No | Identificador da requisição, tirado de uma consulta anterior. Vale nas visões: requisicoes, trilha. | |
| situacao_item | No | Um ou mais valores exatos: "Aguardando cotação", "Em cotação", "Pedido emitido", "Atendido", "Baixa de estoque". Vale nas visões: requisicoes. | |
| codigo_cotacao | No | Número da cotação (casa por trecho). Vale nas visões: pedidos, cotacoes, coletas. | |
| situacao_entrega | No | Um ou mais valores exatos: "Recebido", "Atrasado", "Pendente". Vale nas visões: pedidos. | |
| status_aprovacao | No | Um ou mais valores exatos: "Aguardando aprovação", "Aprovado", "Rejeitado". Vale nas visões: pedidos. | |
| codigo_requisicao | No | Número da requisição (casa por trecho). Vale nas visões: requisicoes. | |
| comprou_menor_preco | No | true: comprou pelo menor preço coletado. false: comprou mais caro. Vale nas visões: itens_pedido. | |
| id_ordem_manutencao | No | Identificador da ordem de manutenção que originou a requisição, tirado de uma consulta anterior. Vale nas visões: requisicoes, trilha. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, and the description reinforces the read-only nature while adding rich behavior: never compare dates, use pre-computed SITUACAO_ENTREGA/DIAS_ATRASO, never subtract quantity columns, exclude 'Saída de estoque' items from purchase questions, call once with the final limit, and response totals via total_disponivel. This is well beyond what annotations supply.
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?
Structurally strong: a front-loaded purpose sentence, a chains section, business-rule paragraphs, then a per-visão bullet list. It is long, but the length is justified by 33 parameters and 6 views. Minor redundancy exists (restating defaults and filter behavior in multiple places), keeping it off a full 5.
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 33 parameters, 6 views, and an output schema that already covers return values, the description covers everything needed: default visão (pedidos), filter semantics per view, agrupamento behavior, pagination guidance (pular/limite/total_disponivel), and the domain rules an agent would otherwise get wrong.
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 coverage is 100%, so the schema baseline already documents each parameter. The description nevertheless adds meaning beyond the schema by mapping each visão to its filters/group-by dimensions, defining the cadeia relationships between requisicao/cotacao/coleta/pedido, and clarifying exact-value vs partial-match filters. It stops short of some per-parameter detail the schema already carries, so a 4 rather than 5.
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?
Opens with a specific verb+resource ('Requisições, cotações, coletas de preço e pedidos de compra') and immediately states the negative scope ('Somente consulta: não aprova, não cria nem altera pedido'). This distinguishes it from sibling read tools and from any approval action, so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use each visão, when to use agrupar_por instead of listing, when trilha requires a prior document lookup, and how to select or exclude item types. It also gives concrete routing rules ('Pedidos atrasados' → situacao_entrega ['Atrasado']) and exclusion rules, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_custosCusto de produçãoARead-onlyInspect
Custo dos insumos aplicados, rateado por talhão ou consolidado por classe de produto.
Visões disponíveis (parâmetro "visao"):
total_talhao: Custo total e custo por hectare de cada talhão na safra. Filtros: safra, talhao, setor, cultura.
por_classe: Custo por classe de produto em cada talhão. Filtros: safra, talhao, setor, classe_produto.
por_ordem: Custo rateado por ordem de serviço e talhão, produto a produto. Filtros: safra, talhao, produto, classe_produto, codigo_os (valor exato), aceita período.
Quando "visao" não é informada, usa "total_talhao". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: total_talhao, por_classe, por_ordem. | |
| setor | No | Nome do setor. Vale nas visões: total_talhao, por_classe. | |
| visao | No | Qual recorte consultar. Padrão: total_talhao. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| talhao | No | Nome do talhão. Vale nas visões: total_talhao, por_classe, por_ordem. | |
| cultura | No | Nome da cultura, ex.: "ALGODAO", "SOJA". Vale nas visões: total_talhao. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| produto | No | Nome do produto. Vale nas visões: por_ordem. | |
| codigo_os | No | Código da ordem de serviço. Vale nas visões: por_ordem. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| classe_produto | No | Classe do produto. Vale nas visões: por_classe, por_ordem. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description goes well beyond them: substring/case/accent-insensitive text matching, the '(valor exato)' exception for codes and plates, the presence of 'total_disponivel' in the response, and anti-pattern guidance against repeating queries with different limits.
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?
Front-loaded with the purpose, then cleanly bulleted by view; the closing paragraph on filtering, total_disponivel and single-call discipline is dense but earned. Some per-view filter lists duplicate what the schema already states, which costs a little length.
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 13-parameter read-only query tool with an output schema, the definition covers everything an agent needs: view selection, filter applicability, text-matching semantics, pagination, and result-size signaling. Nothing material 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 coverage is 100% and each parameter already documents which views it applies to, so the description largely restates that. It still adds real meaning the schema lacks: the substring matching rule and the exact-value caveat for codigo_os, plus the default-farm behavior for 'fazenda'.
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?
States a specific resource (custo dos insumos aplicados) and its two aggregation axes, then enumerates the three concrete views (total_talhao, por_classe, por_ordem). An agent can distinguish this from consultar_producao, consultar_financeiro and consultar_ordens_servico without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the default view when 'visao' is omitted, lists which filters apply to each view, and gives direct invocation guidance ('Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite'). It also tells the agent when to supply 'fazenda' versus omitting it for the current farm.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_estoqueEstoque de insumosARead-onlyInspect
Saldo atual de produtos por local de estoque, lotes com validade e movimentação. Para o documento que originou a entrada (romaneio, contrato), use a consulta de pós-colheita. Para totais e contagens use "agrupar_por": o banco soma e conta. A listagem traz no máximo 30 linhas e serve para ver produtos ou lotes específicos — nunca liste para contar ou somar. Ex.: saldo por classe = visão saldo com agrupar_por ["classe_produto"]; lotes vencidos e vencendo = visão lotes com agrupar_por ["status_validade"]. Pergunta por grupo ("defensivos", "adubos", "sementes") NÃO se resolve com classe_produto: não há classe com esse nome. Agrupe o saldo por classe_produto (e local_estoque, se a fazenda tiver um local para o grupo — veja a visão locais) e escolha as classes que pertencem ao grupo. Produto com CLASSE_PRODUTO "Sem classe no cadastro" faz parte da resposta: mostre-o num grupo com esse nome, nunca o omita e nunca atribua a ele uma classe. Quantidade (SALDO_*, QUANTIDADE) só vem somada quando o grupo tem uma unidade só; com várias unidades ela não vem e QTDE_UNIDADES diz quantas havia — agrupe também por unidade ou produto. Valor em R$ (CUSTO_TOTAL_POSITIVO, VALOR_TOTAL) sempre soma.
Visões disponíveis (parâmetro "visao"):
saldo: Saldo por produto e local, com custo médio e situação do estoque. STATUS_ESTOQUE "ABAIXO DO MÍNIMO" é o critério para produto abaixo do mínimo; sem ESTOQUE_MINIMO na linha, o mínimo não foi cadastrado para aquele produto e local. Com agrupar_por: QTDE_LINHAS são pares produto × local; PRODUTOS e PRODUTOS_COM_SALDO, produtos distintos; ITENS_COM_SALDO, ITENS_ZERADOS e ITENS_NEGATIVOS contam os pares; SALDO_POSITIVO e CUSTO_TOTAL_POSITIVO somam só o que tem saldo; SALDO_NEGATIVO fica à parte — é saída lançada antes da entrada, informe separado. Filtros: produto, classe_produto, local_estoque, status, com_saldo. Agrupa por: classe_produto, local_estoque, status, produto, unidade. Lista no máximo 30 linhas por chamada.
lotes: Saldo quebrado por lote, com validade, só de produto que controla lote. STATUS_VALIDADE diz se o lote está vencido ou vencendo — não compare datas. Com agrupar_por: QTDE_LINHAS é o número de lotes, LOTES_COM_SALDO os que ainda têm saldo, PRODUTOS os produtos distintos e MENOR_VALIDADE a validade mais próxima do grupo. Filtros: produto, classe_produto, local_estoque, lote, status_validade, com_saldo. Agrupa por: status_validade, classe_produto, produto, local_estoque, unidade. Lista no máximo 30 linhas por chamada.
historico: Movimentação do estoque: entradas, saídas e saldo após cada uma. Com agrupar_por: QTDE_LINHAS é o número de movimentos, com QUANTIDADE e VALOR_TOTAL somados — agrupe também por tipo para não somar entrada com saída. Filtros: produto, classe_produto, local_estoque, tipo, aceita período. Agrupa por: tipo, mes, produto, classe_produto, local_estoque, origem, unidade. Lista no máximo 30 linhas por chamada.
locais: Cadastro dos locais de estoque. Filtros: local_estoque, tipo.
Quando "visao" não é informada, usa "saldo". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta. Para totais e contagens use "agrupar_por"; a listagem é limitada e serve para ver itens. Com "agrupar_por", a resposta vem somada pelo banco: uma linha por grupo, com QTDE_LINHAS, as somas e os maiores e menores valores (MAIOR_*, MENOR_*). Use isso em vez de somar linhas por conta própria.
| Name | Required | Description | Default |
|---|---|---|---|
| lote | No | Identificação do lote. Vale nas visões: lotes. | |
| tipo | No | Tipo de movimento. Vale nas visões: historico, locais. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| visao | No | Qual recorte consultar. Padrão: saldo. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| status | No | Situação do estoque. Vale nas visões: saldo. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| produto | No | Nome do produto. Vale nas visões: saldo, lotes, historico. | |
| com_saldo | No | true: só o que tem saldo maior que zero; false: zerado ou negativo. Vale nas visões: saldo, lotes. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| agrupar_por | No | Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| local_estoque | No | Local de estoque. Vale nas visões: saldo, lotes, historico, locais. | |
| classe_produto | No | Classe do produto como está no cadastro da fazenda (ex.: "Herbicida", "Inseticida", "Fungicida"). Não existe classe "Defensivo" nem "Adubo": são grupos, não classes. Use "sem classe" para achar os produtos sem classe no cadastro. Vale nas visões: saldo, lotes, historico. | |
| status_validade | No | Situação da validade. Vale nas visões: lotes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/openWorld, so the description adds substantial behavioral context: pagination via total_disponivel, one-call discipline, accent/case-insensitive partial matching with '(valor exato)' exceptions, and unit-dependent non-summing of quantities. It is docked for an internal inconsistency — it repeatedly claims listings are capped at 30 rows while the schema allows limite up to 500 — which could mislead an agent about result size.
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 purpose is front-loaded, but the text is roughly 700 words and repeats the agrupar_por guidance three times (opening, mid-body, closing paragraph), with the last two paragraphs largely restating earlier rules. Dense and useful, yet it could lose a third of its length without information loss.
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 15-parameter, four-visão analytical tool, the description covers filters per visão, aggregation output fields, edge cases (negative balance, loteless products, products without class) and defaults. Return-field semantics are explained even though an output schema exists, leaving no obvious gap for correct invocation.
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 coverage is already 100%, but the description materially exceeds it: it explains which dimensions each visão accepts, why 'Defensivo'/'Adubo' are not valid classe_produto values, that 'Sem classe no cadastro' must be shown and never reassigned, and that SALDO_NEGATIVO must be reported separately. This is analytical meaning the schema cannot express.
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?
Opens with a specific verb+resource scope (saldo por local, lotes com validade, movimentação) and immediately routes the sibling case ('documento que originou a entrada... use a consulta de pós-colheita'). An agent can separate this from consultar_pos_colheita and the other consultar_* tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to aggregate vs list ('para totais e contagens use agrupar_por... nunca liste para contar ou somar'), how to resolve group questions ('defensivos', 'adubos') that the class filter cannot answer, and directs to the locais visão when a group-specific location is needed. Alternatives and anti-patterns are named, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_financeiroFinanceiroARead-onlyInspect
Contas a pagar e a receber, saldo e extrato bancário. Somente consulta: não dá baixa nem lança título. Estrutura: TÍTULO (o compromisso, com quem e de onde veio) > PARCELAS (vencimento e valor) > BAIXA (parcela paga ou recebida, sempre inteira) > CONTA BANCÁRIA. Valores: VALOR_LIQUIDO é o que se paga de fato (bruto - desconto + juros); VALOR_EM_ABERTO é o que falta, já pronto — nunca subtraia colunas. VALOR_DOCUMENTO_ORIGEM é o valor da nota ou do contrato, não o valor a pagar. MOEDA: todo valor está na moeda do título. Nunca some moedas diferentes; mostre um total por moeda, sempre com o símbolo junto. Os agrupamentos já separam por moeda. Vencimento: use o filtro "situacao", nunca compare datas. O período das visões de parcela usa a data prevista, que é a que vale para vencimento. Pagar x receber: "devo", "fornecedor", "boleto" = Pagar; "receber", "cliente" = Receber. Sem indicação, traga os dois e mostre separados. Nome de fornecedor, conta ou documento: filtre por trecho; se vierem nomes diferentes, pergunte qual e siga pelo identificador (id_entidade, id_conta_gerencial, id_titulo). Volume: para a fazenda inteira use "agrupar_por" em vez de listar parcela a parcela. Totais por mês estão em resumo_mes; por conta gerencial, centro de custo ou safra, em resumo_conta. "Quanto paguei/recebi" vem de baixas ou de resumo_mes — nunca da soma do extrato, que tem estornos.
Visões disponíveis (parâmetro "visao"):
parcelas: Uma linha por parcela, com vencimento, valores, situação e a baixa quando houver. Período pela data prevista de vencimento. "O que vence essa semana": situacao ["Vence hoje", "Vence em até 7 dias"]; vencidos: situacao ["Vencido"]. Filtros: tipo (valor exato), situacao (lista de valores exatos), pago, entidade, id_entidade (valor exato), funcionario, conta_gerencial, conta_gerencial_grupo, id_conta_gerencial (valor exato), centro_custo, safra, origem, titulo, documento, id_titulo (valor exato), moeda (valor exato), mes_previsto (valor exato), mes_pagamento (valor exato), conta_bancaria, id_conta_bancaria (valor exato), meio_pagamento, aceita período. Agrupa por: tipo, situacao, entidade, conta_gerencial, conta_gerencial_grupo, centro_custo, safra, origem, mes_previsto, mes_pagamento, conta_bancaria, meio_pagamento.
baixas: Só as parcelas já pagas ou recebidas, com o período pela data do pagamento. É a visão de "quanto paguei entre tal e tal dia" e de "pagamos em dia?" (DIAS_ATRASO_NO_PAGAMENTO). Filtros: tipo (valor exato), situacao (lista de valores exatos), pago, entidade, id_entidade (valor exato), funcionario, conta_gerencial, conta_gerencial_grupo, id_conta_gerencial (valor exato), centro_custo, safra, origem, titulo, documento, id_titulo (valor exato), moeda (valor exato), mes_previsto (valor exato), mes_pagamento (valor exato), conta_bancaria, id_conta_bancaria (valor exato), meio_pagamento, aceita período. Agrupa por: tipo, situacao, entidade, conta_gerencial, conta_gerencial_grupo, centro_custo, safra, origem, mes_previsto, mes_pagamento, conta_bancaria, meio_pagamento.
titulos: Uma linha por conta a pagar ou a receber, com os totais das parcelas, a situação da próxima parcela em aberto e a QUITACAO ("Quitado", "Parcialmente quitado", "Nada quitado"). "Quanto devo ao fornecedor X": tipo Pagar, em_aberto true, agrupar_por entidade. Período pelo próximo vencimento. Filtros: tipo (valor exato), situacao (lista de valores exatos), quitacao (valor exato), em_aberto, entidade, id_entidade (valor exato), conta_gerencial, conta_gerencial_grupo, id_conta_gerencial (valor exato), centro_custo, safra, origem, titulo, documento, id_titulo (valor exato), moeda (valor exato), aceita período. Agrupa por: tipo, situacao, quitacao, entidade, conta_gerencial, conta_gerencial_grupo, centro_custo, safra, origem.
resumo_mes: Uma linha por tipo, mês e moeda: PREVISTO (vence no mês), REALIZADO (pago no mês), EM_ABERTO e VENCIDO. É a visão do fluxo de caixa e de "quanto paguei em agosto". O período compara o primeiro dia do mês: para outubro a dezembro, use 01/10 a 31/12. O saldo do mês (receber - pagar) é da mesma moeda e deve ser calculado com cuidado, nunca misturando moedas. Filtros: tipo (valor exato), moeda (valor exato), mes (valor exato), aceita período. Agrupa por: tipo, mes.
resumo_conta: Totais por tipo, conta gerencial, centro de custo, safra e moeda, somando a vida inteira dos títulos — não aceita período. Para um período, use parcelas com agrupar_por conta_gerencial. Para uma dimensão só, use agrupar_por. Filtros: tipo (valor exato), moeda (valor exato), conta_gerencial, conta_gerencial_grupo, id_conta_gerencial (valor exato), centro_custo, safra. Agrupa por: tipo, conta_gerencial, conta_gerencial_grupo, centro_custo, safra.
contas_bancarias: Contas bancárias da fazenda com o SALDO_ATUAL mantido pelo sistema — nunca recalcule somando o extrato. Por padrão, peça ativa true. Contas de moedas diferentes não se somam. Filtros: conta_bancaria, banco, ativa, moeda (valor exato).
extrato: Movimentos de UMA conta bancária, do mais recente ao mais antigo, com o saldo após cada um. Exige id_conta_bancaria: sem a conta, consulte contas_bancarias e pergunte qual. Sem período, traz os últimos 30 dias — diga isso na resposta. Mostra estornos: alterar uma parcela paga gera "Estorno de pagamento" seguido de novo "Pagamento". Filtros: id_conta_bancaria (valor exato), direcao (valor exato), natureza, entidade, titulo, aceita período. Agrupa por: direcao, natureza, entidade.
notas: Notas fiscais ligadas a um título (principal e adicionais), com a situação e a quitação do título. "A nota 4512 já foi paga?": filtre nota e leia QUITACAO_TITULO. Nota que não aparece aqui não tem conta a pagar ou receber lançada. Período pela emissão da nota. Filtros: nota, entidade, tipo (valor exato), quitacao (valor exato), id_titulo (valor exato), moeda (valor exato), aceita período.
Quando "visao" não é informada, usa "parcelas". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta. Para totais e contagens use "agrupar_por"; a listagem é limitada e serve para ver itens. Com "agrupar_por", a resposta vem somada pelo banco: uma linha por grupo, com QTDE_LINHAS, as somas e os maiores e menores valores (MAIOR_*, MENOR_*). Use isso em vez de somar linhas por conta própria.
| Name | Required | Description | Default |
|---|---|---|---|
| mes | No | Mês no formato "AAAA-MM". Vale nas visões: resumo_mes. | |
| nota | No | Número da nota fiscal (casa por trecho). Vale nas visões: notas. | |
| pago | No | true: já paga/recebida. false: em aberto. Vale nas visões: parcelas, baixas. | |
| tipo | No | "Pagar" ou "Receber". Omita para trazer os dois. Vale nas visões: parcelas, baixas, titulos, resumo_mes, resumo_conta, notas. | |
| ativa | No | true traz só as contas ativas. Vale nas visões: contas_bancarias. | |
| banco | No | Banco. Vale nas visões: contas_bancarias. | |
| moeda | No | Símbolo da moeda do título, como está no cadastro: "R$", "$", "G". Vale nas visões: parcelas, baixas, titulos, resumo_mes, resumo_conta, contas_bancarias, notas. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: parcelas, baixas, titulos, resumo_conta. | |
| visao | No | Qual recorte consultar. Padrão: parcelas. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| origem | No | De onde o título veio: "Nota fiscal", "Contrato de terceiros", "Contrato de venda", "Adiantamento", "Avulso", "Salário". Vale nas visões: parcelas, baixas, titulos. | |
| titulo | No | Número do título (casa por trecho). Vale nas visões: parcelas, baixas, titulos, extrato. | |
| direcao | No | "Entrada" ou "Saída". Vale nas visões: extrato. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| entidade | No | Fornecedor (a pagar) ou cliente (a receber). Vale nas visões: parcelas, baixas, titulos, extrato, notas. | |
| natureza | No | "Pagamento", "Recebimento", "Estorno de pagamento", "Estorno de recebimento", "Transferência entre contas" ou "Outro". Vale nas visões: extrato. | |
| quitacao | No | "Quitado", "Parcialmente quitado", "Nada quitado" ou "Sem parcela". Vale nas visões: titulos, notas. | |
| situacao | No | Um ou mais valores exatos, já calculados no fuso da fazenda: "Vencido", "Vence hoje", "Vence em até 7 dias", "A vencer", "Sem vencimento", "Pago" (a pagar), "Recebido" (a receber); nos títulos, também "Sem parcela". Nunca deduza vencido comparando datas — filtre por aqui. Vale nas visões: parcelas, baixas, titulos. | |
| documento | No | Número da nota ou do contrato de origem (casa por trecho). Vale nas visões: parcelas, baixas, titulos. | |
| em_aberto | No | true: só títulos com valor em aberto. false: só os sem nada em aberto. Vale nas visões: titulos. | |
| id_titulo | No | Identificador do título, tirado de uma consulta anterior. Vale nas visões: parcelas, baixas, titulos, notas. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| agrupar_por | No | Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela; a moeda entra sempre no agrupamento. | |
| funcionario | No | Pessoa do título de salário. Vale nas visões: parcelas, baixas. | |
| id_entidade | No | Identificador do fornecedor ou cliente, tirado de uma consulta anterior. Vale nas visões: parcelas, baixas, titulos. | |
| centro_custo | No | Centro de custo. Vale nas visões: parcelas, baixas, titulos, resumo_conta. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| mes_previsto | No | Mês de vencimento, no formato "AAAA-MM". Vale nas visões: parcelas, baixas. | |
| mes_pagamento | No | Mês do pagamento, no formato "AAAA-MM". Vale nas visões: parcelas, baixas. | |
| conta_bancaria | No | Conta bancária da baixa. Vale nas visões: parcelas, baixas, contas_bancarias. | |
| meio_pagamento | No | Meio de pagamento da baixa. Vale nas visões: parcelas, baixas. | |
| conta_gerencial | No | Conta gerencial: a categoria da despesa ou da receita. Vale nas visões: parcelas, baixas, titulos, resumo_conta. | |
| id_conta_bancaria | No | Identificador da conta bancária, tirado da visão contas_bancarias. Vale nas visões: parcelas, baixas, extrato. | |
| id_conta_gerencial | No | Identificador da conta gerencial, tirado de uma consulta anterior. Vale nas visões: parcelas, baixas, titulos, resumo_conta. | |
| conta_gerencial_grupo | No | Grupo da conta gerencial. Vale nas visões: parcelas, baixas, titulos, resumo_conta. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds substantial behavioral context beyond them: default 30-day window for extrato, pagination via total_disponivel, limit versus grouping behavior, estorno handling, and currency aggregation rules. No annotation contradiction.
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?
Organized into clear sections and view-specific bullets, with purpose and scope front-loaded. However, it is very long and repeats view-applicability details that the schema also documents, so it is not maximally concise despite the tool's complexity.
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 36-parameter, multi-view tool with an output schema, the description covers defaults, return-shape hints, grouping behavior, pagination, and edge cases. The output schema reduces the need to restate return values, but the added operational context makes the definition 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?
Even with 100% schema coverage, the description adds meaning beyond the schema: text filters match by trecho except exact-value parameters, situacao must be used instead of date comparison, moeda grouping rules, and interpretation of VALOR_* fields. This materially supplements how parameters should be used.
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?
States a specific resource set (contas a pagar/receber, saldo e extrato bancário) and scope (somente consulta: não dá baixa nem lança título), which distinguishes it from lancar_* siblings. Although it does not name every consultar_* sibling, the domain and read-only nature are unmistakable.
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?
Provides explicit guidance for each visão, states the default visão, and explains when to use agrupar_por versus listing. It also clarifies when resumo_conta is inappropriate because it does not accept period, directing the user to parcelas instead, covering alternatives well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_frotaFrota e manutençãoARead-onlyInspect
Máquinas e veículos: cadastro, abastecimento, ordens de manutenção, planos e custos. Ordem de manutenção é coisa distinta de ordem de serviço agrícola.
Visões disponíveis (parâmetro "visao"):
cadastro: Cadastro dos equipamentos, com horímetro atual. Inclui equipamento de terceiro: para a frota própria, filtre propriedade e subtipo. Filtros: equipamento, codigo (valor exato), placa (valor exato), tipo_equipamento, subtipo, propriedade, ativo, setor.
abastecimento: Abastecimentos lançados: litros, preço, horímetro e consumo. Filtros: equipamento, placa (valor exato), combustivel, operador, local_estoque, aceita período.
ordens: Ordens de manutenção: serviço, status, valor e horímetro de geração. O que decide se a ordem está pendente é o STATUS, nunca a data: há ordem pendente com DATA_FINALIZACAO preenchida, as vezes anterior a própria data da ordem. Trate essa data como confiável só quando o status for Finalizado. Filtros: equipamento, status, tipo, grupo_manutencao, aceita período.
planos: Planos de manutenção preventiva e o que está por vencer. Filtros: equipamento, plano, status.
custos: Custos lançados por equipamento: peças, serviços e combustível. Filtros: equipamento, categoria, fornecedor, aceita período.
checklists: Checklists preenchidos por equipamento. Filtros: equipamento, status, aceita período.
Quando "visao" não é informada, usa "cadastro". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | Tipo da ordem. Casa por trecho: "Preventiva" acha "Manutencao Preventiva". Vale nas visões: ordens. | |
| ativo | No | true traz só os equipamentos ativos. Vale nas visões: cadastro. | |
| placa | No | Placa do veículo. Vale nas visões: cadastro, abastecimento. | |
| plano | No | Nome do plano. Vale nas visões: planos. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| setor | No | Nome do setor. Vale nas visões: cadastro. | |
| visao | No | Qual recorte consultar. Padrão: cadastro. | |
| codigo | No | Código do equipamento. Vale nas visões: cadastro. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| status | No | Status da ordem. Casa por trecho: "Pendente", "Finaliz". Vale nas visões: ordens, planos, checklists. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| subtipo | No | Subtipo do cadastro. "Frota" é a frota de máquinas; terceirizados costumam vir com outro subtipo. Vale nas visões: cadastro. | |
| operador | No | Operador. Vale nas visões: abastecimento. | |
| categoria | No | Categoria do custo. Vale nas visões: custos. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| fornecedor | No | Fornecedor. Vale nas visões: custos. | |
| combustivel | No | Combustivel. Vale nas visões: abastecimento. | |
| equipamento | No | Descrição do equipamento. Vale nas visões: cadastro, abastecimento, ordens, planos, custos, checklists. | |
| propriedade | No | Se o equipamento é próprio ou de terceiro. Use para separar a frota da fazenda dos caminhões de terceiros que só aparecem no carregamento. Vale nas visões: cadastro. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| local_estoque | No | Local de estoque / posto. Vale nas visões: abastecimento. | |
| grupo_manutencao | No | Grupo de manutenção. Vale nas visões: ordens. | |
| tipo_equipamento | No | Tipo do equipamento. Vale nas visões: cadastro. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint/openWorldHint, yet the description adds substantial non-obvious behavior: the default view, substring/accent-insensitive matching vs '(valor exato)' filters, the 'total_disponivel' response field, one-call pagination advice, and the critical data-quality warning that DATA_FINALIZACAO is only trustworthy when status is Finalizado.
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?
Front-loaded summary followed by a scannable per-view bullet list, then global filter semantics and the calling rule. Length is justified by the 23-parameter surface, with only minor overlap between the bullet lists and the schema's own view annotations.
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 six-mode, 23-parameter query tool with an output schema, the description covers mode selection, defaults, filter semantics, response metadata, and pagination expectations. Nothing essential for a correct first call is missing, and the maintenance-order date caveat prevents a plausible misuse.
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 coverage is 100%, so the 3-baseline applies, but the description adds cross-cutting meaning the schema lacks: global matching semantics ('casa por trecho, sem diferenciar maiúsculas nem acento') and the exception marking for exact-value filters. It also consolidates which filters belong to each view, though much of that duplicates the schema's per-parameter 'Vale nas visões' notes.
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?
Opens with a specific verb+resource and enumerates the covered subdomains (cadastro, abastecimento, ordens de manutenção, planos, custos), then explicitly separates itself from the sibling consultar_ordens_servico ('Ordem de manutenção é coisa distinta de ordem de serviço agrícola'). An agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Documents the 'visao' routing with per-view filters, states the default when visao is omitted, and gives calling guidance ('Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite'). It flags the maintenance-vs-service-order distinction but does not name when to prefer consultar_ordens_servico or consultar_custos by tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_monitoramento_pragasMonitoramento de pragasARead-onlyInspect
Levantamentos de campo: pragas encontradas, pontos monitorados e fenologia. Não confundir com aplicação de defensivo, que é ordem de serviço.
Visões disponíveis (parâmetro "visao"):
levantamentos: Cabeçalho de cada levantamento: data, talhão, quantos pontos e quem levantou. Filtros: safra, talhao, setor, cultura, aceita período.
ocorrencias: Praga por levantamento, com o resultado já calculado e a faixa de alerta. Filtros: safra, talhao, setor, praga, classificacao, aceita período.
pontos: Um registro por ponto monitorado: stand, altura, estágio e coordenada. Filtros: safra, talhao, setor, tecnico, aceita período.
fenologia: Fenologia medida no levantamento: stand, altura, nós, maçãs. Filtros: safra, talhao, setor, aceita período.
registros: A praga ponto a ponto, com o valor bruto anotado no campo. Filtros: safra, talhao, praga, aceita período.
Quando "visao" não é informada, usa "ocorrencias". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| praga | No | Nome da praga. Vale nas visões: ocorrencias, registros. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia, registros. | |
| setor | No | Nome do setor. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia. | |
| visao | No | Qual recorte consultar. Padrão: ocorrencias. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| talhao | No | Nome do talhão. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia, registros. | |
| cultura | No | Nome da cultura, ex.: "ALGODAO", "SOJA". Vale nas visões: levantamentos. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| tecnico | No | Quem fez o levantamento. Vale nas visões: pontos. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| classificacao | No | Classificação da praga. Vale nas visões: ocorrencias. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/no-open-world, but the description adds real behavioral context beyond them: default visao, case- and accent-insensitive partial text matching versus exact-value filters, the presence of total_disponivel in the response, and pagination strategy via pular/limite. This is unusually rich disclosure for a query tool.
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?
Front-loaded with purpose and exclusion, then an efficient bulleted breakdown per view, then filtering/limit rules. Length is justified by 13 parameters and 5 views, though a few lines restate schema-documented view applicability.
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 13-parameter, multi-view query tool with an output schema present, the description covers defaults, filter behavior, pagination, and response metadata (total_disponivel) so an agent can invoke it correctly in one shot with the right limit.
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 already 100% and documents per-view applicability of each filter, so the description mostly parallels it; however it adds genuine value by explaining the default visao and the text-matching semantics (partial vs exact) that the schema does not state.
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?
States a specific verb+resource (field survey of pests found, monitored points, phenology) and explicitly distinguishes itself from the sibling domain of pesticide application (consultar_ordens_servico). An agent can tell what this tool returns and what it is not without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance per view (levantamentos, ocorrencias, pontos, fenologia, registros) with the applicable filters for each, states the default view (ocorrencias), points to listar_safras for valid safra values, and routes the agent away from pesticide application. Also instructs calling once with the intended limit rather than re-querying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_ordens_servicoOrdens de serviço agrícolasARead-onlyInspect
Ordens de serviço da lavoura: plantio, aplicação, adubação, colheita. Combustível e manutenção de máquina não entram aqui — são frota.
Visões disponíveis (parâmetro "visao"):
cabecalho: Uma linha por ordem: status, tipo de atividade, área e percentual executado. Filtros: safra, status, tipo_atividade, equipe, codigo (valor exato), aceita período.
talhoes: Talhões atendidos por cada ordem, com área e cultura. Filtros: safra, status, talhao, setor, codigo (valor exato), aceita período.
insumos: Produtos previstos e executados por ordem, com dose por hectare, valor e lote. Lote vem vazio quando o produto não é controlado por lote. Filtros: safra, status, produto, classe_produto, lote, codigo (valor exato), aceita período.
execucao: Cada execução lançada: data, área, horas, equipamento e operador. Filtros: safra, talhao, equipamento, operador, codigo (valor exato), aceita período.
Quando "visao" não é informada, usa "cabecalho". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| lote | No | Código do lote do produto. Vale nas visões: insumos. | |
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: cabecalho, talhoes, insumos, execucao. | |
| setor | No | Nome do setor. Vale nas visões: talhoes. | |
| visao | No | Qual recorte consultar. Padrão: cabecalho. | |
| codigo | No | Código da ordem de serviço. Vale nas visões: cabecalho, talhoes, insumos, execucao. | |
| equipe | No | Equipe responsável. Vale nas visões: cabecalho. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| status | No | Status da ordem. Casa por trecho: "Pendente", "Finaliz". Vale nas visões: cabecalho, talhoes, insumos. | |
| talhao | No | Nome do talhão. Vale nas visões: talhoes, execucao. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| produto | No | Nome do produto. Vale nas visões: insumos. | |
| operador | No | Operador. Vale nas visões: execucao. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| equipamento | No | Equipamento usado. Vale nas visões: execucao. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| classe_produto | No | Classe do produto. Vale nas visões: insumos. | |
| tipo_atividade | No | Tipo de atividade da ordem. Vale nas visões: cabecalho. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint, openWorldHint). The description goes well beyond: it discloses text-matching semantics (substring, case- and accent-insensitive, except exact-value filters), the meaning of 'total_disponivel', default visao, and pagination strategy. None of this is derivable from the annotations or schema alone.
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?
Front-loads the scope and the frota exclusion, then uses a tight bulleted block for the visões. Some filter lists duplicate the schema's per-visao 'Vale nas visões' notes, which is redundant, but the structure keeps it scannable and nothing is padded prose.
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 18 optional params, full schema coverage, an output schema, and read-only annotations, the description supplies everything missing: visao selection, default behavior, filter semantics, total_disponivel, and the single-call/limit rule. An agent could call this correctly without further context.
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 coverage is 100% and the schema already states per-visao parameter validity, so the baseline is 3. The description earns a notch more by adding matching semantics that change how parameters behave ('aplicacao' matches 'Aplicação'; exact-match params like codigo require the full value), which tells the agent how to format filter values.
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?
Opens with a specific resource and scope ('Ordens de serviço da lavoura: plantio, aplicação, adubação, colheita') and immediately carves out what does NOT belong ('Combustível e manutenção de máquina não entram aqui — são frota'). This distinguishes it from the sibling consultar_frota without the agent needing to open either schema.
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?
Explicitly enumerates the four 'visao' modes with the rows and filters each returns, states the default when 'visao' is omitted, and names the negative case (frota tools). It also gives anti-pattern guidance ('Chame uma vez só... nunca repita a consulta mudando só o limite'), which is exactly the kind of behavioral routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_pos_colheitaPós-colheitaARead-onlyInspect
Romaneios de colheita e de saída, fardos de algodão, coletas e contratos — o documento que deu origem ao que entrou ou saiu do estoque. Para qualquer total — quantos romaneios, quanto pesou, quantas sacas, por talhão, por variedade, por mês — use "agrupar_por" nas visões romaneios, fardos e saidas: o banco soma. Nunca liste romaneios ou fardos para somar; a listagem traz no máximo 30 linhas e serve para ver documentos específicos. Pesos em kg. SACAS_LIQUIDAS = PESO_LIQUIDO_FINAL / 60 (saca de 60 kg); ARROBAS_FAZENDA = PESO_FAZENDA / 15. Produtividade por hectare vem de consultar_producao. Por talhão, agrupe por setor e talhao juntos: o mesmo nome de talhão pode existir em setores diferentes.
Visões disponíveis (parâmetro "visao"):
romaneios: Romaneios de colheita (grãos), com todos os descontos. Com agrupar_por: QTDE_LINHAS é o número de romaneios, ROMANEIOS_PESADOS os que já têm peso, e as somas de peso e sacas. Filtros: safra, cultura, talhao, setor, variedade, local_estoque, numero (valor exato), aceita período. Agrupa por: safra, cultura, setor, talhao, variedade, local_estoque, mes, produtor_terceiro. Lista no máximo 30 linhas por chamada.
saidas: Romaneios de saída: o que saiu da fazenda, para qual comprador e nota fiscal. Com agrupar_por: QTDE_LINHAS é o número de romaneios de saída. Filtros: safra, cultura, comprador, local_estoque, numero (valor exato), aceita período. Agrupa por: safra, cultura, produto, comprador, local_estoque, mes. Lista no máximo 30 linhas por chamada.
contratos: Contratos de venda: quantidade contratada, embarcada e saldo. Filtros: safra, cultura, entidade, situacao, numero (valor exato), aceita período.
fardos: Fardos de algodão. Consolidado da safra inteira: fardos_safra. Com agrupar_por: QTDE_LINHAS é o número de fardos, FARDOS_PESADOS os que já têm peso — as somas de peso só contam os pesados. Filtros: safra, cultura, talhao, setor, variedade, local_estoque, codigo (valor exato), status, aceita período. Agrupa por: safra, cultura, setor, talhao, variedade, local_estoque, mes, status, colheitadeira. Lista no máximo 30 linhas por chamada.
fardos_safra: Fardos consolidados por safra e cultura: peso, rendimento e contagem. Filtros: safra, cultura.
coletas: Coletas de fardos levados para a algodoeira. Filtros: safra, setor, algodoeira, status, aceita período. Lista no máximo 30 linhas por chamada.
Quando "visao" não é informada, usa "fardos_safra". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta. Para totais e contagens use "agrupar_por"; a listagem é limitada e serve para ver itens. Com "agrupar_por", a resposta vem somada pelo banco: uma linha por grupo, com QTDE_LINHAS, as somas e os maiores e menores valores (MAIOR_*, MENOR_*). Use isso em vez de somar linhas por conta própria.
| Name | Required | Description | Default |
|---|---|---|---|
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: romaneios, saidas, contratos, fardos, fardos_safra, coletas. | |
| setor | No | Nome do setor. Vale nas visões: romaneios, fardos, coletas. | |
| visao | No | Qual recorte consultar. Padrão: fardos_safra. | |
| codigo | No | Código do fardo. Vale nas visões: fardos. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| numero | No | Número do romaneio. Vale nas visões: romaneios, saidas, contratos. | |
| status | No | Status do fardo. Vale nas visões: fardos, coletas. | |
| talhao | No | Nome do talhão. Vale nas visões: romaneios, fardos. | |
| cultura | No | Nome da cultura, ex.: "ALGODAO", "SOJA". Vale nas visões: romaneios, saidas, contratos, fardos, fardos_safra. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| entidade | No | Contraparte do contrato. Vale nas visões: contratos. | |
| situacao | No | Situação do contrato. Vale nas visões: contratos. | |
| comprador | No | Comprador. Vale nas visões: saidas. | |
| variedade | No | Nome da variedade. Vale nas visões: romaneios, fardos. | |
| algodoeira | No | Algodoeira de destino. Vale nas visões: coletas. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| agrupar_por | No | Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. | |
| local_estoque | No | Local de estoque (armazém, silo) que recebeu. Vale nas visões: romaneios, saidas, fardos. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint; the description adds real behavioral context — 30-row listing caps, total_disponivel, partial (accent/case-insensitive) text matching vs exact-value filters, server-side summing with MAIOR_*/MENOR_* aggregates, and pagination via pular/limite. One caveat: it repeatedly asserts 'máximo 30 linhas por chamada' while the schema's limite allows up to 500, which is an internal tension an agent must reconcile.
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?
It is front-loaded well and dense with useful rules, but several statements are repeated nearly verbatim — the 30-row listing cap appears in four view bullets, and the 'use agrupar_por instead of summing' instruction is stated twice. The length is justified by complexity, yet the redundancy costs it a point.
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 20-parameter, six-mode tool with an output schema, the description covers intent routing, filters per view, aggregation semantics, unit conventions, defaults, and result-shape fields (QTDE_LINHAS, MAIOR_*, total_disponivel), so an agent can call it correctly on the first attempt.
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 coverage is already 100%, but the description goes further: it documents per-view applicability of each filter and the exact set of agrupar_por dimensions each view accepts, plus the derived-metric formulas (SACAS_LIQUIDAS = PESO_LIQUIDO_FINAL/60, ARROBAS_FAZENDA = PESO_FAZENDA/15) and the advice to group by setor+talhao together.
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 opening enumerates exactly what the tool covers — romaneios de colheita/saída, fardos de algodão, coletas e contratos — and frames it as the originating documents of stock movement, which cleanly separates it from siblings like consultar_estoque and consultar_producao. The six views are named explicitly, so an agent can match an intent to the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules are given: use agrupar_por for any total, never list to sum, that the listing is capped and meant for inspecting specific documents, that productivity comes from consultar_producao, and that safra names come from listar_safras. It also states the default view when visao is omitted and that queries are single-farm, with instructions to omit fazenda unless the user names another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_producaoProdução da lavouraARead-onlyInspect
Área, colheita e produtividade por safra, cultura, setor, talhão ou variedade. Produtividade (PRODUTIVIDADE*) já vem por hectare: sacas de 60 kg em grãos, arrobas de 15 kg nas demais. TIPO_COLHEITA vazio conta como grãos: o número está em sacas (sc/ha), mesmo sem UNIDADE_ABREVIADA. Arroba (@/ha) só quando TIPO_COLHEITA for Fardos ou a unidade vier "@". Em grãos, QTDE_REGISTROS_* vem vazio: a quantidade de romaneios está em consultar_pos_colheita, visão romaneios, com agrupar_por.
Visões disponíveis (parâmetro "visao"):
cultura: Produção consolidada por cultura. Filtros: safra, cultura, setor, talhao, variedade.
setor: Produção consolidada por setor. Filtros: safra, cultura, setor, talhao, variedade.
talhao: Produção por talhão — o grão mais detalhado. Filtros: safra, cultura, setor, talhao, variedade.
variedade: Produção consolidada por variedade. Filtros: safra, cultura, setor, talhao, variedade.
Quando "visao" não é informada, usa "talhao". Filtro de texto casa por trecho, sem diferenciar maiúsculas nem acento ("aplicacao" acha "Aplicação") — exceto os marcados "(valor exato)", que exigem o valor inteiro, como código, placa e número. A resposta traz "total_disponivel": quantas linhas o filtro encontra ao todo. Chame uma vez só, já com o limite que a resposta vai usar — nunca repita a consulta mudando só o limite; se só o número interessa e o total pode ser grande, um limite baixo basta.
| Name | Required | Description | Default |
|---|---|---|---|
| pular | No | Linhas a pular, para ler um resultado grande em partes. Use com limite quando total_disponivel for maior que o que veio. | |
| safra | No | Nome da safra, ex.: "2025/2026". Use listar_safras para ver as disponíveis. Vale nas visões: cultura, setor, talhao, variedade. | |
| setor | No | Nome do setor. Vale nas visões: cultura, setor, talhao, variedade. | |
| visao | No | Qual recorte consultar. Padrão: talhao. | |
| limite | No | Máximo de linhas devolvidas. Padrão 100, teto 500. | |
| talhao | No | Nome do talhão. Vale nas visões: cultura, setor, talhao, variedade. | |
| cultura | No | Nome da cultura, ex.: "ALGODAO", "SOJA". Vale nas visões: cultura, setor, talhao, variedade. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| variedade | No | Nome da variedade. Vale nas visões: cultura, setor, talhao, variedade. | |
| data_final | No | Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd. | |
| data_inicial | No | Início do período, em dd/mm/aaaa ou aaaa-mm-dd. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Linhas devolvidas nesta resposta. |
| visao | Yes | |
| avisos | No | O que o servidor aplicou sem ser pedido, como um período padrão. |
| linhas | Yes | |
| fazenda | Yes | |
| truncado | Yes | true quando há mais linhas além das devolvidas. |
| total_disponivel | Yes | Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido. |
| filtros_ignorados | Yes | Filtros que não existem na visão escolhida e por isso não foram aplicados. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds substantial domain behavior: unit semantics (sc/ha for grains, @/ha otherwise), the rule that empty TIPO_COLHEITA counts as grains, empty QTDE_REGISTROS_* in grains, and substring/case/accent-insensitive text matching. It does not discuss pagination edge cases beyond pular, keeping it at a 4.
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?
Front-loads the most decision-relevant semantic (productivity units) before the view table, and every block earns its place. It is dense and longer than average, but the structure (unit rules, view list, filter behavior, pagination) is scannable rather than padded.
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 an output schema present, return values need no explanation; the description covers the remaining gaps an agent needs – view semantics, filter matching, unit interpretation, total_disponivel, and pagination via pular/limite. Nothing material is missing for correct invocation.
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 coverage is 100%, so the baseline is 3, but the description adds value beyond the schema: the exact-value vs. substring filter distinction, the default visao, and the productivity-unit interpretation tied to filters. It largely restates the per-view applicability already present in the schema, so it stops short of 5.
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?
States a specific resource and scope: production data (area, harvest, productivity) broken down by safra, cultura, setor, talhão or variedade, and explicitly routes romaneio counts to the sibling consultar_pos_colheita. An agent can distinguish it from the many other consultar_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: default visao is talhao when omitted; call once with the final limit rather than re-querying; and romaneio quantities live in consultar_pos_colheita instead. Covers when-to-use, when-not, and named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lancar_abastecimentoLançamento de abastecimentoAInspect
Registra um abastecimento de equipamento. Use consultar_frota para achar o equipamento. Interno (bomba da fazenda): informe id_bomba. Externo (posto de rua): informe descrição do posto, id_produto do combustível e preço por litro.
GRAVA no upCampo. Resuma ao usuário o que será lançado e confirme com ele antes de chamar. Depois de gravado, informe o que foi registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data do abastecimento. Formato dd/mm/aaaa. | |
| hora | Yes | Hora, 0 a 23. | |
| tipo | Yes | Interno: bomba da fazenda. Externo: posto de rua. | |
| litros | Yes | Litros abastecidos. Ex.: 45.5 | |
| minuto | Yes | Minuto, 0 a 59. | |
| ticket | No | Número do ticket, se houver. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| id_bomba | No | Só para tipo Interno: a bomba usada. | |
| horimetro | No | Leitura do horímetro ou hodômetro, se informada. | |
| id_produto | No | Só para tipo Externo: o combustível. | |
| observacao | No | Observação livre, se o usuário disser alguma. | |
| preco_litro | No | Só para tipo Externo: preço por litro. Ex.: 5.89 | |
| id_lancamento | No | Identificador de um lançamento já existente, para ALTERAR. Omita para criar um novo — é o caso normal. | |
| id_equipamento | Yes | Equipamento abastecido, vindo de consultar_frota. | |
| id_funcionario | No | Operador, se informado. | |
| descricao_posto | No | Só para tipo Externo: nome do posto. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fazenda | Yes | |
| lancado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the write/non-idempotent profile is known. The description adds genuine value beyond that: it names the write target ('GRAVA no upCampo') and mandates a confirm-before-call and report-after-write protocol. It does not mention permission/auth requirements, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and resource, then moves efficiently into prerequisite tool, conditional branches, and the confirmation protocol. The lines are short and purposeful, though the interno/externo field lists partially duplicate the schema.
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 an output schema present, return values need not be described, and the 100% schema coverage handles parameter detail. The description covers the main create workflow and confirmation loop well; the alter-existing path via id_lancamento is documented only in the schema, a minor gap.
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 all 16 parameters including the Interno/Externo conditionals on id_bomba, id_produto, descricao_posto, and preco_litro. The description restates those same conditional requirements, adding emphasis but little new semantic detail, so the baseline 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?
States a specific verb+resource ('Registra um abastecimento de equipamento'), which clearly places it among the lancar_* write tools and disambiguates it from the consultar_* readers. An agent can tell immediately that this creates a fueling record rather than querying one.
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?
Gives explicit branching guidance: use consultar_frota first to find the equipment, then choose Interno (id_bomba) or Externo (descricao_posto, id_produto, preco_litro) with the required fields for each. It also prescribes the interaction workflow (summarize and confirm before calling, report after writing), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lancar_chuvaLançamento de chuvaAInspect
Registra a leitura de um pluviômetro. Use consultar_chuva com visão "pluviometros" para achar o identificador do pluviômetro antes de lançar (uma linha por pluviômetro). Se o usuário citar um talhão, a visão "pluviometros_talhoes" com o filtro talhao mostra quais pluviômetros o cobrem. SEMPRE registra na data de HOJE: a procedure do upCampo fixa a data e não aceita outra — vale igual para a UPí no WhatsApp. Se o usuário pedir chuva de ontem ou de outro dia, diga isso antes de lançar e ofereça o portal, onde a data é digitável. Quando choveu: informe milímetros e deixe condicao_tempo de fora. Quando NÃO choveu: informe condicao_tempo e deixe milímetros de fora. Um talhão pode pertencer a dois pluviômetros: nunca lance nos dois — pergunte em qual. Confira antes se já existe lançamento daquele pluviômetro no dia.
GRAVA no upCampo. Resuma ao usuário o que será lançado e confirme com ele antes de chamar. Depois de gravado, informe o que foi registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| milimetros | No | Chuva medida, em mm. Só quando choveu. Ex.: 30.5 | |
| id_lancamento | No | Identificador de um lançamento já existente, para ALTERAR. Omita para criar um novo — é o caso normal. | |
| condicao_tempo | No | Só quando NÃO choveu. | |
| id_pluviometro | Yes | Identificador do pluviômetro, vindo de consultar_chuva (visão pluviômetros). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fazenda | Yes | |
| lancado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic readOnly=false/destructive=false/idempotent=false profile. The description adds the critical non-obvious trait that the upCampo procedure forces today's date and rejects any other (including via WhatsApp), plus a mandatory summarize-and-confirm workflow before writing. These are exactly the behaviors annotations cannot express.
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?
Long but front-loaded: purpose first, then discovery order, then the date constraint, then the exclusive-field rules. Nearly every sentence is actionable operational guidance, though the mm/condicao_tempo rules slightly duplicate the schema wording.
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 write tool with a rich output schema (so return values need no explanation), the description covers everything an agent needs: discovery prerequisite, date limitation, field exclusivity, ambiguity handling, duplicate check, and confirmation workflow. Nothing material 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 schema already documents fazenda, milimetros, id_lancamento, condicao_tempo and id_pluviometro. The description restates the mm-vs-condicao_tempo exclusivity that the schema already encodes, adding little parameter-level meaning beyond the baseline.
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?
Opens with a specific verb+resource: "Registra a leitura de um pluviômetro". It immediately differentiates from the read-only sibling by routing discovery to consultar_chuva, so an agent can tell the write tool apart from the query tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extremely explicit: tells the agent to look up the pluviômetro ID via consultar_chuva first, which view to use for talhão lookups, the today-only date rule, the portal fallback for past dates, the mm-vs-condicao_tempo exclusive cases, the two-pluviometer-per-talhão ambiguity, and the pre-flight duplicate check. When/why/when-not are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lancar_entrada_notaLançamento de entrada de notaAInspect
Registra uma entrada de material no estoque, com ou sem nota fiscal. "Entrada avulsa": exige descrição. "Entrada com nota fiscal": exige número e o fornecedor. O fornecedor vem de consultar_estoque ou de um cadastro existente; se ele não existir, informe cnpj_cpf e razao_social e o upCampo o cadastra. Produto que não existe no cadastro entra por produto_descricao, sem id_produto. Todo item que vai para estoque precisa de id_local_estoque: se faltar em um item, a nota inteira é recusada e nada é gravado.
GRAVA no upCampo. Resuma ao usuário o que será lançado e confirme com ele antes de chamar. Depois de gravado, informe o que foi registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data da entrada. Formato dd/mm/aaaa. | |
| tipo | Yes | Com nota fiscal exige número e fornecedor; avulsa exige descrição. | |
| itens | Yes | Itens recebidos. Pelo menos um. | |
| numero | No | Obrigatório em "Entrada com nota fiscal": o número da nota. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| cnpj_cpf | No | Só números. Use quando o fornecedor não estiver cadastrado. | |
| id_safra | Yes | Safra da movimentação, vinda de listar_safras. | |
| descricao | No | Obrigatório em "Entrada avulsa": o que está entrando. | |
| observacao | No | Observação livre, se o usuário disser alguma. | |
| id_entidade | No | Fornecedor já cadastrado. | |
| data_emissao | No | Data de emissão da nota. Formato dd/mm/aaaa. | |
| razao_social | No | Nome do fornecedor a cadastrar, junto com cnpj_cpf. | |
| id_lancamento | No | Identificador de um lançamento já existente, para ALTERAR. Omita para criar um novo — é o caso normal. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fazenda | Yes | |
| lancado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the generic safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds behavior an agent cannot infer: all-or-nothing atomicity ("se faltar em um item, a nota inteira é recusada e nada é gravado"), the side effect that upCampo auto-registers a missing fornecedor, and the confirm-before-write workflow. These are exactly the traits annotations cannot express.
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?
Front-loads the core purpose, then layers mode requirements, the critical id_local_estoque constraint, and the write/confirm workflow – a logical order with no wasted sentences. Slightly dense, and a few clauses (fornecedor sourcing, produto_descricao) echo schema text, but nothing is padding.
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 13-parameter, nested-item write tool this is thorough: it covers both operating modes, required-field logic, dependency tools, the atomicity failure mode, the auto-cadastro side effect, and the confirmation workflow. An output schema exists, so return values need not be explained, and no gap remains that would cause a failed call.
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 still adds cross-parameter meaning beyond the schema – how tipo drives which of numero/descricao/fornecedor become required, that produto_descricao substitutes for id_produto when the product is unregistered, and that a single missing id_local_estoque rejects the whole note. That is genuine semantic value on top of an already complete 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?
States a specific verb and resource ("Registra uma entrada de material no estoque") and immediately splits the operation into its two distinct modes ("Entrada avulsa" vs "Entrada com nota fiscal"), so an agent knows exactly what this tool produces. The resource is unambiguous against all lancar_* siblings (abastecimento, chuva, OS), which cover entirely different domains.
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?
Gives mode-specific conditions (avulsa needs descrição, nota fiscal needs número and fornecedor) and routes the agent to dependency tools: fornecedor from consultar_estoque or an existing cadastro, id_safra from listar_safras, id_local_estoque from consultar_estoque visão "locais". It also instructs to summarize and confirm before calling. It stops short of explicitly naming an alternative entry tool to prefer under some condition, but the branching guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lancar_execucao_osLançamento de execução de ordem de serviçoAInspect
Registra a execução de uma ordem de serviço agrícola: área trabalhada, horas, equipamento e operador. Use consultar_ordens_servico para achar a ordem e os talhões dela. A data não pode ser futura.
GRAVA no upCampo. Resuma ao usuário o que será lançado e confirme com ele antes de chamar. Depois de gravado, informe o que foi registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Área executada, em hectares. Ex.: 80.5 | |
| data | Yes | Data da execução. Formato dd/mm/aaaa. | |
| horas | No | Horas trabalhadas. Ex.: 4.5 | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| hora_fim | No | Hora de término. Ex.: 12 | |
| id_ordem | Yes | Ordem de serviço executada, vinda de consultar_ordens_servico. | |
| id_equipe | No | Equipe responsável. | |
| minuto_fim | No | Minuto de término. Ex.: 0 | |
| observacao | No | Observação livre, se o usuário disser alguma. | |
| hora_inicio | No | Hora de início. Ex.: 7 | |
| id_implemento | No | Implemento usado. | |
| id_lancamento | No | Identificador de um lançamento já existente, para ALTERAR. Omita para criar um novo — é o caso normal. | |
| leitura_final | No | Horímetro ou hodômetro no fim. | |
| minuto_inicio | No | Minuto de início. Ex.: 30 | |
| id_equipamento | No | Equipamento usado. | |
| id_funcionario | No | Operador. | |
| id_ordem_talhao | No | Quando a execução é de um talhão só: o vínculo ordem×talhão. | |
| leitura_inicial | No | Horímetro ou hodômetro no início. | |
| ids_talhoes_agrupados | No | Quando são vários talhões de uma vez: os vínculos separados por vírgula. | |
| nomes_talhoes_agrupados | No | Nomes dos talhões agrupados, separados por vírgula. Ex.: "TH 01,TH 02" |
Output Schema
| Name | Required | Description |
|---|---|---|
| fazenda | Yes | |
| lancado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent write with no destructive hint. The description adds value beyond them: it names the persistence target ('GRAVA no upCampo'), states a validation constraint on a required field, and mandates summarizing and confirming with the user before calling plus reporting the result afterward.
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?
Four short sentences that are front-loaded: purpose first, then the lookup prerequisite, then the constraint, then the write/confirm protocol. No filler, though the 'GRAVA no upCampo' line and the post-write reporting instruction sit somewhat disjointedly after the data constraint.
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 20-parameter write tool with annotations and an output schema, the description covers the operational essentials (what is captured, the lookup prerequisite, the date constraint, the confirmation protocol). It does not surface that supplying id_lancamento switches the call to an update of an existing lançamento, which is the main residual gap.
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% across 20 parameters, so the schema already documents each field, including the tricky id_lancamento update mode and the grouped-talhão variants. The description only gestures at the main fields (área, horas, equipamento, operador) and adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Registra) and resource (execução de uma ordem de serviço agrícola), then enumerates the core data captured (área, horas, equipamento, operador). The framing as 'execução' rather than the order itself cleanly separates it from the sibling lancar_ordem_servico, and it names consultar_ordens_servico as the lookup path.
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?
Explicitly routes the agent to consultar_ordens_servico to obtain the ordem and its talhões, and states a hard precondition ('A data não pode ser futura'). It also prescribes a confirm-before-write workflow. What is missing is an explicit when-not-to-use note (e.g. the alter-vs-create distinction).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lancar_ordem_servicoLançamento de ordem de serviço agrícolaAInspect
Cria uma ordem de serviço agrícola — plantio, aplicação, adubação, colheita. Resolva antes, por consulta, a safra (listar_safras), os talhões (consultar_producao no nível talhão), os produtos (consultar_estoque) e os equipamentos (consultar_frota). Combustível e manutenção de máquina NÃO entram em ordem agrícola — são frota. Para registrar que a ordem foi executada, use lancar_execucao_os; esta tool só cria a ordem.
GRAVA no upCampo. Resuma ao usuário o que será lançado e confirme com ele antes de chamar. Depois de gravado, informe o que foi registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| etapa | No | Subtipo da OS (Identificação Resumida), ex.: "1ª aplicação de fungicida". Use um dos subtipos da fazenda (consultar_cadastros visão subtipos) que valem para o tipo de atividade. | |
| status | No | Situação inicial. Padrão: Pendente. | |
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. | |
| talhoes | No | Talhões atendidos pela ordem, com a área de cada um. | |
| id_safra | Yes | Safra da ordem, vinda de listar_safras. | |
| produtos | No | Insumos previstos, com a dose por hectare. | |
| id_equipe | No | Equipe responsável. | |
| observacao | No | Observação livre, se o usuário disser alguma. | |
| equipamentos | No | Equipamentos e operadores designados. | |
| data_prevista | Yes | Data prevista para a atividade. Formato dd/mm/aaaa. | |
| id_lancamento | No | Identificador de um lançamento já existente, para ALTERAR. Omita para criar um novo — é o caso normal. | |
| tipo_aplicacao | No | Só para aplicação. Padrão: Terrestre. | |
| id_tipo_atividade | Yes | Tipo de atividade (ID_TIPATI). Use consultar_ordens_servico para ver os usados. | |
| id_tipo_equipamento | No | Tipo de equipamento recomendado. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fazenda | Yes | |
| lancado | Yes | |
| retorno | Yes | |
| mensagem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a write, non-idempotent, non-destructive operation. The description adds real behavioral context beyond that: it GRAVA no upCampo, requires summarizing the payload and confirming with the user before calling, and reporting back afterwards. Minor gap: the schema supports altering/removing existing items via id_lancamento/remover, yet the text says the tool 'só cria a ordem', so the update path is under-disclosed.
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?
Front-loaded with the core purpose, then prerequisites, then the exclusion, then the create-vs-execute distinction, then the write/confirm/report workflow. Every sentence carries distinct information with 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?
An output schema exists, so return values need not be described, and the write workflow (confirm before, report after) is covered. The remaining shortfall is the unmentioned alter-mode (id_lancamento plus remover flags on nested items), which an agent must discover from the schema alone.
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 and the schema already carries parameter detail. The description adds sourcing semantics not in the schema by tying safra, talhões, produtos and equipamentos to their originating query tools, and clarifies the boundary that combustion/maintenance items are out of scope.
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?
States a specific verb+resource ('Cria uma ordem de serviço agrícola') and enumerates the covered activity types (plantio, aplicação, adubação, colheita). It explicitly differentiates from the sibling lancar_execucao_os and from fleet logging, so an agent can distinguish it without reading another schema.
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?
Gives explicit prerequisites (resolve safra/produção/estoque/frota first, naming listar_safras, consultar_producao, consultar_estoque, consultar_frota), an explicit exclusion (fuel and machine maintenance belong to frota, not agricultural orders), and an explicit alternative for execution (lancar_execucao_os). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ler_artigo_ajudaLer artigo da Central de AjudaARead-onlyInspect
Devolve um artigo inteiro da Central de Ajuda da upCampo, em texto com títulos, listas e tabelas: localização no menu, campos, passo a passo e perguntas frequentes. Use depois de buscar_ajuda, quando o trecho não bastar para responder. "relacionados" lista os artigos citados neste, para seguir adiante sem nova busca.
| Name | Required | Description | Default |
|---|---|---|---|
| artigo | Yes | Slug do artigo, como veio de buscar_ajuda. O endereço do artigo também é aceito. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Endereço público do artigo, para citar na resposta. |
| menu | No | |
| slug | Yes | |
| texto | Yes | |
| titulo | Yes | |
| categoria | Yes | |
| relacionados | Yes | |
| atualizado_em | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds behavioral context: it returns the full article with structured formatting and includes a 'related' list for navigation. However, it doesn't mention pagination or size limits, but the structured nature suggests completeness for an article.
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 concise sentences that are front-loaded with the core purpose and then the usage condition and related-article feature. Every clause adds value without 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?
For a read-only tool with a simple, fully-documented single parameter and an output schema, the description covers what it returns, when to use it, and how to navigate related articles. It is complete for the agent's needs.
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 coverage is 100%, so the parameter 'artigo' is fully documented in the schema (accepts slug or article URL). The description doesn't add parameter details beyond the schema, so baseline would be 3. However, it reinforces the expected input by referencing 'como veio de buscar_ajuda' in the schema description, and the overall context implies singular article retrieval. Score 4 reflects the schema's completeness and the description's implicit support.
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?
States a specific verb+resource ('Devolve um artigo inteiro da Central de Ajuda') and describes the return content in detail (menu location, fields, steps, FAQ). It clearly distinguishes itself from the sibling buscar_ajuda by providing the full article rather than a snippet.
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?
Explicitly instructs when to use: 'Use depois de buscar_ajuda, quando o trecho não bastar para responder.' It names the alternative tool and the condition that selects it, and further explains how to follow related articles without a new search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_fazendasListar fazendasARead-onlyInspect
Diz com qual usuário upCampo a conexão está autenticada e lista as fazendas (filiais) que ele pode consultar, com a empresa, os assuntos liberados em cada uma e qual é a fazenda corrente. Use quando o usuário perguntar quais fazendas tem, ou quando citar uma fazenda por um nome que você precisa conferir. Não é necessária antes de uma consulta comum: sem fazenda informada, as tools já usam a corrente.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| total | Yes | |
| usuario | Yes | Nome do usuário upCampo desta conexão. |
| fazendas | Yes | |
| conexao_pode_lancar | Yes | Se ESTA conexão foi autorizada a lançar. Falso significa que as tools de lançamento vão recusar, mesmo onde a fazenda permitir. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it reports the authenticated user, the company, released subjects per farm, and the current farm, which helps the agent interpret the result. It omits any auth preconditions or rate-limit notes, keeping it just below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool returns before the usage guidance. The final sentence about not being needed before a common query is valuable but slightly leaning, keeping it just under maximally tight. 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?
An output schema exists so return values need not be spelled out, yet the description still summarizes the returned content (user, farms, company, subjects, current farm), and the usage guidance is complete. Nothing an agent needs in order to call this 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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a no-argument, context-resolving call.
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?
States specific verbs and resources: it reports the authenticated upCampo user and lists the farms (branches) available, along with company, released subjects, and the current farm. This is clearly distinguishable from sibling list tools like listar_safras and the cadastrar/consultar family.
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?
Explicitly gives when to use (user asks which farms exist, or cites a farm name to verify) and when not to (not required before a common query, since tools default to the current farm). This directly routes the agent and prevents a needless call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_safrasListar safrasARead-onlyInspect
Lista as safras da fazenda, com período, culturas, área total e qual é a safra corrente — inclusive as que ainda não têm talhão plantado (QTDE_TALHOES 0, sem cultura). Use antes de filtrar qualquer consulta por safra. ID_SAFRA é o que cadastrar_plantio pede.
| Name | Required | Description | Default |
|---|---|---|---|
| fazenda | No | Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| safras | Yes | |
| fazenda | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the result set deliberately includes empty seasons (QTDE_TALHOES 0, sem cultura) and marks which safra is current — edge cases an agent would otherwise guess wrong about. It does not mention pagination or ordering, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it returns first, the inclusion edge case second, usage and the ID_SAFRA consumer last. No filler, and the most decision-relevant content 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?
An output schema exists, so return values need no prose, yet the description still flags the non-obvious ones. Combined with the 100%-covered lone parameter and the safety annotations, an agent has everything needed to call this 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?
There is a single parameter and schema coverage is 100%; the schema itself documents the default-fazenda behavior and the one-fazenda-per-query rule. The description adds nothing about the fazenda argument, so baseline 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?
States a specific verb (lista) and resource (safras da fazenda) and enumerates what comes back — período, culturas, área total, indicação de safra corrente. The explicit inclusion of safras with QTDE_TALHOES 0 (sem cultura) distinguishes it from any tool that would only return planted seasons, and cadastrar_safra is clearly the write counterpart.
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?
"Use antes de filtrar qualquer consulta por safra" states the prerequisite condition explicitly, and "ID_SAFRA é o que cadastrar_plantio pede" routes the agent to the sibling that consumes the output. This is a when-to-use rule plus an alternative/downstream pointer, not inference.
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.
3 tool updates
- Added
cadastrar_subtipo - Changed
consultar_cadastros3 fields changed- changed
Input schema / properties / nome / descriptionPrevious value: -"Nome da safra. Vale nas visões: safras, culturas, variedades, talhoes, plantios, tipos_atividade, pluviometros, locais, classes, produtos, entidades, tipos_equipamento, equipamentos, funcionarios."New value: +"Nome da safra. Vale nas visões: safras, culturas, variedades, talhoes, plantios, tipos_atividade, pluviometros, locais, classes, produtos, entidades, tipos_equipamento, equipamentos, subtipos, funcionarios." - added
Input schema / properties / tipo_atividadeAdded value: +{ + "description": "Tipo de atividade em que o subtipo vale. Vale nas visões: subtipos.", + "type": "string" +} - changed
Input schema / properties / visao / enumPrevious value: -[ - "andamento", - "safras", - "culturas", - "variedades", - "talhoes", - "plantios", - "tipos_atividade", - "pluviometros", - "locais", - "classes", - "produtos", - "entidades", - "tipos_equipamento", - "equipamentos", - "funcionarios" -]New value: +[ + "andamento", + "safras", + "culturas", + "variedades", + "talhoes", + "plantios", + "tipos_atividade", + "pluviometros", + "locais", + "classes", + "produtos", + "entidades", + "tipos_equipamento", + "equipamentos", + "subtipos", + "funcionarios" +]
- Changed
lancar_ordem_servico1 field changed- changed
Input schema / properties / etapa / descriptionPrevious value: -"Etapa ou identificação do resultado esperado (IDERES). Ex.: \"FUNGICIDA\"."New value: +"Subtipo da OS (Identificação Resumida), ex.: \"1ª aplicação de fungicida\". Use um dos subtipos da fazenda (consultar_cadastros visão subtipos) que valem para o tipo de atividade."
17 tool updates
- Added
cadastrar_classe_produto - Added
cadastrar_cultura - Added
cadastrar_equipamento - Added
cadastrar_fornecedor - Added
cadastrar_funcionario - Added
cadastrar_local_estoque - Added
cadastrar_plantio - Added
cadastrar_pluviometro - Added
cadastrar_produto - Added
cadastrar_safra - Added
cadastrar_talhao - Added
cadastrar_tipo_atividade - Added
cadastrar_tipo_equipamento - Added
cadastrar_variedade - Added
consultar_base_upcampo - Added
consultar_cadastros - Changed
listar_fazendas2 fields changed- added
Output schema / properties / fazendas / items / properties / cadastros_editaveisAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / fazendas / items / requiredPrevious value: -[ - "nome", - "empresa", - "identificador", - "corrente", - "consultas_liberadas", - "lancamentos_liberados" -]New value: +[ + "nome", + "empresa", + "identificador", + "corrente", + "consultas_liberadas", + "lancamentos_liberados", + "cadastros_editaveis" +]
2 tool updates
- Changed
consultar_estoque3 fields changed- added
Input schema / properties / agrupar_porAdded value: +{ + "description": "Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela.", + "items": { + "enum": [ + "classe_produto", + "local_estoque", + "status", + "produto", + "unidade", + "status_validade", + "tipo", + "mes", + "origem" + ], + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / classe_produto / descriptionPrevious value: -"Classe do produto. Vale nas visões: saldo."New value: +"Classe do produto como está no cadastro da fazenda (ex.: \"Herbicida\", \"Inseticida\", \"Fungicida\"). Não existe classe \"Defensivo\" nem \"Adubo\": são grupos, não classes. Use \"sem classe\" para achar os produtos sem classe no cadastro. Vale nas visões: saldo, lotes, historico." - added
Input schema / properties / com_saldoAdded value: +{ + "description": "true: só o que tem saldo maior que zero; false: zerado ou negativo. Vale nas visões: saldo, lotes.", + "type": "boolean" +}
- Changed
consultar_pos_colheita4 fields changed- added
Input schema / properties / agrupar_porAdded value: +{ + "description": "Dimensões para somar no banco, em vez de listar linha a linha. Cada visão aceita só as dimensões listadas nela.", + "items": { + "enum": [ + "safra", + "cultura", + "setor", + "talhao", + "variedade", + "local_estoque", + "mes", + "produtor_terceiro", + "produto", + "comprador", + "status", + "colheitadeira" + ], + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / cultura / descriptionPrevious value: -"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: romaneios, saidas, contratos, fardos_safra."New value: +"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: romaneios, saidas, contratos, fardos, fardos_safra." - added
Input schema / properties / local_estoqueAdded value: +{ + "description": "Local de estoque (armazém, silo) que recebeu. Vale nas visões: romaneios, saidas, fardos.", + "type": "string" +} - changed
Input schema / properties / variedade / descriptionPrevious value: -"Nome da variedade. Vale nas visões: fardos."New value: +"Nome da variedade. Vale nas visões: romaneios, fardos."
10 tool updates
- Changed
consultar_chuva1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_compras1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_custos1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_estoque1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_financeiro1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_frota1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_monitoramento_pragas1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_ordens_servico1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_pos_colheita1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
- Changed
consultar_producao1 field changed- changed
Output schema / properties / total_disponivel / descriptionPrevious value: -"Quantas linhas o filtro encontra ao todo. Para contar sem trazer os dados, chame com limite 1 e leia este campo."New value: +"Quantas linhas o filtro encontra ao todo, qualquer que seja o limite pedido."
1 tool update
- Changed
consultar_chuva4 fields changed- changed
Input schema / properties / pluviometro / descriptionPrevious value: -"Nome do pluviômetro. Vale nas visões: coletas, pluviometros."New value: +"Nome do pluviômetro. Vale nas visões: coletas, pluviometros, pluviometros_talhoes." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros."New value: +"Nome do setor. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros, pluviometros_talhoes." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhão. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros."New value: +"Nome do talhão. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros, pluviometros_talhoes." - changed
Input schema / properties / visao / enumPrevious value: -[ - "coletas", - "resumo_talhao", - "resumo_safra", - "pluviometros" -]New value: +[ + "coletas", + "resumo_talhao", + "resumo_safra", + "pluviometros", + "pluviometros_talhoes" +]
1 tool update
- Added
consultar_compras
9 tool updates
- Changed
consultar_chuva1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_custos1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_estoque1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Added
consultar_financeiro - Changed
consultar_frota1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_monitoramento_pragas1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_ordens_servico1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_pos_colheita1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
consultar_producao1 field changed- added
Output schema / properties / avisosAdded value: +{ + "description": "O que o servidor aplicou sem ser pedido, como um período padrão.", + "items": { + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
consultar_ordens_servico1 field changed- added
Input schema / properties / loteAdded value: +{ + "description": "Código do lote do produto. Vale nas visões: insumos.", + "type": "string" +}
17 tool updates
- Changed
buscar_ajuda3 fields changed- changed
Input schema / properties / limite / descriptionPrevious value: -"Quantos artigos devolver. Padrao 5."New value: +"Quantos artigos devolver. Padrão 5." - changed
Input schema / properties / termo / descriptionPrevious value: -"O que procurar: as palavras do usuario ou o nome da tela. Ex.: \"cadastrar talhao\", \"horimetro no abastecimento\"."New value: +"O que procurar: as palavras do usuário ou o nome da tela. Ex.: \"cadastrar talhão\", \"horímetro no abastecimento\"." - changed
Output schema / properties / artigos / items / properties / url / descriptionPrevious value: -"Endereco publico do artigo, para citar na resposta."New value: +"Endereço público do artigo, para citar na resposta."
- Changed
consultar_chuva11 fields changed- changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / pluviometro / descriptionPrevious value: -"Nome do pluviometro. Vale nas visoes: coletas, pluviometros."New value: +"Nome do pluviômetro. Vale nas visões: coletas, pluviometros." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: resumo_safra."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: resumo_safra." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: coletas, resumo_talhao, resumo_safra, pluviometros."New value: +"Nome do setor. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: coletas, resumo_talhao, resumo_safra, pluviometros."New value: +"Nome do talhão. Vale nas visões: coletas, resumo_talhao, resumo_safra, pluviometros." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: resumo_talhao."New value: +"Qual recorte consultar. Padrão: resumo_talhao." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_custos14 fields changed- changed
Input schema / properties / classe_produto / descriptionPrevious value: -"Classe do produto. Vale nas visoes: por_classe, por_ordem."New value: +"Classe do produto. Vale nas visões: por_classe, por_ordem." - changed
Input schema / properties / codigo_os / descriptionPrevious value: -"Codigo da ordem de servico. Vale nas visoes: por_ordem."New value: +"Código da ordem de serviço. Vale nas visões: por_ordem." - changed
Input schema / properties / cultura / descriptionPrevious value: -"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visoes: total_talhao."New value: +"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: total_talhao." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / produto / descriptionPrevious value: -"Nome do produto. Vale nas visoes: por_ordem."New value: +"Nome do produto. Vale nas visões: por_ordem." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: total_talhao, por_classe, por_ordem."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: total_talhao, por_classe, por_ordem." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: total_talhao, por_classe."New value: +"Nome do setor. Vale nas visões: total_talhao, por_classe." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: total_talhao, por_classe, por_ordem."New value: +"Nome do talhão. Vale nas visões: total_talhao, por_classe, por_ordem." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: total_talhao."New value: +"Qual recorte consultar. Padrão: total_talhao." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_estoque14 fields changed- changed
Input schema / properties / classe_produto / descriptionPrevious value: -"Classe do produto. Vale nas visoes: saldo."New value: +"Classe do produto. Vale nas visões: saldo." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / local_estoque / descriptionPrevious value: -"Local de estoque. Vale nas visoes: saldo, lotes, historico, locais."New value: +"Local de estoque. Vale nas visões: saldo, lotes, historico, locais." - changed
Input schema / properties / lote / descriptionPrevious value: -"Identificacao do lote. Vale nas visoes: lotes."New value: +"Identificação do lote. Vale nas visões: lotes." - changed
Input schema / properties / produto / descriptionPrevious value: -"Nome do produto. Vale nas visoes: saldo, lotes, historico."New value: +"Nome do produto. Vale nas visões: saldo, lotes, historico." - changed
Input schema / properties / status / descriptionPrevious value: -"Situacao do estoque. Vale nas visoes: saldo."New value: +"Situação do estoque. Vale nas visões: saldo." - changed
Input schema / properties / status_validade / descriptionPrevious value: -"Situacao da validade. Vale nas visoes: lotes."New value: +"Situação da validade. Vale nas visões: lotes." - changed
Input schema / properties / tipo / descriptionPrevious value: -"Tipo de movimento. Vale nas visoes: historico, locais."New value: +"Tipo de movimento. Vale nas visões: historico, locais." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: saldo."New value: +"Qual recorte consultar. Padrão: saldo." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_frota24 fields changed- changed
Input schema / properties / ativo / descriptionPrevious value: -"true traz so os equipamentos ativos. Vale nas visoes: cadastro."New value: +"true traz só os equipamentos ativos. Vale nas visões: cadastro." - changed
Input schema / properties / categoria / descriptionPrevious value: -"Categoria do custo. Vale nas visoes: custos."New value: +"Categoria do custo. Vale nas visões: custos." - changed
Input schema / properties / codigo / descriptionPrevious value: -"Codigo do equipamento. Vale nas visoes: cadastro."New value: +"Código do equipamento. Vale nas visões: cadastro." - changed
Input schema / properties / combustivel / descriptionPrevious value: -"Combustivel. Vale nas visoes: abastecimento."New value: +"Combustivel. Vale nas visões: abastecimento." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / equipamento / descriptionPrevious value: -"Descricao do equipamento. Vale nas visoes: cadastro, abastecimento, ordens, planos, custos, checklists."New value: +"Descrição do equipamento. Vale nas visões: cadastro, abastecimento, ordens, planos, custos, checklists." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / fornecedor / descriptionPrevious value: -"Fornecedor. Vale nas visoes: custos."New value: +"Fornecedor. Vale nas visões: custos." - changed
Input schema / properties / grupo_manutencao / descriptionPrevious value: -"Grupo de manutencao. Vale nas visoes: ordens."New value: +"Grupo de manutenção. Vale nas visões: ordens." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / local_estoque / descriptionPrevious value: -"Local de estoque / posto. Vale nas visoes: abastecimento."New value: +"Local de estoque / posto. Vale nas visões: abastecimento." - changed
Input schema / properties / operador / descriptionPrevious value: -"Operador. Vale nas visoes: abastecimento."New value: +"Operador. Vale nas visões: abastecimento." - changed
Input schema / properties / placa / descriptionPrevious value: -"Placa do veiculo. Vale nas visoes: cadastro, abastecimento."New value: +"Placa do veículo. Vale nas visões: cadastro, abastecimento." - changed
Input schema / properties / plano / descriptionPrevious value: -"Nome do plano. Vale nas visoes: planos."New value: +"Nome do plano. Vale nas visões: planos." - changed
Input schema / properties / propriedade / descriptionPrevious value: -"Se o equipamento e proprio ou de terceiro. Use para separar a frota da fazenda dos caminhoes de terceiros que so aparecem no carregamento. Vale nas visoes: cadastro."New value: +"Se o equipamento é próprio ou de terceiro. Use para separar a frota da fazenda dos caminhões de terceiros que só aparecem no carregamento. Vale nas visões: cadastro." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: cadastro."New value: +"Nome do setor. Vale nas visões: cadastro." - changed
Input schema / properties / status / descriptionPrevious value: -"Status da ordem. Casa por trecho: \"Pendente\", \"Finaliz\". Vale nas visoes: ordens, planos, checklists."New value: +"Status da ordem. Casa por trecho: \"Pendente\", \"Finaliz\". Vale nas visões: ordens, planos, checklists." - changed
Input schema / properties / subtipo / descriptionPrevious value: -"Subtipo do cadastro. \"Frota\" e a frota de maquinas; terceirizados costumam vir com outro subtipo. Vale nas visoes: cadastro."New value: +"Subtipo do cadastro. \"Frota\" é a frota de máquinas; terceirizados costumam vir com outro subtipo. Vale nas visões: cadastro." - changed
Input schema / properties / tipo / descriptionPrevious value: -"Tipo da ordem. Casa por trecho: \"Preventiva\" acha \"Manutencao Preventiva\". Vale nas visoes: ordens."New value: +"Tipo da ordem. Casa por trecho: \"Preventiva\" acha \"Manutencao Preventiva\". Vale nas visões: ordens." - changed
Input schema / properties / tipo_equipamento / descriptionPrevious value: -"Tipo do equipamento. Vale nas visoes: cadastro."New value: +"Tipo do equipamento. Vale nas visões: cadastro." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: cadastro."New value: +"Qual recorte consultar. Padrão: cadastro." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_monitoramento_pragas14 fields changed- changed
Input schema / properties / classificacao / descriptionPrevious value: -"Classificacao da praga. Vale nas visoes: ocorrencias."New value: +"Classificação da praga. Vale nas visões: ocorrencias." - changed
Input schema / properties / cultura / descriptionPrevious value: -"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visoes: levantamentos."New value: +"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: levantamentos." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / praga / descriptionPrevious value: -"Nome da praga. Vale nas visoes: ocorrencias, registros."New value: +"Nome da praga. Vale nas visões: ocorrencias, registros." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: levantamentos, ocorrencias, pontos, fenologia, registros."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia, registros." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: levantamentos, ocorrencias, pontos, fenologia."New value: +"Nome do setor. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: levantamentos, ocorrencias, pontos, fenologia, registros."New value: +"Nome do talhão. Vale nas visões: levantamentos, ocorrencias, pontos, fenologia, registros." - changed
Input schema / properties / tecnico / descriptionPrevious value: -"Quem fez o levantamento. Vale nas visoes: pontos."New value: +"Quem fez o levantamento. Vale nas visões: pontos." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: ocorrencias."New value: +"Qual recorte consultar. Padrão: ocorrencias." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_ordens_servico18 fields changed- changed
Input schema / properties / classe_produto / descriptionPrevious value: -"Classe do produto. Vale nas visoes: insumos."New value: +"Classe do produto. Vale nas visões: insumos." - changed
Input schema / properties / codigo / descriptionPrevious value: -"Codigo da ordem de servico. Vale nas visoes: cabecalho, talhoes, insumos, execucao."New value: +"Código da ordem de serviço. Vale nas visões: cabecalho, talhoes, insumos, execucao." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / equipamento / descriptionPrevious value: -"Equipamento usado. Vale nas visoes: execucao."New value: +"Equipamento usado. Vale nas visões: execucao." - changed
Input schema / properties / equipe / descriptionPrevious value: -"Equipe responsavel. Vale nas visoes: cabecalho."New value: +"Equipe responsável. Vale nas visões: cabecalho." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / operador / descriptionPrevious value: -"Operador. Vale nas visoes: execucao."New value: +"Operador. Vale nas visões: execucao." - changed
Input schema / properties / produto / descriptionPrevious value: -"Nome do produto. Vale nas visoes: insumos."New value: +"Nome do produto. Vale nas visões: insumos." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: cabecalho, talhoes, insumos, execucao."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: cabecalho, talhoes, insumos, execucao." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: talhoes."New value: +"Nome do setor. Vale nas visões: talhoes." - changed
Input schema / properties / status / descriptionPrevious value: -"Status da ordem. Casa por trecho: \"Pendente\", \"Finaliz\". Vale nas visoes: cabecalho, talhoes, insumos."New value: +"Status da ordem. Casa por trecho: \"Pendente\", \"Finaliz\". Vale nas visões: cabecalho, talhoes, insumos." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: talhoes, execucao."New value: +"Nome do talhão. Vale nas visões: talhoes, execucao." - changed
Input schema / properties / tipo_atividade / descriptionPrevious value: -"Tipo de atividade da ordem. Vale nas visoes: cabecalho."New value: +"Tipo de atividade da ordem. Vale nas visões: cabecalho." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: cabecalho."New value: +"Qual recorte consultar. Padrão: cabecalho." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_pos_colheita19 fields changed- changed
Input schema / properties / algodoeira / descriptionPrevious value: -"Algodoeira de destino. Vale nas visoes: coletas."New value: +"Algodoeira de destino. Vale nas visões: coletas." - changed
Input schema / properties / codigo / descriptionPrevious value: -"Codigo do fardo. Vale nas visoes: fardos."New value: +"Código do fardo. Vale nas visões: fardos." - changed
Input schema / properties / comprador / descriptionPrevious value: -"Comprador. Vale nas visoes: saidas."New value: +"Comprador. Vale nas visões: saidas." - changed
Input schema / properties / cultura / descriptionPrevious value: -"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visoes: romaneios, saidas, contratos, fardos_safra."New value: +"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: romaneios, saidas, contratos, fardos_safra." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / entidade / descriptionPrevious value: -"Contraparte do contrato. Vale nas visoes: contratos."New value: +"Contraparte do contrato. Vale nas visões: contratos." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / numero / descriptionPrevious value: -"Numero do romaneio. Vale nas visoes: romaneios, saidas, contratos."New value: +"Número do romaneio. Vale nas visões: romaneios, saidas, contratos." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: romaneios, saidas, contratos, fardos, fardos_safra, coletas."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: romaneios, saidas, contratos, fardos, fardos_safra, coletas." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: romaneios, fardos, coletas."New value: +"Nome do setor. Vale nas visões: romaneios, fardos, coletas." - changed
Input schema / properties / situacao / descriptionPrevious value: -"Situacao do contrato. Vale nas visoes: contratos."New value: +"Situação do contrato. Vale nas visões: contratos." - changed
Input schema / properties / status / descriptionPrevious value: -"Status do fardo. Vale nas visoes: fardos, coletas."New value: +"Status do fardo. Vale nas visões: fardos, coletas." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: romaneios, fardos."New value: +"Nome do talhão. Vale nas visões: romaneios, fardos." - changed
Input schema / properties / variedade / descriptionPrevious value: -"Nome da variedade. Vale nas visoes: fardos."New value: +"Nome da variedade. Vale nas visões: fardos." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: fardos_safra."New value: +"Qual recorte consultar. Padrão: fardos_safra." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
consultar_producao12 fields changed- changed
Input schema / properties / cultura / descriptionPrevious value: -"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visoes: cultura, setor, talhao, variedade."New value: +"Nome da cultura, ex.: \"ALGODAO\", \"SOJA\". Vale nas visões: cultura, setor, talhao, variedade." - changed
Input schema / properties / data_final / descriptionPrevious value: -"Fim do periodo, inclusive, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Fim do período, inclusive, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / data_inicial / descriptionPrevious value: -"Inicio do periodo, em dd/mm/aaaa ou aaaa-mm-dd."New value: +"Início do período, em dd/mm/aaaa ou aaaa-mm-dd." - changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / limite / descriptionPrevious value: -"Maximo de linhas devolvidas. Padrao 100, teto 500."New value: +"Máximo de linhas devolvidas. Padrão 100, teto 500." - changed
Input schema / properties / safra / descriptionPrevious value: -"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponiveis. Vale nas visoes: cultura, setor, talhao, variedade."New value: +"Nome da safra, ex.: \"2025/2026\". Use listar_safras para ver as disponíveis. Vale nas visões: cultura, setor, talhao, variedade." - changed
Input schema / properties / setor / descriptionPrevious value: -"Nome do setor. Vale nas visoes: cultura, setor, talhao, variedade."New value: +"Nome do setor. Vale nas visões: cultura, setor, talhao, variedade." - changed
Input schema / properties / talhao / descriptionPrevious value: -"Nome do talhao. Vale nas visoes: cultura, setor, talhao, variedade."New value: +"Nome do talhão. Vale nas visões: cultura, setor, talhao, variedade." - changed
Input schema / properties / variedade / descriptionPrevious value: -"Nome da variedade. Vale nas visoes: cultura, setor, talhao, variedade."New value: +"Nome da variedade. Vale nas visões: cultura, setor, talhao, variedade." - changed
Input schema / properties / visao / descriptionPrevious value: -"Qual recorte consultar. Padrao: talhao."New value: +"Qual recorte consultar. Padrão: talhao." - changed
Output schema / properties / filtros_ignorados / descriptionPrevious value: -"Filtros que nao existem na visao escolhida e por isso nao foram aplicados."New value: +"Filtros que não existem na visão escolhida e por isso não foram aplicados." - changed
Output schema / properties / truncado / descriptionPrevious value: -"true quando ha mais linhas alem das devolvidas."New value: +"true quando há mais linhas além das devolvidas."
- Changed
lancar_abastecimento1 field changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."
- Changed
lancar_chuva2 fields changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / id_pluviometro / descriptionPrevious value: -"Identificador do pluviômetro, vindo de consultar_chuva (visao pluviometros)."New value: +"Identificador do pluviômetro, vindo de consultar_chuva (visão pluviômetros)."
- Changed
lancar_entrada_nota3 fields changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / itens / items / properties / id_local_estoque / descriptionPrevious value: -"Local de estoque que vai receber. OBRIGATÓRIO para item com destino \"Para estoque\" — sem ele a procedure recusa a nota inteira. Use consultar_estoque, visao \"locais\"."New value: +"Local de estoque que vai receber. OBRIGATÓRIO para item com destino \"Para estoque\" — sem ele a procedure recusa a nota inteira. Use consultar_estoque, visão \"locais\"." - changed
Input schema / properties / tipo / descriptionPrevious value: -"Com nota fiscal exige numero e fornecedor; avulsa exige descricao."New value: +"Com nota fiscal exige número e fornecedor; avulsa exige descrição."
- Changed
lancar_execucao_os1 field changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."
- Changed
lancar_ordem_servico2 fields changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez." - changed
Input schema / properties / talhoes / items / properties / id_talhao_safra / descriptionPrevious value: -"Vínculo talhão×safra (ID_SAFXQUA), vindo de consultar_producao no nível talhao."New value: +"Vínculo talhão×safra (ID_SAFXQUA), vindo de consultar_producao no nível talhão."
- Changed
ler_artigo_ajuda2 fields changed- changed
Input schema / properties / artigo / descriptionPrevious value: -"Slug do artigo, como veio de buscar_ajuda. O endereco do artigo tambem e aceito."New value: +"Slug do artigo, como veio de buscar_ajuda. O endereço do artigo também é aceito." - changed
Output schema / properties / url / descriptionPrevious value: -"Endereco publico do artigo, para citar na resposta."New value: +"Endereço público do artigo, para citar na resposta."
- Changed
listar_fazendas2 fields changed- changed
Output schema / properties / conexao_pode_lancar / descriptionPrevious value: -"Se ESTA conexao foi autorizada a lancar. Falso significa que as tools de lancamento vao recusar, mesmo onde a fazenda permitir."New value: +"Se ESTA conexão foi autorizada a lançar. Falso significa que as tools de lançamento vão recusar, mesmo onde a fazenda permitir." - changed
Output schema / properties / usuario / descriptionPrevious value: -"Nome do usuario upCampo desta conexao."New value: +"Nome do usuário upCampo desta conexão."
- Changed
listar_safras1 field changed- changed
Input schema / properties / fazenda / descriptionPrevious value: -"Nome da fazenda. Omita para usar a fazenda corrente do usuario — e o padrao, e e o que o usuario espera quando nao cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."New value: +"Nome da fazenda. Omita para usar a fazenda corrente do usuário — é o padrão, e é o que o usuário espera quando não cita nenhuma. Informe apenas quando ele nomear outra fazenda. Cada consulta trata de uma fazenda por vez."
17 tool updates
- First observed
buscar_ajuda - First observed
consultar_chuva - First observed
consultar_custos - First observed
consultar_estoque - First observed
consultar_frota - First observed
consultar_monitoramento_pragas - First observed
consultar_ordens_servico - First observed
consultar_pos_colheita - First observed
consultar_producao - First observed
lancar_abastecimento - First observed
lancar_chuva - First observed
lancar_entrada_nota - First observed
lancar_execucao_os - First observed
lancar_ordem_servico - First observed
ler_artigo_ajuda - First observed
listar_fazendas - First observed
listar_safras
Related MCP Connectors
Brazilian foreign trade, crop and commodity data as a remote MCP server. Exports and imports from MDIC/ComexStat since 2000, by HS code (SH4/SH6/NCM) and partner country, in USD FOB and kilograms — plus crop production, supply-and-demand balances, climate readings and production forecasts for hubs such as soybean, coffee, corn, beef and cocoa. Every comparison is like-for-like: two windows of equal length, each labelled with the period it actually measures, and every answer names its window and its source. 15 read-only tools, metered in credits. Nothing to install: Streamable HTTP at https://mcp.kyrodata.com/mcp with a bearer key or OAuth 2.1 (PKCE). Official registry: com.kyrodata/kyrodata.
webPosto ERP (management for gas stations and convenience stores) via session capture with your auth
Conta Azul ERP MCP — sales, customers, finance and NF-e via OAuth 2.0. Read + write, 35 tools.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Related MCP Servers
- AlicenseAqualityAmaintenanceBrazilian foreign trade from MDIC/ComexStat -- exports and imports since 2000 by HS code (SH4/SH6/NCM) and partner country, in USD FOB and kilograms -- plus crop production, supply-and-demand balances, climate readings and commodity forecasts for hubs such as soybean, coffee and beef. 15 read-only tools, remote at https://mcp.kyrodata.com/mcp; official registry com.kyrodata/kyrodata.58151MIT
- AlicenseAqualityCmaintenanceProvides farm and land decision support tools (irrigation advice, frost risk, growing degree days, dry spell status) using free public weather and soil data, without requiring any API keys.711 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access free, open agronomic data for field briefings, spray windows, water balance, pest pressure, and more, using only public data sources without API keys.1MIT
- AlicenseNot gradedqualityCmaintenanceConsolidates your B3 investment portfolio (stocks, FIIs, fixed income, etc.) from all brokerages into one view. Provides read-only tools to check position, dividends, transactions, and more.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.