Converts DSL parameter definitions to NimbleOptions validation schemas.
This module takes parameter definitions from the ConduitMCP DSL and converts them into NimbleOptions schemas for runtime validation. It handles type mapping, constraint extraction, and validation rule compilation.
Type Mapping
DSL types are mapped to NimbleOptions types as follows:
:string->:string:integer->:integer:number->:number(float):boolean->:boolean:object->:map(with nested validation):array->{:list, type}where type is the item type{:array, item_type}->{:list, converted_item_type}
Validation Options
DSL options are converted to NimbleOptions validation rules:
required: true->required: trueenum: [...]->in: [...]default: value->default: valuemin: value->min: valuemax: value->max: valuemin_length: value->min_length: valuemax_length: value->max_length: valuevalidator: function->validator: function
Summary
Functions
Compiles a complete tool definition to a NimbleOptions validation schema.
Custom constraint markers stored alongside NimbleOptions options.
Converts a list of DSL parameter definitions to a NimbleOptions schema.
Enhanced error formatter for NimbleOptions validation errors.
Validates a NimbleOptions schema definition.
Functions
Compiles a complete tool definition to a NimbleOptions validation schema.
Takes a tool definition with parameters and converts it to a schema that can be used for runtime validation.
Custom constraint markers stored alongside NimbleOptions options.
Single source of truth — these must be stripped from a schema before
handing it to NimbleOptions. Used by ConduitMcp.Validation,
ConduitMcp.DSL.SchemaBuilder, and ConduitMcp.Endpoint.
Converts a list of DSL parameter definitions to a NimbleOptions schema.
Examples
iex> params = [
...> %{name: :name, type: :string, opts: [required: true]},
...> %{name: :age, type: :integer, opts: [min: 0, max: 150]}
...> ]
iex> ConduitMcp.Validation.SchemaConverter.dsl_params_to_nimble_options(params)
[
name: [type: :string, required: true],
age: [type: :integer, min: 0, max: 150]
]
Enhanced error formatter for NimbleOptions validation errors.
Takes a NimbleOptions.ValidationError and converts it to detailed error information suitable for MCP responses.
Validates a NimbleOptions schema definition.
Checks if the generated schema is valid for NimbleOptions. Used during compile time to catch schema generation errors.