This is the multi-page printable view of this section. Click here to print.
Boot Camp Exchange
- 1: Boot Camp
- 2: Labs
- 2.1: Agent Case Manager
- 2.2: Agent Chase Wave
- 2.3: Agent Create Event
- 2.4: Agent Data Analyzer
- 2.5: Agent Fraud Detection
- 2.6: Agent Hospital Assistant
- 2.7: Agent Order Metrics
- 2.8: Agent Slotting Assistant
- 2.9: Agent ZPL Creator
1 - Boot Camp
Welcome to the Boot Camp for this year’s Exchange. We’re excited to have you here and looking forward to helping you get hands-on with the latest solutions, demos, and enablement content prepared for Exchange 2026.
What to Expect
Boot Camp is designed to be practical, collaborative, and fast-moving. Ask questions, try things out, and use this time to build familiarity with the experiences, tools, and product directions that will be featured at Exchange 2026.
We’re glad you’re here. Welcome to Exchange 2026 Boot Camp.
1.1 - Agent Store Capacity Alert
Login
- Go to the Web URL - https://mesop3.omni.manh.com
- Enter the assigned user and password. Use the allotted account from Exchange1 through Exchange40.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- From the extreme top-right corner, click on the “Create an Agent” dropdown and select “Workflow Builder”.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the Agent Name as you see fit.
- Scroll down to set the parameters “Conversational” and “Allow Attachment from Chat” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action, click on the + sign on the Initial Screen or at the end of the current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | EX26_Agent_StoreCapacityAlert |
| Description | This is an autonomous agent identifies stores that have maximum capacity and creates tickets for them to be processed. |
| Conversational | false |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task Name: default
Action 1 — Call API (callService)
Action Details
httpMethod: POST
component: component-inventory
relativePath: /api/inventory/location/search
inputDocument:
{ "Query": "LocationTypeId ='Stores'", "Template": { "LocationId": null, "LocationTypeId": null, "CapacityFull": null, "LocationStatusId": null }, "Size": 100 }outputVariableName: SearchInventoryLocationResponse

Action 2 — Assign Value to a Variable (setValue)
Action Details
- User Input:
object::SearchInventoryLocationResponse.data - outputVariableName: inventoryLocationResponseData

Action 3 — Loop over a list (loop)
Action Details
- inputVariableName: inventoryLocationResponseData
- maxThreads: 4

Action 3.1 — Call API (callService)
Action Details
httpMethod: POST
component: component-composer
relativePath: /api/composer/ticketHeader/save
inputDocument:
{ "TicketTypeId": "StoreCapacityAlertEx", "Title": "{:currentLoopObject$.LocationId} Store is operating at capacity", "Description": "This Ticket is raised to notify that the store is operating at capacity and will not be considered for fulfillment until the existing load is cleared", "BusinessKeyField1": "{:currentLoopObject$.LocationId}", "BusinessKeyField2": "{:user}", "Status": "Open" }outputVariableName: createTicketResponse

Action 3.2 — Append to a Variable (setValue)
Action Details
- User Input:
{:createTicketResponse.data.TicketId} - outputVariableName: createdTicketList

Action 4 — Reply with AI (setValue)
Action Details
- Instructions: ‘You are an assistant that summarizes ticket creation. You should include key details like the ticket id.
Here is the response generated from the system you should summarize.
{:createdTicketList} ’

2 - Labs
For an overview of the Exchange 2026 Boot Camp experience, themes, and getting started information, visit the Boot Camp section before exploring the hands-on guides and exercises in Labs.
| Agent | Product |
|---|---|
| Agent Appointment Creator | ActiveWarehouse & ActiveTransportation |
| Agent Case Manager | ActiveOrder |
| Agent Chase Wave | ActiveWarehouse |
| Agent Data Analyzer | ActivePlanning |
| Agent Fraud Detection | ActiveOrder |
| Agent Hospital Assistant | ActiveWarehouse |
| Agent Order Metrics | ActiveOrder |
| Agent Slotting Assistant | ActiveWarehouse |
| Agent Store Capacity Alert | ActiveOrder |
| Agent ZPL Creator | ActiveWarehouse |
| Agent Create Event | ActivePlanning |
2.1 - Agent Case Manager
Login
- Go to the Web URL:
- https://mesop3.omni.manh.com (Unified Commerce)
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the Agent Name as you see fit.
- Scroll down to set the parameters “Conversational” and “Allow Attachment from Chat” flags as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action click on the + sign on the Initial Screen or at the end of current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_CaseManager |
| Description | Autonomous scheduled agent that classifies and categorizes open Customer Engagement cases by updating CaseCategoryId, CaseSubCategoryId, and Team fields automatically. |
| Conversational | true |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task Name: default
Action 1 — getTicketDetail (type: getTicketDetail)
Action Details:
- inputVariableName:
{:TicketId} - outputVariableName:
ticketDetail - sopOutputVariableName:
ticketSOP

Action 2 — caseprocessor (type: callGenAIService)
Action Details:
Instruction:
You are the Unified Commerce Case Management Agent — a fully autonomous scheduled data agent for Customer Engagement at Manhattan Associates. Run the complete workflow below without any user interaction or pausing. CRITICAL FINALIZATION RULE: Direct text output is not rendered in the test panel. At the end of every run, build the run summary. If a real TicketId is available in context, call the built-in updateTicket tool first, then call ShowMessageTask with the same summary. If TicketId is null, empty, unresolved, or unavailable, do NOT call updateTicket; call ShowMessageTask only and include "Ticket update skipped: no TicketId in context." Never end after SearchCasesTask, ValidateOrderTask, or any save task. ## TICKET UPDATE RULES - Use only the real TicketId from context. Never invent TicketId values such as 12345, TEST, SAMPLE, or placeholders. - If the context TicketId is unavailable, skip updateTicket and still call ShowMessageTask. - When calling updateTicket, do not include TicketHistoryId. Send Status=Closed, LastUpdateByType=Agent, and TicketHistory with one item: UpdateByType=Agent and Note=<run summary>. ## STEP 1 — FETCH CASES Call SearchCasesTask with: - lastRunTimestamp: the value provided in your context (or "2020-01-01T00:00:00" if empty) From the JSON response, extract data[]: the array of case objects to process. If data is returned as a single object, treat it as a one-item array. Track: maxCreatedTimestamp = the largest CreatedTimestamp value seen across all cases in data[]. ## STEP 2 — CLASSIFY AND PROCESS EACH CASE For every case object in data[], extract: CaseId, CaseTitle, Description, PK, OrgId, CreatedTimestamp. Update maxCreatedTimestamp if this case's CreatedTimestamp is newer. Apply these routing rules to CaseTitle in order (stop at first match): RULE A — CLAIMS: CaseTitle starts with "Claims Request - " and has the pattern "Claims Request - {digits} - {digits}" Example: "Claims Request - 6723875850 - 4620168" -> Execute STEP 3 (Claims Request Flow) for this case. RULE B — DROP SHIP: CaseTitle contains "DSCO" (case-insensitive) -> Call SaveDropShipTask(caseId=CaseId, orgId=OrgId, pk=PK) -> dropShipCount++; if response does not contain success, errorCount++ RULE C — SKIP: No rule matched -> skippedCount++ with reason "Title not matched" Track running totals: totalFetched, claimsCount, dropShipCount, homeDepotCount, skippedCount, errorCount Track skipped case detail: skippedCases = list of "CaseId: <reason>" strings (append one entry per skipped case) ## STEP 3 — CLAIMS REQUEST FLOW For each case matched by RULE A: 3a. Extract OrderId and ItemId from CaseTitle by splitting on " - " (space-hyphen-space): tokens = CaseTitle.split(" - ") OrderId = tokens[1].trim() ItemId = tokens[2].trim() 3b. Check Description for claim keywords (case-insensitive): Broken, Damaged, Defective, Lost, Missed, "Not Delivered" If NONE of these words appear: skippedCount++; append "<CaseId>: No claim keyword in description (Description='<Description>')" to skippedCases. Continue to next case. Treat "Defective" as a damaged claim type. 3c. Call ValidateOrderTask(orderId=<OrderId>, itemId=<ItemId>, description=<Description>) 3d. Read ValidateOrderTask_response as JSON: If "decision" == "SKIP": skippedCount++; append "<CaseId>: <skipReason from response> (OrderId=<OrderId>, ItemId=<ItemId>)" to skippedCases. Because this test run processes one case, immediately build the final summary, then finalize according to the CRITICAL FINALIZATION RULE. If "decision" == "PROCEED": Call SaveClaimsTask(caseId=CaseId, orgId=OrgId, pk=PK, casecategoryid=<caseCategoryId from response>, casesubcategoryid=<caseSubCategoryId from response>) If SaveClaimsTask_response contains "success" field true or "statusCode":"OK": claimsCount++; then build the final summary and finalize according to the CRITICAL FINALIZATION RULE. Else: errorCount++ with reason "Save Case API failed for CaseId=" + CaseId; then build the final summary and finalize according to the CRITICAL FINALIZATION RULE. ## STEP 4 — FINALIZE RUN After all cases are processed, build the final run summary. If a real TicketId is available, call updateTicket, then call ShowMessageTask with the same summary. If no real TicketId is available, do not call updateTicket; call ShowMessageTask with the summary plus "Ticket update skipped: no TicketId in context." Build the run summary note using the two-character sequence \n (backslash-n) as the line separator — do NOT use actual newline characters. Format exactly like this example (include the Skipped Detail section only when skippedCount > 0): "Run Summary - Unified Commerce Case Management Agent\n---\nCases Fetched: 2\nCases Processed: 1\n Claims Request: 0\n Drop Ship Marketplace: 1\n Home Depot: 0\nCases Skipped: 1\nCases Errored: 0\n---\nSkipped Detail:\n CASE43486: No claim keyword in description (Description='late')\n CASE43567: FulfillmentStatus PICKED is below SHIPPED threshold (OrderId=1320695086, ItemId=1028885)" After ShowMessageTask completes, stop. ## ERROR HANDLING - If SearchCasesTask response does not contain a valid data[] array: treat as API failure. Set totalFetched=0. Finalize according to the CRITICAL FINALIZATION RULE using summary: "ERROR: Cases Search API failed — no cases processed." - If SaveDropShipTask or SaveHomeDepotTask response indicates failure: errorCount++, continue to the next case. - If ValidateOrderTask response cannot be parsed as JSON: errorCount++ with reason "Order validation failed for CaseId", then build the final summary and finalize according to the CRITICAL FINALIZATION RULE. - ALWAYS finish with ShowMessageTask. Call updateTicket first only when a real TicketId is available. ## CRITICAL RULES - This agent is FULLY AUTONOMOUS — do NOT stop or wait for user input at any point - ALWAYS finish with ShowMessageTask; call updateTicket first only when a real TicketId is available - Do not call any tool more times than necessary ## TERMINATION RULE Once updateTicket has updated the ticket when possible and ShowMessageTask has displayed the final status, the workflow is COMPLETE. STOP IMMEDIATELY. Do NOT call any tool again. The run is finished.User Input:
Start the Unified Commerce Case Management run now. lastRunTimestamp from configuration: {:config::lastRunTimestamp}. If that value is empty, use '2020-01-01T00:00:00' as the default. TicketId from context: {:TicketId}. Alternate ticketId from context: {:ticketId}. Process all eligible ATG-originated OPEN cases from start to finish according to your workflow.Parameters:
- builtInTools:
updateTicket - agents:
ext-MO26-Helper-CaseSearchext-MO26-Helper-CaseUpdate
- description: Autonomous P&E orchestrator — runs on schedule, processes all eligible ATG cases without user interaction.
- builtInTools:
outputVariableName:
caseProcessorResponse

2.2 - Agent Chase Wave
Login
- Go to the Web URL:
- Enter your assigned User and Password.
- If you are unable to login, ask for help from the Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the AgentId and Agent Name as you see fit.
- Scroll down to set the parameter “Conversational” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action, click on the + sign on the Initial Screen or at the end of the current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_ChaseWave |
| Description | Master agent for chase wave, invoked from ticket mechanism, evaluates ticket SOP and executes chase wave. Built in Ticket update tool, and tasks as tools |
| Conversational | false |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task: default
Action 1 — getTicketDetail (getTicketDetail)
Action Details:
- Input Variable Name:
{:TicketId} - Output Variable Name:
ticketDetail - sopOutputVariableName:
ticketSOP

Action 2 — Plan & Execute (callGenAIService)
Action Details:
Instruction:
You are a virtual assistant, trying to help store manager to resolve tickets in an automated manner. Reasoning Requirements: - on each function call explain your reasoning You must read SOP content and ticket content, and use available tools to determine a way to resolve the ticket. When producing a response according to the SOP, you must record all information in the ticket, including the “facts” collected during SOP triaging, so it can be used as future reference data. If you are not in interactive mode: - you are not allowed to ask any follow up questions. - if you have completed all the instructions in the SOP, then close the ticket with details of what actions taken. Summarize the actions taken by you at the end. <TICKET> Ticket ID: {:ticketId} Ticket Description: {:ticketdetail.Description} Ticket History: {:ticketdetail.TicketHistory} </TICKET> <SopContent> {:ticketsop} </SopContent> <ChatHistory> {:CurrentChat} </ChatHistory>User Input:
{:UserInput}Parameters:
- builtInTools:
updateTicket - agents:
ext-MO26-Helper-TriggerChaseWaveext-MO26-Helper-ShortedOrderLine
- description: Execute Ticket SOP
- builtInTools:
Output Variable Name:
response

2.3 - Agent Create Event
Sample files
- Sample txt file Event Promotions text file
- Sample csv file Event Promotions csv file
2.4 - Agent Data Analyzer
Login
- Go to the Web URL:
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the AgentId and Agent Name as you see fit.
- Scroll down to set the parameters “Conversational” and “Allow Attachment from Chat” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the default task dropdown, then click on Add New.
- To add an Action, click on the + sign on the Initial Screen or at the end of the current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26-Agent-DataAnalyzer |
| Description | Takes in a CSV and lets the user ask questions about it. |
| Conversational | true |
| allowAttachmentFromChat | true |

Actions
- Add an action by clicking plus.
Task: default
Action 1 — createResource (createResource)
Action Details:
- source: objectstore
- mimeType: text/plain
- namespace:
{:Attachment_From_Chat.0.FileNamespace} - filePath:
{:Attachment_From_Chat.0.FileLocation} - fileName:
{:Attachment_From_Chat.0.FileName} - outputVariableName: InputFileResource

Action 2 — readFile (readFile)
Action Details:
- target: table
- fileName: InputFileResource
- outputVariableName: InputFileData

Action 3 — storeInLocalDB (storeInLocalDB)
Action Details:
- inputVariableName: InputFileData
- outputVariableName: InputFileData

Action 4 — Plan & Execute (callGenAIService)
Action Details:
- Instruction:
<PURPOSE> The user has uploaded the CSV file: "{:Attachment_From_Chat.0.FileName}". Your goal is to answer any questions they may have around this file and its content. The content is stored in a local DB table called: "InputFileData". </PURPOSE> <RULES> 1. Anytime you are referencing the data in the CSV, you should return a segment of the CSV in tabular format. </RULES> - User Input:
{:userInput} - Parameters:
- builtInTools: queryLocalDB

Task: greetingTask
Action 1 — addTextResponse (addTextResponse)
Action Details:
- textResponse: Please upload a CSV file.

2.5 - Agent Fraud Detection
Login
- Go to the Web URL:
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the Agent Name as you see fit.
- Scroll down to set the parameter “Conversational” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action click on the + sign on the Initial Screen or at the end of current action on the screen.
- Follow the Actions section and Screenshots to add action provided for each action.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_FraudDetection |
| Description | This agent loads information from a ticket and uses that to evaluate an order for fraud. It then updates a ticket or updates an order to on hold. |
| Conversational | false |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task: default
Action 1 — getTicketDetail
- Type:
getTicketDetail
Action Details:
- Input Variable:
TicketId - Output Variable:
ticketDetails - SOP Output Variable:
ticketSOP

Action 2 — Call Fraud Detection
- Type:
callGenAIService
Action Details:
Instruction:
Call the credit card fraud detection tool by passing the card number as credit card number and card holder name. Capture the tool response and show it. After getting the fraud response, update the ticket to track what you've done. Credit Card Number and Card holder Name will be in <TicketDetails> {:ticketDetails} </TicketDetails> A unique SOP will be provided here <SOP> {:SOPDetails} </SOP>Parameters:
- MCP tools:
maki-mcp-server-detect-credit-card-fraud
- MCP tools:

2.6 - Agent Hospital Assistant
Login
- Go to the Web URL:
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the “Gear” icon, next to the Agent Name.
- Change the AgentId and Agent Name as you see fit.
- Scroll down to set the parameter “Conversational” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action click on the + sign on the Initial Screen or at the end of current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_HospitalAssistant |
| Description | Assist user with the Totes in the Hospital lane, current only supports tote cancellation. In future Order, Task, items etc info can passed to LLM to assists user will all sorts of question. |
| Conversational | true |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task: default
Action 1 — requestParamCapture (requestParamCapture)
Action Details:
- Parameters:
Name Description Type Mandatory Container This is the container for me to research string true

Action 2 — Call LLM (callGenAIService)
Action Details:
Instruction:
You are a virtual assistant, trying to help warehouse manager for assisting user manage totes on a Hospital Lane of a Warehouse Automation System. You are invoked when users multi selectes records on a Hospital Lane assistant UI and clicks call agent button. <Instructions> * Use available tools to determine a way to answer users question or perform tasks that user requested. * User may want to perform actions on all the records selected on UI or a subset. * Before performing any task or taking any action confirm the act with user with the tools you are planning to use. Also, inform user with parameters you are passing to the tools, or the data on which your taking actions. Only once user has confirmed proceed with actions. * If you are not clear or users question or actions to perform on the selected TOTE_OLPNs, respond to user with tools and capabilities you posses. <Instructions> Reasoning Requirements: - on each function call explain your reasoning Summarize the actions taken by you at the end. This is the olpn or tote the user has asked us to research <Container> {:Container} </Container> <ChatHistory> {:CurrentChat} </ChatHistory>User Input:
{:UserInput}Parameters:
- agents:
ext-Helper-OlpnSearchext-MO26-Helper-OlpnCancel
- description: Call tools to answer question/perform action on TOTE_OLPN.
- agents:
outputVariableName:
outputData

Task: greetingTask
Action 1 — addTextResponse (addTextResponse)
Action Details:
- textResponse:
Hello, I am assistant that accepts a tote or olpn and can provide information about it.

2.7 - Agent Order Metrics
Login
- Go to the Web URL - https://mesop3.omni.manh.com (Unified Commerce)
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the Gear icon, next to the Agent Name.
- Change the AgentId and Agent Name as you see fit.
- Scroll down to set the parameters “Conversational” and “Allow Attachment from Chat” flag as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action, click on the + sign on the Initial Screen or at the end of the current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_OrderMetrics |
| Description | This agent provides a natural language interface to understand metrics. |
| Conversational | true |
| allowAttachmentFromChat | false |

Actions
- Add an action by clicking plus.
Task: default
Action 1: Plan & Execute (callGenAIService)
Action Description: Plan & Execute - callGenAIService
Action Details:
- Instruction:
You are a Order metrics provider agent. Here are the few things you can do: 1. How many orders created by hour/day 2. How many order Canceled By hour/day 3. How many BO's By hour/day 4. Cancelation by day by reason code 5. How many open invoices/Day Perform the below actions if the {:ordersBucketList} has a value. Do not print anything stating that the {:ordersBucketList} is empty. Use {:ordersBucketList} as the primary and authoritative data source for answering all follow-up order analytics questions. Do not rely on assumptions or external data when the required answer can be derived from {:ordersBucketList}. When the user asks order-related questions, analyze {:ordersBucketList} and return the answer directly from that data. This includes, but is not limited to: 1. orders created by hour or day 2. orders canceled by hour or day 3. BOs by hour or day 4. cancellations by day grouped by reason code 5. open invoices by day any other order metrics already available in {:ordersBucketList} Guidelines: Always use {:ordersBucketList} first before considering any other source. Aggregate only from the fields available in {:ordersBucketList}. If the user asks for hourly data, return hourly aggregation. If the user asks for daily data, return daily aggregation. If the user asks for reason-wise cancellation data, group by cancellation reason code. If the requested metric is not available or cannot be derived from {:ordersBucketList}, clearly say that it cannot be determined from the available data. Keep the response concise, accurate, and directly aligned to the user's question. When possible, return the result in a simple structured format such as a list or table for readability. Treat {:ordersBucketList} as the source of truth for further order-related questions. - User Input:
{:currentchat} - Parameters:
- agents:
ext-MO26-Helper-OrderDataAnalyzerext-MO26-Helper-OrderSearch
- agents:

Task: greetingTask
Action 1: addTextResponse (addTextResponse)
Action Description: addTextResponse - addTextResponse
Action Details:
- textResponse:
Hello, I am an assistant that can give answers to order related queries.

2.8 - Agent Slotting Assistant
Login
- Go to the Web URLs:
- https://mesop6.sce.manh.com (Supply Chain)
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the Gear icon, next to the Agent Name.
- Change the AgentId and Agent Name as you see fit.
- Scroll down to set the parameters Conversational and Allow Attachment from Chat flags as provided in the Agent Details section.
Important Note
- To add a new Task, click the “default” task dropdown, then click on Add New.
- To add an Action click on the + sign on the Initial Screen or at the end of the current action on the screen.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_SlottingAssist |
| Description | This is an agent that supports uploading a csv of items and returns eligible locations |
| Conversational | true |
| allowAttachmentFromChat | true |

Actions
- Add an action by clicking plus.
Task Name: default
Action 1 — ifThen (ifThen)
Action Description: Conditional branch that checks whether location recommendations have already been provided.
Action Details:
- Condition:
LocationRec.DataResponse.Provided==1

actionsWhenTrue
Action 1.T.1 — addStreamResponse (addStreamResponse)
- Text Response:
Thinking about locations

Action 1.T.2 — Plan & Execute (callGenAIService)
- Instruction:
You are an assistant for creating location item assignments. You will be provided a json that consists of locations and itemIds. The current set of recommendations will be provided in {:LocationRec}. You can make modifications to this and it should follow this structure. Once the user confirms creation of the locations, use the available tools to create them. { "Data": [ { "LocationId": "1A30J01A03", "StorageUomId": "LPN", "ItemId": 226019 }, { "LocationId": "1A30J01A03", "StorageUomId": "LPN", "ItemId": 226019 }, { "LocationId": "1A30J01A03", "StorageUomId": "LPN", "ItemId": 226019 } ] } - User Input:
{:UserInput} - Parameters:
- agents:
ext-MO26-Helper-LIACreation
- agents:

actionsWhenFalse
Action 1.F.1 — ext-MO26-Helper-CSVUpload (callAgent)
- Parameters:
- CSV:
object::Attachment_From_Chat
- CSV:
- outputVariableName:
AgentOutput

Action 1.F.2 — ext-MO26_Helper_ItemSearch (callAgent)
- Parameters:
- ItemList:
object::AgentOutput.DataResponse.ItemList
- ItemList:
- outputVariableName:
ItemInformation

Action 1.F.3 — ext-MO26-Helper-LocationRecommendation (callAgent)
- Parameters:
- ItemInformation:
object::ItemInformation
- ItemInformation:
- outputVariableName:
LocationRec

Action 1.F.4 — addTextResponse (addTextResponse)
- Text Response:
{:LocationRec}

Task Name: greetingTask
Action 1 — addTextResponse (addTextResponse)
Action Description: Initial greeting displayed to the user.
Action Details:
- Text Response:
Hello! I am an agent that can provide slotting recommendations. If you upload a csv of items, I can load their details and provide suggested locations. I can then create those assignments.

2.9 - Agent ZPL Creator
Login
- Go to the Web URL:
- Enter your assigned User and Password.
- If you are unable to login, ask for help from Manhattan Team.
Initialize Agent
- Launch Agent Foundry from the Hamburger Menu.
- Click on “Create Agent from Scratch”.
- Go to Agent Configuration by clicking the Gear icon, next to the Agent Name.
- Specify the AgentId and Agent Name as you see fit.
- Scroll down to set the parameters “Conversational” and “Allow Attachment from Chat” flag as provided in the Agent Details section.
Agent Details
| Field | Value |
|---|---|
| Name | MO26_Agent_ZPLCreator |
| Description | This is an agent that supports uploading an image of a label and returns a zpl template. |
| Conversational | true |
| allowAttachmentFromChat | true |

Actions
- Add an action by clicking plus.
To add an Action click on the + sign on the Initial UI or at end of the current action on the screen.
Task: default
Action 1 — ifThen (ifThen)
Condition:
AgentOutput.DataResponse.ZPLGenerated==1

actionsWhenTrue
Action 1.T.1 — addStreamResponse (addStreamResponse)
- User Input:
Thinking about printers

Action 1.T.2 — Reply with AI (callGenAIService)
- Instruction:
You are an assistant for modifying ZPL templates. These are for a warehouse management system. This is the previous ZPL template. The user might be asking for followups and updates to the ZPL template. {:AgentOutput.DataResponse.Template} This is where the User questions will come in. {:UserInput} If asked for changes to a ZPL template, you should respond with ZPL only, do not provide comments.

actionsWhenFalse
Action 1.F.1 — ext-MO26-Helper-LabelPNGToZPL (callAgent)
- Parameters:
- agents:
ext-MO26-Helper-LabelPNGToZPL - LabelDetails:
object::Attachment_From_Chat
- agents:
- outputVariableName:
AgentOutput

Action 1.F.2 — addTextResponse (addTextResponse)
- textResponse:
{:AgentOutput.DataResponse.Template}

Task: greetingTask
Action 1 — addTextResponse (addTextResponse)
- textResponse:
Hello! I am an agent that can convert pictures of labels into ZPL. Upload an image and I will give you a ZPL template.
