Monday, February 23, 2026

#1120 - YAPO Langflow consuming OIC Tools

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 -

Add the MCP Tools - 


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

Looks good. 

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 - 





File Processing Example


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 - 

I run Read File

Parse Orders JSON

Puts the input into the required format for the next step.

Trigger Batch

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 - 

All have been processed. 

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!







No comments: