> ## Documentation Index
> Fetch the complete documentation index at: https://docs.auxilian.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Data types

> The seven column types Auxilian supports, what each accepts as input, and how values come back.

Auxilian columns use seven Postgres types. The same rules apply to the web app and the MCP tools.

## Summary

| Type | Postgres type | Accepts | Returns |
| - | - | - | - |
| `text` | `text` | String, number, or boolean (stored as text) | String |
| `integer` | `integer` (32-bit) | Whole number, or a string of digits | Number |
| `numeric` | `numeric` | Finite number, or a numeric string | String |
| `boolean` | `boolean` | `true`, `false`, `"true"`, `"false"` | Boolean |
| `timestamptz` | `timestamp with time zone` | Date and time string | ISO 8601 string in UTC |
| `uuid` | `uuid` | UUID string | String |
| `jsonb` | `jsonb` | Any JSON value | The JSON value |

`null` stores `NULL` in any nullable column.

## text

Any string. Numbers and booleans are converted to their text form, so `42` stores `"42"`. Objects and arrays are rejected. Use `jsonb` for structured values.

## integer

Whole numbers from -2,147,483,648 to 2,147,483,647. Accepts a JSON integer such as `42`, or a string of digits such as `"42"` or `"-7"`. Decimals such as `4.5` are rejected. Values outside the range fail with an `Invalid value` error.

For larger whole numbers, use `numeric`.

## numeric

Exact decimal numbers with no fixed precision, suited to money and measurements. Accepts a finite JSON number such as `1499.99` or a numeric string such as `"1499.99"`.

Results return `numeric` values as strings, such as `"1499.99"`, so no precision is lost in JSON. Convert them when you do arithmetic.

## boolean

`true` or `false`. The strings `"true"` and `"false"` are also accepted. Other values, including `1`, `0`, `"yes"`, and `"no"`, are rejected.

## timestamptz

A point in time. Send an ISO 8601 string with a time zone:

```json theme={null}
{ "due_at": "2026-11-03T09:00:00Z" }
```

```json theme={null}
{ "due_at": "2026-11-03T10:00:00+01:00" }
```

Postgres also accepts other common formats, such as `2026-11-03` (midnight UTC). Results always return ISO 8601 in UTC with milliseconds, such as `"2026-11-03T09:00:00.000Z"`.

A `timestamptz` column can default to `now()`, the time of the insert.

## uuid

A UUID string such as `"0b7c1f7e-6f0e-4d3a-9a51-2f7c3d1b8e44"`. Use `uuid` columns for foreign keys, since every table's `id` is a UUID. See [Foreign keys](/reference/foreign-keys).

A `uuid` column can default to `gen_random_uuid()`, a new random UUID for each row.

## jsonb

Any JSON value: an object, array, string, number, boolean, or `null`.

```json theme={null}
{ "details": { "tags": ["fiction", "fantasy"], "pages": 272 } }
```

In the web app, type `jsonb` values as JSON text, such as `{"tags": ["fiction"]}`. Filters can't reach inside `jsonb` values. Use `like` or `ilike` on the JSON text, or store values you filter on in their own columns.

## Size limits

| Limit | Value |
| - | - |
| One value | 16 KB, measured as UTF-8 bytes of the value as sent |
| One row | 64 KB, as stored by Postgres |

## Defaults

Only two defaults exist, and each requires a matching type:

| Default | Type |
| - | - |
| `now()` | `timestamptz` |
| `gen_random_uuid()` | `uuid` |

Defaults can be set through MCP tools. The web app's table forms don't set defaults.

## Changing a column's type

Types can't be changed in place. Add a column with the new type, copy the values, then drop the old column.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.