Skip to content

types

JSON-RPC 2.0 and MCP specification compliant data structures

  • Fully compatible with FastMCP and other MCP implementations
  • Standard OAuth 2.1 Bearer token authentication support
  • Comprehensive tool, memory, and capability definitions

JSON-RPC 2.0 Request - Standard wire format for MCP

Fields

FieldTypeDescription
jsonrpcStringJSON-RPC version (always “2.0”)
idOption<serde_json::Value>Request ID (optional for notifications)
methodStringMethod name (e.g., “tools/list”, “tools/call”)
paramsOption<serde_json::Value>Method parameters (optional)

Methods

fn new(method: &str, params: Option<serde_json::Value>, id: Option<serde_json::Value>) -> Self

Create new JSON-RPC request

fn notification(method: &str, params: Option<serde_json::Value>) -> Self

Create notification (no response expected)

fn with_id(method: &str, params: Option<serde_json::Value>, id: &str) -> Self

Create request with string ID

JSON-RPC 2.0 Response - Standard response format

Fields

FieldTypeDescription
jsonrpcStringJSON-RPC version (always “2.0”)
idOption&lt;serde_json::Value&gt;Response ID (matches request ID)
resultOption&lt;serde_json::Value&gt;Success result (mutually exclusive with error)
errorOption&lt;JsonRpcError&gt;Error information (mutually exclusive with result)

Methods

fn success(id: Option<serde_json::Value>, result: serde_json::Value) -> Self

Create success response

fn error(id: Option<serde_json::Value>, error: JsonRpcError) -> Self

Create error response

JSON-RPC 2.0 Error - Standard error format

Fields

FieldTypeDescription
codei32Error code (standard JSON-RPC error codes)
messageStringError message
dataOption&lt;serde_json::Value&gt;Additional error data (optional)

Methods

fn method_not_found(message: &str) -> Self

Method not found (-32601)

fn invalid_params(message: &str) -> Self

Invalid params (-32602)

fn internal_error(message: &str) -> Self

Internal error (-32603)

Initialize Request - MCP handshake

Fields

FieldTypeDescription
protocol_versionStringProtocol version requested by client
capabilitiesClientCapabilitiesClient capabilities
client_infoClientInfoClient information

Initialize Result - MCP handshake response

Fields

FieldTypeDescription
protocol_versionStringProtocol version supported by server
capabilitiesServerCapabilitiesServer capabilities
server_infoServerInfoServer information

Client Information

Fields

FieldTypeDescription
nameStringClient name
versionStringClient version
descriptionOption&lt;String&gt;Client description (optional)

Server Information

Fields

FieldTypeDescription
nameStringServer name
versionStringServer version
descriptionOption&lt;String&gt;Server description (optional)

Client Capabilities

Fields

FieldTypeDescription
toolsOption&lt;ToolCapabilities&gt;Tool execution support

Server Capabilities

Fields

FieldTypeDescription
toolsOption&lt;ToolCapabilities&gt;Tool execution support

Tool Capabilities

Fields

FieldTypeDescription
supportedboolTool listing support

List Tools Result

Fields

FieldTypeDescription
toolsVec&lt;Tool&gt;Available tools

Tool Definition

Fields

FieldTypeDescription
nameStringTool name
descriptionStringTool description
input_schemaserde_json::ValueJSON Schema for tool parameters

Methods

fn simple(name: &str, description: &str, parameters: &[&str]) -> Self

Create simple tool with string parameters

Call Tool Request

Fields

FieldTypeDescription
nameStringTool name to execute
argumentsOption&lt;serde_json::Value&gt;Tool arguments
metaOption&lt;serde_json::Value&gt;Optional MCP request metadata.

Call Tool Result

Fields

FieldTypeDescription
contentVec&lt;Content&gt;Tool execution result content
is_errorOption&lt;bool&gt;Whether execution resulted in error

Bearer Token Authentication

Fields

FieldTypeDescription
access_tokenStringOAuth 2.1 access token
token_typeStringToken type (always “Bearer”)

Methods

fn new(access_token: &str) -> Self

Create new bearer token

fn to_authorization_header(&self) -> String

Format as Authorization header value

Content - Multi-modal content representation

Variants

VariantDescription
Text { ... }

Methods

fn text(text: &str) -> Self

Create text content