Skip to main content
The External AI agent node connects to your flow an AI agent that already lives outside Jelou. Jelou keeps the channel, security and the log of every turn; your agent decides the reply.

How to add the node

Both kinds of AI agent are added from the same entry point: the AI Agent item in the builder’s toolbar. Its behavior changes depending on how you use it:
  • Click: adds a normal AI Agent node: Jelou’s own AI agent.
  • Hover: opens a selector of external AI agent providers. Picking a provider adds an External AI agent node preconfigured for that provider.
External AI agent selector that appears when hovering over the AI Agent toolbar item
Once added, the External AI agent node connects to the rest of your flow through its four outputs, same as any other node:
External AI agent node in a flow, connected by its four outputs to an answer message, a question, a handoff to a human and an apology message

AI Agent or external AI agent

Choose based on where the agent lives. To build one inside Jelou, use the AI Agent node (general guide).

Available providers

Each provider asks for its own fields, taken directly from its console, and validates them as you type. Credentials are selected by the name of the organization secret that stores them; the secret’s value is never shown or saved in the flow.
AWS now lists Amazon Bedrock Agents as “Agents Classic” and recommends AgentCore for new agents. With Amazon Bedrock AgentCore in HTTP mode, Jelou sends its full turn body (see the contract), so your handler must read it; in A2A mode the runtime can publish an A2A 1.0 or 0.3 Agent Card (0.3 is what runtimes built with the AgentCore SDK’s default extra publish).

Provider behavior

These details explain which output the node takes in the cases each provider handles in its own way. Remember that Needs more information only exists in one task; in several turns the node delivers the message and waits for the user.
  • Amazon Bedrock Agents: if the agent asks for a return-of-control action, the node takes Needs more information. The result of that action travels to the agent on the next turn, together with the invocation identifier, and the agent continues. Only one action per turn is supported; if the agent asks for several at once, the turn fails.
  • Amazon Bedrock AgentCore: in A2A mode, both 1.0 and 0.3 Agent Cards are accepted. The endpoint qualifier applies to the Agent Card and to the calls, and Jelou keeps the same runtime session identifier for the whole conversation so that turns reach the same session. In HTTP mode, if the runtime reports an error inside the response itself (error, error_type and message), the turn fails with that reason.
  • Claude Managed Agents: Jelou reads the session by streaming until the agent goes idle. If the agent stops waiting for a tool result, the node takes Needs more information. If the agent runs out of retries, the turn fails and can be retried; if it reaches its budget or the model refuses to answer, it fails with no retry; if the session terminates, it fails because the agent is no longer active. A transient error that the agent itself is retrying does not cut the turn short. A pinned agent version is an integer from 1 up.
  • Salesforce Agentforce: each message is interpreted by its type. Inform is text for the user. Inquire and Confirm are also delivered as text and, in one task, the node takes Needs more information. Escalate takes Hand off to an operator, SessionEnded ends the conversation, and Failure or Error fail the turn with the reason Salesforce reports, with no retry.
  • LangGraph Platform: if the graph stops on an interrupt, the node takes Needs more information and your reply resumes the graph. When several interrupts are pending at once, Jelou resumes the first one by its ID. An error the graph returns inside a successful response fails the turn with its reason.
  • Microsoft Copilot Studio: Jelou delivers only the bot’s activities and drops the echo of the user’s own message.
  • Azure AI Foundry: if the response arrives as failed, cancelled or incomplete, or with an error even though the HTTP status is 200, the turn fails with the reason Foundry reports. A response cut short by the content filter is treated as rejected and is not retried; a rate_limit_exceeded or server_error error is retried. With the classic API, the reason comes from the run’s last_error field.

OpenAI Agents (beta)

The OpenAI Agents (beta) provider connects an agent saved on the OpenAI platform through its Agents API, which is in beta. It is different from OpenAI Responses API (saved prompt), which uses a reusable prompt (pmpt_...) that OpenAI stops offering on November 30, 2026; for new agents, use OpenAI Agents.
Connection tab of the External AI agent node with the OpenAI Agents (beta) type, the agent ID, the environment, the organization, the project and the base URL
Authentication: Bearer token. Choose the organization secret that holds your OpenAI API key; the key must belong to the project that owns the agent. A restricted key needs the api.agents.read and api.agents.write permissions. How a turn works:
  1. Jelou creates a session with the saved agent and sends it the message.
  2. It polls the turn until it finishes, within the turn timeout, and delivers the text of the agent’s final answer.
  3. In one task, the session is deleted when it ends. In several turns, Jelou keeps the session and sends each user message as a new message in it.
Special cases:
  • If the agent calls a function on your side, in one task the node takes Needs more information, and your result goes back to the agent as the tool result.
  • If the agent asks for a computer-use approval or an environment reconnection, the turn fails as rejected with a readable message, because a chat cannot answer it.
  • If the turn does not finish within the timeout, the node takes Something went wrong and Jelou tries to cancel the turn.
  • OpenAI usage, spend and billing limits and policies fail the turn with no retry; an overload or a rate limit is retried.

Node tabs

The node panel has four tabs and, if your company has event metrics enabled, a fifth one, Events:
  • Connection: the connection type, the URL or the provider’s fields, the fixed headers, the Instruction sent to the agent ({{$message.text}} by default), the Data you send and the Interaction (one task or several turns).
  • Authentication: the authentication type, the organization secret, the mTLS certificate and HMAC signing.
  • Transform: the pre-request and post-response scripts and, depending on the provider, the shape of the request and the response.
  • Advanced: the response variable, the turn timeout, the attempts and, in several turns, the session inactivity and the reset command.
Connection tab of the External AI agent node with the connection type, the agent URL, the fixed headers, the instruction, the data you send and the interaction
The Test connection button is at the bottom of every tab.

Events and evaluation conditions

The Events tab has the same two sections as the AI Agent: Event configuration and Evaluation conditions. It only appears if your company has event metrics enabled. Evaluation conditions measure the outcome of the conversation with the external agent. You define with a prompt what must happen; when the conversation ends successfully, Jelou analyzes the history (what the user said and what the agent answered) against every active condition. For each condition that is met, an event with its name is fired, ready to analyze in Metrics.
  • One task: the conversation is evaluated when the agent completes the task.
  • Several turns: it is evaluated when the agent ends the conversation, with every turn from the start.
  • If the turn fails, nothing is evaluated.
  • A node without active conditions behaves exactly as before and stores no conversation for evaluation.
The fields, the limits (up to 10 conditions per node) and each condition’s toggle work as in the AI Agent. The evaluation uses the platform’s default model and is billed like AI Agent evaluations. See the AI Agent evaluation conditions guide See the full node events guide

One task or several turns

When you configure the node, you choose how it interacts with your agent:
  • One task: the node sends the task once, receives the answer and exits the node.
  • Several turns: the node keeps the conversation going with the agent, message by message, until the agent ends it or hands it off. While the agent answers without ending the conversation, the node doesn’t take any output: it delivers the messages to the user and waits for their next message to continue with the agent.
External AI agent node configuration with the Several turns interaction selected

Example: one task

The node receives the answer, delivers it to the user and exits through Answered. There’s no second round with the agent: any later message from the user no longer goes through this node.

Example: several turns

The node stays active between the first and second messages: it doesn’t take any output until the agent ends the conversation. Only then does it exit through Answered.

Node outputs

The External AI agent node has four outputs:
Comparison of two External AI agent nodes, one configured over A2A and one over HTTP (Jelou turn contract), showing the same four outputs
Connect each output to whatever should happen in your flow. A typical pattern:
  • Answered → the agent’s message was already delivered; continue the flow or end it.
  • Needs more information → a question node that collects the missing piece and calls the agent again.
  • Hand off to an operator → your handoff node to the Inbox.
  • Something went wrong → an apology message and, if it applies, a retry or a handoff to an operator.

The response variable

The agent’s message is delivered to the user directly. The structured data the agent returns, for example with a variables_set signal or through custom HTTP’s data path, is stored in the flow’s memory under the variable you set in the Save response card of the Advanced tab (agentReply by default; on the canvas it shows as “Save the response to”). You can then read each field in later nodes, for example {{$memory.agentReply.ticket}} in a message node or a condition. If you don’t need that data in the flow, turn off the Save response switch: the node writes nothing to memory, the agent’s message is still delivered and the outputs work the same. Existing nodes keep the switch on. If the agent returns no structured data, the variable stays empty: the text of the answer is not stored there.

Authentication and organization secrets

Each provider supports one or more credential schemes, depending on what its API accepts: In every case, the node only stores the organization secret’s name, never its value. The secret is resolved at call time and is never shown or saved in the flow.

Advanced options for custom HTTP

When your agent uses HTTP (Jelou turn contract) or custom HTTP, you have additional options. They are set up in the Connection (fixed headers), Authentication (OAuth, mTLS certificate and HMAC signing), Transform (scripts) and Advanced (retries and time limit) tabs:
Authentication tab of the External AI agent node with the authentication type, the secret, the mTLS certificate and HMAC signing
Advanced tab of the External AI agent node with the response variable, the turn timeout, the attempts, the session inactivity and the reset command
HMAC signing, static headers and mTLS are available without a special plan (for mTLS, first register a client certificate in Jelou). Pre and post scripts depend on an option Jelou enables per company: if the Transform tab shows they are unavailable, ask your Jelou account executive to enable them.

HMAC signing: what’s signed and how to verify it

When you turn on request signing, Jelou computes an HMAC-SHA256 over the exact request body (the same bytes sent) using the secret you choose, and sends it in a header: Your own server can verify the signature like this (Node.js, body-only variant):
Always verify against the request’s raw body, before your framework parses it into JSON. Re-serializing the parsed JSON can change property order or spacing and make the signature not match even though the content is the same.
The Instruction field (Connection tab) accepts variables. To send the user’s message to the agent, use {{$message.text}}: it holds the text of the message that reached the flow. {{$input.message}} is not a message variable: $input only holds the data your flow collected (for example, with an Input node), so it comes out empty when the node runs from a chat message.

Pre-request and post-response scripts

Scripts run in the same secure environment (sandbox) the API node uses. They are set up in the node’s Transform tab, in two sub-tabs: Jelou → Your agent (pre-request script) and Your agent → Jelou (post-response script). What each script can change depends on the provider: In every case, an empty or unchanged text keeps the original, and a script error fails the turn.
Transform tab of the External AI agent node with the Jelou → Your agent and Your agent → Jelou sub-tabs and the pre-request script editor
Pre-request script with HTTP providers: $context.get("agentRequest") contains { task, sessionId, body, headers }. For example, to wrap the body in your company’s own envelope:
Post-response script with HTTP providers: $context.get("agentResponse") contains { status, body }. The script must leave in agentResponse.body the object the response mapping then reads (the textPath, dataPath, sessionIdPath, etc. paths).
A script error fails the turn through the node’s Something went wrong output. Script changes never touch the flow’s own variables: they only modify what Jelou sends or reads for this call.

Reply later (acknowledges, replies later)

Some external agents don’t answer inside the same call: they acknowledge that they received the message and send their answer later, on their own. For that case, the External AI agent node has an optional mode. It is off by default, so an existing node behaves exactly as before. The How the agent replies field appears on the Transform tab, in the Your agent → Jelou sub-tab, when the connection type is HTTP (Jelou turn contract) or Custom HTTP and the interaction is Several turns. It has two options:
  • In the same response (default): the agent answers inside the same call, as before.
  • Acknowledges, replies later: the agent acknowledges with any 2xx response. Jelou delivers nothing from the acknowledgement body and leaves the node waiting for the user’s next message, with the same session inactivity time. That message is forwarded to the agent within the same execution.
Your agent → Jelou sub-tab of the External AI agent node with How the agent replies set to Acknowledges, replies later, the failure output notice and the field that ends the conversation
With Custom HTTP, the Reply text path is no longer required in this mode, because no text from the body is delivered.

When the conversation ends

In the same sub-tab, these two optional fields appear only in this mode:
  • Field that ends the conversation: the path of the field in the acknowledgement body, for example status, data.state or items[0].s (up to 200 characters).
  • Values that end the conversation: 1 to 20 distinct values, separated by commas. It accepts text, integers and true or false. When the field holds one of them, the conversation ends and the flow continues through the Answered output.

Outputs you must connect

  • Always connect the Something went wrong output: it is the one the node takes when the wait expires without the user writing. Without that connection you can’t publish the flow.
  • Connect the Answered output only if you defined the field that ends the conversation. Without those fields it isn’t used.
  • The Hand off to an operator output is not required.
The node shows a warning on the canvas while a needed connection is missing.
When the wait expires, the flow continues through Something went wrong and Jelou sends the user no message. Connect that output to a silent End, with no error message.

Do not reply after the time limit

If your agent acknowledges late and the node has already timed out, the flow follows Something went wrong and may send its fallback message. If your agent still posts its reply afterwards, the user receives both. Jelou cannot recall a message your agent already sent through the send API, so the rule is on the agent side: do not send the reply once the turn limit has passed. How you learn when it expires depends on how your agent is connected:
  • With Custom HTTP, the pre-request script (Transform tab) receives agentRequest.turn with turnId, inputId, deadlineMs and expiresAt (absolute time in ISO format). Pass it in the body so your agent can see it:
Your agent compares the current time with reply_by before sending and drops the reply if it has passed. Nodes whose script does not read turn behave exactly as before.
  • With HTTP (Jelou turn contract), the request body already carries turnId, inputId and deadlineMs. deadlineMs is the number of milliseconds the node waits from the moment it sends the request, not an absolute time: work out the limit by adding it to the time your agent receives the message.

Actions: the agent picks the output

With multi-turn Custom HTTP, or HTTP (Jelou turn contract) in Acknowledges, replies later mode, your agent can decide where the flow goes next. In the Your agent → Jelou sub-tab of the Transform tab, the Actions (extra outputs) section lets you declare up to 12 actions, for example login or execute_loan. Each action adds its own output to the node, Action: login, Action: execute_loan, and the flow continues through it in the same execution, without waiting for the user.
  • Action name: lowercase letters, numbers and underscores, up to 32 characters, no repeats.
  • Field with the action name: the path in your agent’s reply that carries the name. Defaults to action.
  • Field with the action’s data (optional): the path of a value you want to use in the branch. It is saved next to the name in the response variable as actionData.
For example, with the path result.action and the data path result.data, this reply from your agent takes the Action: execute_loan output:
In the branch, the response variable holds action with the name and actionData with { "amount": 1500 }.
  • An empty or missing field is not an action: the turn continues as usual.
  • A name that is not on the list fails the turn and the flow continues through Something went wrong.
  • Connect every action to a node: the node shows a warning on the canvas until you do. If you remove an action, its connections are removed too.
  • When the branch ends and returns to the node, the node waits for the user’s next message and forwards it to the agent in the same execution.

Non-text messages

When the user sends an image, audio, a document, a WhatsApp Flow response, a button, a list or a location, the agent no longer receives an empty task. The task arrives as [type] caption (or just [type]), and the request includes an input.inbound object with the type, text, caption, file type and message id. Sensitive data is not sent by default. On the Connection tab, the Data you send field lets you choose which to add:
  • File URL
  • Button or list reply
  • WhatsApp Flow response
  • Location
Check only what your agent needs: they can contain personal information. This applies to any connection type. Plain text and titled buttons are sent exactly as before.
Data you send field open on the Connection tab of the External AI agent node, with the File URL, Button or list reply, WhatsApp Flow response and Location options

Signature prefix

Some agents expect the HMAC signature with text in front of it, for example sha256= followed by the value. On the Authentication tab, under Sign requests, the Signature prefix (e.g. sha256=) field adds that literal text before the signature value. It accepts 1 to 32 characters: letters, digits and _ = . : / + -; spaces and templates are not allowed. The timestamp header is never prefixed. It applies to HTTP (Jelou turn contract) and Custom HTTP, and on every retry.

OAuth2 token over mTLS

If your agent uses OAuth2 client credentials and requires the client certificate to request the token too, on the Authentication tab, choose an mTLS certificate and turn on Also request the token with the mTLS certificate. The token request goes over the same certificate as the agent call. The token URL must still be https. The switch appears only with that authentication and a chosen certificate; if you remove the certificate, it turns off. When off, the token is requested as usual.

The Jelou turn contract

When you pick HTTP (Jelou turn contract), your server receives and answers with a fixed shape Jelou already knows how to read, with no path mapping. Jelou sends a POST with the turn (turnId, input.parts, conversation, user, deadlineMs, interaction…) and your agent answers with status, outputs and, when needed, signals. The field-by-field description, with examples you can copy, is in External AI agent: what your agent receives and returns.
On the second turn of the same conversation, the agent already has the order number and closes the conversation with the conversation_ended signal:
Agent's second response
What the agent returns decides the node’s output:
The response is strict: the names must be exactly status and outputs. Jelou rejects aliases such as output, messages, result or turnStatus, and the error message says which field to fix.
If your agent doesn’t speak this contract, use custom HTTP: there you define the shape of the body that gets sent and the paths where Jelou should read the answer text, the structured data and the session id, in the node’s Transform tab.

Test connection

Before publishing your flow, use the Test connection button at the bottom of any tab of the node to check that everything is configured correctly, without waiting for a real user to trigger the node. The test runs a chain of checks, stopping at the first one that fails: If every check passes, you see a confirmation:
Test connection result when every check passes, with the message 'Connection OK'
If one fails, Jelou tells you which one and why, so you can fix the configuration before publishing. For example, when the agent rejects the credential:
Test connection result when a check fails, with the detail of what failed and why

Security

  • Credentials never leave your organization’s secrets. The node only stores the secret’s name; its value is never shown or saved in the flow.
  • HTTPS only. Jelou doesn’t call internal or private addresses.
  • Your agent’s answers go through Jelou’s same security checks as an AI Agent’s answers, before they reach the user: they’re screened like any other outbound message, with nothing extra to configure on the node.

Troubleshooting

Check Test connection first: it almost always points to whether the problem is the certificate, the secret, the token or the agent itself. The most common causes are an expired or revoked credential, a URL that stopped responding, or an agent answer that isn’t valid JSON or is missing the field expected at the configured path.
The node waits at most the configured turn timeout (25 seconds by default, up to 120 as a maximum). If your agent needs more time, raise the limit in the Advanced tab; if the agent fails intermittently, check retries: they only apply to timeouts, rate limits (HTTP 429) and server errors (5xx), never a request the agent explicitly rejected.
Always verify against the request’s raw body, before parsing the JSON (see the HMAC signing section above). Also confirm you’re using the same secret, the same encoding (hexadecimal or Base64), and, if you turned on timestamp.body, that you’re signing "{timestamp}.{body}" and not just the body.
That’s expected: that output only exists in one task mode. In several turns, when the agent needs an extra piece of information it simply asks for it as a normal message and the node keeps waiting for the user’s reply, without taking any output.

Availability

The External AI agent node is available in every project.

AI Agent node

General configuration of the AI Agent node.