# AgentDescriptor

> 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.agentdescriptor/
> Summary: AgentDescriptor: A summary view of an agent listed in the catalog. It carries everything the user interface needs to draw the agent list, without having to build the agent. A.

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

A summary view of an agent listed in the catalog. It carries everything the user
interface needs to draw the agent list, without having to build the agent. A source
must not mutate a descriptor or its nested collections after returning it.

```csharp
public sealed record AgentDescriptor : IEquatable<AgentDescriptor>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.agentdescriptor/">AgentDescriptor</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;AgentDescriptor&gt;</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.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>

## Constructors

### <a id="Tracon_AgentDescriptor__ctor"></a> AgentDescriptor\(\)

```csharp
public AgentDescriptor()
```

## Properties

### <a id="Tracon_AgentDescriptor_CallableAgentNames"></a> CallableAgentNames

Gets the names of the other agents this agent may call.

```csharp
public IReadOnlyList<string> CallableAgentNames { get; init; }
```

#### Property Value

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

Names only: the catalog lists who calls whom, and the call graph is built from the names. The version
a call is pinned to is read from the definition ([AgentDefinition.CallableAgents](/api/tracon.agentdefinition/#Tracon_AgentDefinition_CallableAgents)).
An agent registered in code with a *factory* carries no declarative
definition; the list is empty for such an agent. That means the graph can be
incomplete, which is why the static cycle check is not enough on its own.

### <a id="Tracon_AgentDescriptor_Description"></a> Description

Gets the short description.

```csharp
public string? Description { get; init; }
```

#### Property Value

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

Gets the name shown in the user interface.

```csharp
public string? DisplayName { get; init; }
```

#### Property Value

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

Gets the names of the agent extensions this agent is compiled with, in call order.

```csharp
public IReadOnlyList<string> ExtensionNames { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

### <a id="Tracon_AgentDescriptor_Model"></a> Model

Gets the bound model. It can be unknown for code agents.

```csharp
public ModelBinding? Model { get; init; }
```

#### Property Value

 [ModelBinding](/api/tracon.modelbinding/)?

### <a id="Tracon_AgentDescriptor_Name"></a> Name

Gets the unique name of the agent.

```csharp
public required string Name { get; init; }
```

#### Property Value

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

Gets the origin of the definition.

```csharp
public required AgentDefinitionOrigin Origin { get; init; }
```

#### Property Value

 [AgentDefinitionOrigin](/api/tracon.agentdefinitionorigin/)

### <a id="Tracon_AgentDescriptor_SkillNames"></a> SkillNames

Gets the names of the skills this agent may load at run time.

```csharp
public IReadOnlyList<string> SkillNames { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

### <a id="Tracon_AgentDescriptor_Skills"></a> Skills

Gets how this agent uses its skills. The external-surface check reads it: an agent whose
skill read approval is on cannot be exposed over A2A or MCP.

```csharp
public SkillSettings? Skills { get; init; }
```

#### Property Value

 [SkillSettings](/api/tracon.skillsettings/)?

### <a id="Tracon_AgentDescriptor_SourceName"></a> SourceName

Gets the name of the source that supplies this agent, for example `code`
or `database`. Several sources can share the same [AgentDescriptor.Origin](/api/tracon.agentdescriptor/#Tracon_AgentDescriptor_Origin) value.

```csharp
public required string SourceName { get; init; }
```

#### Property Value

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

Gets the names of the tools this agent may use.

```csharp
public IReadOnlyList<string> ToolNames { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

### <a id="Tracon_AgentDescriptor_UpdatedAt"></a> UpdatedAt

Gets the time of the last change (UTC).

```csharp
public DateTimeOffset? UpdatedAt { get; init; }
```

#### Property Value

 [DateTimeOffset](https://learn.microsoft.com/dotnet/api/system.datetimeoffset)?

### <a id="Tracon_AgentDescriptor_UsesHarness"></a> UsesHarness

Gets whether the harness capabilities are enabled.

```csharp
public bool UsesHarness { get; init; }
```

#### Property Value

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_AgentDescriptor_Version"></a> Version

Gets the definition version. It is always 1 for code agents.

```csharp
public int Version { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_AgentDescriptor_Workspace"></a> Workspace

Gets the session workspace settings. The external-surface check reads them: an agent whose
workspace can change a file, or asks for approval to read one, cannot be exposed over A2A or MCP.

```csharp
public WorkspaceSettings? Workspace { get; init; }
```

#### Property Value

 [WorkspaceSettings](/api/tracon.workspacesettings/)?

## Methods

### <a id="Tracon_AgentDescriptor_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_AgentDescriptor_Equals_Tracon_AgentDescriptor_"></a> Equals\(AgentDescriptor?\)

```csharp
public bool Equals(AgentDescriptor? other)
```

#### Parameters

`other` [AgentDescriptor](/api/tracon.agentdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_AgentDescriptor_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_AgentDescriptor_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

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

### <a id="Tracon_AgentDescriptor_op_Equality_Tracon_AgentDescriptor_Tracon_AgentDescriptor_"></a> operator ==\(AgentDescriptor?, AgentDescriptor?\)

```csharp
public static bool operator ==(AgentDescriptor? left, AgentDescriptor? right)
```

#### Parameters

`left` [AgentDescriptor](/api/tracon.agentdescriptor/)?

`right` [AgentDescriptor](/api/tracon.agentdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_AgentDescriptor_op_Inequality_Tracon_AgentDescriptor_Tracon_AgentDescriptor_"></a> operator \!=\(AgentDescriptor?, AgentDescriptor?\)

```csharp
public static bool operator !=(AgentDescriptor? left, AgentDescriptor? right)
```

#### Parameters

`left` [AgentDescriptor](/api/tracon.agentdescriptor/)?

`right` [AgentDescriptor](/api/tracon.agentdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
