> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ovalbee.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ovalbee.com/_mcp/server.

# Set asset tag

> Write one image-level tag onto every asset of a dataset. Asset tags are what Evaluate object detection splits its report by, what Filter images matches on, and what Embedding Map groups by - but nothing outside the Supervisely integration writes them.

## Overview

Writes one key/value tag onto every asset in a dataset. Asset tags are read all over the platform but, outside the Supervisely integration, nothing writes them — this node fills that gap so a tag can be produced inside an ordinary OvalBee flow.

Three nodes consume what it writes:

* [Evaluate object detection](/node-library/nodes/evaluate-evaluate-object-detection) splits its report into a section per tag value, so one evaluation shows the metrics of each slice side by side.
* [Filter images](/node-library/nodes/filter-filter-images) matches images on a tag.
* Embedding Map clusters inside each tag value and reports the rare subtypes of each group.

The usual shape is marking where data came from — an evaluation set built up from several deliveries, tagged by delivery, so a later report says which batch the model does worst on.

```mermaid
flowchart LR
  n1["Random sample"] --> n2["Set asset tag"] --> n3["Copy"] --> n4["Predict DEIM"] --> n5["Evaluate object detection"]
```

## How it works

Lists every asset of the dataset and skips the ones already carrying this exact key and value, so a re-run costs almost nothing.

Merges the tag into each remaining asset's existing tags and writes it back, one asset at a time.

Returns the same dataset, so the next step can chain off this one.

## Inputs

**`Dataset`** `dataset` — required

Dataset whose assets are tagged. Key: `DATASET`.

---

**`Tag name`** `string` — required

Tag key, for example test_batch. An existing value under this key is overwritten. Key: `TAG_NAME`.

---

**`Tag value`** `string` — required

Value written under the tag name, for example core or batch-1. Key: `TAG_VALUE`.

---

## Outputs

**`Dataset`** `dataset`

The same dataset, so later steps can chain off this one. Key: `DATASET`.

---

**`Tagged assets`** `string`

How many assets were written on this run. Assets that already carried the value are skipped. Shown on the node as a badge. Key: `TAGGED_ASSETS`.

---

## JSON config

Machine-readable node interface for automation and advanced usage.

#### Show JSON

```json
{
  "name": "Set asset tag",
  "description": "Write one image-level tag onto every asset of a dataset. Asset tags are what Evaluate object detection splits its report by, what Filter images matches on, and what Embedding Map groups by - but nothing outside the Supervisely integration writes them.",
  "category": "Assets",
  "namespace": "ovalbee",
  "templateKey": "asset_ops/set_asset_tag",
  "version": "v1",
  "inputs": [
    {
      "key": "DATASET",
      "label": "Dataset",
      "type": "dataset",
      "description": "Dataset whose assets are tagged.",
      "required": true,
      "default": null,
      "visibleWhen": null
    },
    {
      "key": "TAG_NAME",
      "label": "Tag name",
      "type": "string",
      "description": "Tag key, for example test_batch. An existing value under this key is overwritten.",
      "required": true,
      "default": null,
      "visibleWhen": null
    },
    {
      "key": "TAG_VALUE",
      "label": "Tag value",
      "type": "string",
      "description": "Value written under the tag name, for example core or batch-1.",
      "required": true,
      "default": null,
      "visibleWhen": null
    }
  ],
  "outputs": [
    {
      "key": "DATASET",
      "label": "Dataset",
      "type": "dataset",
      "description": "The same dataset, so later steps can chain off this one.",
      "artifact": false,
      "badge": false,
      "badgeOpens": null,
      "hidden": false
    },
    {
      "key": "TAGGED_ASSETS",
      "label": "Tagged assets",
      "type": "string",
      "description": "How many assets were written on this run. Assets that already carried the value are skipped.",
      "artifact": false,
      "badge": true,
      "badgeOpens": null,
      "hidden": false
    }
  ]
}
```