Structured context

Meaning first. Views second.

Tables use JSON Schema 2020-12. The schema describes meaning; optional x-mynew metadata describes how humans should see it.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "price": {
      "type": "number",
      "x-mynew": { "format": "currency", "currency": "USD" }
    },
    "purchased": { "type": "boolean" },
    "status": {
      "type": "string",
      "enum": ["planned", "ordered", "received"]
    },
    "sources": {
      "type": "array",
      "items": { "type": "string", "format": "uri" }
    }
  },
  "required": ["name"],
  "x-mynew": {
    "display": "table",
    "primaryDisplayField": "name"
  }
}

Rich column types

The table builder supports text, numbers, integers, decimals, percentages, currencies, booleans, URLs, dates, date-times, and controlled select fields. Select fields use standard JSON Schema enum values, and every type can allow one or multiple values by using a typed JSON Schema array. Currency and percentage presentation use x-mynew metadata; the stored values remain portable JSON.

Safe schema updates

Updates never overwrite a schema. Tietoni validates the proposed schema, checks every existing row, reports incompatibilities, and only then activates a new immutable version. The same validation and update flow is available in the table UI and through the MCP schema.validate and schema.update tools.

Column order is stored in x-mynew.columnOrder. Reorder columns with the schema editor controls or update that array through MCP; the table view follows the saved order.

Deliberate limits

Remote references are rejected. Schema size, nesting, properties, enums, regular expressions, record size, and mutation batch sizes are capped.