Class ::nsmcp::ToolRegistry (public)
::nx::Class ::nsmcp::ToolRegistry
Defined in /usr/local/ns/tcl/nsmcp/lib/tools.tcl
- Testcases:
- No testcase defined.
Source code: :variable tools {} :public method register {tool} { set name [$tool name] if {[dict exists ${:tools} $name]} {error "duplicate tool: $name"} dict set :tools $name $tool } :public method list {context authorizer} { set result {} foreach name [lsort [dict keys ${:tools}]] { set tool [dict get ${:tools} $name] if {[$authorizer allowed $context [$tool permission]]} { lappend result [$tool describe] } } set members {}; set index 0 foreach description $result { lappend members $index object [lindex $description 2] incr index } return [list {} object [list tools array $members]] } :public method call {context authorizer name arguments} { 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] $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
![[i]](/resources/acs-subsite/ZoomIn16.gif)