# AnthropicProviderNames

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.anthropicprovidernames/
> Summary: AnthropicProviderNames: The provider name registered by UseAnthropic and the ModelBinding.ProviderSettings keys.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Anthropic.dll</code></div>

The provider name registered by `UseAnthropic` and the
[ModelBinding.ProviderSettings](/api/tracon.modelbinding/#Tracon_ModelBinding_ProviderSettings) keys.

```csharp
public static class AnthropicProviderNames
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.anthropicprovidernames/">AnthropicProviderNames</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Remarks

These names are **stable**. Agent definitions are stored in the
database under these names; changing them breaks stored definitions.

## Fields

### <a id="Tracon_AnthropicProviderNames_Anthropic"></a> Anthropic

The provider that uses the Anthropic Messages API: `anthropic`.

```csharp
public const string Anthropic = "anthropic"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_AnthropicProviderNames_EffortSetting"></a> EffortSetting

The setting key that sets the model's effort: `anthropic.effort`
(text: `low`, `medium`, `high`, `xhigh` or `max`).

```csharp
public const string EffortSetting = "anthropic.effort"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Examples

```csharp
var binding = new ModelBinding
{
    Provider = AnthropicProviderNames.Anthropic,
    Model = "your-current-claude-model",
    MaxOutputTokens = 64000,
    ProviderSettings = new Dictionary<string, JsonElement>
    {
        [AnthropicProviderNames.EffortSetting] = JsonSerializer.SerializeToElement("high"),
        [AnthropicProviderNames.ThinkingModeSetting] = JsonSerializer.SerializeToElement("adaptive"),
        [AnthropicProviderNames.PromptCachingSetting] = JsonSerializer.SerializeToElement(true),
        [AnthropicProviderNames.PromptCachingTtlSetting] = JsonSerializer.SerializeToElement("1h"),
        [AnthropicProviderNames.PromptCachingPlacementSetting] = JsonSerializer.SerializeToElement("system"),
    },
};
```

#### Remarks

Sent as `output_config.effort`. Effort controls how many tokens the
model spends — thinking depth and answer length together — and it is the
main cost lever on current models. The accepted values come from the
Anthropic SDK's own `Effort` enum, not from a list in Tracon; a model
that does not support a level rejects the request with `400`.

Thinking tokens count against [ModelBinding.MaxOutputTokens](/api/tracon.modelbinding/#Tracon_ModelBinding_MaxOutputTokens).
With `high` or above and no explicit limit, the request goes out with
[AnthropicProviderOptions.DefaultMaxOutputTokens](/api/tracon.anthropicprovideroptions/#Tracon_AnthropicProviderOptions_DefaultMaxOutputTokens) (4096 by
default), which a long answer can exceed. The agent validation report
warns about this when the model catalog states a higher maximum.

The value does not reach [ModelBinding.Fallbacks](/api/tracon.modelbinding/#Tracon_ModelBinding_Fallbacks) links: a
fallback link gets no provider settings.

### <a id="Tracon_AnthropicProviderNames_PromptCachingPlacementSetting"></a> PromptCachingPlacementSetting

The setting key that selects where the prompt cache breakpoint goes:
`anthropic.promptCaching.placement` (text: `request` or `system`).

```csharp
public const string PromptCachingPlacementSetting = "anthropic.promptCaching.placement"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Remarks

`request` (the default) sends a top-level `cache_control`:
Anthropic places the breakpoint on the last cacheable block, so the whole
request is cached. Requests that share a conversation reuse it.

`system` marks the end of the agent's instructions instead and sends
no top-level `cache_control`. Requests that carry a different
document or question after the same instructions then share the cached
instruction prefix; with `request` each of them would write a new
entry that the next one cannot read. When a request carries no
instructions, the top-level breakpoint is used.

Requires [AnthropicProviderNames.PromptCachingSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_PromptCachingSetting) to be [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool).

### <a id="Tracon_AnthropicProviderNames_PromptCachingSetting"></a> PromptCachingSetting

The setting key that turns on prompt caching: `anthropic.promptCaching` (boolean).

```csharp
public const string PromptCachingSetting = "anthropic.promptCaching"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Remarks

Defaults to **off**. Turning it on lowers cost but changes
behavior: `cache_control` is added to the request body, the fee for
creating a cache entry is higher than the normal input fee for short
prompts, and the model only caches prompts above a certain token
threshold. It is opted in explicitly so there is no silent default.

Measured against `claude-haiku-4-5-20251001`: with it on, the
response reported `cache_creation_input_tokens=4209`; with it off, this
counter never appeared.

### <a id="Tracon_AnthropicProviderNames_PromptCachingTtlSetting"></a> PromptCachingTtlSetting

The setting key that sets how long a prompt cache entry lives:
`anthropic.promptCaching.ttl` (text: `5m` or `1h`).

```csharp
public const string PromptCachingTtlSetting = "anthropic.promptCaching.ttl"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Remarks

Sent as `cache_control.ttl`. Requires [AnthropicProviderNames.PromptCachingSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_PromptCachingSetting)
to be [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool); on its own it is an error, not a silent
no-op. When it is not set, Anthropic's default (5 minutes) applies. A
1-hour entry costs more to write and pays off when the same prefix
returns more than five minutes apart. The accepted values come from the
Anthropic SDK's own `Ttl` enum.

### <a id="Tracon_AnthropicProviderNames_SettingsPrefix"></a> SettingsPrefix

The prefix for provider-specific settings: `anthropic`.

```csharp
public const string SettingsPrefix = "anthropic"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_AnthropicProviderNames_ThinkingBudgetTokensSetting"></a> ThinkingBudgetTokensSetting

The setting key that provides the extended-thinking budget:
`anthropic.thinking.budgetTokens` (integer).

```csharp
public const string ThinkingBudgetTokensSetting = "anthropic.thinking.budgetTokens"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Remarks

The value must be **smaller** than
[ModelBinding.MaxOutputTokens](/api/tracon.modelbinding/#Tracon_ModelBinding_MaxOutputTokens); otherwise Anthropic rejects the
request.

While thinking is on, Anthropic allows [ModelBinding.Temperature](/api/tracon.modelbinding/#Tracon_ModelBinding_Temperature)
to be only 1. Any other temperature gets the request rejected with
`invalid_request_error` — measured against the live API.

### <a id="Tracon_AnthropicProviderNames_ThinkingModeSetting"></a> ThinkingModeSetting

The setting key that selects how the model thinks:
`anthropic.thinking.mode` (text: `enabled` or `adaptive`).

```csharp
public const string ThinkingModeSetting = "anthropic.thinking.mode"
```

#### Field Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Remarks

`enabled` sends `thinking: {type: "enabled", budget_tokens}` and
requires [AnthropicProviderNames.ThinkingBudgetTokensSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_ThinkingBudgetTokensSetting). It is the mode older
models use; current models reject `budget_tokens` with `400`.
When only [AnthropicProviderNames.ThinkingBudgetTokensSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_ThinkingBudgetTokensSetting) is set, the mode is
`enabled`, as before this key existed.

`adaptive` sends `thinking: {type: "adaptive"}`: the model decides
when and how much to think, and [AnthropicProviderNames.EffortSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_EffortSetting) sets the depth.
It takes no budget; setting [AnthropicProviderNames.ThinkingBudgetTokensSetting](/api/tracon.anthropicprovidernames/#Tracon_AnthropicProviderNames_ThinkingBudgetTokensSetting) with it
is an error. Nothing is sent when neither key is set, so the model's own
default applies — no setting changes an existing agent's behavior.

## Properties

### <a id="Tracon_AnthropicProviderNames_SupportedSettings"></a> SupportedSettings

All setting keys this provider supports.

```csharp
public static IReadOnlyList<string> SupportedSettings { get; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

#### Remarks

A key absent from this list is not silently ignored; it fails compilation
and the error message lists this list.
