Public/Get-AzAIAgent.ps1

function Get-AzAIAgent {
    <#
    .SYNOPSIS
        Lists available agents from the connected Foundry project or AI Workbench instance.

    .EXAMPLE
        Get-AzAIAgent

    .EXAMPLE
        Get-AzAIAgent -Name "MyAgent"

    .EXAMPLE
        Get-AzAIAgent | Format-Table Name, Mode, Description
    #>

    [CmdletBinding()]
    param(
        [string]$Name
    )

    $conn = $script:Connection
    if (-not $conn) {
        throw 'Not connected. Run Connect-AzAIFoundry first.'
    }

    if ($conn.Mode -eq 'Workbench') {
        $path = if ($Name) { "/api/manifests/$Name" } else { '/api/manifests' }
        $result = Send-FoundryRequest -Method GET -Path $path

        if ($Name) {
            return [PSCustomObject]@{
                PSTypeName    = 'AzAIAgent'
                Name          = $result.name
                Id            = $result.id
                Description   = $result.description
                Mode          = $result.executionMode
                Tools         = $result.tools
                Model         = $result.model
                ApprovalPolicy = $result.approvalPolicy
            }
        }

        $manifests = $result.manifests ?? $result
        if ($manifests -is [array]) {
            return $manifests | ForEach-Object {
                $ident = $_.identity
                $rt = $_.runtime
                [PSCustomObject]@{
                    PSTypeName     = 'AzAIAgent'
                    Name           = $ident.name
                    Id             = $ident.id
                    Description    = ($ident.description -replace '\s+', ' ').Trim().Substring(0, [Math]::Min(80, ($ident.description -replace '\s+', ' ').Trim().Length))
                    Mode           = $rt.executionMode
                    ApprovalPolicy = $rt.approvalPolicy
                    Tools          = ($_.tools | ForEach-Object { $_.name }) -join ', '
                    Model          = $rt.defaultModel
                }
            }
        }
    }
    else {
        # Foundry Direct — list agents via Agents API
        $result = Send-FoundryRequest -Method GET -Path '/agents'

        $agents = $result.value ?? $result.data ?? $result
        $filtered = if ($Name) {
            $agents | Where-Object { $_.name -eq $Name -or $_.id -eq $Name }
        } else { $agents }

        return $filtered | ForEach-Object {
            [PSCustomObject]@{
                PSTypeName  = 'AzAIAgent'
                Name        = $_.name
                Id          = $_.id
                Description = $_.description
                Mode        = 'agent_reference'
                Model       = $_.model
            }
        }
    }
}