Get tool catalog
curl --request GET \
--url https://sandbox.voice.miraiminds.co/v2/tools/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.voice.miraiminds.co/v2/tools/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const url = 'https://sandbox.voice.miraiminds.co/v2/tools/catalog';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"object": "list",
"data": [
{
"name": "http",
"kind": "http",
"phases": [
"pre_call",
"on_call",
"post_call"
],
"summary": "Call an https endpoint you own. URL, headers, query and body are templates over the call's namespaces; the reply can be transformed with jq and promoted into variables.",
"config_schema": {
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
],
"default": "GET"
},
"url": {
"type": "string",
"pattern": "^https://",
"maxLength": 2048
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"query": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"body": {
"description": "JSON template. A leaf that is exactly {{= path }} becomes the typed value."
}
},
"required": [
"url"
]
},
"defaults": {
"method": "GET",
"enabled": true,
"on_failure": "continue",
"execution": "sync",
"timeout_ms": {
"pre_call": 5000,
"on_call": 10000,
"post_call": 15000
},
"retry": {
"pre_call": 0,
"on_call": 0,
"post_call": 2
}
},
"tiers": [
"t1",
"t3",
"t5"
],
"available": true
},
{
"name": "schedule_callback",
"kind": "builtin",
"phases": [
"on_call",
"post_call"
],
"summary": "Book a later call to the same person. On_call supplies a default time and note argument schema; post_call uses configured templates. The scheduled call uses normal call admission.",
"config_schema": {
"type": "object",
"properties": {
"min_delay_minutes": {
"type": "integer",
"minimum": 0,
"default": 30
},
"max_days": {
"type": "integer",
"minimum": 1,
"default": 14
},
"at": {
"type": "string",
"description": "post_call only: an RFC3339 timestamp, usually a template such as {{ analysis.data.callback_at }}."
},
"note": {
"type": "string",
"maxLength": 500
}
}
},
"defaults": {
"min_delay_minutes": 30,
"max_days": 14
},
"tiers": [
"t1",
"t3",
"t5"
],
"available": true
},
{
"name": "transfer_call",
"kind": "builtin",
"phases": [
"on_call"
],
"summary": "Hand the caller to a human or another number.",
"config_schema": {
"type": "object",
"properties": {
"to": {
"type": "string",
"pattern": "^\\+[1-9]\\d{7,14}$"
},
"mode": {
"type": "string",
"enum": [
"bridge",
"warm"
]
},
"announce": {
"type": "string"
}
},
"required": [
"to"
]
},
"tiers": [
"t1",
"t3",
"t5"
],
"requires": [
"telephony_transfer"
],
"available": false,
"reason": "telephony support pending"
}
],
"phases": [
{
"phase": "post_call",
"summary": "Runs after the call has settled and been billed. Never changes status, duration or the call.completed payload.",
"max_tools": 10,
"default_timeout_ms": 15000,
"max_timeout_ms": 60000,
"default_retries": 2,
"max_retries": 5,
"namespaces": [
"vars",
"call",
"now",
"tools",
"analysis",
"secrets (templates only)"
]
}
],
"execution_modes": {
"default": "sync",
"on_call_http": [
"sync",
"async"
],
"async_timeout_max_ms": 300000
},
"namespaces": {
"vars": "Call input values, plus pre-call tool outputs as vars.<tool>.<key>.",
"call": "id, agent_id, to, from, tier, direction, channel, campaign_id, contact_id, attempt; after the call also status, ended_reason, duration_secs, answered.",
"args": "on_call only: the arguments the model supplied for this invocation."
},
"operators": [
{
"op": "eq",
"means": "equal after trimming; numeric when both sides are numbers, boolean when both are true/false"
},
{
"op": "exists",
"means": "present and non-empty"
},
{
"op": "is_true",
"means": "one of true/1/yes/on"
}
],
"filters": [
"default:\"fallback\"",
"json",
"urlencode"
],
"limits": {
"tools_per_agent": 40,
"pre_call_tools": 10,
"on_call_tools": 20,
"post_call_tools": 10,
"runs_per_call": 40,
"response_bytes": 262144,
"promoted_value_chars": 512,
"select_keys": 16,
"url_chars": 2048
},
"tier": "t5",
"model": "miraiminds/mira-llm",
"native_tool_calls": true,
"text_style_models": [
"hinglish"
],
"secrets_configured": true
}Tools and secrets
Get tool catalog
What a tool can be. data lists the http kind and each builtin (skip_call, end_call, schedule_callback, webhook, plus transfer_call and send_dtmf, which are listed but not available yet) with its phases, settings schema and defaults. phases gives each phase’s timeouts, retries and tool limit; namespaces, operators and filters are what templates and conditions can use.
model and native_tool_calls tell you whether your tier’s model can take on-call tools with arguments. Read-only, and calls nothing.
GET
/
v2
/
tools
/
catalog
Get tool catalog
curl --request GET \
--url https://sandbox.voice.miraiminds.co/v2/tools/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.voice.miraiminds.co/v2/tools/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const url = 'https://sandbox.voice.miraiminds.co/v2/tools/catalog';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"object": "list",
"data": [
{
"name": "http",
"kind": "http",
"phases": [
"pre_call",
"on_call",
"post_call"
],
"summary": "Call an https endpoint you own. URL, headers, query and body are templates over the call's namespaces; the reply can be transformed with jq and promoted into variables.",
"config_schema": {
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
],
"default": "GET"
},
"url": {
"type": "string",
"pattern": "^https://",
"maxLength": 2048
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"query": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"body": {
"description": "JSON template. A leaf that is exactly {{= path }} becomes the typed value."
}
},
"required": [
"url"
]
},
"defaults": {
"method": "GET",
"enabled": true,
"on_failure": "continue",
"execution": "sync",
"timeout_ms": {
"pre_call": 5000,
"on_call": 10000,
"post_call": 15000
},
"retry": {
"pre_call": 0,
"on_call": 0,
"post_call": 2
}
},
"tiers": [
"t1",
"t3",
"t5"
],
"available": true
},
{
"name": "schedule_callback",
"kind": "builtin",
"phases": [
"on_call",
"post_call"
],
"summary": "Book a later call to the same person. On_call supplies a default time and note argument schema; post_call uses configured templates. The scheduled call uses normal call admission.",
"config_schema": {
"type": "object",
"properties": {
"min_delay_minutes": {
"type": "integer",
"minimum": 0,
"default": 30
},
"max_days": {
"type": "integer",
"minimum": 1,
"default": 14
},
"at": {
"type": "string",
"description": "post_call only: an RFC3339 timestamp, usually a template such as {{ analysis.data.callback_at }}."
},
"note": {
"type": "string",
"maxLength": 500
}
}
},
"defaults": {
"min_delay_minutes": 30,
"max_days": 14
},
"tiers": [
"t1",
"t3",
"t5"
],
"available": true
},
{
"name": "transfer_call",
"kind": "builtin",
"phases": [
"on_call"
],
"summary": "Hand the caller to a human or another number.",
"config_schema": {
"type": "object",
"properties": {
"to": {
"type": "string",
"pattern": "^\\+[1-9]\\d{7,14}$"
},
"mode": {
"type": "string",
"enum": [
"bridge",
"warm"
]
},
"announce": {
"type": "string"
}
},
"required": [
"to"
]
},
"tiers": [
"t1",
"t3",
"t5"
],
"requires": [
"telephony_transfer"
],
"available": false,
"reason": "telephony support pending"
}
],
"phases": [
{
"phase": "post_call",
"summary": "Runs after the call has settled and been billed. Never changes status, duration or the call.completed payload.",
"max_tools": 10,
"default_timeout_ms": 15000,
"max_timeout_ms": 60000,
"default_retries": 2,
"max_retries": 5,
"namespaces": [
"vars",
"call",
"now",
"tools",
"analysis",
"secrets (templates only)"
]
}
],
"execution_modes": {
"default": "sync",
"on_call_http": [
"sync",
"async"
],
"async_timeout_max_ms": 300000
},
"namespaces": {
"vars": "Call input values, plus pre-call tool outputs as vars.<tool>.<key>.",
"call": "id, agent_id, to, from, tier, direction, channel, campaign_id, contact_id, attempt; after the call also status, ended_reason, duration_secs, answered.",
"args": "on_call only: the arguments the model supplied for this invocation."
},
"operators": [
{
"op": "eq",
"means": "equal after trimming; numeric when both sides are numbers, boolean when both are true/false"
},
{
"op": "exists",
"means": "present and non-empty"
},
{
"op": "is_true",
"means": "one of true/1/yes/on"
}
],
"filters": [
"default:\"fallback\"",
"json",
"urlencode"
],
"limits": {
"tools_per_agent": 40,
"pre_call_tools": 10,
"on_call_tools": 20,
"post_call_tools": 10,
"runs_per_call": 40,
"response_bytes": 262144,
"promoted_value_chars": 512,
"select_keys": 16,
"url_chars": 2048
},
"tier": "t5",
"model": "miraiminds/mira-llm",
"native_tool_calls": true,
"text_style_models": [
"hinglish"
],
"secrets_configured": true
}Authorizations
Your workspace secret key, sk_live_ followed by 32 hex characters. Create one in the console under Developers.
Response
200 - application/json
The catalog (lists shortened here)
⌘I