nsmcp::ToolRegistry method call (public)

 <instance of nsmcp::ToolRegistry[i]> call context authorizer name \
    arguments

Defined in /usr/local/ns/tcl/nsmcp/01-tools.tcl

Authorize, validate and invoke a registered tool. Check enable state, permissions and question pins before handing arguments to the tool.

Parameters:
context (required)
Authenticated request context carrying the principal, grants and selected server.
authorizer (required)
Authorizer used to enforce the request context's permissions and targets.
name (required)
Name of the configured or registered item to resolve.
arguments (required)
Rooted ns_json typed triples for the tool's JSON argument object.
Returns:
The tool's rooted JSON result; policy and validation failures raise RPC errors.

Testcases:
No testcase defined.
Source code:
:refreshProviders
if {![dict exists ${:tools} $name]} {
    return -code error -errorcode {NSMCP RPC -32602} "Unknown tool"
}
set tool [dict get ${:tools} $name]
$authorizer require $context [$tool permission]
if {![:readEnabled $name]} {
    return -code error -errorcode {NSMCP RPC -32602} "Tool is disabled on this server"
}
:verifyQuestionPin $context $name
$tool validate $arguments
if {[catch {
    $tool execute $context $arguments
} result options]} {
    if {[lrange [dict get $options -errorcode] 0 1] eq {NSMCP RPC}} {
        return -options $options $result
    }
    ns_log error "nsmcp: tool execution failed: $name"
    return [list {} object {content array {0 object {type string text text string {Tool execution failed; consult the server log.}}} isError boolean true}]
}
# Both structured output and text for clients without structured support.
return [list {} object [list structuredContent object [lindex $result 2]  content array [list 0 object [list type string text text string [ns_json value -- $result]]]  isError boolean false]]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: