diff --git a/src/NATS.Client.Core/INatsConnection.cs b/src/NATS.Client.Core/INatsConnection.cs
index 9ca6b0a01..45b859e41 100644
--- a/src/NATS.Client.Core/INatsConnection.cs
+++ b/src/NATS.Client.Core/INatsConnection.cs
@@ -133,6 +133,7 @@ public interface INatsConnection : INatsClient
///
/// if reply option's timeout is not defined then it will be set to NatsOpts.RequestTimeout.
///
+ /// RequestManyWithSentinelAsync for custom stop conditions
IAsyncEnumerable> RequestManyAsync(
string subject,
TRequest? data,
diff --git a/src/NATS.Client.Core/NatsOpts.cs b/src/NATS.Client.Core/NatsOpts.cs
index b75f87e50..6950e0775 100644
--- a/src/NATS.Client.Core/NatsOpts.cs
+++ b/src/NATS.Client.Core/NatsOpts.cs
@@ -28,6 +28,7 @@ public enum NatsRequestReplyMode
///
/// Immutable options for NatsConnection, you can configure via `with` operator.
///
+/// Load NatsOpts from NATS CLI context files
public sealed record NatsOpts
{
public static readonly NatsOpts Default = new()
diff --git a/src/NATS.Client.JetStream/Models/ConsumerConfig.cs b/src/NATS.Client.JetStream/Models/ConsumerConfig.cs
index 3f49fbdaa..5a4d2cff3 100644
--- a/src/NATS.Client.JetStream/Models/ConsumerConfig.cs
+++ b/src/NATS.Client.JetStream/Models/ConsumerConfig.cs
@@ -111,6 +111,7 @@ public ConsumerConfig(string name)
///
/// Filter the stream by a single subjects
///
+ /// Partitioned consumer groups with subject-based partitioning
[System.Text.Json.Serialization.JsonPropertyName("filter_subject")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public string? FilterSubject { get; set; }
@@ -118,6 +119,7 @@ public ConsumerConfig(string name)
///
/// Filter the stream by multiple subjects
///
+ /// Partitioned consumer groups with multi-subject partitioning
[System.Text.Json.Serialization.JsonPropertyName("filter_subjects")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public ICollection? FilterSubjects { get; set; }
diff --git a/src/NATS.Client.JetStream/Models/StreamConfig.cs b/src/NATS.Client.JetStream/Models/StreamConfig.cs
index f4d31482c..c60abf249 100644
--- a/src/NATS.Client.JetStream/Models/StreamConfig.cs
+++ b/src/NATS.Client.JetStream/Models/StreamConfig.cs
@@ -217,6 +217,8 @@ public StreamConfig()
///
/// Allow higher performance, direct access to get individual messages
///
+ /// Batch direct message retrieval via GetBatchDirectAsync
+ /// Distributed counters require direct-access streams
[System.Text.Json.Serialization.JsonPropertyName("allow_direct")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public bool AllowDirect { get; set; }
@@ -243,6 +245,7 @@ public StreamConfig()
/// AllowMsgTTL allows header initiated per-message TTLs. If disabled, then the `NATS-TTL` header will be ignored.
///
/// This feature is only available on NATS server v2.11 and later.
+ /// Scheduled and delayed message publishing
[System.Text.Json.Serialization.JsonPropertyName("allow_msg_ttl")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public bool AllowMsgTTL { get; set; }
@@ -267,6 +270,7 @@ public StreamConfig()
/// Allow message counter.
///
/// Supported by server v2.12
+ /// Distributed counter operations via NatsJSCounter
[System.Text.Json.Serialization.JsonPropertyName("allow_msg_counter")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public bool AllowMsgCounter { get; set; }
@@ -274,6 +278,7 @@ public StreamConfig()
///
/// AllowMsgSchedules enables the scheduling of messages.
///
+ /// PublishScheduledAsync for delayed and recurring message scheduling
[System.Text.Json.Serialization.JsonPropertyName("allow_msg_schedules")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public bool AllowMsgSchedules { get; set; }
@@ -281,6 +286,7 @@ public StreamConfig()
///
/// AllowAtomicPublish allows atomic batch publishing into the stream.
///
+ /// Atomic batch publishing via PublishMsgBatchAsync
[System.Text.Json.Serialization.JsonPropertyName("allow_atomic")]
[System.Text.Json.Serialization.JsonIgnore(Condition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
public bool AllowAtomicPublish { get; set; }
diff --git a/src/NATS.Client.KeyValueStore/INatsKVStore.cs b/src/NATS.Client.KeyValueStore/INatsKVStore.cs
index 566406c6c..e7e2d1873 100644
--- a/src/NATS.Client.KeyValueStore/INatsKVStore.cs
+++ b/src/NATS.Client.KeyValueStore/INatsKVStore.cs
@@ -3,6 +3,10 @@
namespace NATS.Client.KeyValueStore;
+///
+/// Represents a NATS Key-Value Store bucket.
+///
+/// KV codec extensions for typed serialization
public interface INatsKVStore
{
///