> ## Documentation Index
> Fetch the complete documentation index at: https://developer.watson-orchestrate.ibm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Partners

The new [IBM watsonx Orchestrate Agent Connect <Icon icon="arrow-up-right-from-square" iconType="solid" />](https://connect.watson-orchestrate.ibm.com/introduction) experience requires a new format of packages to send for approval. To create the agent package, you must use the ADK's `offering` command.

## Before you begin

* Determine the type of agent that you currently have or that you want to create:
  * **External agent**: is an agent that was developed with other frameworks or technologies.
  * **Native agent**: is an agent that was developed with the ADK or within the watsonx Orchestrate platform.
* Both types of agents must be packaged.

## Creating your folder structure

<Steps>
  <Step title="Create a folder">
    First, create a folder to store your agent package information, and enter the folder:

    ```bash theme={null}
    mkdir offering
    cd offering/
    ```
  </Step>

  <Step title="Create your offering scaffold">
    From this folder, run the following command:

    ```bash theme={null}
    orchestrate partners offering create --offering my-offering --publisher my-publisher-name --type native|external --agent-name my-agent
    ```

    <Expandable tile="Flags">
      <ParamField path="--offering (-o)" type="string" required>
        Name of the offering
      </ParamField>

      <ParamField path="--publisher (-p)" type="string" required>
        Name of the publisher
      </ParamField>

      <ParamField path="--type (-t)" type="string" required>
        Type of agent: native or external.
      </ParamField>

      <ParamField path="--agent-name (-a)" type="string">
        Name of the agent to create.
      </ParamField>
    </Expandable>

    It creates the following folder structure:

    ```none theme={null}
    .
    ├── agents/
    │   └── my_agent.yaml
    ├── connections/
    │   └── my_connections.yaml
    ├── offerings/
    │   └── my_offering.yaml
    ├── tools/
    │   └── sample_tool/
    │       ├── tool.py
    │       └── requirements.txt
    └── evaluations/
    ```
  </Step>

  <Step title="Add or create your agent">
    In your `agents/my_agent.yaml` file, you can add an existing `agent.yaml` definition file, if you already have an agent, or create a new agent based on that.

    To learn how to work with the agent definition files, see [Authoring agents](../agents/build_agent).

    If you have an existing `agent.yaml`, you must also include the following tags:

    ```yaml theme={null}
    tags: []
    publisher: '' # enter your publisher name
    language_support": ["English"]
    icon: 'svg-icon' # enter an inline svg icon here
    category: "agent"
    ```
  </Step>

  <Step title="Validate your agent">
    Run the agent validation routine. To learn more, see [Validating your agent <Icon icon="arrow-up-right-from-square" iconType="solid" />](https://connect.watson-orchestrate.ibm.com/evaluate/evaluate).

    Your must put the validation results under the `evaluations/` folder, for example:

    ```
    .
    ├── agents/
    │   └── my_agent.yaml
    ├── connections/
    │   └── my_connections.yaml
    ├── offerings/
    │   └── my_offering.yaml
    ├── tools/
    │   └── sample_tool/
    │       ├── tool.py
    │       └── requirements.txt
    └── evaluations/
        └── company-name-onboarding-validation.zip
    ```
  </Step>
</Steps>

The file in `offerings/my_offering.yaml` follows this template:

```yaml my_offering.yaml [expandable] theme={null}
name: my_agent
display_name: My agent display name
domain: HR
publisher: publisher_name
version: '1.0'
description: ''
assets:
  my-publisher-name:
    agents: [my_agent]
    tools: []
part_number:
  aws: my-part-number
  ibm_cloud: my-part-number
scope:
  form_factor:
    aws: free
    ibm_cloud: free
    cp4d: free
  tenant_type:
    trial: free
```

If you already have an agent definition file, update it by following the template that was created, and import it again in your environment. For more information about how to add agents in your environment, see [Importing/deploying agents](../agents/import_agent#importing-agents-using-an-agent-file).

## Packaging your offering

From inside the folder that you created, run the following command:

```bash theme={null}
orchestrate partners offering package --offering my_offering --folder .
```

<Expandable tile="Flags">
  <ParamField path="--offering (-o)" type="string" required>
    Name of the offering
  </ParamField>

  <ParamField path="--folder (-f)" type="string" required>
    Path to the folder containing the specified offering.
  </ParamField>
</Expandable>

This command:

1. Creates a new zip file called `my_offering-1.0.zip` (the name matches the name of the offering that you previously defined).
2. Copies the `offerings/my_offering.yaml` file into the zip file as `/publisher_name/offerings/my_offering/config.json`
3. For each agent under `.assets[my-offering].agents` in the offerings file:
   * Validates if an agent with that name exists in the agents folder.
   * Validates if the agent matches the agent specification (for both **native** or **external** agents).
4. Copies the agents from the agents folder into the zip as `/publisher_name/offerings/my_offering/config.json`.
5. For each tool under `.assets[my-offering].tools`:
   * Validates if a tool with that tool-name exists in the `tools/tool_name` folder.
   * Validates if the tool is a valid python tool
6. Exports the tool specifications to `/publisher/tools/tool_name/config.json`.
7. Exports the tool `artifact.zip` from `tools/tool_name` to `/publisher_name/tools/tool_name/artifacts/tool_name.zip`. The `requirements.txt` for a tool can be assumed to be the origin folder.

Use this package to upload to the [Partner Center <Icon icon="arrow-up-right-from-square" iconType="solid" />](https://connect.watson-orchestrate.ibm.com/agent-connect/get-started).
