Saltar al contenido principal

Listagem, filtros e campos

As tools *_list seguem o mesmo contrato e devolvem o mesmo envelope. A paginação é por cursor, não por número de página.

Há exceções: as listagens de catálogo (banking_core_provider_list, banking_financial_provider_list e banking_financial_statement_category_list) não têm argumentos, e as de extrato (banking_financial_statement_transaction_list) e de eventos (banking_data_event_list) não aceitam sort_by.

ArgumentoO que faz
filtersObjeto com os filtros que a listagem declara. Veja abaixo.
sort_byColuna de ordenação, entre as que a listagem aceita
sort_orderasc ou desc. Padrão asc quando há sort_by
limitItens por página. Padrão 25, máximo 100
cursorO meta.next_cursor da página anterior
fieldsOs campos a devolver. Veja abaixo.
{ "name": "banking_charge_bank_billet_list",
"arguments": {
"filters": { "status": ["opened", "overdue"], "expire_at": { "lt": "2026-11-01" } },
"sort_by": "expire_at", "sort_order": "asc", "limit": 50,
"fields": ["amount", "expire_at", "status"] } }

O resultado traz a página e o cursor da próxima:

{
"data": [ { "uid": "6f1c…", "amount": 149.9, "expire_at": "2026-10-20", "status": "overdue" } ],
"meta": { "next_cursor": "eyJfcmFpbHMiOnsi…" }
}

Paginação por cursor​

Para a próxima página, mande o meta.next_cursor como cursor, com os mesmos filters, sort_by e sort_order. next_cursor: null é a última página.

  • O cursor é opaco e selado. Ele é cifrado e autenticado: não dá para ler, editar nem montar um à mão. É uma posição na listagem, não um número de página para fazer conta.
  • O cursor fica preso à consulta que o gerou. Mudar os filtros ou a ordenação e reaproveitar o cursor é recusado com unprocessable. Para mudar a consulta, comece de novo sem cursor.
  • Não há total. A listagem não conta os registros: ela busca uma linha a mais do que o limit para saber se existe próxima página. Contar uma fatia filtrada de uma tabela com dezenas de milhões de linhas custaria mais que a página.

Filtros​

Cada listagem declara os seus filtros, e o inputSchema da tool descreve cada um com o tipo, os operadores e os valores aceitos. A forma do valor escolhe o operador:

ValorSignificadoExemplo
EscalarIgualdade{ "status": "overdue" }
ArrayUm entre vários (in){ "status": ["opened", "overdue"] }
ObjetoOperadores explícitos{ "expire_at": { "gte": "2026-10-01", "lt": "2026-11-01" } }

Os operadores são eq, in, not, gte, lte, gt e lt, e cada filtro aceita só alguns deles. not inclui os registros em que o campo está vazio, porque "diferente de X" os contém.

  • Datas vão em YYYY-MM-DD. Numa coluna de data e hora, uma data vale pelo dia inteiro.
  • Valores em dinheiro vão em reais (149.90).
  • Referências a outro registro vão pelo uid.
  • Filtro ou operador que a listagem não declara é recusado, nunca ignorado. Ignorar devolveria mais registros do que o pedido, com cara de resposta certa.

Ordenação​

sort_by aceita só as colunas que a listagem declara, e a mensagem de erro lista as aceitas. Sem sort_by, os mais recentes vêm primeiro. sort_order sem sort_by é recusado.

Campos (fields)​

As listagens e as tools *_get aceitam fields, um array de nomes de campo. Omitido, volta o registro inteiro; informado, volta só aquilo:

RegraPor quê
uid sempre voltaUma resposta sem uid não serve para a chamada seguinte.
Só o nível de cimaNomear um campo que é objeto devolve o objeto inteiro.
Nome desconhecido é erroA mensagem lista os campos disponíveis. Ignorar devolveria menos campos que o pedido, parecendo que o registro não os tem.

fields é a forma mais barata de reduzir o contexto que um agente gasta: a lista de 100 boletos com três campos cabe onde a mesma lista completa não caberia.

Contrato de dados​

  • Só uid. Argumentos que referenciam um registro se chamam <recurso>_uid (ou <recurso>_uids) e aceitam só UUID. As respostas não trazem id numérico: um campo <recurso>_id sai substituído por <recurso>_uid, ou é omitido quando o registro referenciado não tem uid.
  • Dinheiro em reais, como número (149.9).
  • Datas em YYYY-MM-DD, e data e hora em ISO 8601.