diff --git a/src/A2A/Client/A2AClientExtensions.cs b/src/A2A/Client/A2AClientExtensions.cs
new file mode 100644
index 00000000..34a7f974
--- /dev/null
+++ b/src/A2A/Client/A2AClientExtensions.cs
@@ -0,0 +1,132 @@
+using System.Net.ServerSentEvents;
+using System.Text.Json;
+
+namespace A2A;
+
+///
+/// Extension methods for the class making its API more
+/// convenient for certain use-cases.
+///
+public static class A2AClientExtensions
+{
+ ///
+ public static Task SendMessageAsync(
+ this A2AClient client,
+ Message message,
+ MessageSendConfiguration? configuration = null,
+ Dictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+ {
+ if (client is null)
+ {
+ throw new ArgumentNullException(nameof(client));
+ }
+
+ return client.SendMessageAsync(
+ new MessageSendParams
+ {
+ Message = message,
+ Configuration = configuration,
+ Metadata = metadata
+ },
+ cancellationToken);
+ }
+
+ ///
+ public static Task CancelTaskAsync(
+ this A2AClient client,
+ string taskId,
+ Dictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+ {
+ if (client is null)
+ {
+ throw new ArgumentNullException(nameof(client));
+ }
+
+ return client.CancelTaskAsync(
+ new TaskIdParams
+ {
+ Id = taskId,
+ Metadata = metadata
+ },
+ cancellationToken);
+ }
+
+ ///
+ public static Task SetPushNotificationAsync(
+ this A2AClient client,
+ string taskId,
+ string url,
+ string? configId = null,
+ string? token = null,
+ PushNotificationAuthenticationInfo? authentication = null,
+ CancellationToken cancellationToken = default)
+ {
+ if (client is null)
+ {
+ throw new ArgumentNullException(nameof(client));
+ }
+
+ return client.SetPushNotificationAsync(
+ new TaskPushNotificationConfig
+ {
+ TaskId = taskId,
+ PushNotificationConfig = new PushNotificationConfig
+ {
+ Id = configId,
+ Url = url,
+ Token = token,
+ Authentication = authentication
+ }
+ },
+ cancellationToken);
+ }
+
+ ///
+ public static Task GetPushNotificationAsync(
+ this A2AClient client,
+ string taskId,
+ string configId,
+ Dictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+ {
+ if (client is null)
+ {
+ throw new ArgumentNullException(nameof(client));
+ }
+
+ return client.GetPushNotificationAsync(
+ new GetTaskPushNotificationConfigParams
+ {
+ Id = taskId,
+ PushNotificationConfigId = configId,
+ Metadata = metadata
+ },
+ cancellationToken);
+ }
+
+ ///
+ public static IAsyncEnumerable> SendMessageStreamingAsync(
+ this A2AClient client,
+ Message message,
+ MessageSendConfiguration? configuration = null,
+ Dictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+
+ {
+ if (client is null)
+ {
+ throw new ArgumentNullException(nameof(client));
+ }
+
+ return client.SendMessageStreamingAsync(
+ new MessageSendParams
+ {
+ Message = message,
+ Configuration = configuration,
+ Metadata = metadata
+ },
+ cancellationToken);
+ }
+}