# Portfolio Profile Examples

## Customer Service Agent[​](#customer-service-agent "Direct link to Customer Service Agent")

A tier-1 support agent with defined relationships to peer agents, dependencies, and an orchestrator within the customer service domain.

* YAML
* JSON

customer-service-agent.adl.yaml

```
$schema: https://adl-spec.org/profiles/portfolio/1.0/schema.json

adl_spec: 0.3.0

name: Customer Service Agent

description: Handles tier-1 customer inquiries and support requests via chat and email channels.

version: 1.2.0

profiles:

  - urn:adl:profile:portfolio:1.0

data_classification:

  sensitivity: internal

  categories:

    - pii

provider:

  name: Acme Support

  url: https://support.acme.example

  contact: support-engineering@acme.example

model:

  capabilities:

    - function_calling

    - streaming

tools:

  - name: search_knowledge_base

    description: Search the knowledge base for relevant articles

    parameters:

      type: object

      properties:

        query:

          type: string

        limit:

          type: integer

          default: 5

      required:

        - query

    read_only: true

  - name: create_ticket

    description: Create a support ticket for escalation

    parameters:

      type: object

      properties:

        subject:

          type: string

        description:

          type: string

        priority:

          type: string

          enum:

            - low

            - medium

            - high

            - urgent

        customer_id:

          type: string

      required:

        - subject

        - description

        - customer_id

    requires_confirmation: true

  - name: get_customer_info

    description: Retrieve customer information

    parameters:

      type: object

      properties:

        customer_id:

          type: string

      required:

        - customer_id

    read_only: true

permissions:

  network:

    allowed_hosts:

      - api.acme.example

      - kb.acme.example

      - tickets.acme.example

    allowed_protocols:

      - https

    deny_private: true

security:

  authentication:

    type: oauth2

    required: true

    scopes:

      - customers:read

      - tickets:write

      - kb:read

  encryption:

    in_transit:

      required: true

      min_version: "1.2"

relationships:

  depends_on:

    - urn:adl:agent:acme:knowledge-base-agent:1.0

    - urn:adl:agent:acme:ticket-api-agent:2.0

    - urn:adl:agent:acme:customer-data-agent:1.5

  orchestrated_by: urn:adl:agent:acme:support-orchestrator:1.0

  peers:

    - urn:adl:agent:acme:billing-support-agent:1.0

    - urn:adl:agent:acme:technical-support-agent:1.0

    - urn:adl:agent:acme:returns-agent:1.0

domain:

  domain_id: urn:domain:customer-service

  subdomain: inquiries

  bounded_context: support-portal

  role: primary-handler

metadata:

  authors:

    - name: Support Engineering

      email: support-engineering@acme.example

  license: Proprietary

  documentation: https://docs.acme.example/agents/customer-service

  tags:

    - customer-service

    - support

    - production
```

customer-service-agent.adl.json

```
{

  "$schema": "https://adl-spec.org/profiles/portfolio/1.0/schema.json",

  "adl_spec": "0.3.0",

  "name": "Customer Service Agent",

  "description": "Handles tier-1 customer inquiries and support requests via chat and email channels.",

  "version": "1.2.0",

  "profiles": [

    "urn:adl:profile:portfolio:1.0"

  ],

  "data_classification": {

    "sensitivity": "internal",

    "categories": [

      "pii"

    ]

  },

  "provider": {

    "name": "Acme Support",

    "url": "https://support.acme.example",

    "contact": "support-engineering@acme.example"

  },

  "model": {

    "capabilities": [

      "function_calling",

      "streaming"

    ]

  },

  "tools": [

    {

      "name": "search_knowledge_base",

      "description": "Search the knowledge base for relevant articles",

      "parameters": {

        "type": "object",

        "properties": {

          "query": {

            "type": "string"

          },

          "limit": {

            "type": "integer",

            "default": 5

          }

        },

        "required": [

          "query"

        ]

      },

      "read_only": true

    },

    {

      "name": "create_ticket",

      "description": "Create a support ticket for escalation",

      "parameters": {

        "type": "object",

        "properties": {

          "subject": {

            "type": "string"

          },

          "description": {

            "type": "string"

          },

          "priority": {

            "type": "string",

            "enum": [

              "low",

              "medium",

              "high",

              "urgent"

            ]

          },

          "customer_id": {

            "type": "string"

          }

        },

        "required": [

          "subject",

          "description",

          "customer_id"

        ]

      },

      "requires_confirmation": true

    },

    {

      "name": "get_customer_info",

      "description": "Retrieve customer information",

      "parameters": {

        "type": "object",

        "properties": {

          "customer_id": {

            "type": "string"

          }

        },

        "required": [

          "customer_id"

        ]

      },

      "read_only": true

    }

  ],

  "permissions": {

    "network": {

      "allowed_hosts": [

        "api.acme.example",

        "kb.acme.example",

        "tickets.acme.example"

      ],

      "allowed_protocols": [

        "https"

      ],

      "deny_private": true

    }

  },

  "security": {

    "authentication": {

      "type": "oauth2",

      "required": true,

      "scopes": [

        "customers:read",

        "tickets:write",

        "kb:read"

      ]

    },

    "encryption": {

      "in_transit": {

        "required": true,

        "min_version": "1.2"

      }

    }

  },

  "relationships": {

    "depends_on": [

      "urn:adl:agent:acme:knowledge-base-agent:1.0",

      "urn:adl:agent:acme:ticket-api-agent:2.0",

      "urn:adl:agent:acme:customer-data-agent:1.5"

    ],

    "orchestrated_by": "urn:adl:agent:acme:support-orchestrator:1.0",

    "peers": [

      "urn:adl:agent:acme:billing-support-agent:1.0",

      "urn:adl:agent:acme:technical-support-agent:1.0",

      "urn:adl:agent:acme:returns-agent:1.0"

    ]

  },

  "domain": {

    "domain_id": "urn:domain:customer-service",

    "subdomain": "inquiries",

    "bounded_context": "support-portal",

    "role": "primary-handler"

  },

  "metadata": {

    "authors": [

      {

        "name": "Support Engineering",

        "email": "support-engineering@acme.example"

      }

    ],

    "license": "Proprietary",

    "documentation": "https://docs.acme.example/agents/customer-service",

    "tags": [

      "customer-service",

      "support",

      "production"

    ]

  }

}
```

### Key Portfolio Fields[​](#key-portfolio-fields "Direct link to Key Portfolio Fields")

| Field                           | Purpose                                        |
| ------------------------------- | ---------------------------------------------- |
| `relationships.depends_on`      | Agents this agent requires to function         |
| `relationships.orchestrated_by` | The orchestrator that coordinates this agent   |
| `relationships.peers`           | Sibling agents in the same domain              |
| `domain.domain_id`              | Domain membership identifier                   |
| `domain.bounded_context`        | The bounded context this agent operates within |
| `domain.role`                   | The agent's role within the domain             |

### Agent Topology[​](#agent-topology "Direct link to Agent Topology")

```
support-orchestrator (orchestrator)

├── customer-service-agent (this agent)

├── billing-support-agent (peer)

├── technical-support-agent (peer)

└── returns-agent (peer)
```

Dependencies: `knowledge-base-agent`, `ticket-api-agent`, `customer-data-agent`

## Composed with the Registry Profile[​](#composed-with-the-registry-profile "Direct link to Composed with the Registry Profile")

The Portfolio Profile composes with other profiles via `allOf`. This composite example declares both `urn:adl:profile:registry:1.0` and `urn:adl:profile:portfolio:1.0`, pairing catalog identity with the relationship and domain members above.

* YAML
* JSON

composite/registry-portfolio-agent.adl.yaml

```
$schema: https://adl-spec.org/profiles/portfolio/1.0/schema.json

adl_spec: 0.3.0

name: Customer Service Agent

description: Handles tier-1 customer inquiries and support requests via chat and email channels.

version: 1.2.0

profiles:

  - urn:adl:profile:registry:1.0

  - urn:adl:profile:portfolio:1.0

data_classification:

  sensitivity: internal

  categories:

    - pii

provider:

  name: Acme Support

  url: https://support.acme.example

  contact: support-engineering@acme.example

model:

  capabilities:

    - function_calling

    - streaming

tools:

  - name: search_knowledge_base

    description: Search the knowledge base for relevant articles

    parameters:

      type: object

      properties:

        query:

          type: string

        limit:

          type: integer

          default: 5

      required:

        - query

    read_only: true

  - name: create_ticket

    description: Create a support ticket for escalation

    parameters:

      type: object

      properties:

        subject:

          type: string

        description:

          type: string

        priority:

          type: string

          enum:

            - low

            - medium

            - high

            - urgent

        customer_id:

          type: string

      required:

        - subject

        - description

        - customer_id

    requires_confirmation: true

  - name: get_customer_info

    description: Retrieve customer information

    parameters:

      type: object

      properties:

        customer_id:

          type: string

      required:

        - customer_id

    read_only: true

permissions:

  network:

    allowed_hosts:

      - api.acme.example

      - kb.acme.example

      - tickets.acme.example

    allowed_protocols:

      - https

    deny_private: true

security:

  authentication:

    type: oauth2

    required: true

    scopes:

      - customers:read

      - tickets:write

      - kb:read

  encryption:

    in_transit:

      required: true

      min_version: "1.2"

registry:

  catalog_id: cs-agent-001

  catalog_classification:

    - domain: support

      subdomain: customer-service

      capability: conversational

  visibility: internal

relationships:

  depends_on:

    - urn:adl:agent:acme:knowledge-base-agent:1.0

    - urn:adl:agent:acme:ticket-api-agent:2.0

    - urn:adl:agent:acme:customer-data-agent:1.5

  orchestrated_by: urn:adl:agent:acme:support-orchestrator:1.0

  peers:

    - urn:adl:agent:acme:billing-support-agent:1.0

    - urn:adl:agent:acme:technical-support-agent:1.0

    - urn:adl:agent:acme:returns-agent:1.0

domain:

  domain_id: urn:domain:customer-service

  subdomain: inquiries

  bounded_context: support-portal

  role: primary-handler

metadata:

  authors:

    - name: Support Engineering

      email: support-engineering@acme.example

  license: Proprietary

  documentation: https://docs.acme.example/agents/customer-service

  tags:

    - customer-service

    - support

    - production
```

composite/registry-portfolio-agent.adl.json

```
{

  "$schema": "https://adl-spec.org/profiles/portfolio/1.0/schema.json",

  "adl_spec": "0.3.0",

  "name": "Customer Service Agent",

  "description": "Handles tier-1 customer inquiries and support requests via chat and email channels.",

  "version": "1.2.0",

  "profiles": [

    "urn:adl:profile:registry:1.0",

    "urn:adl:profile:portfolio:1.0"

  ],

  "data_classification": {

    "sensitivity": "internal",

    "categories": [

      "pii"

    ]

  },

  "provider": {

    "name": "Acme Support",

    "url": "https://support.acme.example",

    "contact": "support-engineering@acme.example"

  },

  "model": {

    "capabilities": [

      "function_calling",

      "streaming"

    ]

  },

  "tools": [

    {

      "name": "search_knowledge_base",

      "description": "Search the knowledge base for relevant articles",

      "parameters": {

        "type": "object",

        "properties": {

          "query": {

            "type": "string"

          },

          "limit": {

            "type": "integer",

            "default": 5

          }

        },

        "required": [

          "query"

        ]

      },

      "read_only": true

    },

    {

      "name": "create_ticket",

      "description": "Create a support ticket for escalation",

      "parameters": {

        "type": "object",

        "properties": {

          "subject": {

            "type": "string"

          },

          "description": {

            "type": "string"

          },

          "priority": {

            "type": "string",

            "enum": [

              "low",

              "medium",

              "high",

              "urgent"

            ]

          },

          "customer_id": {

            "type": "string"

          }

        },

        "required": [

          "subject",

          "description",

          "customer_id"

        ]

      },

      "requires_confirmation": true

    },

    {

      "name": "get_customer_info",

      "description": "Retrieve customer information",

      "parameters": {

        "type": "object",

        "properties": {

          "customer_id": {

            "type": "string"

          }

        },

        "required": [

          "customer_id"

        ]

      },

      "read_only": true

    }

  ],

  "permissions": {

    "network": {

      "allowed_hosts": [

        "api.acme.example",

        "kb.acme.example",

        "tickets.acme.example"

      ],

      "allowed_protocols": [

        "https"

      ],

      "deny_private": true

    }

  },

  "security": {

    "authentication": {

      "type": "oauth2",

      "required": true,

      "scopes": [

        "customers:read",

        "tickets:write",

        "kb:read"

      ]

    },

    "encryption": {

      "in_transit": {

        "required": true,

        "min_version": "1.2"

      }

    }

  },

  "registry": {

    "catalog_id": "cs-agent-001",

    "catalog_classification": [

      {

        "domain": "support",

        "subdomain": "customer-service",

        "capability": "conversational"

      }

    ],

    "visibility": "internal"

  },

  "relationships": {

    "depends_on": [

      "urn:adl:agent:acme:knowledge-base-agent:1.0",

      "urn:adl:agent:acme:ticket-api-agent:2.0",

      "urn:adl:agent:acme:customer-data-agent:1.5"

    ],

    "orchestrated_by": "urn:adl:agent:acme:support-orchestrator:1.0",

    "peers": [

      "urn:adl:agent:acme:billing-support-agent:1.0",

      "urn:adl:agent:acme:technical-support-agent:1.0",

      "urn:adl:agent:acme:returns-agent:1.0"

    ]

  },

  "domain": {

    "domain_id": "urn:domain:customer-service",

    "subdomain": "inquiries",

    "bounded_context": "support-portal",

    "role": "primary-handler"

  },

  "metadata": {

    "authors": [

      {

        "name": "Support Engineering",

        "email": "support-engineering@acme.example"

      }

    ],

    "license": "Proprietary",

    "documentation": "https://docs.acme.example/agents/customer-service",

    "tags": [

      "customer-service",

      "support",

      "production"

    ]

  }

}
```
