ADR-045: Schema and resolution tools
- Status
-
Accepted
- Date
-
2026-07-09
- Deciders
-
nr_llm maintainers
Context
The content and introspection tools (ADR-042) let an agent read records, TypoScript and TSconfig. Debugging schema and templating questions ("what does this table relate to?", "what fields does this FlexForm have?", "which Fluid file actually wins?") still required guesswork.
Two shapes were considered for schema access:
- Send the whole TCA and let the model reason. Rejected: the resolved TCA is several megabytes — it neither fits an LLM context window nor is affordable per call.
- Navigate: an index plus per-item detail. Chosen. The model lists table names cheaply, then pulls the full definition only for the tables it cares about. Validation-style "find the error" tools remain a separate, later concern; these tools are retrieval, chunked to stay within budget.
The tools are inspired by konradmichalik/ (the Fluid
resolve and TCA introspection ideas) and hn/
(Get / Get) — both GPL-2.0-or-later, like this
extension. They are independent re-implementations; no code is copied and
neither extension is a dependency.
Decision
Four read-only built-in tools:
get_(groupfull_ tca structure)- The TCA index: names + titles of every accessible table, each pointing
at
get_. This is the "navigate, don't dump" answer — the whole TCA is never serialised at once. Optionaltable_ schema filter/extension. get_(grouptable_ schema structure)- One table's readable schema: control highlights plus, per field, the type
and — for relations — the foreign table and relation kind
(group/select/inline/category). This relation view is the value over the
raw
get_.tca get_(groupflexform_ schema structure)- A FlexForm field's data structure rendered as sheets → fields, via
Flex. When several structures are selectable by a pointer, the keys are listed for a precise follow-up call withForm Tools ds_.pointer fluid_(groupresolve configuration)- The candidate template/partial/layout file paths in override order with an exists flag and the winning path, to debug "wrong template wins" or "not found".
Access model
get_, get_ and get_ reuse
Table (ADR-042): the sensitive-table denylist holds for
every user including admins; non-admins additionally pass tables_ and
the TCA admin flag. Credential-like columns are shown by name and type
only. fluid_ exposes file paths (never contents), rejects path
traversal, and requires a valid extension key.
Consequences
- The agent can traverse the schema (index → detail) within token budget and reason about relations and FlexForm structures it previously could not see.
fluid_resolves an extension's ownresolve Resources/paths. TypoScript-configured override root paths (Private plugin.) require a live rendering context and are not reflected — documented as a known limitation, not a bug.tx_*. view.*Root Paths - Write access remains out of scope;
hn/'s DataHandler-plus-workspace staging is the reference design if it is added later (see ADR-042).typo3- mcp- server