Class: ActionMCP::Server::ElicitationRequest

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Attributes, ActiveModel::Model
Defined in:
lib/action_mcp/server/elicitation_request.rb

Overview

Value object for form-mode elicitation requests. Validates that the requested schema follows MCP constraints: flat object with primitive properties only.

Instance Method Summary collapse

Instance Method Details

#assert_valid!Object

Validates and raises ArgumentError on failure (preserving public API). Named assert_valid! to avoid shadowing ActiveModel#validate!

Raises:

  • (ArgumentError)


35
36
37
38
39
# File 'lib/action_mcp/server/elicitation_request.rb', line 35

def assert_valid!
  return if valid?

  raise ArgumentError, errors.full_messages.join(", ")
end

#requested_schema=(value) ⇒ Object

Wrap incoming schema in indifferent access so both string and symbol keys work.



22
23
24
# File 'lib/action_mcp/server/elicitation_request.rb', line 22

def requested_schema=(value)
  super(value.is_a?(Hash) ? value.with_indifferent_access : value)
end

#to_paramsHash

Returns JSON-RPC params for elicitation/create.

Returns:

  • (Hash)

    JSON-RPC params for elicitation/create



27
28
29
30
31
# File 'lib/action_mcp/server/elicitation_request.rb', line 27

def to_params
  params = { mode: "form", message: message, requestedSchema: requested_schema.to_hash.deep_symbolize_keys }
  params[:_meta] = _meta if _meta.present?
  params
end