# Open Agent Spend Attribution (OASA) Specification

Version 0.1.3 · Published 2026-09-14 · Revised 2026-10-22 · [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)

The specification is published at [oasaspec.org](https://oasaspec.org). That site is the authoritative copy: the current specification, the JSON schemas, the best-practices guide, the FOCUS mapping, and earlier versions. This page is a short introduction to version 0.1.3.

## What OASA is

OASA is an open record format for [agent spend attribution](https://www.onaro.io/glossary/agent-spend-attribution). It names the agent, the task, and the cost object, and it joins runtime telemetry, normalized billing, and payment settlement into one auditable ledger — a [system of record](https://www.onaro.io/glossary/system-of-record-for-ai-labor) for agent spend.

It is written to sit with [OpenTelemetry](https://opentelemetry.io/docs/specs/semconv/gen-ai/) GenAI conventions and the [FOCUS](https://focus.finops.org/) billing specification. The record format is licensed [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

OASA is the record format behind [FinOps for agentic AI](https://www.onaro.io/finops-for-agentic-ai).

## Why Onaro published it

OpenTelemetry already describes what an agent did. FOCUS already describes what a provider charged. The record that names who the spend belongs to was missing. Onaro published OASA so that record is defined in the open, under CC BY 4.0, and anyone can implement it.

The case for the record is [The Missing Ledger](https://www.onaro.io/missing-ledger).

## What version 0.1.3 adds

Version 0.1.3 records where four values came from: the agent, the owner, the cost center, and the project. When a producer sets one of them, it can say how that value was chosen, which system minted the native identity, and what that identity was. schema_version stays "0.1". Records that omit provenance stay valid.

A producer tries sources in this order: declared, manual, mapped, inherited, then rule. If none of the four values is set, the record can give one reason: no_identity, identity_not_mapped, tag_missing, seat_without_owner, not_on_bill, or mapping_conflict. The order and the reasons are in [Resolution order](https://oasaspec.org/spec/#resolution-order) and [Unattributed reasons](https://oasaspec.org/spec/#unattributed-reasons).

A mapping record binds one native identifier, such as a project or an API key, to those fields for a span of time. mapped is recorded only when a mapping record supplied the value. On a bill, the tag keys oasa_cost_center, oasa_agent, oasa_owner, and oasa_project are a declared value. See [Mapping records](https://oasaspec.org/spec/#mapping-records) and [Tagging convention](https://oasaspec.org/spec/#tagging-convention).

On an OpenTelemetry span, agent_id comes from oasa.agent.id. gen_ai.agent.id, or else gen_ai.main_agent.id, is copied to external_identity_ref with identity_scheme set to other. oasa.cost_center, oasa.agent.owner, and oasa.project.id fill the matching fields, each declared. A record that followed the 0.1.2 row and stored gen_ai.agent.id in agent_id remains valid. See [OASA ↔ OpenTelemetry GenAI](https://oasaspec.org/spec/#oasa--opentelemetry-genai) and [Per-field provenance](https://oasaspec.org/spec/#per-field-provenance).

The rules, field tables, and examples are in the [specification](https://oasaspec.org/spec/#attribution). Version 0.1.3 is pinned at [oasaspec.org/spec/v0.1.3/](https://oasaspec.org/spec/v0.1.3/). The record schema is [oasa-record.schema.json](https://oasaspec.org/schema/0.1.3/oasa-record.schema.json). A short guide is [Attributing agent spend](https://oasaspec.org/guides/attribution-best-practices/). The [FOCUS mapping](https://oasaspec.org/focus-mapping/) joins these records to a FOCUS export. Earlier versions remain at [0.1.2](https://oasaspec.org/spec/v0.1.2/), [0.1.1](https://oasaspec.org/spec/v0.1.1/), and [0.1](https://oasaspec.org/spec/v0.1/). Source and issues: [github.com/onaro-io/agent-spend-attribution](https://github.com/onaro-io/agent-spend-attribution).

Canonical: https://www.onaro.io/spec
