diff --git a/src/ModelContextProtocol/Protocol/Types/CallToolRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/CallToolRequestParams.cs
index a33d3aac8..3a9b6bd9f 100644
--- a/src/ModelContextProtocol/Protocol/Types/CallToolRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/CallToolRequestParams.cs
@@ -4,7 +4,7 @@
/// Used by the client to invoke a tool provided by the server.
/// See the schema for details
///
-public class CallToolRequestParams
+public class CallToolRequestParams : RequestParams
{
///
/// Tool name.
diff --git a/src/ModelContextProtocol/Protocol/Types/CompleteRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/CompleteRequestParams.cs
index cb389914c..eea139da4 100644
--- a/src/ModelContextProtocol/Protocol/Types/CompleteRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/CompleteRequestParams.cs
@@ -4,7 +4,7 @@
/// A request from the client to the server, to ask for completion options.
/// See the schema for details
///
-public class CompleteRequestParams
+public class CompleteRequestParams : RequestParams
{
///
/// The reference's information
diff --git a/src/ModelContextProtocol/Protocol/Types/CreateMessageRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/CreateMessageRequestParams.cs
index 02be3364e..329e33dbb 100644
--- a/src/ModelContextProtocol/Protocol/Types/CreateMessageRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/CreateMessageRequestParams.cs
@@ -9,7 +9,7 @@
/// clients have full discretion over model selection and should inform users before sampling.
/// See the schema for details
///
-public class CreateMessageRequestParams
+public class CreateMessageRequestParams : RequestParams
{
///
/// A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. The client MAY ignore this request.
diff --git a/src/ModelContextProtocol/Protocol/Types/GetPromptRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/GetPromptRequestParams.cs
index 5c4ce417a..6b05930a3 100644
--- a/src/ModelContextProtocol/Protocol/Types/GetPromptRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/GetPromptRequestParams.cs
@@ -4,7 +4,7 @@
/// Used by the client to get a prompt provided by the server.
/// See the schema for details
///
-public class GetPromptRequestParams
+public class GetPromptRequestParams : RequestParams
{
///
/// he name of the prompt or prompt template.
diff --git a/src/ModelContextProtocol/Protocol/Types/InitializeRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/InitializeRequestParams.cs
index 179371aae..5790c4fc6 100644
--- a/src/ModelContextProtocol/Protocol/Types/InitializeRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/InitializeRequestParams.cs
@@ -6,7 +6,7 @@ namespace ModelContextProtocol.Protocol.Types;
/// Parameters for an initialization request sent to the server.
/// See the schema for details
///
-public record InitializeRequestParams
+public class InitializeRequestParams : RequestParams
{
///
/// The version of the Model Context Protocol that the client wants to use.
diff --git a/src/ModelContextProtocol/Protocol/Types/ReadResourceRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/ReadResourceRequestParams.cs
index fc1c563ef..bf345d73b 100644
--- a/src/ModelContextProtocol/Protocol/Types/ReadResourceRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/ReadResourceRequestParams.cs
@@ -4,7 +4,7 @@
/// Sent from the client to the server, to read a specific resource URI.
/// See the schema for details
///
-public class ReadResourceRequestParams
+public class ReadResourceRequestParams : RequestParams
{
///
/// The URI of the resource to read. The URI can use any protocol; it is up to the server how to interpret it.
diff --git a/src/ModelContextProtocol/Protocol/Types/RequestParams.cs b/src/ModelContextProtocol/Protocol/Types/RequestParams.cs
new file mode 100644
index 000000000..73dbc2a5c
--- /dev/null
+++ b/src/ModelContextProtocol/Protocol/Types/RequestParams.cs
@@ -0,0 +1,16 @@
+using System.Text.Json.Serialization;
+
+namespace ModelContextProtocol.Protocol.Types;
+
+///
+/// Base class for all request parameters.
+/// See the schema for details
+///
+public abstract class RequestParams
+{
+ ///
+ /// Metadata related to the tool invocation.
+ ///
+ [JsonPropertyName("_meta")]
+ public RequestParamsMetadata? Meta { get; init; }
+}
diff --git a/src/ModelContextProtocol/Protocol/Types/RequestParamsMetadata.cs b/src/ModelContextProtocol/Protocol/Types/RequestParamsMetadata.cs
new file mode 100644
index 000000000..919fb8ff3
--- /dev/null
+++ b/src/ModelContextProtocol/Protocol/Types/RequestParamsMetadata.cs
@@ -0,0 +1,15 @@
+using System.Text.Json.Serialization;
+
+namespace ModelContextProtocol.Protocol.Types;
+
+///
+/// Metadata related to the request.
+///
+public class RequestParamsMetadata
+{
+ ///
+ /// If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
+ ///
+ [JsonPropertyName("progressToken")]
+ public object ProgressToken { get; set; } = default!;
+}
diff --git a/src/ModelContextProtocol/Protocol/Types/SetLevelRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/SetLevelRequestParams.cs
index 9491cd77b..bdc987ab8 100644
--- a/src/ModelContextProtocol/Protocol/Types/SetLevelRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/SetLevelRequestParams.cs
@@ -6,7 +6,7 @@ namespace ModelContextProtocol.Protocol.Types;
/// A request from the client to the server, to enable or adjust logging.
/// See the schema for details
///
-public class SetLevelRequestParams
+public class SetLevelRequestParams : RequestParams
{
///
/// The level of logging that the client wants to receive from the server.
diff --git a/src/ModelContextProtocol/Protocol/Types/SubscribeRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/SubscribeRequestParams.cs
index a25715408..e0963679c 100644
--- a/src/ModelContextProtocol/Protocol/Types/SubscribeRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/SubscribeRequestParams.cs
@@ -4,7 +4,7 @@
/// Sent from the client to request updated notifications from the server whenever a particular primitive changes.
/// See the schema for details
///
-public class SubscribeRequestParams
+public class SubscribeRequestParams : RequestParams
{
///
/// The URI of the resource to subscribe to. The URI can use any protocol; it is up to the server how to interpret it.
diff --git a/src/ModelContextProtocol/Protocol/Types/UnsubscribeRequestParams.cs b/src/ModelContextProtocol/Protocol/Types/UnsubscribeRequestParams.cs
index 13c4efd21..b138c5bd1 100644
--- a/src/ModelContextProtocol/Protocol/Types/UnsubscribeRequestParams.cs
+++ b/src/ModelContextProtocol/Protocol/Types/UnsubscribeRequestParams.cs
@@ -4,7 +4,7 @@
/// Sent from the client to request not receiving updated notifications from the server whenever a primitive resource changes.
/// See the schema for details
///
-public class UnsubscribeRequestParams
+public class UnsubscribeRequestParams : RequestParams
{
///
/// The URI of the resource to unsubscribe fro. The URI can use any protocol; it is up to the server how to interpret it.