# AgentDefinition

> 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/http-api/schemas/agentdefinition/
> Summary: OpenAPI request or response schema for AgentDefinition, including required fields, defaults, constraints, and linked nested types.

[← All HTTP schemas](/http-api/schemas/)

The full definition of an agent. The same type is used whether the agent is
declared in code or stored in the database; AgentDefinitionOrigin AgentDefinition.Origin tells the two apart.

**Shape:** `object`

| Property | Required | Type | Description | Rules |
|---|---|---|---|---|
| `name` | yes | `string` | Gets the unique name of the agent, used as the key in the catalog and in API routes. | — |
| `displayName` | no | `string` | Gets the name shown in the user interface. `Name` is used when it is empty. | — |
| `description` | no | `string` | Gets a short description of what the agent does. | — |
| `instructions` | no | `string` | Gets the system instructions passed to the model. | — |
| `instructionsByCulture` | no | `object` | Gets culture-keyed instructions. The key is a BCP-47 tag (`"en"`, `"tr"`); a region subtag (`"tr-TR"`) falls back to its parent (`"tr"`). A run's requested culture that matches neither falls back to `Instructions` - resolution never fails. | — |
| `model` | yes | [`ModelBinding`](/http-api/schemas/modelbinding/) | Gets the provider and model binding to use. | — |
| `toolNames` | no | array of `string` | Gets the names of the tools this agent may use. Every name must match a tool registered in code; otherwise building the agent fails. | — |
| `skillNames` | no | array of `string` | Gets the names of the skills this agent may load at run time. Every name must match an enabled skill found in code or in the skill store. | — |
| `skills` | no | `null` oneOf [`SkillSettings`](/http-api/schemas/skillsettings/) | — | — |
| `extensionNames` | no | array of `string` | Gets the names of the agent extensions this agent is compiled with, in call order. Every name must match an extension registered in code with `AddAgentExtension`; otherwise building the agent fails. | — |
| `callableAgents` | no | array of [`CallableAgentReference`](/http-api/schemas/callableagentreference/) | Gets the other agents this agent may call, each with the version of it that runs. | — |
| `subAgents` | no | `null` oneOf [`SubAgentSettings`](/http-api/schemas/subagentsettings/) | — | — |
| `mcpResourceUris` | no | array of `string` | Gets the MCP resources added to the run context (mode A). Each item has the form `"{server}:{uri}"`. They are read at the start of the run and are predictable; every run receives the same resources. | — |
| `harness` | no | `null` oneOf [`HarnessSettings`](/http-api/schemas/harnesssettings/) | — | — |
| `compaction` | no | `null` oneOf [`CompactionSettings`](/http-api/schemas/compactionsettings/) | — | — |
| `memory` | no | `null` oneOf [`MemorySettings`](/http-api/schemas/memorysettings/) | — | — |
| `workspace` | no | `null` oneOf [`WorkspaceSettings`](/http-api/schemas/workspacesettings/) | — | — |
| `origin` | no | [`AgentDefinitionOrigin`](/http-api/schemas/agentdefinitionorigin/) | Gets the origin of the definition: code or database. | — |
| `version` | no | `integer (int32)` | Gets the definition version. Every save increments it, and the store owns the number: the value on an incoming definition is ignored. | pattern `^-?(?:0\\|[1-9]\d*)$` |
| `tenantId` | no | `string` | Gets the tenant this definition belongs to. A single-tenant setup uses the default value. | — |
| `updatedAt` | no | `string (date-time)` | Gets the time the definition last changed (UTC). | — |
| `metadata` | no | `object` | Gets free-form, application-specific metadata. | — |
| `parameters` | no | array of [`AgentParameter`](/http-api/schemas/agentparameter/) | Gets the schema of named placeholders (`{{name}}`) this definition's instructions may reference. | — |
| `sharedInstructionsName` | no | `string` | Gets the name of another definition whose `Instructions` text is prepended to this definition's own resolved instructions at compile time. | — |
