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!







Sunday, February 15, 2026

#1119 - AI Database Private Agent Factory & OIC


Introduction

So what is it? And how does it relate to OIC?

Check out the docs here

You can download the service and install on OCI, via the Marketplace - 

You just need to click Get App and then sign in to your OCI tenancy.

Follow the install instructions as per the docs and the magic will happen.



Using AI DB PAF

Blame the PAF acronym on me.

I click on Agent Builder

The UI is, as far as I can see, LangFlow++.


Maybe a good time to check out my posts on leveraging Langflow with OIC agents. 

Net, net, you see the components palette on the left - 

I'll be using just Agent and Tools for this initial demo.

MCP Server & Agent Configuration

The url is the OIC Project MCP Server url. Auth Type = Bearer Token. I then generate a token from Postman, based on my OIC confidential app (client id, secret, token url, scopes).

For the Agent, I configure it as per my OIC Agent for Order Processing. This agent is covered in a previous post.  






Here are the full Custom instructions

### Order Processing Steps

#### 0. Duplicate Order Check
Use the **Get Order** tool to check if an order already exists. If it does, then use the **Notify Customer** tool to inform the customer, set the subject to 'Duplicate Order Received', then stop processing. If the order is not found, then continue with the processing of the order.
 
#### 1. Validate Order
Use the **Validate Order** tool to check if an order passes our validation rules. If the order is invalid, then use the **Notify Customer** tool to inform the customer. Also include the "message" returned by Validate Order. If an order is invalid, processing stops immediately; in such cases, detail exactly why this order failed validation.

#### 2. Check Inventory
Use the **Check Inventory** tool to check if the product is in stock. If the product is out of stock, use the **Notify Customer** tool to inform the customer. Ensure the "message" passed to the Notify Customer tool is relevant and friendly. Remember, we are razor focused on customer satisfaction. If an order's product is no longer in stock,  processing stops immediately; in such cases, detail exactly why this order's processing has been terminated.

#### 3. Create Order in one of our ERP systems
Use the **Create Order SAP** tool to create orders for German customers.
Use the **Create Order Netsuite** tool to create orders for Irish customers

#### 4. Email Customer detailing the final outcome of the order process for valid orders.
Use the **Notify Customer** tool to email the customer, detailing the order number from the ERP system used.

#### 5. Display Order Details 
Finally, send all the order details,  including the order nr returned by the ERP system to our accounts team at xxx@gmail.com, end the email with a quote from Mark Aurelius.


The Prompt is set to chat input - 


I save and then click on Playground

I enter the following order - 


The JSON payload is as follows - 

{ "customer" : "NiallO Fallon", "customerCountry" : "Ireland", "product" : "iCar", "price" : 34567, "email":"xxxx@gmail.com" }

As luck would have it, we are currently out of iCars. 


The order itself is valid, but the inventory check returned out of stock.

But at least the agent sent NiallO a nice email - 

The full email - 

Dear NiallO Fallon, Thank you for your interest in the iCar! We're truly sorry, but unfortunately, this product is currently out of stock. As a result, we were unable to process your order at this time. We apologize for any inconvenience this may cause and appreciate your understanding. Rest assured, we're working hard to restock it soon. If you'd like, we can notify you when it's available again, or suggest similar products. Please let us know how we can assist you further. Best regards, Your Friendly Order Processing Team


Next order is from Lucia -

{ "customer" : "Lucia Commiskey", "customerCountry" : "Germany", "product" : "iCleaner", "price" : 3456, "email":"xxxx@gmail.com" }


The email is sent to Accounts -



          Well it is a Database Private Agent Factory, so we cannot exit without trying out some SQL. Here are the rows in my ATP demo orders table -




Here's a simple example of retrieving those orders and sending them to a sales exec, via email.



Summa Summarum

OIC integrations, exposed as tools, allow any 3rd party agent secure and predictable access to enterprise systems of record. The AI Database Private Agent Factory is a great example of such a 3rd party agent. DB PAF offers lots of functionality and it is a native capability of the Oracle AI Database (specifically versions 23ai and 26ai) that allows organizations to create "agentic" workflows directly where their enterprise data lives.

Finally, a caveat, or should I say admission on my part - I didn't read the DB PAF documentation before creating the post. Naturally, I haven't done it justice, but my main focus was on showing the interoperability with OIC Agentic tools. My lack of reading does show, though, how intuitive the UI is.

However, I've made a promise to myself - take some time to RTFM; then write a follow-up post showing how cool this product really is.