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.