Server does not advertise the Skills over MCP extension
All tools have descriptions
All tools have non-empty descriptions
All tools have OpenAI behavior hints
75 behavior annotation issue(s) found
How to fix: On each tool, declare annotations.readOnlyHint, annotations.destructiveHint, and annotations.openWorldHint as booleans. The policy review separately assesses whether their values match the tool's actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Get the CallKaro authoring index when guidance is needed for creating or changing an agent, including which focused references cover the unclear fields.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_agent_authoring_reference",
"title": "Get agent authoring reference",
"description": "Get the CallKaro authoring index when guidance is needed for creating or changing an agent, including which focused references cover the unclear fields.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Get behavior-preserving guidance when translation workflow details are needed for an existing agent version. Covers cloning a version and translating it: English operational instructions, spoken-text scope, Indian-language style, and target-language STT/TTS.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_agent_translation_reference",
"title": "Get agent translation reference",
"description": "Get behavior-preserving guidance when translation workflow details are needed for an existing agent version. Covers cloning a version and translating it: English operational instructions, spoken-text scope, Indian-language style, and target-language STT/TTS.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Get reference-version search guidance, preservation rules, and first-language-version publication behavior when those details are needed for creating, updating, or cloning agent versions.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_agent_creation_reference",
"title": "Get agent creation reference",
"description": "Get reference-version search guidance, preservation rules, and first-language-version publication behavior when those details are needed for creating, updating, or cloning agent versions.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Read targeted, token-efficient sections from a saved agent version. If command order or detail flags are unclear, consult the Version discovery and inspection section of get_agent_authoring_reference.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
versionId
MongoDB ObjectId of the saved agent version to inspect.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
command
One command or a non-empty array of commands to run in one inspection.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
functionName
Required for function_details.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
capabilityName
Scopes capability_details, script, postcall_variables, or llms to one capability or pathway node.
Clear enough to supply this argument.
fullText
For script or capability_details, return complete prompt text instead of a preview.
Clear enough to supply this argument.
maxChars
Preview length when fullText is false. Default 2000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
includeSourceCode
For function_details, include the complete source_code body.
Clear enough to supply this argument.
includeCapabilityPrompts
For script on Multi Prompt or Pathway versions, include capability or node prompt previews.
Clear enough to supply this argument.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "inspect_agent_version",
"title": "Inspect agent version",
"description": "Read targeted, token-efficient sections from a saved agent version. If command order or detail flags are unclear, consult the Version discovery and inspection section of get_agent_authoring_reference.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"versionId",
"command"
],
"properties": {
"command": {
"anyOf": [
{
"enum": [
"schema",
"summary",
"interface_index",
"script",
"script_variables",
"list_functions",
"function_details",
"postcall_variables",
"capabilities",
"capability_details",
"pathway_graph",
"call_parameters",
"llms",
"full_minimal"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"schema",
"summary",
"interface_index",
"script",
"script_variables",
"list_functions",
"function_details",
"postcall_variables",
"capabilities",
"capability_details",
"pathway_graph",
"call_parameters",
"llms",
"full_minimal"
],
"type": "string"
},
"minItems": 1
}
],
"description": "One command or a non-empty array of commands to run in one inspection."
},
"fullText": {
"type": "boolean",
"default": false,
"description": "For script or capability_details, return complete prompt text instead of a preview."
},
"maxChars": {
"type": "integer",
"default": 2000,
"maximum": 9007199254740991,
"description": "Preview length when fullText is false. Default 2000.",
"exclusiveMinimum": 0
},
"versionId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "MongoDB ObjectId of the saved agent version to inspect."
},
"functionName": {
"type": "string",
"minLength": 1,
"description": "Required for function_details."
},
"capabilityName": {
"type": "string",
"minLength": 1,
"description": "Scopes capability_details, script, postcall_variables, or llms to one capability or pathway node."
},
"includeSourceCode": {
"type": "boolean",
"default": false,
"description": "For function_details, include the complete source_code body."
},
"includeCapabilityPrompts": {
"type": "boolean",
"default": false,
"description": "For script on Multi Prompt or Pathway versions, include capability or node prompt previews."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Create a new version by cloning a source version, optionally migrating its prompt mode and overriding voice, transcriber, or language settings. Prompts, functions, models, and capabilities are inherited or migrated from the source and cannot be overridden by this operation. For translation, see get_agent_translation_reference. Cloning changes language runtime fields but does not translate inherited prompts or caller-facing function messages, so inspect and update the new version afterward. If no published version exists for the target language, the clone is automatically added to that language's published mapping; otherwise it does not replace the published version automatically. If any platform convention, schema choice, field constraint, side effect, or supported combination is unclear, consult get_agent_authoring_reference and only the focused references needed for the task.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
9 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
sourceVersionId
Existing version to clone or migrate.
Clear enough to supply this argument.
version › versionName
Name for the cloned version.
Clear enough to supply this argument.
version › systempromptType
Target prompt mode. The source configuration is migrated when this differs from its current mode.
Clear enough to supply this argument.
version › transcriber
Complete speech-to-text configuration selected from the list_transcribers tool. Copy the returned configuration unchanged, including its provider, model, language value, language-detection setting, and provider-specific fields.
Clear enough to supply this argument.
version › secondary_transcriber
Complete speech-to-text configuration selected from the list_transcribers tool. Copy the returned configuration unchanged, including its provider, model, language value, language-detection setting, and provider-specific fields.
Clear enough to supply this argument.
version › voice_configuration
Complete voice configuration returned by the list_voices tool. Copy the selected configuration as returned, including provider-specific fields such as voice_provider, voice_id, voice_model, voice_language, speed, pitch, stability, or emotions. Do not synthesize IDs.
Clear enough to supply this argument.
version › secondary_voice_configuration
Complete voice configuration returned by the list_voices tool. Copy the selected configuration as returned, including provider-specific fields such as voice_provider, voice_id, voice_model, voice_language, speed, pitch, stability, or emotions. Do not synthesize IDs.
Clear enough to supply this argument.
version › silence_language
Language used for silence prompts. Use multi when prompts may be spoken in more than one language.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
version › default_language
Language code supported by CallKaro agent routing and version configuration.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "clone_agent_version",
"title": "Clone agent version",
"description": "Create a new version by cloning a source version, optionally migrating its prompt mode and overriding voice, transcriber, or language settings. Prompts, functions, models, and capabilities are inherited or migrated from the source and cannot be overridden by this operation. For translation, see get_agent_translation_reference. Cloning changes language runtime fields but does not translate inherited prompts or caller-facing function messages, so inspect and update the new version afterward. If no published version exists for the target language, the clone is automatically added to that language's published mapping; otherwise it does not replace the published version automatically. If any platform convention, schema choice, field constraint, side effect, or supported combination is unclear, consult get_agent_authoring_reference and only the focused references needed for the task.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agentId",
"sourceVersionId",
"version"
],
"properties": {
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"version": {
"type": "object",
"required": [
"versionName",
"systempromptType"
],
"properties": {
"transcriber": {
"type": "object",
"description": "Complete speech-to-text configuration selected from the list_transcribers tool. Copy the returned configuration unchanged, including its provider, model, language value, language-detection setting, and provider-specific fields.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"versionName": {
"type": "string",
"minLength": 1,
"description": "Name for the cloned version."
},
"default_language": {
"enum": [
"en",
"hi",
"kn",
"ta",
"te",
"mr",
"gu",
"bn",
"ml"
],
"type": "string",
"description": "Language code supported by CallKaro agent routing and version configuration."
},
"silence_language": {
"enum": [
"en",
"hi",
"kn",
"ta",
"te",
"mr",
"gu",
"bn",
"ml",
"multi"
],
"type": "string",
"description": "Language used for silence prompts. Use multi when prompts may be spoken in more than one language."
},
"systempromptType": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 3
}
],
"description": "Target prompt mode. The source configuration is migrated when this differs from its current mode."
},
"voice_configuration": {
"type": "object",
"description": "Complete voice configuration returned by the list_voices tool. Copy the selected configuration as returned, including provider-specific fields such as voice_provider, voice_id, voice_model, voice_language, speed, pitch, stability, or emotions. Do not synthesize IDs.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"secondary_transcriber": {
"type": "object",
"description": "Complete speech-to-text configuration selected from the list_transcribers tool. Copy the returned configuration unchanged, including its provider, model, language value, language-detection setting, and provider-specific fields.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"secondary_voice_configuration": {
"type": "object",
"description": "Complete voice configuration returned by the list_voices tool. Copy the selected configuration as returned, including provider-specific fields such as voice_provider, voice_id, voice_model, voice_language, speed, pitch, stability, or emotions. Do not synthesize IDs.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"description": "Clone or migrate a source version. Only voice, transcriber, and language settings can override the source during this operation.",
"additionalProperties": false
},
"sourceVersionId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "Existing version to clone or migrate."
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Set or clear a voice agent's WhatsApp inbound number. Unlike setting whatsappInboundPhoneNumber via update_agent directly, this clears the number off any other agent that currently holds it first, enforcing the one-agent-per-inbound-number rule. Use list_whatsapp_numbers to find the id.
The description explains the capability, when to use it, and what to expect.
Inputs25/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
whatsappInboundPhoneNumber
Meta WhatsApp phone number id, or null to clear.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
Create a chat agent and its initial version. Omitted settings receive safe defaults. If the workflow, defaults, function rules, or version behavior is unclear, consult get_chat_agent_authoring_reference.
The description explains the capability, when to use it, and what to expect.
Inputs2/100
2 of 81 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
chatAgent › chatAgentName
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › channel
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › agentMode
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › agentStatus
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › versionName
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › model
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › reasoningEffort
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › secondaryChatModel › anyOf › 0 › model
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › secondaryChatModel › anyOf › 0 › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
Update agent or version fields. Omit versionId to update the published version. If the workflow, defaults, function rules, or version behavior is unclear, consult get_chat_agent_authoring_reference.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs4/100
4 of 84 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
versionId
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatAgentName
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › agentStatus
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › agentMode
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › whatsappPhoneNumber
Meta WhatsApp phone number id assigned to this chat agent. Find it with list_whatsapp_numbers.
Clear enough to supply this argument.
chatAgent › whatsappDisplayPhN
Display name shown for the assigned WhatsApp number.
Clear enough to supply this argument.
chatAgent › versionName
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › model
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › chatModel › reasoningEffort
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › secondaryChatModel › anyOf › 0 › model
Not provided
Missing description. Explain what this value means and how to supply it.
chatAgent › secondaryChatModel › anyOf › 0 › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Create a version from explicit settings or cloneFrom, which must belong to this agent. Creation does not publish it. If the workflow, defaults, function rules, or version behavior is unclear, consult get_chat_agent_authoring_reference.
The description explains the capability, when to use it, and what to expect.
Inputs2/100
2 of 79 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
version › cloneFrom
Not provided
Missing description. Explain what this value means and how to supply it.
version › versionName
Not provided
Missing description. Explain what this value means and how to supply it.
version › chatModel › model
Not provided
Missing description. Explain what this value means and how to supply it.
version › chatModel › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
version › chatModel › reasoningEffort
Not provided
Missing description. Explain what this value means and how to supply it.
version › secondaryChatModel › anyOf › 0 › model
Not provided
Missing description. Explain what this value means and how to supply it.
version › secondaryChatModel › anyOf › 0 › temperature
Not provided
Missing description. Explain what this value means and how to supply it.
version › secondaryChatModel › anyOf › 0 › reasoningEffort
Not provided
Missing description. Explain what this value means and how to supply it.
version › chatAgentSystemPrompt
Not provided
Missing description. Explain what this value means and how to supply it.
version › maxLLMRounds
Not provided
Missing description. Explain what this value means and how to supply it.
version › contextLength
Not provided
Missing description. Explain what this value means and how to supply it.
version › maxBotMessagesPerSession
Not provided
Missing description. Explain what this value means and how to supply it.
version › messageGap
Not provided
Missing description. Explain what this value means and how to supply it.
version › initialReplyDelaySeconds
Not provided
Missing description. Explain what this value means and how to supply it.
version › multipleMessages
Not provided
Missing description. Explain what this value means and how to supply it.
version › supportInteractiveMessage
Not provided
Missing description. Explain what this value means and how to supply it.
version › replyToMessage
Not provided
Missing description. Explain what this value means and how to supply it.
version › imageContext
Not provided
Missing description. Explain what this value means and how to supply it.
version › audioTranscription
Not provided
Missing description. Explain what this value means and how to supply it.
version › transcriber › anyOf › 0 › transcriber_provider
Not provided
Missing description. Explain what this value means and how to supply it.
version › transcriber › anyOf › 0 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › name
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › type
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › description
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › source_code
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › api
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › method
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › timeout
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › directSend
Not provided
Missing description. Explain what this value means and how to supply it.
version › functions › items › parameters
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Permanently delete a version and its commit history. Refused for the published version and for a version another version's Assign version step routes to.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
versionId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_chat_agent_version",
"title": "Delete chat-agent version",
"description": "Permanently delete a version and its commit history. Refused for the published version and for a version another version's Assign version step routes to.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agentId",
"versionId"
],
"properties": {
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"versionId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Add versions to an existing chat agent from exported JSON. Agent-level fields in the entries are ignored; every entry is validated first and nothing is written if one fails.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
versions
Exported chat-agent JSON, one object per version (what `get_chat_agent` / the dashboard export give).
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Create a chat agent from exported JSON. Several entries become ONE agent with that many versions (the first is published); agent-level fields must be identical across entries.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs82/100
Input documentation gives an agent enough context to populate the arguments.
versions
Exported chat-agent JSON, one object per version (what `get_chat_agent` / the dashboard export give).
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "revert_chat_agent_commit",
"title": "Revert chat-agent version to a commit",
"description": "Set a version back to the state a commit saved. The revert is itself recorded as a new commit, so it can be undone the same way.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agentId",
"commitId"
],
"properties": {
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"commitId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Run a shell-style text query over a call's raw log, exposed as a virtual file
/call.log. Supports grep, awk, sed, cut, sort, uniq, head, tail, wc and pipes -- nothing runs on a
real shell, so this is safe with any query.
Line format: "<date> <time> - LEVEL - [module:line] - message"
Examples:
grep -E ' - (ERROR|WARNING) - ' /call.log
grep -v _trace.py /call.log | tail -50 (drop connection-trace noise)
awk -F' - ' '{print $2}' /call.log | sort | uniq -c
sed -n '100,200p' /call.log (page through a large log)
Output is capped; if truncated, narrow the query. Logs are kept 7 days and typically appear a few
minutes after a call ends -- a missing log on a very recent call usually means "not uploaded yet".
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
callId
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "query_call_logs",
"title": "Query call logs",
"description": "Run a shell-style text query over a call's raw log, exposed as a virtual file\n/call.log. Supports grep, awk, sed, cut, sort, uniq, head, tail, wc and pipes -- nothing runs on a\nreal shell, so this is safe with any query.\n\nLine format: \"<date> <time> - LEVEL - [module:line] - message\"\n\nExamples:\n grep -E ' - (ERROR|WARNING) - ' /call.log\n grep -v _trace.py /call.log | tail -50 (drop connection-trace noise)\n awk -F' - ' '{print $2}' /call.log | sort | uniq -c\n sed -n '100,200p' /call.log (page through a large log)\n\nOutput is capped; if truncated, narrow the query. Logs are kept 7 days and typically appear a few\nminutes after a call ends -- a missing log on a very recent call usually means \"not uploaded yet\".",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"callId",
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1
},
"callId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Export filtered call history as CSV. Exports at most 5000 calls. If the matching calls are more than 5000, they cannot be exported from here; get them from the dashboard instead. Exports include callee phone numbers. Call get_calls_reference with section "export" before using this tool.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 18 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
page
Not provided
Missing description. Explain what this value means and how to supply it.
pageSize
Not provided
Missing description. Explain what this value means and how to supply it.
callTypes
Not provided
Missing description. Explain what this value means and how to supply it.
startDate
Not provided
Missing description. Explain what this value means and how to supply it.
endDate
Not provided
Missing description. Explain what this value means and how to supply it.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
versionIds
Not provided
Missing description. Explain what this value means and how to supply it.
isBatchCall
Not provided
Missing description. Explain what this value means and how to supply it.
hangupReasons
Not provided
Missing description. Explain what this value means and how to supply it.
durationBuckets
Not provided
Missing description. Explain what this value means and how to supply it.
phoneNumber
Not provided
Missing description. Explain what this value means and how to supply it.
conversionStatus
Not provided
Missing description. Explain what this value means and how to supply it.
leadId
Not provided
Missing description. Explain what this value means and how to supply it.
buyLead
Not provided
Missing description. Explain what this value means and how to supply it.
providerTypes
Not provided
Missing description. Explain what this value means and how to supply it.
postCallFilters
Not provided
Missing description. Explain what this value means and how to supply it.
fields
Not provided
Missing description. Explain what this value means and how to supply it.
includeChatHistory
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
List phone numbers on the account's linked WhatsApp Business Account (Meta), with verification/quality status. To add a new number, the user must link it on the CallKaro dashboard ("+ Add Phone Number") — it requires an interactive Facebook login and cannot be done from here.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_whatsapp_numbers",
"title": "List WhatsApp numbers",
"description": "List phone numbers on the account's linked WhatsApp Business Account (Meta), with verification/quality status. To add a new number, the user must link it on the CallKaro dashboard (\"+ Add Phone Number\") — it requires an interactive Facebook login and cannot be done from here.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Semantically search curated reference agent versions. Returns curated reference agent versions most relevant to a query, for use as examples when designing a new agent. Not needed when translating an existing version.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Natural language description of the use case you are looking for. Include industry, language, call direction, and key behaviours. Example: 'Hindi outbound B2C agent for car inspection booking with slot selection'
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
topK
Max results to return. Default 3.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tagFilter
Hard filter: only versions that have at least one of these tags are considered. Example: ['hindi', 'multiprompt']. Only use when you are sure the tags exist.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
minScore
Minimum similarity score from 0 to 1. Lower to 0.3 for niche use cases.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_reference_versions",
"title": "Search reference versions",
"description": "Semantically search curated reference agent versions. Returns curated reference agent versions most relevant to a query, for use as examples when designing a new agent. Not needed when translating an existing version.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"topK": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "Max results to return. Default 3."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Natural language description of the use case you are looking for. Include industry, language, call direction, and key behaviours. Example: 'Hindi outbound B2C agent for car inspection booking with slot selection'"
},
"minScore": {
"type": "number",
"default": 0.5,
"maximum": 1,
"minimum": 0,
"description": "Minimum similarity score from 0 to 1. Lower to 0.3 for niche use cases."
},
"tagFilter": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": [],
"description": "Hard filter: only versions that have at least one of these tags are considered. Example: ['hindi', 'multiprompt']. Only use when you are sure the tags exist."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
List voice providers available to the authenticated account. Call this before get_voice_provider_metadata and list_voices; unavailable providers are omitted.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_voice_providers",
"title": "List voice providers",
"description": "List voice providers available to the authenticated account. Call this before get_voice_provider_metadata and list_voices; unavailable providers are omitted.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Search voices for one account-scoped provider. First call list_voice_providers, then get_voice_provider_metadata, and supply only filters supported by that metadata. Results retain provider-native fields. Each result carries its provider-native voice configuration, used as returned in an agent version.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 71 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
oneOf › 0 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › voiceId
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › voiceName
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › style
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 0 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › query
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 1 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › query
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › isOwner
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › includeArchived
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 2 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › query
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 3 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › query
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › languages
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › accent
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › useCases
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › category
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › voiceType
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › highQuality
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › voiceIds
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › collectionId
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › sort
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › sortDirection
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 4 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › locale
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › voiceId
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › voiceName
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › style
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 5 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 6 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 6 › voice_name
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 6 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 7 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 7 › id
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 7 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 7 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › voiceId
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › voiceName
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 8 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › language
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › gender
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › type
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › model
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › projectId
Not provided
Missing description. Explain what this value means and how to supply it.
oneOf › 9 › limit
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
List available speech-to-text providers, models, languages, modes, and provider-specific configuration fields. Filter by provider, language, or model when needed. Copy returned provider and model values unchanged into agent configurations.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
provider
Not provided
Missing description. Explain what this value means and how to supply it.
language
Not provided
Missing description. Explain what this value means and how to supply it.
model
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_transcribers",
"title": "List transcribers",
"description": "List available speech-to-text providers, models, languages, modes, and provider-specific configuration fields. Filter by provider, language, or model when needed. Copy returned provider and model values unchanged into agent configurations.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"model": {
"type": "string",
"minLength": 1
},
"language": {
"type": "string",
"minLength": 1
},
"provider": {
"enum": [
"Azure",
"Cartesia",
"Deepgram",
"Eleven Labs",
"Gnani",
"Groq",
"Sarvam",
"Soniox"
],
"type": "string"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Browse LLM model IDs by usage category. Use category to find models valid for agent runtime, post-call processing, simulations, analyzers, auditors, chat agents, workflows, or agent building. Copy model IDs unchanged into configurations.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
category
Not provided
Missing description. Explain what this value means and how to supply it.
provider
Not provided
Missing description. Explain what this value means and how to supply it.
model
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description54/100
Create a test case for an agent simulation.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
testcaseName
Short, distinctive scenario name, such as "Books demo - slot unavailable".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPersona
Who the simulated caller is (identity, background, tone). Sent to the caller model ahead of userPrompt.
Clear enough to supply this argument.
userPrompt
Instructions for the simulated caller: who they are, what they want, and how they behave. Do not write instructions for the agent here.
Clear enough to supply this argument.
successCriteria
Observable, checkable conditions the agent must satisfy to pass. Be specific because an LLM grader evaluates these criteria.
Clear enough to supply this argument.
testVariables
Values for the agent version's {{variable}} placeholders during this test.
Clear enough to supply this argument.
testFunctions › items › name
Exact name of the agent function to mock.
Clear enough to supply this argument.
testFunctions › items › mock
Default true: the function returns the mock response. false: the simulation runs the REAL function (real API calls, CRM writes, etc.) and any response is ignored — set it only when the user explicitly asks for it, after asking which functions. WhatsApp functions are always mocked, whatever this says.
Clear enough to supply this argument.
testFunctions › items › response
Canned value returned when mock is true: an object is returned as-is, a string as {status:'success', message}. Omit or null for the default mock. Use the shape the real function returns.
Clear enough to supply this argument.
testLLMModel
Model that plays the simulated caller. Omit to use the platform default. Allowed values: list_llm_models with category "simulation".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentId
MongoDB ObjectId of the voice agent this test case belongs to.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_test_case",
"title": "Create simulation test case",
"description": "Create a test case for an agent simulation.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"testcaseName",
"userPersona",
"agentId"
],
"properties": {
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "MongoDB ObjectId of the voice agent this test case belongs to."
},
"userPrompt": {
"type": "string",
"description": "Instructions for the simulated caller: who they are, what they want, and how they behave. Do not write instructions for the agent here."
},
"userPersona": {
"type": "string",
"minLength": 1,
"description": "Who the simulated caller is (identity, background, tone). Sent to the caller model ahead of userPrompt."
},
"testLLMModel": {
"type": "string",
"minLength": 1,
"description": "Model that plays the simulated caller. Omit to use the platform default. Allowed values: list_llm_models with category \"simulation\"."
},
"testcaseName": {
"type": "string",
"minLength": 1,
"description": "Short, distinctive scenario name, such as \"Books demo - slot unavailable\"."
},
"testFunctions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"mock": {
"type": "boolean",
"description": "Default true: the function returns the mock response. false: the simulation runs the REAL function (real API calls, CRM writes, etc.) and any response is ignored — set it only when the user explicitly asks for it, after asking which functions. WhatsApp functions are always mocked, whatever this says."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Exact name of the agent function to mock."
},
"response": {
"description": "Canned value returned when mock is true: an object is returned as-is, a string as {status:'success', message}. Omit or null for the default mock. Use the shape the real function returns."
}
},
"additionalProperties": false
},
"description": "Mock responses for functions the agent may call, preventing the simulation from invoking real external systems."
},
"testVariables": {
"type": "object",
"description": "Values for the agent version's {{variable}} placeholders during this test.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"successCriteria": {
"type": "string",
"description": "Observable, checkable conditions the agent must satisfy to pass. Be specific because an LLM grader evaluates these criteria."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description48/100
Update a simulation test case.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs78/100
9 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
testcaseName
Short, distinctive scenario name, such as "Books demo - slot unavailable".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPersona
Who the simulated caller is (identity, background, tone). Sent to the caller model ahead of userPrompt.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPrompt
Instructions for the simulated caller: who they are, what they want, and how they behave. Do not write instructions for the agent here.
Clear enough to supply this argument.
successCriteria
Observable, checkable conditions the agent must satisfy to pass. Be specific because an LLM grader evaluates these criteria.
Clear enough to supply this argument.
testVariables
Values for the agent version's {{variable}} placeholders during this test.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
testFunctions › items › name
Exact name of the agent function to mock.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
testFunctions › items › mock
Default true: the function returns the mock response. false: the simulation runs the REAL function (real API calls, CRM writes, etc.) and any response is ignored — set it only when the user explicitly asks for it, after asking which functions. WhatsApp functions are always mocked, whatever this says.
Clear enough to supply this argument.
testFunctions › items › response
Canned value returned when mock is true: an object is returned as-is, a string as {status:'success', message}. Omit or null for the default mock. Use the shape the real function returns.
Clear enough to supply this argument.
testLLMModel
Model that plays the simulated caller. Omit to use the platform default. Allowed values: list_llm_models with category "simulation".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
testCaseId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_test_case",
"title": "Update simulation test case",
"description": "Update a simulation test case.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"testCaseId"
],
"properties": {
"testCaseId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"userPrompt": {
"type": "string",
"description": "Instructions for the simulated caller: who they are, what they want, and how they behave. Do not write instructions for the agent here."
},
"userPersona": {
"type": "string",
"minLength": 1,
"description": "Who the simulated caller is (identity, background, tone). Sent to the caller model ahead of userPrompt."
},
"testLLMModel": {
"type": "string",
"minLength": 1,
"description": "Model that plays the simulated caller. Omit to use the platform default. Allowed values: list_llm_models with category \"simulation\"."
},
"testcaseName": {
"type": "string",
"minLength": 1,
"description": "Short, distinctive scenario name, such as \"Books demo - slot unavailable\"."
},
"testFunctions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"mock": {
"type": "boolean",
"description": "Default true: the function returns the mock response. false: the simulation runs the REAL function (real API calls, CRM writes, etc.) and any response is ignored — set it only when the user explicitly asks for it, after asking which functions. WhatsApp functions are always mocked, whatever this says."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Exact name of the agent function to mock."
},
"response": {
"description": "Canned value returned when mock is true: an object is returned as-is, a string as {status:'success', message}. Omit or null for the default mock. Use the shape the real function returns."
}
},
"additionalProperties": false
},
"description": "Mock responses for functions the agent may call, preventing the simulation from invoking real external systems."
},
"testVariables": {
"type": "object",
"description": "Values for the agent version's {{variable}} placeholders during this test.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"successCriteria": {
"type": "string",
"description": "Observable, checkable conditions the agent must satisfy to pass. Be specific because an LLM grader evaluates these criteria."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Get results for a simulation run. Check analysisStatus on each result: "failed" means the grader crashed and the run was not judged, so isTestSucceed is meaningless and the run is neither a pass nor a fail.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
batchId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_simulation_results",
"title": "Get simulation results",
"description": "Get results for a simulation run. Check analysisStatus on each result: \"failed\" means the grader crashed and the run was not judged, so isTestSucceed is meaningless and the run is neither a pass nor a fail.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"batchId"
],
"properties": {
"batchId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Create a simulation test case for a chat agent. Chat simulation is for WhatsApp agents of type Basic (agentMode "ai") or Advanced. An AI plays the user, the agent replies in test mode (nothing is sent), and a grader rates the transcript against successCriteria.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
testCaseName
Short, distinctive scenario name, such as "Asks for payment link - already registered".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPersona
Who the simulated WhatsApp user is: identity, background, tone, what they know.
Clear enough to supply this argument.
userPrompt
Instructions for the simulated user: what they want and how they behave. Do not write instructions for the agent here.
Clear enough to supply this argument.
successCriteria
Observable, checkable conditions the agent must meet. An LLM grader rates them 0-10; 7 or more passes.
Clear enough to supply this argument.
primaryUserModel
Model that plays the user. Omit for the account's chat-agent default. Allowed values: list_llm_models with category "chat-agent".
Clear enough to supply this argument.
secondaryUserModel
Fallback model if the primary fails to reply. Must differ from primaryUserModel.
Explain what happens when this optional value is omitted.
functionMocks › items › name
Exact name of the chat agent's custom function to mock.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
functionMocks › items › response
JSON the function returns during the simulation. No real API is called. A plain string becomes {status: "success", message}. Omit to return the default success response.
Clear enough to supply this argument.
functionMocks › items › enabled
Default true: the mock answers and the real function never runs. False switches the mock off so the agent's real function (or workflow code step) runs instead, with the account's real secrets and real API calls, and `response` is ignored. Only switch one off when calling it for real is safe.
Clear enough to supply this argument.
chatAgentId
MongoDB ObjectId of the chat agent this test case belongs to.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_chat_test_case",
"title": "Create chat simulation test case",
"description": "Create a simulation test case for a chat agent. Chat simulation is for WhatsApp agents of type Basic (agentMode \"ai\") or Advanced. An AI plays the user, the agent replies in test mode (nothing is sent), and a grader rates the transcript against successCriteria.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"testCaseName",
"chatAgentId"
],
"properties": {
"userPrompt": {
"type": "string",
"description": "Instructions for the simulated user: what they want and how they behave. Do not write instructions for the agent here."
},
"chatAgentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "MongoDB ObjectId of the chat agent this test case belongs to."
},
"userPersona": {
"type": "string",
"description": "Who the simulated WhatsApp user is: identity, background, tone, what they know."
},
"testCaseName": {
"type": "string",
"minLength": 1,
"description": "Short, distinctive scenario name, such as \"Asks for payment link - already registered\"."
},
"functionMocks": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Exact name of the chat agent's custom function to mock."
},
"enabled": {
"type": "boolean",
"description": "Default true: the mock answers and the real function never runs. False switches the mock off so the agent's real function (or workflow code step) runs instead, with the account's real secrets and real API calls, and `response` is ignored. Only switch one off when calling it for real is safe."
},
"response": {
"description": "JSON the function returns during the simulation. No real API is called. A plain string becomes {status: \"success\", message}. Omit to return the default success response."
}
},
"additionalProperties": false
},
"maxItems": 100,
"description": "Mock responses for the agent's custom functions. Built-in send functions (templates, media, calls) never send in a simulation and need no mock."
},
"successCriteria": {
"type": "string",
"description": "Observable, checkable conditions the agent must meet. An LLM grader rates them 0-10; 7 or more passes."
},
"primaryUserModel": {
"type": "string",
"minLength": 1,
"description": "Model that plays the user. Omit for the account's chat-agent default. Allowed values: list_llm_models with category \"chat-agent\"."
},
"secondaryUserModel": {
"type": "string",
"minLength": 1,
"description": "Fallback model if the primary fails to reply. Must differ from primaryUserModel."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Update a chat simulation test case. Only the fields passed change.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs80/100
9 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
testCaseName
Short, distinctive scenario name, such as "Asks for payment link - already registered".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPersona
Who the simulated WhatsApp user is: identity, background, tone, what they know.
Clear enough to supply this argument.
userPrompt
Instructions for the simulated user: what they want and how they behave. Do not write instructions for the agent here.
Clear enough to supply this argument.
successCriteria
Observable, checkable conditions the agent must meet. An LLM grader rates them 0-10; 7 or more passes.
Clear enough to supply this argument.
primaryUserModel
Model that plays the user. Omit for the account's chat-agent default. Allowed values: list_llm_models with category "chat-agent".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secondaryUserModel
Fallback model if the primary fails to reply. Must differ from primaryUserModel.
Explain what happens when this optional value is omitted.
functionMocks › items › name
Exact name of the chat agent's custom function to mock.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
functionMocks › items › response
JSON the function returns during the simulation. No real API is called. A plain string becomes {status: "success", message}. Omit to return the default success response.
Clear enough to supply this argument.
functionMocks › items › enabled
Default true: the mock answers and the real function never runs. False switches the mock off so the agent's real function (or workflow code step) runs instead, with the account's real secrets and real API calls, and `response` is ignored. Only switch one off when calling it for real is safe.
Clear enough to supply this argument.
testCaseId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_chat_test_case",
"title": "Update chat simulation test case",
"description": "Update a chat simulation test case. Only the fields passed change.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"testCaseId"
],
"properties": {
"testCaseId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"userPrompt": {
"type": "string",
"description": "Instructions for the simulated user: what they want and how they behave. Do not write instructions for the agent here."
},
"userPersona": {
"type": "string",
"description": "Who the simulated WhatsApp user is: identity, background, tone, what they know."
},
"testCaseName": {
"type": "string",
"minLength": 1,
"description": "Short, distinctive scenario name, such as \"Asks for payment link - already registered\"."
},
"functionMocks": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Exact name of the chat agent's custom function to mock."
},
"enabled": {
"type": "boolean",
"description": "Default true: the mock answers and the real function never runs. False switches the mock off so the agent's real function (or workflow code step) runs instead, with the account's real secrets and real API calls, and `response` is ignored. Only switch one off when calling it for real is safe."
},
"response": {
"description": "JSON the function returns during the simulation. No real API is called. A plain string becomes {status: \"success\", message}. Omit to return the default success response."
}
},
"additionalProperties": false
},
"maxItems": 100,
"description": "Mock responses for the agent's custom functions. Built-in send functions (templates, media, calls) never send in a simulation and need no mock."
},
"successCriteria": {
"type": "string",
"description": "Observable, checkable conditions the agent must meet. An LLM grader rates them 0-10; 7 or more passes."
},
"primaryUserModel": {
"type": "string",
"minLength": 1,
"description": "Model that plays the user. Omit for the account's chat-agent default. Allowed values: list_llm_models with category \"chat-agent\"."
},
"secondaryUserModel": {
"type": "string",
"minLength": 1,
"description": "Fallback model if the primary fails to reply. Must differ from primaryUserModel."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Run chat test cases against chat agent versions. Runs test cases x versions x epochs conversations (max 100 epochs, 500 runs). Spends credits. Async: read results with get_chat_simulation_results.
The description explains the capability, when to use it, and what to expect.
Inputs15/100
1 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
chatAgentId
Not provided
Missing description. Explain what this value means and how to supply it.
batchName
Not provided
Missing description. Explain what this value means and how to supply it.
epochs
Not provided
Missing description. Explain what this value means and how to supply it.
testCaseIds
Not provided
Missing description. Explain what this value means and how to supply it.
versionIds
Chat agent version IDs (list_chat_agent_versions).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Get the results of a chat simulation run: each simulation's chat_transcript and post_simulation[0] (successRating 0-10, agentPerformance, userPerformance, successFlaws). A rating of 7 or more passes; an empty post_simulation means grading failed and the run is neither a pass nor a fail. Fewer simulations than the batch's number_of_runs means it is still running.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_chat_simulation_results",
"title": "Get chat simulation results",
"description": "Get the results of a chat simulation run: each simulation's chat_transcript and post_simulation[0] (successRating 0-10, agentPerformance, userPerformance, successFlaws). A rating of 7 or more passes; an empty post_simulation means grading failed and the run is neither a pass nor a fail. Fewer simulations than the batch's number_of_runs means it is still running.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Load one piece of what's needed to create or edit an AI Auditor audit strategy for an agent — existing strategies, one strategy's full detail, drop-off reasons or boolean postcall filters aggregated across the agent's versions, the platform-wide hangup reason codes, or the allowed audit models. For a single version's own callFlow text (for callflow_summary) or its raw postcall array, use inspect_agent_version instead.
The description explains the capability, when to use it, and what to expect.
Inputs58/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
action
list_strategies: every existing strategy for the agent (name + active status) — check before creating, to avoid duplicates. get_strategy: one strategy by strategyId, in full — before editing it. list_drop_off_reasons / list_postcall_filters: names aggregated across all of the agent's versions (from each version's postcall array, types call_drop_off_reason / boolean), each naming which versions actually configure it. Use these, not inspect_agent_version, when you need names aggregated across every version rather than one version at a time. list_hangup_reasons: the fixed platform-wide hangup reason codes (same for every agent, not version-specific). list_audit_models: the audit models this account is allowed to use for the llms field.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
strategyId
Required for get_strategy; ignored for every other action
Clear enough to supply this argument.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_audit_strategy_setup_info",
"title": "Get audit strategy setup info",
"description": "Load one piece of what's needed to create or edit an AI Auditor audit strategy for an agent — existing strategies, one strategy's full detail, drop-off reasons or boolean postcall filters aggregated across the agent's versions, the platform-wide hangup reason codes, or the allowed audit models. For a single version's own callFlow text (for callflow_summary) or its raw postcall array, use inspect_agent_version instead.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action",
"agentId"
],
"properties": {
"action": {
"enum": [
"list_strategies",
"get_strategy",
"list_drop_off_reasons",
"list_postcall_filters",
"list_hangup_reasons",
"list_audit_models"
],
"type": "string",
"description": "list_strategies: every existing strategy for the agent (name + active status) — check before creating, to avoid duplicates. get_strategy: one strategy by strategyId, in full — before editing it. list_drop_off_reasons / list_postcall_filters: names aggregated across all of the agent's versions (from each version's postcall array, types call_drop_off_reason / boolean), each naming which versions actually configure it. Use these, not inspect_agent_version, when you need names aggregated across every version rather than one version at a time. list_hangup_reasons: the fixed platform-wide hangup reason codes (same for every agent, not version-specific). list_audit_models: the audit models this account is allowed to use for the llms field."
},
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"strategyId": {
"type": "string",
"description": "Required for get_strategy; ignored for every other action"
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Create a new AI Auditor audit strategy for an agent (action: create), or update an existing one (action: update, strategyId required). Call get_audit_strategy_setup_info first — list_strategies/get_strategy to check existing ones, list_drop_off_reasons/list_postcall_filters/ list_hangup_reasons/list_audit_models for the values these fields accept — and use inspect_agent_version for a version's callFlow (for callflow_summary). Never invent a filter name, version id, or model — only use ones returned by those tools.
The description explains the capability, when to use it, and what to expect.
Inputs55/100
16 of 23 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
action
create: make a new strategy (audit_strategy required, strategyId must be omitted). update: change an existing one (strategyId required).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentId
Not provided
Missing description. Explain what this value means and how to supply it.
strategyId
Existing audit strategy id — required when action is update, must be omitted when action is create
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Not provided
Missing description. Explain what this value means and how to supply it.
audit_strategy
Free-text audit instructions for the LLM auditor — required when action is create
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
audit_filters › version_ids
Comma-joined V2AgentVersion ids
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
audit_filters › name
Comma-joined call types. Defaults to inbound,outbound,outbound-api,outbound-scheduled on create.
Clear enough to supply this argument.
audit_filters › hangup_reasons
Comma-joined hangup codes. Defaults to CLIENT_INITIATED,PARTICIPANT_REMOVED,SESSION_TIMEOUT on create.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
audit_filters › call_duration
Not provided
Missing description. Explain what this value means and how to supply it.
audit_filters › drop_off_reasons
Comma-joined drop-off reason names — from inspect_agent_version's postcall_variables (type call_drop_off_reason), never invented
Clear enough to supply this argument.
audit_filters › conversion_status
Not provided
Missing description. Explain what this value means and how to supply it.
postcall_filters › items › name
Boolean postcall variable name, from inspect_agent_version's postcall_variables (type boolean) — never invented
Clear enough to supply this argument.
postcall_filters › items › value
Not provided
Missing description. Explain what this value means and how to supply it.
active
Defaults to false on create
Clear enough to supply this argument.
extra_variables › items › type
text: free-form value. selector: a category (list allowed categories in description). boolean: true/false for a neutral, descriptive condition (e.g. "did the caller ask about pricing"), no right or wrong answer implied. issue: true only when a specific compliance/quality FAILURE occurred — the description should name the violation (e.g. "agent shared pricing that does not match the approved rate card"), not a neutral fact; use this for anything that should be flagged as a problem, distinct from boolean which just records a fact. number: an extracted or calculated numeric value.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
extra_variables › items › name
Unique short snake_case output field name
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
extra_variables › items › description
Precise instructions describing what evidence to find and what value to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
llms › provider
Not provided
Missing description. Explain what this value means and how to supply it.
llms › name
Not provided
Missing description. Explain what this value means and how to supply it.
percentage_calls_to_be_audited_per_hour
Percentage of eligible calls to select each hourly scheduling cycle. Defaults to 100 on create.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
max_calls_to_be_audited_per_hour
Maximum eligible calls per hourly cycle; 0 means no limit. Defaults to 0 on create.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
retranscribe_audio
Defaults to false on create
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
callflow_summary
Generated from a version's callFlow (see inspect_agent_version). Defaults to "" on create
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_or_update_audit_strategy",
"title": "Create or update an audit strategy",
"description": "Create a new AI Auditor audit strategy for an agent (action: create), or update an existing one (action: update, strategyId required). Call get_audit_strategy_setup_info first — list_strategies/get_strategy to check existing ones, list_drop_off_reasons/list_postcall_filters/ list_hangup_reasons/list_audit_models for the values these fields accept — and use inspect_agent_version for a version's callFlow (for callflow_summary). Never invent a filter name, version id, or model — only use ones returned by those tools.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action",
"agentId"
],
"properties": {
"llms": {
"type": "object",
"required": [
"provider",
"name"
],
"properties": {
"name": {
"type": "string"
},
"provider": {
"type": "string"
}
},
"description": "The audit model to run this strategy with — from get_audit_strategy_setup_info's allowedAuditModels, never invented. Defaults to {provider: \"callkaro\", name: \"callkaro/krishna-2.5\"} on create."
},
"name": {
"type": "string"
},
"action": {
"enum": [
"create",
"update"
],
"type": "string",
"description": "create: make a new strategy (audit_strategy required, strategyId must be omitted). update: change an existing one (strategyId required)."
},
"active": {
"type": "boolean",
"description": "Defaults to false on create"
},
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
},
"strategyId": {
"type": "string",
"description": "Existing audit strategy id — required when action is update, must be omitted when action is create"
},
"audit_filters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Comma-joined call types. Defaults to inbound,outbound,outbound-api,outbound-scheduled on create."
},
"version_ids": {
"type": "string",
"description": "Comma-joined V2AgentVersion ids"
},
"call_duration": {
"type": "string"
},
"hangup_reasons": {
"type": "string",
"description": "Comma-joined hangup codes. Defaults to CLIENT_INITIATED,PARTICIPANT_REMOVED,SESSION_TIMEOUT on create."
},
"drop_off_reasons": {
"type": "string",
"description": "Comma-joined drop-off reason names — from inspect_agent_version's postcall_variables (type call_drop_off_reason), never invented"
},
"conversion_status": {
"enum": [
"true",
"false"
],
"type": "string"
}
},
"description": "Structured filters. All values are strings; multi-select filters are comma-joined. For boolean postcall variable filters use postcall_filters instead."
},
"audit_strategy": {
"type": "string",
"description": "Free-text audit instructions for the LLM auditor — required when action is create"
},
"extra_variables": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name",
"description"
],
"properties": {
"name": {
"type": "string",
"pattern": "^\\S+$",
"description": "Unique short snake_case output field name"
},
"type": {
"enum": [
"text",
"selector",
"boolean",
"issue",
"number"
],
"type": "string",
"description": "text: free-form value. selector: a category (list allowed categories in description). boolean: true/false for a neutral, descriptive condition (e.g. \"did the caller ask about pricing\"), no right or wrong answer implied. issue: true only when a specific compliance/quality FAILURE occurred — the description should name the violation (e.g. \"agent shared pricing that does not match the approved rate card\"), not a neutral fact; use this for anything that should be flagged as a problem, distinct from boolean which just records a fact. number: an extracted or calculated numeric value."
},
"description": {
"type": "string",
"minLength": 1,
"description": "Precise instructions describing what evidence to find and what value to return"
}
}
},
"description": "Additional structured values the audit model should return, beyond the built-in audit outcome. Defaults to [] on create."
},
"callflow_summary": {
"type": "string",
"description": "Generated from a version's callFlow (see inspect_agent_version). Defaults to \"\" on create"
},
"postcall_filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"value"
],
"properties": {
"name": {
"type": "string",
"description": "Boolean postcall variable name, from inspect_agent_version's postcall_variables (type boolean) — never invented"
},
"value": {
"enum": [
"true",
"false"
],
"type": "string"
}
}
},
"description": "Boolean postcall variable filters to apply, as {name, value} pairs — from inspect_agent_version's postcall_variables (type boolean), never invented. Merged into the stored audit_filters as postcall_<name> keys."
},
"retranscribe_audio": {
"type": "boolean",
"description": "Defaults to false on create"
},
"max_calls_to_be_audited_per_hour": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum eligible calls per hourly cycle; 0 means no limit. Defaults to 0 on create."
},
"percentage_calls_to_be_audited_per_hour": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Percentage of eligible calls to select each hourly scheduling cycle. Defaults to 100 on create."
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Load what's needed to create or edit a WhatsApp chat audit strategy: existing strategies of a chat agent, one strategy in full, or the models chat audits may run on. For voice agents use get_audit_strategy_setup_info.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
list_strategies: every chat audit strategy of the WhatsApp agent — check before creating. get_strategy: one strategy in full, by strategyId. list_audit_models: models allowed for chat audits.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentId
A WhatsApp chat agent id
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
strategyId
Required for get_strategy
Explain the meaning of this value, not just its name.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_chat_audit_strategy_setup_info",
"title": "Get chat audit strategy setup info",
"description": "Load what's needed to create or edit a WhatsApp chat audit strategy: existing strategies of a chat agent, one strategy in full, or the models chat audits may run on. For voice agents use get_audit_strategy_setup_info.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action",
"agentId"
],
"properties": {
"action": {
"enum": [
"list_strategies",
"get_strategy",
"list_audit_models"
],
"type": "string",
"description": "list_strategies: every chat audit strategy of the WhatsApp agent — check before creating. get_strategy: one strategy in full, by strategyId. list_audit_models: models allowed for chat audits."
},
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "A WhatsApp chat agent id"
},
"strategyId": {
"type": "string",
"description": "Required for get_strategy"
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Create (action: create) or update (action: update, strategyId required) a WhatsApp chat audit strategy. Call get_chat_audit_strategy_setup_info first to avoid duplicates and to get valid model names. To filter on contact attributes, call list_contact_attributes first and ask the user which to use. Needs percentage_per_day or max_conversations_per_day (not both 0). Active strategies are audited daily.
The description explains the capability, when to use it, and what to expect.
Inputs69/100
17 of 21 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
action
create: new strategy (audit_strategy required, strategyId omitted). update: change one (strategyId required); only the fields you send change.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentId
A WhatsApp chat agent id
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
strategyId
Not provided
Missing description. Explain what this value means and how to supply it.
name
Not provided
Missing description. Explain what this value means and how to supply it.
audit_strategy
Free-text audit instructions for the LLM auditor — required on create
Clear enough to supply this argument.
chatflow_summary
How the conversation should go: stages in order, required actions, hand-off rules, intended outcome. The auditor judges conversations against this instead of the agent's published version, so write it for the flow being audited. Optional; send an empty string to clear.
Clear enough to supply this argument.
active
Defaults to false on create. Active strategies are audited daily at 5 AM IST.
Clear enough to supply this argument.
min_user_messages
Skip conversations with fewer customer messages. Defaults to 1.
Clear enough to supply this argument.
min_messages
Skip conversations with fewer messages in total. Defaults to 2.
Explain the meaning of this value, not just its name.
audit_filters › contact_created_from
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
audit_filters › contact_created_to
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
audit_filters › contact_updated_from
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
audit_filters › contact_updated_to
YYYY-MM-DD, inclusive
Explain the meaning of this value, not just its name.
audit_filters › attributes
CRM contact attribute name -> wanted value(s); every named attribute must match. Names and allowed values (enum options) come from list_contact_attributes — never invent them; ask the user which attribute and value they want.
Clear enough to supply this argument.
llms › provider
Not provided
Missing description. Explain what this value means and how to supply it.
llms › name
Not provided
Missing description. Explain what this value means and how to supply it.
extra_variables › items › type
text: free-form value. selector: a category (list the allowed ones in description). boolean: true/false for a neutral condition. issue: true only when a specific quality/compliance FAILURE occurred — name the violation in the description. number: a numeric value.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
extra_variables › items › name
Unique short snake_case output field name
Clear enough to supply this argument.
extra_variables › items › description
What evidence to find in the conversation and what value to return
Clear enough to supply this argument.
percentage_per_day
Percent of eligible conversations audited each day. Set this or max_conversations_per_day (both 0 is rejected).
Clear enough to supply this argument.
max_conversations_per_day
Max conversations audited per day; 0 = no cap
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_or_update_chat_audit_strategy",
"title": "Create or update a chat audit strategy",
"description": "Create (action: create) or update (action: update, strategyId required) a WhatsApp chat audit strategy. Call get_chat_audit_strategy_setup_info first to avoid duplicates and to get valid model names. To filter on contact attributes, call list_contact_attributes first and ask the user which to use. Needs percentage_per_day or max_conversations_per_day (not both 0). Active strategies are audited daily.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action",
"agentId"
],
"properties": {
"llms": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"provider": {
"type": "string"
}
},
"description": "Audit model — name from get_chat_audit_strategy_setup_info's allowedAuditModels, never invented. The provider is derived server-side."
},
"name": {
"type": "string"
},
"action": {
"enum": [
"create",
"update"
],
"type": "string",
"description": "create: new strategy (audit_strategy required, strategyId omitted). update: change one (strategyId required); only the fields you send change."
},
"active": {
"type": "boolean",
"description": "Defaults to false on create. Active strategies are audited daily at 5 AM IST."
},
"agentId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$",
"description": "A WhatsApp chat agent id"
},
"strategyId": {
"type": "string"
},
"min_messages": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Skip conversations with fewer messages in total. Defaults to 2."
},
"audit_filters": {
"type": "object",
"properties": {
"attributes": {
"type": "object",
"description": "CRM contact attribute name -> wanted value(s); every named attribute must match. Names and allowed values (enum options) come from list_contact_attributes — never invent them; ask the user which attribute and value they want.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"contact_created_to": {
"type": "string",
"description": "YYYY-MM-DD, inclusive"
},
"contact_updated_to": {
"type": "string",
"description": "YYYY-MM-DD, inclusive"
},
"contact_created_from": {
"type": "string",
"description": "YYYY-MM-DD, inclusive"
},
"contact_updated_from": {
"type": "string",
"description": "YYYY-MM-DD, inclusive"
}
},
"description": "Contact filters. On update the whole object is replaced, so send every filter you want to keep."
},
"audit_strategy": {
"type": "string",
"description": "Free-text audit instructions for the LLM auditor — required on create"
},
"extra_variables": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name",
"description"
],
"properties": {
"name": {
"type": "string",
"pattern": "^\\S+$",
"description": "Unique short snake_case output field name"
},
"type": {
"enum": [
"text",
"selector",
"boolean",
"issue",
"number"
],
"type": "string",
"description": "text: free-form value. selector: a category (list the allowed ones in description). boolean: true/false for a neutral condition. issue: true only when a specific quality/compliance FAILURE occurred — name the violation in the description. number: a numeric value."
},
"description": {
"type": "string",
"minLength": 1,
"description": "What evidence to find in the conversation and what value to return"
}
}
},
"description": "Extra structured values the audit model returns. Replaces the whole list."
},
"chatflow_summary": {
"type": "string",
"maxLength": 40000,
"description": "How the conversation should go: stages in order, required actions, hand-off rules, intended outcome. The auditor judges conversations against this instead of the agent's published version, so write it for the flow being audited. Optional; send an empty string to clear."
},
"min_user_messages": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Skip conversations with fewer customer messages. Defaults to 1."
},
"percentage_per_day": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Percent of eligible conversations audited each day. Set this or max_conversations_per_day (both 0 is rejected)."
},
"max_conversations_per_day": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Max conversations audited per day; 0 = no cap"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Run a manual audit of up to maxConversations WhatsApp conversations for a strategy. Conversations are scheduled immediately and the auditor processes them shortly after (they use credits). Only messages since each conversation's last audit are audited, so re-running the same filters can answer 'No new conversations'.
The description explains the capability, when to use it, and what to expect.
Inputs65/100
11 of 12 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentId
A WhatsApp chat agent id
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
strategyId
A chat audit strategy of that agent
Explain the meaning of this value, not just its name.
maxConversations
How many conversations to audit (each costs credits)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › contact_created_from
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › contact_created_to
YYYY-MM-DD, inclusive
Explain the meaning of this value, not just its name.
filters › contact_updated_from
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › contact_updated_to
YYYY-MM-DD, inclusive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › attributes
CRM contact attribute name -> wanted value(s); every named attribute must match. Names and allowed values (enum options) come from list_contact_attributes — never invent them; ask the user which attribute and value they want.
Explain the meaning of this value, not just its name.
minUserMessages
Defaults to the strategy's value
Explain the meaning of this value, not just its name.
minMessages
Defaults to the strategy's value
Clear enough to supply this argument.
phone
Audit only this customer's number, with country code (10 digits = India)
Clear enough to supply this argument.
llm › name
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Returns the workflow graph reference: every node type with a sample, the edge and handle rules, condition ops and sources, WhatsApp template parameter keys, and where to get real ids. Read this before creating or editing a workflow graph.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_workflow_reference",
"title": "Get workflow reference",
"description": "Returns the workflow graph reference: every node type with a sample, the edge and handle rules, condition ops and sources, WhatsApp template parameter keys, and where to get real ids. Read this before creating or editing a workflow graph.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Change a saved workflow with a list of small edits, applied in order and saved once: add_node (optionally spliced in `after` a node), set_node (merge fields), remove_node (optionally `reconnect`), connect, disconnect. If any edit fails nothing is saved. The result is validated on save; an edit that leaves no path from Start to an End is rejected. Pass dryRun to preview without saving. Node types that need values (send-call, wa-template, wa-message, api-basic, update-lead) need `fields` on add_node. Read get_workflow_reference first. Do not edit a workflow that has leads running without asking the user.
The description explains the capability, when to use it, and what to expect.
Inputs24/100
7 of 23 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
workflowId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › type
inbound, end, cancel, resume, send-call, wa-template, wa-message, wait, conditions, api-basic, api-advanced or update-lead. See the workflow reference for what an inbound branch does to a run already in flight.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › oneOf › 0 › name
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › fields
Node fields. Required for send-call (agentId), wa-template, wa-message, api-basic and update-lead; optional otherwise.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › oneOf › 0 › after
Node id to splice this node in after. What that handle led to follows the new node.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › oneOf › 0 › handle
Which branch of `after` (a conditions exit id). Required when `after` is a conditions node.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › oneOf › 0 › x
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › y
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › fields
Fields to merge into the node. id and type cannot change.
Clear enough to supply this argument.
operations › items › oneOf › 2 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › reconnect
Link what led into this node to what it led to.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › oneOf › 3 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › from
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › to
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › handle
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › from
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › handle
Not provided
Missing description. Explain what this value means and how to supply it.
dryRun
Apply and validate, but do not save.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
A lead's latest run in a workflow, step by step: each node, its status, the branch taken, errors, and the run variables a Conditions node tested. Use it to see why a lead went the way it did.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
workflowId
Not provided
Missing description. Explain what this value means and how to supply it.
phone
Phone number with country code, digits only (e.g. 919812345678).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_workflow_run",
"title": "Get workflow run",
"description": "A lead's latest run in a workflow, step by step: each node, its status, the branch taken, errors, and the run variables a Conditions node tested. Use it to see why a lead went the way it did.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"workflowId",
"phone"
],
"properties": {
"phone": {
"type": "string",
"minLength": 5,
"description": "Phone number with country code, digits only (e.g. 919812345678)."
},
"workflowId": {
"type": "string",
"pattern": "^[a-f\\d]{24}$"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
Create a contact, or merge into an existing one. Attributes are validated against the account's attribute definitions. Note: a value set by hand (here, or in the dashboard) is protected from automated writes such as a workflow's Update Contact node.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
phone
Phone number with country code, digits only (e.g. 919812345678).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
attributes
Attribute name -> value. Names must already be defined (list_contact_attributes). Values are coerced by the attribute's type; a value that does not fit is refused with the reason.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
channels
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_contact",
"title": "Create contact",
"description": "Create a contact, or merge into an existing one. Attributes are validated against the account's attribute definitions. Note: a value set by hand (here, or in the dashboard) is protected from automated writes such as a workflow's Update Contact node.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"phone"
],
"properties": {
"phone": {
"type": "string",
"minLength": 5,
"description": "Phone number with country code, digits only (e.g. 919812345678)."
},
"channels": {
"type": "array",
"items": {
"type": "string"
}
},
"attributes": {
"type": "object",
"description": "Attribute name -> value. Names must already be defined (list_contact_attributes). Values are coerced by the attribute's type; a value that does not fit is refused with the reason.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Set and/or clear attribute values on a contact. Values are validated against the attribute definitions. Values set here count as set by hand and are then protected from workflow Update Contact nodes.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
phone
Phone number with country code, digits only (e.g. 919812345678).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
attributes
Attribute name -> value. Names must already be defined (list_contact_attributes). Values are coerced by the attribute's type; a value that does not fit is refused with the reason.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
clear
Attribute names to remove.
Explain the meaning of this value, not just its name.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_contact",
"title": "Update contact",
"description": "Set and/or clear attribute values on a contact. Values are validated against the attribute definitions. Values set here count as set by hand and are then protected from workflow Update Contact nodes.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"phone"
],
"properties": {
"clear": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attribute names to remove."
},
"phone": {
"type": "string",
"minLength": 5,
"description": "Phone number with country code, digits only (e.g. 919812345678)."
},
"attributes": {
"type": "object",
"description": "Attribute name -> value. Names must already be defined (list_contact_attributes). Values are coerced by the attribute's type; a value that does not fit is refused with the reason.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Import contacts from CSV content. The header row needs a phone_number column; every other column must be a defined attribute (list_contact_attributes) or the whole file is refused naming the unknown columns, unless ignoreUnknownColumns is set. Bad cells are skipped and reported by row. A re-import never overwrites a value set by hand. Max 10 MB.
Describe the returned information so the agent knows whether it will answer the request.
Inputs65/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
csv
CSV content, header row first.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
ignoreUnknownColumns
Drop columns that are not defined attributes instead of refusing.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "upload_contacts",
"title": "Upload contacts",
"description": "Import contacts from CSV content. The header row needs a phone_number column; every other column must be a defined attribute (list_contact_attributes) or the whole file is refused naming the unknown columns, unless ignoreUnknownColumns is set. Bad cells are skipped and reported by row. A re-import never overwrites a value set by hand. Max 10 MB.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"csv"
],
"properties": {
"csv": {
"type": "string",
"minLength": 1,
"description": "CSV content, header row first."
},
"ignoreUnknownColumns": {
"type": "boolean",
"description": "Drop columns that are not defined attributes instead of refusing."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Export the contacts that match the filters as CSV text. Exports at most 5000 contacts. If the matching contacts are more than 5000, they cannot be exported from here; get them from the dashboard instead.
The description explains the capability, when to use it, and what to expect.
Inputs22/100
3 of 9 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
search
Match a phone number or text.
Clear enough to supply this argument.
channel
Not provided
Missing description. Explain what this value means and how to supply it.
attributes
Only contacts whose attributes equal these values.
Resolve the mismatch between this description and its schema constraints.
lastMessageStates
Not provided
Missing description. Explain what this value means and how to supply it.
createdFrom
Not provided
Missing description. Explain what this value means and how to supply it.
createdTo
Not provided
Missing description. Explain what this value means and how to supply it.
updatedFrom
Not provided
Missing description. Explain what this value means and how to supply it.
updatedTo
Not provided
Missing description. Explain what this value means and how to supply it.
fields
Columns to include: base fields (phone_number, channels, createdAt, updatedAt) and/or attribute names.
Clear enough to supply this argument.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export_contacts",
"title": "Export contacts",
"description": "Export the contacts that match the filters as CSV text. Exports at most 5000 contacts. If the matching contacts are more than 5000, they cannot be exported from here; get them from the dashboard instead.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Columns to include: base fields (phone_number, channels, createdAt, updatedAt) and/or attribute names."
},
"search": {
"type": "string",
"description": "Match a phone number or text."
},
"channel": {
"type": "string"
},
"createdTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updatedTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"attributes": {
"type": "object",
"description": "Only contacts whose attributes equal these values.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"createdFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updatedFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"lastMessageStates": {
"type": "array",
"items": {
"enum": [
"read",
"delivered",
"sent",
"failed",
"clicked",
"not_clicked"
],
"type": "string"
}
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
The account's CRM attribute definitions: name, type, enum options and flags. Contacts can only hold attributes defined here, and workflows read and write them by name.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations50/100
Declare destructiveHint, idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_contact_attributes",
"title": "List contact attributes",
"description": "The account's CRM attribute definitions: name, type, enum options and flags. Contacts can only hold attributes defined here, and workflows read and write them by name.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Returns the current credits and low-credit threshold from the existing account profile endpoint when the authenticated user has billing access.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations25/100
Declare destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
{
"readOnlyHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_account_credit_status",
"title": "Get account credit status",
"description": "Returns the current credits and low-credit threshold from the existing account profile endpoint when the authenticated user has billing access.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"readOnlyHint": true
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01List workflowsList the account's workflows (id, name, graph).
02List contactsList CRM contacts with their attributes, using the dashboard's filters.
03Get account detailsReturns the name and email of the authenticated CallKaro account holder.
04Get agent performance analytics for a date range
05List LLM modelsBrowse LLM model IDs by usage category.
Want to run these tasks against your MCP server with us?
CallKaro setup, tools, quality score, publishing readiness, and alternatives.
How do I add CallKaro to Claude, ChatGPT, or Cursor?
Add CallKaro to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.callkaro.ai/api/mcp.
Is CallKaro MCP ready for ChatGPT and Claude?
As of November 13, 2026, CallKaro scores 94/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is CallKaro's MCP tool documentation?
As of November 13, 2026, CallKaro scores 60/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 117 of 117 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to CallKaro?
As of November 13, 2026, alternatives to CallKaro in communication on the Manufact MCP leaderboard include Granola, Cooper Email, Dial, Primitive Email, and Salvy.
How can CallKaro improve its MCP documentation?
get_not_connected_batch_calls is the lowest-scoring reviewed tool at 44/100. 0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.