# ITraconBuilder

> 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.itraconbuilder/
> Summary: ITraconBuilder: The fluent chain that configures Tracon. Returned from the AddTracon call.

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

The fluent chain that configures Tracon. Returned from the
`AddTracon` call.

```csharp
public interface ITraconBuilder
```

<dl class="api-relations"><dt>Extension Methods</dt><dd><a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgent_Tracon_ITraconBuilder_Tracon_AgentDefinition_">TraconBuilderExtensions.AddAgent(ITraconBuilder, AgentDefinition)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgent_Tracon_ITraconBuilder_System_String_System_Func_System_IServiceProvider_Microsoft_Agents_AI_AIAgent__System_String_">TraconBuilderExtensions.AddAgent(ITraconBuilder, string, Func&lt;IServiceProvider, AIAgent&gt;, string?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentDecorator__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddAgentDecorator&lt;TDecorator&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentDecorator_Tracon_ITraconBuilder_Tracon_IAgentDecorator_">TraconBuilderExtensions.AddAgentDecorator(ITraconBuilder, IAgentDecorator)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentDecorator_Tracon_ITraconBuilder_System_Func_System_IServiceProvider_Tracon_IAgentDecorator__">TraconBuilderExtensions.AddAgentDecorator(ITraconBuilder, Func&lt;IServiceProvider, IAgentDecorator&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentExtension__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddAgentExtension&lt;TExtension&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentExtension_Tracon_ITraconBuilder_Tracon_IAgentExtension_">TraconBuilderExtensions.AddAgentExtension(ITraconBuilder, IAgentExtension)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentExtension_Tracon_ITraconBuilder_System_String_System_Action_Tracon_AgentExtensionContext__System_String_">TraconBuilderExtensions.AddAgentExtension(ITraconBuilder, string, Action&lt;AgentExtensionContext&gt;, string?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentSource__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddAgentSource&lt;TSource&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentSource_Tracon_ITraconBuilder_Tracon_IAgentSource_">TraconBuilderExtensions.AddAgentSource(ITraconBuilder, IAgentSource)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddAgentSource_Tracon_ITraconBuilder_System_Func_System_IServiceProvider_Tracon_IAgentSource__">TraconBuilderExtensions.AddAgentSource(ITraconBuilder, Func&lt;IServiceProvider, IAgentSource&gt;)</a>, <a href="/api/tracon.traconclienttoolextensions/#Tracon_TraconClientToolExtensions_AddClientTool_Tracon_ITraconBuilder_System_String_System_String_System_Text_Json_JsonElement_">TraconClientToolExtensions.AddClientTool(ITraconBuilder, string, string, JsonElement)</a>, <a href="/api/tracon.traconcontentguardbuilderextensions/#Tracon_TraconContentGuardBuilderExtensions_AddContentGuard__1_Tracon_ITraconBuilder_">TraconContentGuardBuilderExtensions.AddContentGuard&lt;TGuard&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconcontentguardbuilderextensions/#Tracon_TraconContentGuardBuilderExtensions_AddContentGuard_Tracon_ITraconBuilder_Tracon_IContentGuard_">TraconContentGuardBuilderExtensions.AddContentGuard(ITraconBuilder, IContentGuard)</a>, <a href="/api/tracon.traconcontentguardbuilderextensions/#Tracon_TraconContentGuardBuilderExtensions_AddContentGuard_Tracon_ITraconBuilder_System_Func_System_IServiceProvider_Tracon_IContentGuard__">TraconContentGuardBuilderExtensions.AddContentGuard(ITraconBuilder, Func&lt;IServiceProvider, IContentGuard&gt;)</a>, <a href="/api/tracon.traconcontentprotectionextensions/#Tracon_TraconContentProtectionExtensions_AddContentProtection_Tracon_ITraconBuilder_System_Action_Tracon_TraconContentProtectionOptions__">TraconContentProtectionExtensions.AddContentProtection(ITraconBuilder, Action&lt;TraconContentProtectionOptions&gt;?)</a>, <a href="/api/tracon.traconcontentprotectionextensions/#Tracon_TraconContentProtectionExtensions_AddContentProtection__1_Tracon_ITraconBuilder_">TraconContentProtectionExtensions.AddContentProtection&lt;TProtector&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddEvalCheck_Tracon_ITraconBuilder_System_String_Microsoft_Agents_AI_EvalCheck_">TraconBuilderExtensions.AddEvalCheck(ITraconBuilder, string, EvalCheck)</a>, <a href="/api/tracon.tracononlineevaluationbuilderextensions/#Tracon_TraconOnlineEvaluationBuilderExtensions_AddEvalEvaluatorFactory__1_Tracon_ITraconBuilder_">TraconOnlineEvaluationBuilderExtensions.AddEvalEvaluatorFactory&lt;TFactory&gt;(ITraconBuilder)</a>, <a href="/api/tracon.tracononlineevaluationbuilderextensions/#Tracon_TraconOnlineEvaluationBuilderExtensions_AddEvalEvaluatorFactory_Tracon_ITraconBuilder_Tracon_IEvalEvaluatorFactory_">TraconOnlineEvaluationBuilderExtensions.AddEvalEvaluatorFactory(ITraconBuilder, IEvalEvaluatorFactory)</a>, <a href="/api/tracon.tracononlineevaluationbuilderextensions/#Tracon_TraconOnlineEvaluationBuilderExtensions_AddEvaluatorJudge_Tracon_ITraconBuilder_System_String_Microsoft_Extensions_AI_Evaluation_IEvaluator_">TraconOnlineEvaluationBuilderExtensions.AddEvaluatorJudge(ITraconBuilder, string, IEvaluator)</a>, <a href="/api/tracon.tracononlineevaluationbuilderextensions/#Tracon_TraconOnlineEvaluationBuilderExtensions_AddEvaluatorJudge_Tracon_ITraconBuilder_System_String_Microsoft_Extensions_AI_Evaluation_IEvaluator_System_Action_Tracon_ModelRunJudgeOptions__">TraconOnlineEvaluationBuilderExtensions.AddEvaluatorJudge(ITraconBuilder, string, IEvaluator, Action&lt;ModelRunJudgeOptions&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddHostedTool_Tracon_ITraconBuilder_System_String_Tracon_HostedToolKind_System_Func_Tracon_HostedToolContext_Microsoft_Extensions_AI_AITool__System_String_">TraconBuilderExtensions.AddHostedTool(ITraconBuilder, string, HostedToolKind, Func&lt;HostedToolContext, AITool&gt;, string?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddLoopEvaluator_Tracon_ITraconBuilder_System_String_Microsoft_Agents_AI_LoopEvaluator_">TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, LoopEvaluator)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddLoopEvaluator_Tracon_ITraconBuilder_System_String_Microsoft_Agents_AI_LoopEvaluator_System_String_">TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, LoopEvaluator, string?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddLoopEvaluator_Tracon_ITraconBuilder_System_String_System_Func_System_IServiceProvider_Microsoft_Agents_AI_LoopEvaluator__">TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, Func&lt;IServiceProvider, LoopEvaluator&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddLoopEvaluator_Tracon_ITraconBuilder_System_String_System_Func_System_IServiceProvider_Microsoft_Agents_AI_LoopEvaluator__System_String_">TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, Func&lt;IServiceProvider, LoopEvaluator&gt;, string?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddModelProvider__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddModelProvider&lt;TProvider&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddModelProvider_Tracon_ITraconBuilder_Tracon_IModelProvider_">TraconBuilderExtensions.AddModelProvider(ITraconBuilder, IModelProvider)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddModelProvider_Tracon_ITraconBuilder_System_Func_System_IServiceProvider_Tracon_IModelProvider__">TraconBuilderExtensions.AddModelProvider(ITraconBuilder, Func&lt;IServiceProvider, IModelProvider&gt;)</a>, <a href="/api/tracon.tracononlineevaluationbuilderextensions/#Tracon_TraconOnlineEvaluationBuilderExtensions_AddModelRunJudge_Tracon_ITraconBuilder_System_Action_Tracon_ModelRunJudgeOptions__">TraconOnlineEvaluationBuilderExtensions.AddModelRunJudge(ITraconBuilder, Action&lt;ModelRunJudgeOptions&gt;)</a>, <a href="/api/tracon.traconcontentguardbuilderextensions/#Tracon_TraconContentGuardBuilderExtensions_AddPatternContentGuard_Tracon_ITraconBuilder_System_Action_Tracon_PatternContentGuardOptions__">TraconContentGuardBuilderExtensions.AddPatternContentGuard(ITraconBuilder, Action&lt;PatternContentGuardOptions&gt;?)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddRunJudge__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddRunJudge&lt;TJudge&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddRunJudge_Tracon_ITraconBuilder_Tracon_IRunJudge_">TraconBuilderExtensions.AddRunJudge(ITraconBuilder, IRunJudge)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddRunJudge_Tracon_ITraconBuilder_System_Func_System_IServiceProvider_Tracon_IRunJudge__">TraconBuilderExtensions.AddRunJudge(ITraconBuilder, Func&lt;IServiceProvider, IRunJudge&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddScopedTool_Tracon_ITraconBuilder_Microsoft_Extensions_AI_AIFunction_System_Action_Tracon_ToolRegistrationOptions__">TraconBuilderExtensions.AddScopedTool(ITraconBuilder, AIFunction, Action&lt;ToolRegistrationOptions&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddScopedTool_Tracon_ITraconBuilder_Microsoft_Extensions_AI_AIFunction_">TraconBuilderExtensions.AddScopedTool(ITraconBuilder, AIFunction)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddSkill_Tracon_ITraconBuilder_Tracon_AgentSkillDefinition_">TraconBuilderExtensions.AddSkill(ITraconBuilder, AgentSkillDefinition)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddSpeechSynthesizer_Tracon_ITraconBuilder_System_String_System_Func_System_IServiceProvider_Tracon_ISpeechSynthesizer__">TraconBuilderExtensions.AddSpeechSynthesizer(ITraconBuilder, string, Func&lt;IServiceProvider, ISpeechSynthesizer&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddSpeechSynthesizer_Tracon_ITraconBuilder_System_String_Tracon_TextToSpeechClientBinding_">TraconBuilderExtensions.AddSpeechSynthesizer(ITraconBuilder, string, TextToSpeechClientBinding)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddSpeechTranscriber_Tracon_ITraconBuilder_System_String_System_Func_System_IServiceProvider_Tracon_ISpeechTranscriber__">TraconBuilderExtensions.AddSpeechTranscriber(ITraconBuilder, string, Func&lt;IServiceProvider, ISpeechTranscriber&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddSpeechTranscriber_Tracon_ITraconBuilder_System_String_Tracon_SpeechToTextClientBinding_">TraconBuilderExtensions.AddSpeechTranscriber(ITraconBuilder, string, SpeechToTextClientBinding)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddTool_Tracon_ITraconBuilder_Microsoft_Extensions_AI_AIFunction_System_Action_Tracon_ToolRegistrationOptions__">TraconBuilderExtensions.AddTool(ITraconBuilder, AIFunction, Action&lt;ToolRegistrationOptions&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddTool_Tracon_ITraconBuilder_Microsoft_Extensions_AI_AIFunction_">TraconBuilderExtensions.AddTool(ITraconBuilder, AIFunction)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddTool_Tracon_ITraconBuilder_System_Delegate_System_String_System_String_System_Action_Tracon_ToolRegistrationOptions__">TraconBuilderExtensions.AddTool(ITraconBuilder, Delegate, string?, string?, Action&lt;ToolRegistrationOptions&gt;?)</a>, <a href="/api/tracon.tracontoolapprovalpolicyextensions/#Tracon_TraconToolApprovalPolicyExtensions_AddToolApprovalPolicy_Tracon_ITraconBuilder_System_String_System_Func_Tracon_ToolApprovalContext_Tracon_ToolApprovalPolicyDecision__">TraconToolApprovalPolicyExtensions.AddToolApprovalPolicy(ITraconBuilder, string, Func&lt;ToolApprovalContext, ToolApprovalPolicyDecision&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddToolsFrom__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.AddToolsFrom&lt;T&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_AddToolsFrom_Tracon_ITraconBuilder_System_Type_">TraconBuilderExtensions.AddToolsFrom(ITraconBuilder, Type)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_Configure_Tracon_ITraconBuilder_System_Action_Tracon_TraconOptions__">TraconBuilderExtensions.Configure(ITraconBuilder, Action&lt;TraconOptions&gt;)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_RequireCustomBinding__1_Tracon_ITraconBuilder_">TraconBuilderExtensions.RequireCustomBinding&lt;T&gt;(ITraconBuilder)</a>, <a href="/api/tracon.traconbuilderextensions/#Tracon_TraconBuilderExtensions_RequireProductionProfile_Tracon_ITraconBuilder_System_Action_Tracon_TraconProductionProfileOptions__">TraconBuilderExtensions.RequireProductionProfile(ITraconBuilder, Action&lt;TraconProductionProfileOptions&gt;?)</a>, <a href="/api/tracon.traconbuilderconversationmemoryextensions/#Tracon_TraconBuilderConversationMemoryExtensions_UseConversationMemory_Tracon_ITraconBuilder_System_Action_Tracon_TraconConversationMemoryOptions__">TraconBuilderConversationMemoryExtensions.UseConversationMemory(ITraconBuilder, Action&lt;TraconConversationMemoryOptions&gt;)</a>, <a href="/api/tracon.livevoicebuilderextensions/#Tracon_LiveVoiceBuilderExtensions_UseLiveVoice_Tracon_ITraconBuilder_Microsoft_Extensions_Configuration_IConfiguration_">LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder, IConfiguration)</a>, <a href="/api/tracon.livevoicebuilderextensions/#Tracon_LiveVoiceBuilderExtensions_UseLiveVoice_Tracon_ITraconBuilder_">LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder)</a>, <a href="/api/tracon.livevoicebuilderextensions/#Tracon_LiveVoiceBuilderExtensions_UseLiveVoice_Tracon_ITraconBuilder_System_Action_Tracon_VoiceLiveOptions__">LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder, Action&lt;VoiceLiveOptions&gt;)</a>, <a href="/api/tracon.traconskillscriptbuilderextensions/#Tracon_TraconSkillScriptBuilderExtensions_UseSkillScripts_Tracon_ITraconBuilder_System_Action_Tracon_TraconSkillScriptOptions__">TraconSkillScriptBuilderExtensions.UseSkillScripts(ITraconBuilder, Action&lt;TraconSkillScriptOptions&gt;)</a>, <a href="/api/tracon.voiceconversationbuilderextensions/#Tracon_VoiceConversationBuilderExtensions_UseVoiceConversation_Tracon_ITraconBuilder_Microsoft_Extensions_Configuration_IConfiguration_">VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder, IConfiguration)</a>, <a href="/api/tracon.voiceconversationbuilderextensions/#Tracon_VoiceConversationBuilderExtensions_UseVoiceConversation_Tracon_ITraconBuilder_">VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder)</a>, <a href="/api/tracon.voiceconversationbuilderextensions/#Tracon_VoiceConversationBuilderExtensions_UseVoiceConversation_Tracon_ITraconBuilder_System_Action_Tracon_VoiceConversationOptions__">VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder, Action&lt;VoiceConversationOptions&gt;)</a></dd></dl>

## Remarks

The chain carries only [ITraconBuilder.Services](/api/tracon.itraconbuilder/#Tracon_ITraconBuilder_Services). Every registration
capability is an extension method: Tracon's own live in
[TraconBuilderExtensions](/api/tracon.traconbuilderextensions/), and provider and storage packages
add theirs (`UsePostgreSql`, `UseOpenAI`, and so on).

`AddTracon` returns Tracon's implementation, and this interface is for
calling, not for implementing in an application. The one other implementation it is
meant for is a test double: a chain of your own only has to supply
[ITraconBuilder.Services](/api/tracon.itraconbuilder/#Tracon_ITraconBuilder_Services), and the extension methods run the same way against it.

## Properties

### <a id="Tracon_ITraconBuilder_Services"></a> Services

The underlying service collection.

```csharp
IServiceCollection Services { get; }
```

#### Property Value

 [IServiceCollection](https://learn.microsoft.com/dotnet/api/microsoft.extensions.dependencyinjection.iservicecollection)

#### Remarks

The escape hatch: anything Tracon does not model is registered here.
Every Tracon service is registered with `TryAdd`, so registration
ORDER decides who wins, and the two seam shapes behave differently.

For a single-instance seam (for example [ITenantContext](/api/tracon.itenantcontext/)): a
registration made before `AddTracon` wins outright, and only
one registration remains. A registration made after `AddTracon`
also wins for a direct resolve, but Tracon's own registration is not
removed - it stays behind as a second, unused entry.

For a multi-registration seam (for example [IAgentDecorator](/api/tracon.iagentdecorator/)):
a registration made before `AddTracon` joins the list alongside
the built-in ones. A registration made after `AddTracon` also
joins the list - the built-in implementation keeps running too, which is a
real behavior difference from the single-instance case above.

```csharp
// Runs before AddTracon(), so this registration wins outright.
builder.Services.AddSingleton(new OrderGateway());
builder.AddTracon();
```
