Tool tree
gradeNot graded
search_productsAnswer
Search the catalogue.
View tool JSON
{
"name": "search_products",
"kind": "answer",
"impl": "imperative",
"description": "Search the catalogue.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text search."
}
},
"required": [
"query"
]
},
"page": "/demo/halden/"
}get_productAnswer
Fetch one product by SKU.
View tool JSON
{
"name": "get_product",
"kind": "answer",
"impl": "imperative",
"description": "Fetch one product by SKU.",
"inputSchema": {
"type": "object",
"properties": {
"sku": {
"type": "string",
"description": "Product SKU."
}
},
"required": [
"sku"
]
},
"page": "/demo/halden/"
}list_my_ordersAnswer
List the signed-in customer's orders.
View tool JSON
{
"name": "list_my_orders",
"kind": "answer",
"impl": "imperative",
"description": "List the signed-in customer's orders.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/demo/halden/"
}get_order_statusAnswer
Status and contents of one order.
View tool JSON
{
"name": "get_order_status",
"kind": "answer",
"impl": "imperative",
"description": "Status and contents of one order.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
}
},
"required": [
"orderId"
]
},
"page": "/demo/halden/"
}get_policyAnswer
The full returns and warranty policy text.
View tool JSON
{
"name": "get_policy",
"kind": "answer",
"impl": "imperative",
"description": "The full returns and warranty policy text.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/demo/halden/"
}get_conversationAnswer
The conversation so far, with who said each line.
View tool JSON
{
"name": "get_conversation",
"kind": "answer",
"impl": "imperative",
"description": "The conversation so far, with who said each line.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/demo/halden/"
}evaluate_return_eligibilityAction
Authoritative verdict on whether an item can be returned, and by which route. Always call this instead of reasoning about the policy yourself.
View tool JSON
{
"name": "evaluate_return_eligibility",
"kind": "act",
"impl": "imperative",
"description": "Authoritative verdict on whether an item can be returned, and by which route. Always call this instead of reasoning about the policy yourself.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
},
"itemId": {
"type": "string",
"description": "The id of the line within the order — the `itemId` field returned by get_order_status or list_my_orders, e.g. \"IT-1\". Call one of those first if you do not have it. This is not the SKU and not the product title."
},
"reason": {
"type": "string",
"enum": [
"defect",
"changed-mind",
"wrong-item",
"damaged-in-transit"
],
"description": "Why the item is coming back. Pick by what the customer actually described, and do not reason about the policy consequences — that is what the verdict is for. defect: the item itself is faulty or arrived broken, with nothing said about the parcel or the courier — a cracked, dead, or misbehaving item is this one. damaged-in-transit: the customer described damage to the shipment — a crushed box, torn packaging, a courier incident. Do not choose this merely because the item is broken; it needs something said about the shipping. wrong-item: we shipped something other than what was ordered. changed-mind: nothing is wrong with it."
}
},
"required": [
"orderId",
"itemId",
"reason"
]
},
"page": "/demo/halden/"
}send_messageSensitive Action
Add a message to the shared exchange. The person and the service can see it. Set intent to "relay" only when passing on what the person said; otherwise the message is attributed to the visiting agent speaking for itself.
View tool JSON
{
"name": "send_message",
"kind": "transact",
"impl": "imperative",
"description": "Add a message to the shared exchange. The person and the service can see it. Set intent to \"relay\" only when passing on what the person said; otherwise the message is attributed to the visiting agent speaking for itself.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "What to say."
},
"intent": {
"type": "string",
"enum": [
"relay",
"own"
],
"description": "Defaults to \"own\"."
}
},
"required": [
"text"
]
},
"page": "/demo/halden/"
}provide_contextAction
Front-load what you already know about the customer and their problem, so the store does not have to ask. Call this first, before anything else.
View tool JSON
{
"name": "provide_context",
"kind": "act",
"impl": "imperative",
"description": "Front-load what you already know about the customer and their problem, so the store does not have to ask. Call this first, before anything else.",
"inputSchema": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "One or two sentences on what the customer wants."
},
"data": {
"type": "object",
"description": "Structured facts: orderId, dates, what was tried."
}
},
"required": [
"summary"
]
},
"page": "/demo/halden/"
}request_returnAction
Propose a return or warranty claim. Always allowed — this only creates a pending request and tells you whether it qualifies. It does not move any money.
View tool JSON
{
"name": "request_return",
"kind": "act",
"impl": "imperative",
"description": "Propose a return or warranty claim. Always allowed — this only creates a pending request and tells you whether it qualifies. It does not move any money.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
},
"itemId": {
"type": "string",
"description": "The id of the line within the order — the `itemId` field returned by get_order_status or list_my_orders, e.g. \"IT-1\". Call one of those first if you do not have it. This is not the SKU and not the product title."
},
"reason": {
"type": "string",
"enum": [
"defect",
"changed-mind",
"wrong-item",
"damaged-in-transit"
],
"description": "Why the item is coming back. Pick by what the customer actually described, and do not reason about the policy consequences — that is what the verdict is for. defect: the item itself is faulty or arrived broken, with nothing said about the parcel or the courier — a cracked, dead, or misbehaving item is this one. damaged-in-transit: the customer described damage to the shipment — a crushed box, torn packaging, a courier incident. Do not choose this merely because the item is broken; it needs something said about the shipping. wrong-item: we shipped something other than what was ordered. changed-mind: nothing is wrong with it."
}
},
"required": [
"orderId",
"itemId",
"reason"
]
},
"page": "/demo/halden/"
}request_cancelSensitive Action
Propose cancelling an order before it arrives. Always allowed — this only creates a pending request and tells you whether the order can still be stopped. It cancels nothing on its own.
View tool JSON
{
"name": "request_cancel",
"kind": "transact",
"impl": "imperative",
"description": "Propose cancelling an order before it arrives. Always allowed — this only creates a pending request and tells you whether the order can still be stopped. It cancels nothing on its own.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
}
},
"required": [
"orderId"
]
},
"page": "/demo/halden/"
}request_address_changeAction
Propose redirecting an order to a different address before it arrives. Always allowed — this only creates a pending request and tells you whether the order can still be redirected. It changes nothing on its own.
View tool JSON
{
"name": "request_address_change",
"kind": "act",
"impl": "imperative",
"description": "Propose redirecting an order to a different address before it arrives. Always allowed — this only creates a pending request and tells you whether the order can still be redirected. It changes nothing on its own.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
},
"address": {
"type": "string",
"description": "The full new delivery address, as the customer gave it."
}
},
"required": [
"orderId",
"address"
]
},
"page": "/demo/halden/"
}request_records_releaseAction
Propose releasing the customer's own account records for one order — the card type and its last four digits, the billing postcode, and the delivery address on file. Always allowed: this only creates a pending request and discloses nothing. The records are not readable any other way, including by you.
View tool JSON
{
"name": "request_records_release",
"kind": "act",
"impl": "imperative",
"description": "Propose releasing the customer's own account records for one order — the card type and its last four digits, the billing postcode, and the delivery address on file. Always allowed: this only creates a pending request and discloses nothing. The records are not readable any other way, including by you.",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "Order id."
}
},
"required": [
"orderId"
]
},
"page": "/demo/halden/"
}disclose_order_recordsSensitive Action
Release the customer's account records for a pending request: card type and last four digits, billing postcode, and delivery address. The values are held by the server and returned only against a completed confirmation — this page never has them beforehand, so there is nothing here to read without the customer present. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.
View tool JSON
{
"name": "disclose_order_records",
"kind": "transact",
"impl": "imperative",
"description": "Release the customer's account records for a pending request: card type and last four digits, billing postcode, and delivery address. The values are held by the server and returned only against a completed confirmation — this page never has them beforehand, so there is nothing here to read without the customer present. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The id returned by request_records_release."
}
},
"required": [
"requestId"
]
},
"page": "/demo/halden/"
}await_replyAction
Wait here until someone else says something. Nothing is pushed to you otherwise: this page can only answer calls you make, so after you say something, the reply exists in the conversation but you will not see it until your next call. Call this to wait for it instead of ending your turn or polling in a loop. It returns as soon as there is anything new, or after a few seconds with nothing_new: true if the conversation stayed quiet — call it again if you are still waiting. Safe to call at any time; it changes nothing and can wait on nothing but conversation.
View tool JSON
{
"name": "await_reply",
"kind": "act",
"impl": "imperative",
"description": "Wait here until someone else says something. Nothing is pushed to you otherwise: this page can only answer calls you make, so after you say something, the reply exists in the conversation but you will not see it until your next call. Call this to wait for it instead of ending your turn or polling in a loop. It returns as soon as there is anything new, or after a few seconds with nothing_new: true if the conversation stayed quiet — call it again if you are still waiting. Safe to call at any time; it changes nothing and can wait on nothing but conversation.",
"inputSchema": {
"type": "object",
"properties": {
"timeout_ms": {
"type": "number",
"description": "How long to wait before giving up, in milliseconds. Default 25000, max 30000."
}
},
"required": []
},
"page": "/demo/halden/"
}confirm_returnAction
Confirm and complete a pending return or warranty claim, refunding the customer. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.
View tool JSON
{
"name": "confirm_return",
"kind": "act",
"impl": "imperative",
"description": "Confirm and complete a pending return or warranty claim, refunding the customer. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The id returned by request_return."
}
},
"required": [
"requestId"
]
},
"page": "/demo/halden/"
}cancel_orderSensitive Action
Cancel the order. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.
View tool JSON
{
"name": "cancel_order",
"kind": "transact",
"impl": "imperative",
"description": "Cancel the order. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The id returned by request_cancel."
}
},
"required": [
"requestId"
]
},
"page": "/demo/halden/"
}change_addressAction
Change the delivery address. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.
View tool JSON
{
"name": "change_address",
"kind": "act",
"impl": "imperative",
"description": "Change the delivery address. This is a consequential action. It only succeeds after the customer confirms it themselves in the widget — you cannot confirm on their behalf.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The id returned by request_address_change."
}
},
"required": [
"requestId"
]
},
"page": "/demo/halden/"
}