# ONS dataset observations

Values from an ONS dataset version. Needs dataset, version, dimension 1 and more.

Values from an ONS dataset version. Every dimension of the version must be given one code, and at most one dimension may be '*' to get a series (for example time='*' for every period): set dimension_count to the number of dimensions, then dimension_1/value_1, dimension_2/value_2... Names come from ons/dataset-version and codes from ons/dimension-options; a missing or unknown dimension returns a 400 naming it. Observations come unsorted (about 260 characters each; a full monthly series of 20 years is about 65,000 characters).

- Tool ID: `ons/observations`
- Provider: [ONS](/providers/ons.md)
- Capability: [Knowledge & research](/tools/knowledge.md)
- Price: no charge per call
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

No charge per call. A workspace is still needed so your agent can call it.


```json
{
  "model": "per_call",
  "amountUsd": 0
}
```

### Action-specific pricing


```json
[
  {
    "field": "dimension_count",
    "equals": "2",
    "pricing": {
      "model": "per_call",
      "amountUsd": 0
    }
  },
  {
    "field": "dimension_count",
    "equals": "4",
    "pricing": {
      "model": "per_call",
      "amountUsd": 0
    }
  },
  {
    "field": "dimension_count",
    "equals": "5",
    "pricing": {
      "model": "per_call",
      "amountUsd": 0
    }
  },
  {
    "field": "dimension_count",
    "equals": "6",
    "pricing": {
      "model": "per_call",
      "amountUsd": 0
    }
  }
]
```

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]{1,60}$",
      "description": "ONS dataset id from ons/datasets, e.g. 'cpih01'"
    },
    "edition": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,40}$",
      "default": "time-series",
      "description": "Dataset edition, e.g. 'time-series' (most datasets) or '2021'"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "Version number, from links.latest_version.id in ons/datasets, e.g. 67"
    },
    "dimension_count": {
      "type": "string",
      "enum": [
        "2",
        "3",
        "4",
        "5",
        "6"
      ],
      "default": "3",
      "description": "Number of dimensions of the version (all must be filtered), e.g. '3'"
    },
    "dimension_1": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 1, e.g. 'time'"
    },
    "value_1": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_1, or '*' for one dimension only, e.g. '*'"
    },
    "dimension_2": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 2, e.g. 'geography'"
    },
    "value_2": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_2, or '*' for one dimension only, e.g. 'K02000001'"
    },
    "dimension_3": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 3, e.g. 'aggregate'"
    },
    "value_3": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_3, or '*' for one dimension only, e.g. 'CP00'"
    },
    "dimension_4": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 4, e.g. 'sex'"
    },
    "value_4": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_4, or '*' for one dimension only, e.g. '0'"
    },
    "dimension_5": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 5, e.g. 'agegroups'"
    },
    "value_5": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_5, or '*' for one dimension only, e.g. '16-64'"
    },
    "dimension_6": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,60}$",
      "description": "Name of dimension 6, e.g. 'seasonaladjustment'"
    },
    "value_6": {
      "type": "string",
      "pattern": "^([A-Za-z0-9][A-Za-z0-9._-]{0,60}|\\*)$",
      "description": "Code for dimension_6, or '*' for one dimension only, e.g. 'seasonal-adjustment'"
    }
  },
  "required": [
    "dataset",
    "version",
    "dimension_1",
    "value_1",
    "dimension_2",
    "value_2"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "if": {
        "properties": {
          "dimension_count": {
            "const": "2"
          }
        },
        "required": [
          "dimension_count"
        ]
      },
      "then": {
        "required": [
          "dimension_1",
          "value_1",
          "dimension_2",
          "value_2"
        ],
        "properties": {
          "dimension_3": false,
          "value_3": false,
          "dimension_4": false,
          "value_4": false,
          "dimension_5": false,
          "value_5": false,
          "dimension_6": false,
          "value_6": false
        }
      }
    },
    {
      "if": {
        "properties": {
          "dimension_count": {
            "const": "3"
          }
        },
        "required": [
          "dimension_count"
        ]
      },
      "then": {
        "required": [
          "dimension_1",
          "value_1",
          "dimension_2",
          "value_2",
          "dimension_3",
          "value_3"
        ],
        "properties": {
          "dimension_4": false,
          "value_4": false,
          "dimension_5": false,
          "value_5": false,
          "dimension_6": false,
          "value_6": false
        }
      }
    },
    {
      "if": {
        "properties": {
          "dimension_count": {
            "const": "4"
          }
        },
        "required": [
          "dimension_count"
        ]
      },
      "then": {
        "required": [
          "dimension_1",
          "value_1",
          "dimension_2",
          "value_2",
          "dimension_3",
          "value_3",
          "dimension_4",
          "value_4"
        ],
        "properties": {
          "dimension_5": false,
          "value_5": false,
          "dimension_6": false,
          "value_6": false
        }
      }
    },
    {
      "if": {
        "properties": {
          "dimension_count": {
            "const": "5"
          }
        },
        "required": [
          "dimension_count"
        ]
      },
      "then": {
        "required": [
          "dimension_1",
          "value_1",
          "dimension_2",
          "value_2",
          "dimension_3",
          "value_3",
          "dimension_4",
          "value_4",
          "dimension_5",
          "value_5"
        ],
        "properties": {
          "dimension_6": false,
          "value_6": false
        }
      }
    },
    {
      "if": {
        "properties": {
          "dimension_count": {
            "const": "6"
          }
        },
        "required": [
          "dimension_count"
        ]
      },
      "then": {
        "required": [
          "dimension_1",
          "value_1",
          "dimension_2",
          "value_2",
          "dimension_3",
          "value_3",
          "dimension_4",
          "value_4",
          "dimension_5",
          "value_5",
          "dimension_6",
          "value_6"
        ],
        "properties": {}
      }
    }
  ]
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "ons/observations",
  "input": {
    "dataset": "cpih01",
    "edition": "time-series",
    "version": 67,
    "dimension_count": "3",
    "dimension_1": "time",
    "value_1": "*",
    "dimension_2": "geography",
    "value_2": "K02000001",
    "dimension_3": "aggregate",
    "value_3": "CP00"
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

Licence: Open Government Licence v3.0.

Attribution: Source: Office for National Statistics licensed under the Open Government Licence v3.0.

[Provider documentation](https://developer.ons.gov.uk/observations/)

[REST inspection](https://api.agentik.cc/v1/tools/ons/observations) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/ons/observations) · [Agent index](/llms.txt)
