---
title: Activity schema tab
description: View and manage the schema that validates an agent's spans.
editUrl: true
head: []
template: doc
sidebar:
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

Schema versions defined for the agent appear here, along with the definitions that describe the expected structure of its spans.

To define or update a schema, use the SDK — see [Schemas and result schemas](/sdks/concepts-schemas).

## Schema versions

A list of all schema versions for the agent. Each entry shows the schema identifier and when it was created. Each schema version also lists the environments where it is currently in use.

Selecting a schema version shows:

- **Schema version number** – the version identifier as shown on the agent page.
- **Deployed environments** – the environments using this schema version.
- **Created** – when this schema version was created.

## Span types

For the selected schema version, the page lists every span type the agent emits. Each span type has its own block with:

- The span type identifier and a human-readable title.
- A risk summary card.
- An optional **Template**.
- **Params data** and **Result data** sample payloads.
- An **Action profile**, when one is configured.
- The definitions for the span's payload and result, shown as structured rules, with a **Valid** or **Invalid** indicator and an error alert when validation fails.

Common patterns include `user_message` and `assistant_message` for conversation, plus one span type per tool you care to govern (for example `web_search` and `read_file`), each with definitions aligned to that tool.

In the SDK, span types map to the keys in `agentSchema.span_schemas` and `agentSchema.span_result_schemas`. The identifiers shown here (for example `user_message`, `web_search`) correspond directly to those keys.

## Payload and result definitions

Each span type has two definitions:

- **Payload** — describes and validates the input payload for that span.
- **Result** — describes and validates the output payload for that span.

Definitions are shown inline. Each is marked **Valid** or **Invalid**; **Invalid** entries display an error alert with the validation failure. **Invalid** here means a problem in the definition itself, not a runtime validation failure. Spans are recorded regardless.

Example permissive payload definition:

```json
{
  "additionalProperties": true,
  "type": "object"
}
```

Example stricter result definition:

```json
{
  "additionalProperties": false,
  "type": "object"
}
```

## Related

- [Activity schema](/platform/concepts/activity-schema) — what an activity schema is in Prefactor and how it fits with agents and spans.
- [Schemas and result schemas](/sdks/concepts-schemas) — how to define and register schemas from the SDK.
- [Agent page](/admin-ui/agent) — what stays fixed above the tabs and how they fit together; choose **Activity schema** there.