mcp_toolkit/core/json_schema

https://json-schema.org/

https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-00

Types

pub type CodegenError {
  CannotConvertEmptyToJsonError
  EmptyEnumError
  DuplicatePropertyError(
    type_name: String,
    constructor_name: String,
    property_name: String,
  )
  DuplicateConstructorError(name: String)
  DuplicateTypeError(name: String)
  DuplicateFunctionError(name: String)
}

Constructors

  • CannotConvertEmptyToJsonError
  • EmptyEnumError
  • DuplicatePropertyError(
      type_name: String,
      constructor_name: String,
      property_name: String,
    )
  • DuplicateConstructorError(name: String)
  • DuplicateTypeError(name: String)
  • DuplicateFunctionError(name: String)
pub opaque type Generator
pub type ObjectSchema {
  ObjectSchema(
    properties: List(#(String, Schema)),
    required: List(String),
    additional_properties: option.Option(Schema),
    pattern_properties: List(#(String, Schema)),
  )
}

Constructors

  • ObjectSchema(
      properties: List(#(String, Schema)),
      required: List(String),
      additional_properties: option.Option(Schema),
      pattern_properties: List(#(String, Schema)),
    )
pub type RootSchema {
  RootSchema(
    definitions: List(#(String, Schema)),
    schema: Schema,
  )
}

Constructors

  • RootSchema(definitions: List(#(String, Schema)), schema: Schema)
pub type Schema {
  Empty(metadata: List(#(String, dynamic.Dynamic)))
  Type(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    type_: Type,
  )
  Enum(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    variants: List(String),
  )
  Object(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    schema: ObjectSchema,
  )
  Array(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    items: Schema,
  )
  Ref(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    ref: String,
  )
  OneOf(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    schemas: List(Schema),
  )
  AllOf(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    schemas: List(Schema),
  )
  AnyOf(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    schemas: List(Schema),
  )
  Not(
    nullable: Bool,
    metadata: List(#(String, dynamic.Dynamic)),
    schema: Schema,
  )
}

Constructors

  • Empty(metadata: List(#(String, dynamic.Dynamic)))

    Any value. The empty form is like a Java Object or TypeScript any.

  • Type(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      type_: Type,
    )

    A simple built-in type. The type form is like a Java or TypeScript primitive type.

  • Enum(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      variants: List(String),
    )

    One of a fixed set of strings. The enum form is like a Java or TypeScript enum.

  • Object(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      schema: ObjectSchema,
    )
  • Array(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      items: Schema,
    )

    A sequence of some other form. The items form is like a Java List<T> or TypeScript T[].

  • Ref(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      ref: String,
    )

    A reference to another schema definition

  • OneOf(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      schemas: List(Schema),
    )

    A schema that can be one of multiple schemas

  • AllOf(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      schemas: List(Schema),
    )

    A schema that must be all of multiple schemas

  • AnyOf(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      schemas: List(Schema),
    )

    A schema that can be any of multiple schemas

  • Not(
      nullable: Bool,
      metadata: List(#(String, dynamic.Dynamic)),
      schema: Schema,
    )

    A schema that must not match the given schema

pub type Type {
  Boolean
  String
  Number
  Integer
  ArrayType
  ObjectType
  Null
}

Constructors

  • Boolean

    true or false

  • String

    JSON strings

  • Number

    JSON numbers

  • Integer

    JSON integers

  • ArrayType

    JSON arrays

  • ObjectType

    JSON objects

  • Null

    JSON null values

Values

pub fn codegen() -> Generator
pub fn decode_object_schema(
  data: dynamic.Dynamic,
) -> Result(ObjectSchema, List(decode.DecodeError))
pub fn decoder(
  data: dynamic.Dynamic,
) -> Result(RootSchema, List(decode.DecodeError))
pub fn generate(
  gen: Generator,
  schema: RootSchema,
) -> Result(String, CodegenError)
pub fn generate_decoders(gen: Generator, x: Bool) -> Generator
pub fn generate_encoders(gen: Generator, x: Bool) -> Generator
pub fn object_schema_to_json(
  schema: ObjectSchema,
) -> List(#(String, json.Json))
pub fn root_name(gen: Generator, root_name: String) -> Generator
pub fn to_json(schema: RootSchema) -> json.Json
Search Document