cxxmcp 1.1.6
C++ MCP SDK
Loading...
Searching...
No Matches
elicitation.hpp File Reference

Elicitation request, result, and schema payloads. More...

#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <map>
#include <optional>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include <variant>
#include <vector>
#include "cxxmcp/core/result.hpp"
#include "cxxmcp/protocol/task.hpp"
#include "cxxmcp/protocol/types.hpp"

Go to the source code of this file.

Classes

struct  mcp::protocol::StringSchema
 Primitive string property schema for form elicitation. More...
 
struct  mcp::protocol::NumberSchema
 Primitive number property schema for form elicitation. More...
 
struct  mcp::protocol::IntegerSchema
 Primitive integer property schema for form elicitation. More...
 
struct  mcp::protocol::BooleanSchema
 Primitive boolean property schema for form elicitation. More...
 
struct  mcp::protocol::EnumSchema
 Primitive string enum property schema for form elicitation. More...
 
struct  mcp::protocol::ElicitationSchema
 Object schema requested from a user in form elicitation. More...
 
class  mcp::protocol::ElicitationSchema::Builder
 Fluent builder for valid elicitation object schemas. More...
 
struct  mcp::protocol::CreateElicitationRequestParam
 Parameters for elicitation/create. More...
 
struct  mcp::protocol::CreateElicitationResult
 Result object for elicitation/create. More...
 
struct  mcp::protocol::ElicitationCompleteNotificationParams
 Parameters for notifications/elicitation/complete. More...
 
struct  mcp::protocol::Reflect< ElicitationCompleteNotificationParams >
 
struct  mcp::protocol::JsonFieldTraits< ElicitationAction >
 

Typedefs

using mcp::protocol::PrimitiveSchema = std::variant< StringSchema, NumberSchema, IntegerSchema, BooleanSchema, EnumSchema >
 Variant over primitive schema shapes supported by elicitation forms.
 

Enumerations

enum class  mcp::protocol::ElicitationAction { Accept , Decline , Cancel }
 User action returned by an elicitation request. More...
 
enum class  mcp::protocol::ElicitationMode { Form , Url }
 Elicitation interaction mode. More...
 

Functions

std::string mcp::protocol::elicitation_action_to_string (ElicitationAction action)
 Converts an elicitation action to its MCP string value.
 
std::optional< ElicitationActionmcp::protocol::elicitation_action_from_string (const std::string &value)
 Parses an elicitation action string.
 
std::string mcp::protocol::elicitation_mode_to_string (ElicitationMode mode)
 Converts an elicitation mode to its MCP string value.
 
std::optional< ElicitationModemcp::protocol::elicitation_mode_from_string (const std::string &value)
 Parses an elicitation mode string.
 
bool mcp::protocol::elicitation_string_format_is_supported (const std::string &value) noexcept
 Returns true for string formats allowed by the MCP elicitation schema.
 
Json mcp::protocol::string_schema_to_json (const StringSchema &schema)
 Serializes a string property schema.
 
Json mcp::protocol::number_schema_to_json (const NumberSchema &schema)
 Serializes a number property schema.
 
Json mcp::protocol::integer_schema_to_json (const IntegerSchema &schema)
 Serializes an integer property schema.
 
Json mcp::protocol::boolean_schema_to_json (const BooleanSchema &schema)
 Serializes a boolean property schema.
 
Json mcp::protocol::enum_schema_to_json (const EnumSchema &schema)
 Serializes a string enum property schema.
 
Json mcp::protocol::primitive_schema_to_json (const PrimitiveSchema &schema)
 Serializes any primitive elicitation property schema.
 
Json mcp::protocol::elicitation_schema_to_json (const ElicitationSchema &schema)
 Serializes a form elicitation object schema.
 
core::Error mcp::protocol::elicitation_json_error (std::string message)
 Builds an InvalidRequest error for elicitation JSON validation failures.
 
core::Result< core::Unitmcp::protocol::parse_titled_enum_choices (const Json &choices, std::vector< std::string > &values, std::vector< std::string > &titles, std::string_view context)
 Parses {"const": "...", "title": "..."} enum choices.
 
bool mcp::protocol::enum_values_are_allowed (const std::vector< std::string > &allowed, const std::vector< std::string > &values)
 Validates all selected enum values are allowed.
 
core::Result< PrimitiveSchemamcp::protocol::primitive_schema_from_json (const Json &json)
 Parses any primitive elicitation property schema.
 
core::Result< ElicitationSchemamcp::protocol::elicitation_schema_from_json (const Json &json)
 Parses a form elicitation object schema.
 
Json mcp::protocol::create_elicitation_request_param_to_json (const CreateElicitationRequestParam &request)
 Serializes elicitation/create params.
 
core::Result< CreateElicitationRequestParammcp::protocol::create_elicitation_request_param_from_json (const Json &json)
 Parses elicitation/create params.
 
Json mcp::protocol::create_elicitation_result_to_json (const CreateElicitationResult &result)
 Serializes an elicitation/create result.
 
core::Result< CreateElicitationResultmcp::protocol::create_elicitation_result_from_json (const Json &json)
 Parses an elicitation/create result.
 
core::Result< core::Unitmcp::protocol::validate_elicitation_content_property (const std::string &name, const PrimitiveSchema &schema, const Json &value)
 Validates a form elicitation content object against one primitive property schema.
 
core::Result< core::Unitmcp::protocol::validate_elicitation_content (const ElicitationSchema &schema, const Json &content)
 Validates a form elicitation content object against the SDK's constrained ElicitationSchema model.
 
core::Result< core::Unitmcp::protocol::validate_elicitation_result_content (const ElicitationSchema &schema, const CreateElicitationResult &result)
 Validates an accepted elicitation result's content against the requested form schema.
 
Json mcp::protocol::elicitation_complete_notification_params_to_json (const ElicitationCompleteNotificationParams &params)
 Serializes URL-mode completion notification params.
 
core::Result< ElicitationCompleteNotificationParamsmcp::protocol::elicitation_complete_notification_params_from_json (const Json &json)
 Parses URL-mode completion notification params.
 

Detailed Description

Elicitation request, result, and schema payloads.

Elicitation lets a peer ask the user for additional input during MCP request handling. Form mode embeds a constrained JSON schema for values to collect; URL mode sends the user to an external flow and reports completion by notification. Task request parameters may be included when supported.

Enumeration Type Documentation

◆ ElicitationAction

User action returned by an elicitation request.

Enumerator
Accept 

The user accepted and may have supplied content.

Decline 

The user declined the request.

Cancel 

The elicitation was cancelled.

◆ ElicitationMode

enum class mcp::protocol::ElicitationMode
strong

Elicitation interaction mode.

Enumerator
Form 

Inline form described by an ElicitationSchema.

Url 

External URL flow completed by notification.

Function Documentation

◆ create_elicitation_request_param_from_json()

core::Result< CreateElicitationRequestParam > mcp::protocol::create_elicitation_request_param_from_json ( const Json json)
inline

Parses elicitation/create params.

Returns
Parsed params or validation error.

◆ create_elicitation_request_param_to_json()

Json mcp::protocol::create_elicitation_request_param_to_json ( const CreateElicitationRequestParam request)
inline

Serializes elicitation/create params.

Note
URL mode omits requestedSchema; form mode omits elicitationId and url.

◆ create_elicitation_result_from_json()

core::Result< CreateElicitationResult > mcp::protocol::create_elicitation_result_from_json ( const Json json)
inline

Parses an elicitation/create result.

Returns
Parsed result or validation error.

◆ elicitation_action_from_string()

std::optional< ElicitationAction > mcp::protocol::elicitation_action_from_string ( const std::string &  value)
inline

Parses an elicitation action string.

Returns
Parsed action, or nullopt for unsupported strings.

◆ elicitation_complete_notification_params_from_json()

core::Result< ElicitationCompleteNotificationParams > mcp::protocol::elicitation_complete_notification_params_from_json ( const Json json)
inline

Parses URL-mode completion notification params.

Returns
Parsed params or validation error.

◆ elicitation_mode_from_string()

std::optional< ElicitationMode > mcp::protocol::elicitation_mode_from_string ( const std::string &  value)
inline

Parses an elicitation mode string.

Returns
Parsed mode, or nullopt for unsupported strings.

◆ elicitation_schema_from_json()

core::Result< ElicitationSchema > mcp::protocol::elicitation_schema_from_json ( const Json json)
inline

Parses a form elicitation object schema.

Returns
Parsed schema or validation error.

◆ primitive_schema_from_json()

core::Result< PrimitiveSchema > mcp::protocol::primitive_schema_from_json ( const Json json)
inline

Parses any primitive elicitation property schema.

Returns
Parsed primitive schema or validation error.

◆ validate_elicitation_content()

core::Result< core::Unit > mcp::protocol::validate_elicitation_content ( const ElicitationSchema schema,
const Json content 
)
inline

Validates a form elicitation content object against the SDK's constrained ElicitationSchema model.

The SDK intentionally validates only the primitive schema subset it models: required fields, primitive JSON types, numeric bounds, and enum values. Unknown content members are allowed because the schema model does not expose JSON Schema additionalProperties.

◆ validate_elicitation_result_content()

core::Result< core::Unit > mcp::protocol::validate_elicitation_result_content ( const ElicitationSchema schema,
const CreateElicitationResult result 
)
inline

Validates an accepted elicitation result's content against the requested form schema.

Non-accept results do not require content and are treated as valid. Accept results without content are valid only when the schema has no required fields.