data_get_schema
Read a datastore's declared TYPED schema (the one data_set_schema posts). Returns {datastore, ns_id, schema, enforced, reglages} — schema is null when none is declared, which is a normal state, not an error. reglages gives the head setting AS APPLIED, default included: new_rows (create | reject — whether a write that designates no existing row may create one). unknown_columns was REMOVED on 2026-10-05 (columns and values are always checked); a stored leftover of it, or of strict, unknown_fields and key_required, is named in warning. ns_id is the table's NUMBER (e.g. 174) and datastore its canonical name, whatever form you addressed it by: pass the NUMBER as datastore from here on — a name still resolves until 2026-11-08, then it is refused. Read it BEFORE amending: data_set_schema posts the schema WHOLE, it does not merge, so adding one field means re-posting the existing definition plus that field. The work queue itself needs NOTHING declared: data_claim_next reserves rows on any table, with or without a schema. A lifecycle block only RESTRICTS it, on the column that carries the block: states/transitions/terminal — transitions maps each state to a LIST of reachable states, even for one ({"a": ["b"]}, never {"a": "b"}, which is refused) — plus max_claims + abandon_state — the ceiling of claims WITHOUT a write past which a row leaves the queue; labels ({state: "Displayed name"}) names each step for a screen and is never applied to a write. enforced lists the validation keys THIS deployment actually applies (required, max_length, pattern…): check what you are about to declare against it, rather than against documentation — a key posted but not enforced looks like a contract and is not one, and one enforced only after the next deploy freezes rows all at once, weeks after the cause. ⚠️ It says what BITES, not what is USEFUL: a key absent from enforced is not dead — presentation keys are read by whoever renders the table, and oto cannot know who reads what downstream. Never drop a key on the strength of its absence here. warning appears only when the stored schema still carries keys no level admits — posted before the vocabulary was closed (2026-10-01), typically a leftover enum beside the options that actually constrains the field. When it does, trust the key the warning names: the other is a residue, whatever it says. Writing a NEW unknown key, or changing one, is refused. tel_que says which reading this is. servi (default) is the schema as served to you: through this tool, columns the owner keeps from agents are left out, and colonnes_masquees counts them. stocke — owner or governor only — is the schema as stored, whole, plus gardes: per column, what the guards actually do HERE (verrouillees, masquees_a_l_agent, lecture_seule_agent) and sans_effet, what is declared and applied by nothing, with the reason. forme=compacte keeps only the keys that constrain, without prose or null keys — for inspection, never to post back.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"datastore": "<datastore>"
},
"name": "data_get_schema"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| _org | No | ||
| forme | No | `complete` (default): the schema as served, every key. `compacte`: only the keys that constrain — structure and validation (`type`, `options`, `required`, `lifecycle`…) — without `description`, `label`, `meta` or null keys. To INSPECT a schema only: NEVER post a compact schema back, `data_set_schema` would erase every description and label of the table. | complete |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| tel_que | No | `servi` (default): the schema as served to YOU — through this tool, columns the owner keeps from agents (`agent_access: "none"`) are left out. `stocke`: the schema as STORED, whole, with `gardes` — what each column guard actually does on this table. Reserved to whoever owns or governs the table (403 otherwise). | servi |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| datastore | Yes |