Tool tree
gradeNot graded
get_inventoryAnswer
Seller only (or illustrative sandbox without a profile). Returns the trader's inventory, availability, price, and freshness window. Use urgentOnly for perishable stock within 48 hours. Buyers must use find_stock_for_request.
View tool JSON
{
"name": "get_inventory",
"kind": "answer",
"impl": "imperative",
"description": "Seller only (or illustrative sandbox without a profile). Returns the trader's inventory, availability, price, and freshness window. Use urgentOnly for perishable stock within 48 hours. Buyers must use find_stock_for_request.",
"inputSchema": {
"type": "object",
"properties": {
"urgentOnly": {
"type": "boolean",
"description": "When true, only return goods with 48 hours or less in their freshness window.",
"default": false
}
}
}
}show_inventory_itemAction
Seller only (or illustrative sandbox without a profile). Shows the workspace containing the selected stock so the trader and agent can review it together.
View tool JSON
{
"name": "show_inventory_item",
"kind": "act",
"impl": "imperative",
"description": "Seller only (or illustrative sandbox without a profile). Shows the workspace containing the selected stock so the trader and agent can review it together.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The inventory item ID returned by get_inventory."
}
},
"required": [
"itemId"
]
}
}find_surplus_matchesAnswer
Seller only (or illustrative sandbox without a profile). Returns compatible buyer demand for the trader's stock using D1 records. This is a read-only lookup; live areas are labels, not measured distances.
View tool JSON
{
"name": "find_surplus_matches",
"kind": "answer",
"impl": "imperative",
"description": "Seller only (or illustrative sandbox without a profile). Returns compatible buyer demand for the trader's stock using D1 records. This is a read-only lookup; live areas are labels, not measured distances.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The inventory item ID returned by get_inventory."
},
"maxDistanceKm": {
"type": "number",
"minimum": 0.1,
"maximum": 100,
"default": 10,
"description": "Illustrative sandbox only. Live matching uses area labels, not measured distances; this parameter does not filter live records."
}
},
"required": [
"itemId"
]
}
}draft_surplus_offerAction
Seller only (or illustrative sandbox without a profile). Prepares a reversible offer draft in the visible workspace. Never sends or reserves inventory; the trader must review and approve it in the page.
View tool JSON
{
"name": "draft_surplus_offer",
"kind": "act",
"impl": "imperative",
"description": "Seller only (or illustrative sandbox without a profile). Prepares a reversible offer draft in the visible workspace. Never sends or reserves inventory; the trader must review and approve it in the page.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The inventory item to offer."
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "Whole number of units to offer."
},
"pricePerUnit": {
"type": "number",
"minimum": 1,
"description": "Offer price per unit in Nigerian naira."
},
"matchId": {
"type": "string",
"description": "Optional demand match ID returned by find_surplus_matches."
},
"note": {
"type": "string",
"maxLength": 180,
"description": "Optional pickup or condition note."
}
},
"required": [
"itemId",
"quantity",
"pricePerUnit"
]
}
}get_trade_contextAnswer
Read role and data source first. A registered profile always uses live data. Without a profile, Agent sandbox offers Demo seller and Demo buyer; choose the role with the page buttons. All sandbox records are fictional and need no credentials.
View tool JSON
{
"name": "get_trade_context",
"kind": "answer",
"impl": "imperative",
"description": "Read role and data source first. A registered profile always uses live data. Without a profile, Agent sandbox offers Demo seller and Demo buyer; choose the role with the page buttons. All sandbox records are fictional and need no credentials.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get_my_requestsAnswer
Buyer only. Read the current live buyer's requests, or fictional requests when anonymous with Demo buyer selected. Always check source. Includes the unpublished in-page request draft.
View tool JSON
{
"name": "get_my_requests",
"kind": "answer",
"impl": "imperative",
"description": "Buyer only. Read the current live buyer's requests, or fictional requests when anonymous with Demo buyer selected. Always check source. Includes the unpublished in-page request draft.",
"inputSchema": {
"type": "object",
"properties": {}
}
}find_stock_for_requestAnswer
Buyer only. Use demandId from get_my_requests, or full request fields. Shows live stock for a registered buyer, or fictional stock in anonymous Demo buyer mode. Exact product/unit matching; subtracts accepted reservations. Area labels are not distances. Delivery and pickup need confirmation; below-asking prices need negotiation. Never reserves or purchases.
View tool JSON
{
"name": "find_stock_for_request",
"kind": "answer",
"impl": "imperative",
"description": "Buyer only. Use demandId from get_my_requests, or full request fields. Shows live stock for a registered buyer, or fictional stock in anonymous Demo buyer mode. Exact product/unit matching; subtracts accepted reservations. Area labels are not distances. Delivery and pickup need confirmation; below-asking prices need negotiation. Never reserves or purchases.",
"inputSchema": {
"type": "object",
"properties": {
"demandId": {
"type": "string",
"description": "An existing request belonging to this buyer."
},
"itemName": {
"type": "string",
"maxLength": 80,
"description": "Exact product name; use the trader's spelling when known."
},
"category": {
"type": "string",
"maxLength": 40
},
"requestedQuantity": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"unit": {
"type": "string",
"enum": [
"crates",
"baskets",
"bags",
"packs",
"kilograms",
"piece"
],
"description": "Must match the stock unit; never assume unit conversions."
},
"maximumPricePerUnit": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 1000000000,
"description": "Maximum naira per unit, or null for an open budget."
},
"neededBy": {
"type": "string",
"description": "Future ISO 8601 date including timezone; Nigeria is +01:00."
},
"deliveryArea": {
"type": "string",
"maxLength": 80,
"description": "Broad collection area, not a private address."
},
"fulfilmentPreference": {
"type": "string",
"enum": [
"pickup",
"delivery",
"either"
]
}
}
}
}review_incoming_offersAction
Buyer only. Read offers actually sent to this buyer, with totals and request budget. Excludes unsent trader drafts and other buyers' offers. Explain the terms; acceptance or decline remains a human action in the page. Does not reveal private contact details.
View tool JSON
{
"name": "review_incoming_offers",
"kind": "act",
"impl": "imperative",
"description": "Buyer only. Read offers actually sent to this buyer, with totals and request budget. Excludes unsent trader drafts and other buyers' offers. Explain the terms; acceptance or decline remains a human action in the page. Does not reveal private contact details.",
"inputSchema": {
"type": "object",
"properties": {}
}
}draft_purchase_requestSensitive Action
Buyer only. Prepare an editable unpublished request in the page. Does not call a backend, publish, buy, reserve or accept. Human approval uses Approve and publish request (live), or Approve demo request (anonymous sandbox). Sandbox publishing supports only the four sample products and exact units. Cannot overwrite a draft; discard first. Drafts are lost on reload.
View tool JSON
{
"name": "draft_purchase_request",
"kind": "transact",
"impl": "imperative",
"description": "Buyer only. Prepare an editable unpublished request in the page. Does not call a backend, publish, buy, reserve or accept. Human approval uses Approve and publish request (live), or Approve demo request (anonymous sandbox). Sandbox publishing supports only the four sample products and exact units. Cannot overwrite a draft; discard first. Drafts are lost on reload.",
"inputSchema": {
"type": "object",
"properties": {
"itemName": {
"type": "string",
"maxLength": 80,
"description": "Exact product name; use the trader's spelling when known."
},
"category": {
"type": "string",
"maxLength": 40
},
"requestedQuantity": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"unit": {
"type": "string",
"enum": [
"crates",
"baskets",
"bags",
"packs",
"kilograms",
"piece"
],
"description": "Must match the stock unit; never assume unit conversions."
},
"maximumPricePerUnit": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 1000000000,
"description": "Maximum naira per unit, or null for an open budget."
},
"neededBy": {
"type": "string",
"description": "Future ISO 8601 date including timezone; Nigeria is +01:00."
},
"deliveryArea": {
"type": "string",
"maxLength": 80,
"description": "Broad collection area, not a private address."
},
"fulfilmentPreference": {
"type": "string",
"enum": [
"pickup",
"delivery",
"either"
]
}
},
"required": [
"itemName",
"requestedQuantity",
"unit",
"maximumPricePerUnit",
"neededBy",
"deliveryArea",
"fulfilmentPreference"
]
}
}