Introduction
First the acronym - YAPO - Yet Another Post On.
Think of this post as notes for myself on getting a compelling OIC Agent Tools demo together.
However, it may also be interesting for you.
Let's begin - I've installed Rancher on my windows laptop. Then Langflow -
docker cmd is - docker run -p 7860:7860 langflowai/langflow:latest
This may pull the latest langflow, so, to avoid this you can use -
docker run -p 7860:7860 --pull=never langflowai/langflow:latest
Note the image is ephemeral, i.e. wiped, once you quit Rancher, so you may want to configure persistent storage.
But back in Langflow, start with a blank flow -
Check out the components -
Add an Agent, and enter your OpenAI API Key and choose a model -
I am basing this agent on the one I already created in OIC. Check out my previous posts for intel on that.
I copy the role and guidelines to the
Agent Instructions field -
Here is the connect data for the MCP Server -
{
"mcpServers": {
"myOICOrderProcessingToolkit": {
"disabled": true,
"timeout": 300,
"type": "stdio",
"command": "npx",
"args": [
"-y",
"supergateway",
"--streamableHttp",
"yourOICMCPURL",
"--oauth2Bearer",
"yourOAuthToken"
]
}
}
}
Add MCP Server - and test a tool -
Connect
MCP Tools to
Agent -
Add
Chat Input and connect to
Prompt -
Add
Chat Output -
Then test in
Playground -
Btw. MCP Server settings can be edited here -
You see mine is marked as
Error -
The token is no longer valid, so I need to replace it.
Reload the page, and we're back in business -
Click here to select/de-select tools -
So much for the simple example - now let's look at something more complex. I have a post about the OIC AI Agent native action, in which I describe the following scenario - read orders from a file, then, invoke the AI Agent for each order. This we will now prototype in Langflow -
Here is the finished flow -
This may seem complex, but it isn't. I'll start from left to right -
Read File
The file I read is as follows -
[
{
"orderNr": "1",
"customer": "NiallC",
"product": "iCar",
"unitPrice": 4899,
"quantity": 2,
"email": "xxx@gmail.com"
},
{
"orderNr": "2",
"customer": "RenateC",
"product": "iBike",
"unitPrice": 499,
"quantity": 2,
"email": "xxx@gmail.com"
},
{
"orderNr": "3",
"customer": "LuciaC",
"product": "iSpy",
"unitPrice": 123,
"quantity": 2,
"email": "xxx@gmail.com"
}
]
I select this file -
Puts the input into the required format for the next step.
This step receives the parsed input and will invoke the agent in "batch" mode.
Orders - DataFrame
This is the next step, putting the input into the required format for the Loop, which is our iterator -
Loop
The loop is connected as follows -
Format each order into a message, via
Order Row - Message, the output from the latter is the input to the
Agent.
Note the loop back from Agent response to the Loop.
Finally, when the 3 orders have been processed, the Loop is done. Then the output is pushed to Chat Output.
We now just need a
Chat Input to kick this off -
Let's run it in
Playground -
I check in OIC, my tools provider -
I now export the flow - by export/import the MCP server settings, LLM api key, Read File settings are wiped.
Ping me, if you want a copy.
I can also invoke the flow via an api call -
Here's an extract from the postman response -
"results":
{"message":
{"text_key": "text",
"data": {
"timestamp": "2026-02-23 16:07:46 UTC",
"sender": "Machine",
"sender_name": "AI",
"session_id": "YOUR_SESSION_ID_HERE",
"context_id": "",
"text": "...Dear NiallC, I regret to
inform you that the product iCar is currently out of stock. We apologize for the inconvenience and appreciate your understanding.
Your order cannot be processed at this time due to the product's unavailability.
If you have any other requests or need assistance, please let me know.
The order with order number 2 for customer RenateC for the product iBike priced at
499 has been successfully created in the SAP system with order number SAP-1234567.
The customer has been notified via email.
...
Summa Summarum
I used chatGPT to generate most of the flow. Even it has issues with conflicting data types, apparently LangFlow is somewhat idiosyncratic in this respect. Net, net - we got there in the end!