The key to a dynamic escalation tool is creating a transferCall tool with an empty destinations array. This empty array is not an oversight — it's the signal that tells the platform the real destination will be resolved at runtime via a webhook, rather than pulled from a fixed number configured on the tool itself:
curl --location 'https://api.sulus.ai/tool/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data '{
"type": "transferCall",
"destinations": [],
"function": {
"name": "escalateToSupport",
"description": "Escalate calls to the appropriate support specialist based on customer tier and issue complexity",
"parameters": {
"type": "object",
"properties": {
"issue_category": {
"type": "string",
"description": "Category of customer issue",
"enum": ["technical", "billing", "account", "product"]
},
"complexity_level": {
"type": "string",
"description": "Issue complexity level",
"enum": ["basic", "intermediate", "advanced", "critical"]
},
"customer_context": {
"type": "string",
"description": "Relevant customer information for routing"
},
"escalation_reason": {
"type": "string",
"description": "Why this needs escalation rather than self-service"
}
},
"required": ["issue_category", "complexity_level"]
}
}
}'
See Function Tool Parameter Schema for the general rules governing this parameters object (the required array, strict validation, and maxTokens).