Saltar al contenido principal

Resources e prompts

Além das tools, o servidor oferece três coisas que o cliente usa por conta própria: resources (registros que você anexa à conversa), prompts (roteiros prontos que você escolhe) e completions (autocomplete dos argumentos dos dois). Na era 2026-07-28, ele também pede confirmação antes de rodar uma tool destrutiva.

Nada disso abre um caminho novo até os seus dados: tudo passa pelas mesmas barreiras das tools, com o mesmo escopo do token e as mesmas permissões.

Resources​

Um resource é um registro identificado por uma URI. Você escolhe, por exemplo, um boleto, e o cliente lê o registro e o põe no contexto sem que o modelo precise chamar uma tool. As URIs seguem a forma kobana://banking/<família>/<recurso>/{uid}.

  • Permissões. Cada resource é lido pela tool de leitura correspondente: kobana://banking/charge/bank_billets/{uid} é banking_charge_bank_billet_get. Ele só aparece em resources/templates/list, e só é lido, se você pode rodar essa tool.
  • resources/list traz as URIs dos 20 registros mais recentes de cada tipo que você pode listar e ler. Alguns tipos, como os eventos, ficam fora dessa lista e só são lidos pela URI.
  • Formato. O conteúdo é o JSON do registro, no mesmo formato da API, sem id numérico.
  • Não encontrado. URI desconhecida, ou registro que não existe nesta conta, é -32002 nas versões de 2025 e -32602 na 2026-07-28. Um template que você não pode ler responde com a recusa (insufficient_scope, insufficient_permission), não com "não encontrado".
  • Sem assinatura de mudanças. O servidor é stateless: não há resources/subscribe nem aviso de lista alterada.
Os 60 templates de resource
URIO que éLido pela tool
kobana://banking/charge/bank_billets/{uid}Charge bank billetbanking_charge_bank_billet_get
kobana://banking/charge/pix/{uid}Charge Pixbanking_charge_pix_get
kobana://banking/charge/bank_billet_accounts/{uid}Charge bank billet accountbanking_charge_bank_billet_account_get
kobana://banking/charge/bank_billet_payments/{uid}Charge bank billet paymentbanking_charge_bank_billet_payment_get
kobana://banking/charge/bank_billet_registrations/{uid}Charge bank billet registrationbanking_charge_bank_billet_registration_get
kobana://banking/charge/bank_billet_remittances/{uid}Charge bank billet remittancebanking_charge_bank_billet_remittance_get
kobana://banking/charge/bank_billet_discharges/{uid}Charge bank billet dischargebanking_charge_bank_billet_discharge_get
kobana://banking/charge/customer_subscriptions/{uid}Charge customer subscriptionbanking_charge_customer_subscription_get
kobana://banking/charge/discharges/{uid}Charge dischargebanking_charge_discharge_get
kobana://banking/charge/installments/{uid}Charge installment planbanking_charge_installment_get
kobana://banking/charge/payments/{uid}Charge paymentbanking_charge_payment_get
kobana://banking/charge/pix_accounts/{uid}Charge Pix accountbanking_charge_pix_account_get
kobana://banking/charge/remittances/{uid}Charge remittancebanking_charge_remittance_get
kobana://banking/charge/automatic_pix/accounts/{uid}Charge Pix Automático accountbanking_charge_automatic_pix_account_get
kobana://banking/charge/automatic_pix/locations/{uid}Charge Pix Automático locationbanking_charge_automatic_pix_location_get
kobana://banking/charge/automatic_pix/pix/{uid}Charge Pix Automático chargebanking_charge_automatic_pix_pix_get
kobana://banking/charge/automatic_pix/recurrences/{uid}Charge Pix Automático recurrencebanking_charge_automatic_pix_recurrence_get
kobana://banking/charge/automatic_pix/requests/{uid}Charge Pix Automático requestbanking_charge_automatic_pix_request_get
kobana://banking/payment/payments/{uid}Paymentbanking_payment_payment_get
kobana://banking/payment/bank_billets/{uid}Bank billet paymentbanking_payment_bank_billet_get
kobana://banking/payment/pix/{uid}Pix paymentbanking_payment_pix_get
kobana://banking/payment/batches/{uid}Payment batchbanking_payment_batch_get
kobana://banking/payment/payment_accounts/{uid}Payment accountbanking_payment_payment_account_get
kobana://banking/payment/darfs/{uid}DARF paymentbanking_payment_darf_get
kobana://banking/payment/taxes/{uid}Tax paymentbanking_payment_tax_get
kobana://banking/payment/utilities/{uid}Utility paymentbanking_payment_utility_get
kobana://banking/payment/dda_accounts/{uid}DDA accountbanking_payment_dda_account_get
kobana://banking/payment/dda_bank_billets/{uid}DDA bank billetbanking_payment_dda_bank_billet_get
kobana://banking/transfer/transfers/{uid}Transferbanking_transfer_transfer_get
kobana://banking/transfer/ted/{uid}TED transferbanking_transfer_ted_get
kobana://banking/transfer/pix/{uid}Pix transferbanking_transfer_pix_get
kobana://banking/transfer/internal/{uid}Internal transferbanking_transfer_internal_get
kobana://banking/transfer/batches/{uid}Transfer batchbanking_transfer_batch_get
kobana://banking/transfer/transfer_accounts/{uid}Transfer accountbanking_transfer_transfer_account_get
kobana://banking/financial/accounts/{uid}Financial accountbanking_financial_account_get
kobana://banking/financial/balances/{uid}Financial account balancebanking_financial_balance_get
kobana://banking/financial/statement_transaction_imports/{uid}Statement importbanking_financial_statement_transaction_import_get
kobana://banking/financial/statement_transaction_syncs/{uid}Statement syncbanking_financial_statement_transaction_sync_get
kobana://banking/data/customers/{uid}Customerbanking_data_customer_get
kobana://banking/data/people/{uid}Personbanking_data_person_get
kobana://banking/data/events/{uid}Eventbanking_data_event_get
kobana://banking/data/imports/{uid}Importbanking_data_import_get
kobana://banking/data/email_deliveries/{uid}E-mail deliverybanking_data_email_delivery_get
kobana://banking/data/webhooks/{uid}Webhookbanking_data_webhook_get
kobana://banking/data/bank_billet_queries/{uid}Bank billet querybanking_data_bank_billet_query_get
kobana://banking/automation/email_accounts/{uid}E-mail accountbanking_automation_email_account_get
kobana://banking/admin/commands/{uid}Commandbanking_admin_command_get
kobana://banking/admin/connections/{uid}Bank connectionbanking_admin_connection_get
kobana://banking/admin/subaccounts/{uid}Subaccountbanking_admin_subaccount_get
kobana://banking/admin/transactions/{uid}Billing transactionbanking_admin_transaction_get
kobana://banking/edi/edi_boxes/{uid}EDI boxbanking_edi_edi_box_get
kobana://banking/remittance/payments/{uid}Payment remittancebanking_remittance_payment_get
kobana://banking/data/pix_qrcode_queries/{uid}Pix QR code querybanking_data_pix_qrcode_query_get
kobana://banking/mailbox/entries/{uid}Mailbox entrybanking_mailbox_entry_get
kobana://banking/mailbox/files/{uid}Mailbox filebanking_mailbox_file_get
kobana://banking/mailbox/channels/email/{uid}Mailbox e-mail channelbanking_mailbox_channels_email_get
kobana://banking/mailbox/channels/s3/{uid}Mailbox S3 channelbanking_mailbox_channels_s3_get
kobana://banking/mailbox/channels/sftp/{uid}Mailbox SFTP channelbanking_mailbox_channels_sftp_get
kobana://banking/mailbox/channels/syncthing/{uid}Mailbox Syncthing channelbanking_mailbox_channels_syncthing_get
kobana://banking/mailbox/channels/whatsapp/{uid}Mailbox WhatsApp channelbanking_mailbox_channels_whatsapp_get

Prompts​

Um prompt é uma instrução pronta que você escolhe no cliente e que vira a primeira mensagem da conversa. Ele só aparece se você pode rodar todas as tools em que se apoia.

PromptArgumentosO que fazEscreve?
banking_charge_overdue_bank_billets_reviewdue_before (opcional, YYYY-MM-DD; padrão, hoje)Lista os boletos vencidos e não pagos e resume por pagadorNão
banking_charge_explain_bank_billetbank_billet_uidExplica a situação de um boleto, o registro no banco, os pagamentos e o que ainda dá para fazer com eleNão
banking_charge_collect_overdue_bank_billetsdue_before (opcional)Mostra os boletos vencidos e envia lembrete por e-mail aos pagadores que você escolher, depois de perguntarSim

O roteiro entrega datas já calculadas, nunca "antes de hoje". Argumento obrigatório ausente, ou data fora de YYYY-MM-DD, é -32602. Pedir pelo nome um prompt que você não pode usar também é -32602.

Completions​

completion/complete sugere valores enquanto você digita um argumento:

ArgumentoSugestões
bank_billet_uid (prompt) e o {uid} de um template de resourceOs uids dos 100 boletos mais recentes que começam com o que você digitou, se você pode listar boletos. Hoje a sugestão é de boletos em qualquer template
due_before (prompt)Hoje e o primeiro dia de cada um dos últimos 12 meses
qualquer outro argumentoLista vazia

As sugestões vêm dos registros mais recentes, e não de uma busca por texto, porque prefixo de identificador não é uma consulta barata nas tabelas de boleto.

Confirmação de tools destrutivas​

São marcadas com destructiveHint, entre outras:

  • as tools que cancelam, protestam, dão baixa, registram pagamento, pagam, transferem, aprovam, tiram da remessa ou excluem;
  • as que mudam para onde dado ou dinheiro sai da conta: criar ou alterar webhook, canal da caixa postal (e-mail, WhatsApp, Syncthing, S3, SFTP), conta financeira (os dados bancários), conta Pix (a chave), conta de e-mail (o endereço de resposta), conta DDA e caixa EDI (quem assina a carta), e os dados de um favorecido salvo;
  • a criação de subconta, que pode criar um usuário master para o e-mail informado.

A marca de cada tool está no catálogo, na coluna Tipo. Nem todo envio é destrutivo: mandar um boleto ao pagador por e-mail ou SMS (banking_charge_bank_billet_send_email, banking_charge_bank_billet_send_sms) não é.

O critério da segunda e da terceira lista é que um endereço plantado num dado que o agente leu não chegue a terceiro sem você ver.

Na era 2026-07-28, o servidor pergunta​

Com um cliente que declara suporte a formulário de elicitation (clientCapabilities.elicitation), o servidor pede a confirmação, sem depender do cliente:

  1. O primeiro tools/call não roda nada. Ele volta resultType: "input_required" com uma pergunta de sim ou não, que mostra a tool e os argumentos que o modelo escolheu.
  2. O cliente mostra a pergunta e reenvia a mesma chamada com a sua resposta.
  3. Só um sim explícito executa. Recusar ou cancelar volta um resultado isError com user_declined, e nada muda.

A confirmação vale só para aquela chamada: a mesma tool, os mesmos argumentos, a mesma pessoa e a mesma conta, por 5 minutos. E ela é de uso único: reenviar uma chamada já confirmada, como faz um cliente que tenta de novo depois de um timeout, não roda a tool de novo. Você é perguntado outra vez, com o aviso de que aquela aprovação já foi usada e pode já ter executado a ação.

Nas versões de 2025, quem pergunta é o cliente​

Nas versões de 2025 do protocolo, ou com um cliente que não declara formulário de elicitation, o servidor não tem como perguntar no meio da chamada: a tool roda direto. Vale a confirmação que o próprio cliente pede ao ver o destructiveHint, e um cliente pode não pedir nenhuma: um script seu, por exemplo. Use cliente na revisão 2026-07-28 com elicitation, ou um token só de leitura, quando quiser a garantia do lado do servidor.