Conexões

Uma conexão liga um block ao próximo e define a ordem em que eles executam. Como os blocks passam dados cobre o conceito: quando um block executa, sua saída fica guardada com o nome do block, e qualquer block posterior a lê por referência. Esta página é a referência da sintaxe de tags de conexão e dos formatos de saída que você vai acessar.

Sintaxe das tags

Uma tag de conexão referencia um valor da saída de um block anterior:

<blockName.path.to.data>
  • blockName é o nome do block de origem. Os nomes de blocks são normalizados antes da comparação: ficam em minúsculas e os espaços são removidos. <My Agent.content> e <myagent.content> resolvem para o mesmo block.
  • path.to.data é o caminho até o valor dentro da saída desse block. O caminho do campo diferencia maiúsculas de minúsculas.

A mesma sintaxe de sinais de maior e menor também lê variáveis do workflow (<variable.name>) e o contexto de loop ou parallel (<loop.index>); uma tag de conexão é especificamente o caso de saída de block.

Você raramente digita uma tag à mão. Em qualquer campo de entrada, digite < para abrir um dropdown com os valores disponíveis de blocks anteriores e escolha um, ou arraste um valor de um block conectado direto para o campo.

Campos aninhados e arrays

Encadeie a notação de ponto para entrar em objetos e use índices entre colchetes para arrays. Os dois se combinam em um único caminho:

<agent1.tokens.total>
<api1.data.results[0].id>
<api2.data.users[0].name>

O resolvedor percorre o caminho em tempo de execução e substitui o valor. Vários níveis de indexação, como items[0][1], também funcionam.

Usando tags em texto e em código

As tags são resolvidas em tempo de execução e podem ficar em qualquer lugar de um campo, misturadas com texto estático:

// In text
"The user's name is <userBlock.name>"

// In JSON
{
  "userName": "<userBlock.name>",
  "orderTotal": <apiBlock.data.total>
}

// In a Function block
const greeting = `Hello, ${"<userBlock.name>"}!`
const total = <apiBlock.data.total> * 1.1

Os valores são formatados conforme o contexto. Em um block Function, um valor resolvido se torna um literal de código: strings ficam entre aspas, objetos viram JSON e null continua null, prontos para uso em JavaScript ou Python. Nos outros blocks, objetos são convertidos em JSON e primitivos se tornam strings simples.

Em um contexto numérico, confirme que o valor referenciado é realmente um número. Uma tag que resolve para texto não vai se comportar como número.

Quando um block referenciado não executou no caminho atual — por exemplo, um block em uma ramificação não escolhida — sua tag resolve para um valor vazio. Na maioria dos blocks isso é uma string vazia; em blocks Function, é null.

Saídas de blocks comuns

O caminho de uma tag depende do que o block de origem produziu. Estes são os formatos padrão dos blocks que você vai referenciar com mais frequência. O painel de saída mostra a estrutura real de qualquer block.

{
  "content": "The generated text response",
  "model": "claude-sonnet-4-6",
  "tokens": { "input": 120, "output": 85, "total": 205 },
  "toolCalls": []
}

content é a resposta principal. tokens é um objeto com as contagens de uso. toolCalls lista as ferramentas que o agente chamou, com suas entradas e resultados. Com um formato de resposta configurado, os campos do seu schema aparecem como saídas próprias.

{
  "data": "Response body",
  "status": 200,
  "headers": { "content-type": "application/json" }
}

data é o corpo da resposta e pode ser de qualquer tipo. status é o código de status HTTP. headers guarda os headers da resposta.

{
  "result": "Function return value",
  "stdout": "Console output"
}

result é o que a sua função retornou e pode ser de qualquer tipo. stdout captura tudo o que o código registrou no log.

{
  "conditionResult": true,
  "selectedPath": {
    "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
    "blockType": "agent",
    "blockTitle": "Follow-up Agent"
  },
  "selectedOption": "condition-1"
}

conditionResult é o resultado booleano. selectedPath descreve o próximo block. selectedOption é o ID da condição que combinou.

{
  "content": "Routing decision",
  "model": "claude-sonnet-4-6",
  "tokens": { "input": 120, "output": 85, "total": 205 },
  "selectedPath": {
    "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
    "blockType": "agent",
    "blockTitle": "Customer Service Agent"
  }
}

content é o texto da decisão de roteamento. selectedPath descreve o block de destino escolhido.

{
  "content": "Evaluation summary",
  "model": "claude-sonnet-4-6",
  "tokens": { "input": 120, "output": 85, "total": 205 },
  "metric1": 8.5,
  "metric2": 7.2
}

content resume a avaliação. Cada métrica que você definiu aparece como um campo próprio, com uma nota numérica.

O result de um Function, o data de um API e um Agent com formato de resposta retornam o que o seu código, o serviço remoto ou o seu schema produziu, então consulte o painel de saída durante o desenvolvimento para confirmar o caminho que você está referenciando.

Common Questions

O executor compara cada referência entre sinais de maior e menor com os resolvedores em uma ordem fixa: contexto de loop e parallel, depois variáveis do workflow, depois saídas de blocks. O primeiro resolvedor que reconhece a referência a trata, e uma referência sem correspondência fica no lugar, sem substituição.
Os nomes são normalizados antes da comparação — em minúsculas e sem espaços — então <My Agent.content> e <myagent.content> resolvem para o mesmo block. O caminho do campo depois do nome do block diferencia maiúsculas de minúsculas.
Não. Variáveis de ambiente usam a sintaxe de chaves duplas, {{MY_VAR}}, e são resolvidas separadamente. Os sinais de maior e menor leem saídas de blocks, variáveis do workflow e contexto de loop ou parallel. Consulte a referência de variáveis para as duas sintaxes.
Se o block estava em uma ramificação que não foi seguida, a referência resolve para um valor vazio — uma string vazia na maioria dos blocks, null em blocks Function. Consulte a aba Input do block que falhou nos Logs para ver o que a referência realmente resolveu.
Sim. Use índices entre colchetes no caminho, como <api1.data.users[0].name>. Vários níveis de indexação, como items[0][1], também funcionam.
Blocks Function recebem os valores resolvidos como literais de código — strings entre aspas, objetos como JSON, null como null — para que possam ser usados direto em JavaScript ou Python. Nos outros blocks, objetos são convertidos em JSON e primitivos se tornam strings simples.

Próximos passos