Skip to content
Tracon

ModelDescriptor

Namespace Tracon · Assembly Tracon.Abstractions.dll

A model’s capabilities and limits.

public sealed record ModelDescriptor : IEquatable<ModelDescriptor>
Inheritance
object ← ModelDescriptor
Implements
IEquatable<ModelDescriptor>
Inherited Members
object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
public ModelDescriptor()

The cost per million input tokens that were served from the provider’s prompt cache. For reporting only.

public decimal? CachedInputCostPerMillionTokens { get; init; }

decimal?

When this is null the cached tokens are priced at ModelDescriptor.InputCostPerMillionTokens, exactly as they were before the rate existed — an undefined cache rate does not make the run’s price unknown. Set it to 0 only to state that cache reads are free.

The context window’s token capacity.

public int? ContextWindowTokens { get; init; }

int?

The name shown in the UI.

public string? DisplayName { get; init; }

string?

The cost per million input tokens. For reporting only.

public decimal? InputCostPerMillionTokens { get; init; }

decimal?

The maximum number of tokens producible in a single response.

public int? MaxOutputTokens { get; init; }

int?

The model name. ModelBinding.Model matches this value.

public required string Name { get; init; }

string

The cost per million output tokens. For reporting only.

public decimal? OutputCostPerMillionTokens { get; init; }

decimal?

Whether the reasoning-effort setting is supported.

public bool SupportsReasoning { get; init; }

bool

Whether the model accepts the sampling parameters temperature and topP; null when the catalog does not say.

public bool? SupportsSampling { get; init; }

bool?

The parameters are ModelBinding.Temperature and ModelBinding.TopP. null (the default) means unknown and checks nothing. When the catalog states false, an agent definition that sets either parameter does not compile, and the validation report names the field: the provider would reject the request with 400 on the first run. The check covers the binding’s ModelBinding.Fallbacks links too, because they receive the same parameters.

The value comes from the catalog, never from a model-name list in code: many current models reject sampling, and which ones changes with every release.

Whether streaming responses are supported.

public bool SupportsStreaming { get; init; }

bool

Whether output conforming to a JSON schema can be produced.

public bool SupportsStructuredOutput { get; init; }

bool

Whether tool calling is supported.

public bool SupportsTools { get; init; }

bool

public override bool Equals(object? obj)

obj object?

bool

public bool Equals(ModelDescriptor? other)

other ModelDescriptor?

bool

public override int GetHashCode()

int

public override string ToString()

string

operator ==(ModelDescriptor?, ModelDescriptor?)

Section titled “ operator ==(ModelDescriptor?, ModelDescriptor?)”
public static bool operator ==(ModelDescriptor? left, ModelDescriptor? right)

left ModelDescriptor?

right ModelDescriptor?

bool

operator !=(ModelDescriptor?, ModelDescriptor?)

Section titled “ operator !=(ModelDescriptor?, ModelDescriptor?)”
public static bool operator !=(ModelDescriptor? left, ModelDescriptor? right)

left ModelDescriptor?

right ModelDescriptor?

bool