::nx::Object ::nx::Object ::nsmcp::Tool ::nsmcp::Tool describe execute name permission validate ::nsmcp::Tool->::nx::Object ::nsmcp::LogTool ::nsmcp::LogTool arguments execute validate ::nsmcp::LogTool->::nsmcp::Tool ::nsmcp::ServerDescribe ::nsmcp::ServerDescribe execute ::nsmcp::ServerDescribe->::nsmcp::Tool ::nsmcp::StatsTool ::nsmcp::StatsTool available encode unavailable ::nsmcp::StatsTool->::nsmcp::Tool ::nsmcp::AccessSummaryTool ::nsmcp::AccessSummaryTool execute options validate ::nsmcp::AccessSummaryTool->::nsmcp::Tool ::nsmcp::ServerRuntime ::nsmcp::ServerRuntime execute mode validate ::nsmcp::ServerRuntime->::nsmcp::StatsTool ::nsmcp::ServerTopology ::nsmcp::ServerTopology execute ::nsmcp::ServerTopology->::nsmcp::StatsTool ::nsmcp::ServerHistory ::nsmcp::ServerHistory execute options validate ::nsmcp::ServerHistory->::nsmcp::StatsTool

Class ::nsmcp::Tool

::nsmcp::Tool[i] create ... \
           [ -description:required description:required ] \
           [ -inputSchema (default "{} object {type string object properties object {} additionalProperties boolean false}") ] \
           [ -name:required name:required ] \
           [ -outputSchema (default "") ] \
           [ -permission:required permission:required ]

Defined in /usr/local/ns/tcl/nsmcp/lib/tools.tcl

Class Relations

  • class: ::nx::Class[i]
  • superclass: ::nx::Object[i]
  • subclass: ::nsmcp::LogTool[i], ::nsmcp::ServerDescribe[i], ::nsmcp::StatsTool[i], ::nsmcp::AccessSummaryTool[i]
::nx::Class create ::nsmcp::Tool \
     -superclass ::nx::Object

Methods (to be applied on instances)

  • describe (scripted, public)

     <instance of nsmcp::Tool[i]> describe

    Testcases:
    No testcase defined.
    set members [list name string ${:name}  description string ${:description} inputSchema object [lindex ${:inputSchema} 2]  annotations object {readOnlyHint boolean true destructiveHint boolean false openWorldHint boolean false}]
    if {${:outputSchema} ne ""} {
        lappend members outputSchema object [lindex ${:outputSchema} 2]
    }
    return [list {} object $members]
  • execute (scripted, public)

     <instance of nsmcp::Tool[i]> execute context arguments
    Parameters:
    context (required)
    arguments (required)

    Testcases:
    No testcase defined.
    error "abstract Tool.execute"
  • name (scripted, public)

     <instance of nsmcp::Tool[i]> name

    Testcases:
    No testcase defined.
    return ${:name}
  • permission (scripted, public)

     <instance of nsmcp::Tool[i]> permission

    Testcases:
    No testcase defined.
    return ${:permission}
  • validate (scripted, public)

     <instance of nsmcp::Tool[i]> validate arguments

    The first tool accepts exactly {}. Subclasses must override this together with inputSchema; no partial JSON Schema validator is claimed.

    Parameters:
    arguments (required)

    Testcases:
    No testcase defined.
    if {[lindex $arguments 1] ne "object" || [lindex $arguments 2] ne ""} {
        return -code error -errorcode {NSMCP RPC -32602} "Expected an empty arguments object"
    }