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

# Schema reference

> Describe installation configuration with versioned, typed fields.

Return a `schema.Schema` from `get_schema()` to let Niblet clients render the configuration experience.

| Field           | Typical value                                          |
| --------------- | ------------------------------------------------------ |
| `Text`          | Short user-entered string                              |
| `Toggle`        | Boolean choice                                         |
| `Dropdown`      | One option from a fixed set                            |
| `Color`         | Hex color                                              |
| `DateTime`      | User-selected date and time                            |
| `Location`      | Typed place and timezone information                   |
| `LocationBased` | Options derived from a selected location               |
| `Typeahead`     | Search-backed option                                   |
| `Generated`     | Options returned by an app handler                     |
| `PhotoSelect`   | Exact-size image input                                 |
| `OAuth2`        | Provider authorization managed outside ordinary config |

Every field needs a stable `id`, clear name, concise description, and a safe default when the type supports one. IDs become stored configuration keys; do not repurpose an existing ID for a different meaning.

## Dynamic fields

Generated, typeahead, and location-backed fields call only the handler declared for that field. The client sends field-scoped input rather than executing arbitrary app code.

## Protected values

Credentials and OAuth grants are stored separately, omitted from ordinary read responses, and exposed only to the approved hosted render boundary. MCP cannot read or write those values.
