Noizu.MCP.Types.Tool (Noizu MCP v0.1.6)

Copy Markdown View Source

An MCP tool definition as advertised by tools/list.

annotations accepts snake_case atom keys (:read_only_hint, :destructive_hint, :idempotent_hint, :open_world_hint, :title) and renders them in the camelCase wire format.

description and title may be a plain String.t() or a Noizu.MCP.Description.t() (a verbosity variant set); to_map/2 resolves them through a Noizu.MCP.RenderCtx. When input_fields/output_fields are present (DSL-declared schemas), to_map/2 re-renders their JSON Schema through the context so field descriptions track the requested verbosity too; otherwise the pre-compiled input_schema/output_schema maps are used verbatim. The arity-1 to_map/1 uses RenderCtx.default/0, so plain-string tools render exactly as before.

Summary

Types

t()

@type t() :: %Noizu.MCP.Types.Tool{
  annotations: map() | keyword() | nil,
  description: String.t() | Noizu.MCP.Description.t() | nil,
  icons: [map()] | nil,
  input_fields: list() | nil,
  input_schema: map(),
  meta: map() | nil,
  name: String.t(),
  output_fields: list() | nil,
  output_schema: map() | nil,
  title: String.t() | Noizu.MCP.Description.t() | nil
}

Functions

from_map(map)

@spec from_map(map()) :: t()

to_map(tool)

@spec to_map(t()) :: map()

to_map(tool, ctx)

@spec to_map(t(), Noizu.MCP.RenderCtx.t()) :: map()