Caller check
A tool your agent calls during a conversation to ask about the person on the line. The answer is written for the model: a one-line summary it can act on, with the fields behind it. Part of Guard.
Check the caller
One URL for a Vapi function tool, a Retell custom function, or anything that can POST JSON. It reads the caller and your number from the platform's own request, so the tool needs no arguments. A call already on record is answered from the score it got when it rang; anything else is scored as a dry run, like a score. Nothing is blocked or recorded.
Query parameters
- detail"score" | "verdict" | "count" | "all"
- How much to say.
allby default. Can also be the tool'sdetailargument. - windownumber
- Minutes to count this caller's calls over, for
countandall. 60 by default, at most 1440. Can also be the tool'swindow_minargument.
Request body
- callerstring
- The other party, E.164. Only when you call it yourself: Vapi and Retell requests carry it already.
- numberstring
- Your own number on the call, E.164. Same.
- direction"inbound" | "outbound"
- Inbound by default.
- call_idstring
- Your id for the call, if it is on record, so it is answered from its own score.
Response
- summarystring
- One line for the model: how risky, why, what to do, and how often this number has called.
- risk"low" | "medium" | "high"
- With
verdictorall. - advicestring
- What the agent should do about it. With verdict or all.
- scorenumber
- 0 to 100. With
scoreorall. - calls_recentnumber
- This caller's calls to this number in the last
window_minminutes. Withcountorall. - window_minnumber
- The window that count covers.
- whystring[]
- What drove it, in words. With all.
Errors
- guard_only402
- The caller check is part of Guard.
- invalid_caller400
- No caller number on the request.
- invalid_number400
- No number of yours on the request.
- invalid_detail400
- detail is not one of the four.
- unauthorized401
- Missing or unknown key.
Asked by a Vapi or Retell tool, the reply is always a 200 so the agent keeps going: an error comes back as a summary that says to carry on normally, with error beside it. From Vapi, the same object arrives as the result of your tool call.
On Vapi
In Vapi, create a Bearer Token credential holding your Murusai API key. Then create a function tool named check_caller, point its server at the URL above with that credential, and add the tool to your assistant. Or through their API:
{
"type": "function",
"function": {
"name": "check_caller",
"description": "Checks whether the caller is likely spam, a bot or part of a call flood. Call it at the start of every call, and before booking, transferring or taking payment. Follow the advice it returns.",
"parameters": { "type": "object", "properties": {} }
},
"server": {
"url": "https://api.murusai.com/v1/tools/caller-check",
"credentialId": "your Bearer Token credential's id"
}
}On Retell
In your Retell agent, add a custom function named check_caller with the same description. Method POST, URL as above, and a header Authorization set to Bearer followed by your Murusai API key. Leave the parameters empty, and leave "Payload: args only" off: the check reads the caller from the call Retell sends with it.
Telling the agent to use it
A line in the agent's instructions is enough:
At the start of every call, and before booking, transferring or taking payment, call check_caller.
If it says the risk is high, follow its advice.