analytics-get
ChatGPTGet analytics for the authenticated application
application-changes-begin
ChatGPTStart one Studio update session before making any change to the connected application. Call this exactly once before the first modifying tool, then call application-changes-finish after every requested change is complete.
application-changes-finish
ChatGPTFinish the active Studio update session only after every requested application change is complete. This refreshes the open Studio once.
application-icon-get
ChatGPTGet the connected Zyllio application icon as PNG base64 data.
application-icon-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Replace the connected Zyllio application icon with a base64-encoded PNG. Use a square 512 × 512 px, 8-bit true-color RGB or RGBA image in sRGB. Do not use indexed/palette PNGs, animation, or interlacing. Prefer an opaque image for maximum PWA compatibility. The image cannot exceed 1 MiB.
application-info-get
ChatGPTGet the identity and description of the connected Zyllio application
application-info-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Update the name and/or description of the connected Zyllio application.
application-publish
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Publish the connected Zyllio application as a PWA. This replaces the current live deployment.
application-theme-get
ChatGPTGet the theme of the connected Zyllio application.
application-theme-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Update one or more theme settings of the connected Zyllio application.
asset-database-image-list
ChatGPTList image database assets that can be referenced from application data.
asset-database-upload
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Upload an asset that can be referenced from application data. The file content must be base64 encoded and cannot exceed 3 MiB.
asset-static-image-list
ChatGPTList image assets available in the connected Zyllio application.
asset-static-upload
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Upload a static asset for the connected Zyllio application. The file content must be base64 encoded and cannot exceed 3 MiB.
database-column-add
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Add a column to an internal table
database-column-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Permanently delete a non-relation column and all of its values from an internal table
database-column-options-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Update the comma-separated options of an options column in an internal table
database-column-relation-create
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create a virtual relation column between two tables. The relation uses existing values and does not store its own data.
database-column-rename
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Rename a non-relation column in an internal table
database-remote-database-list
ChatGPTList the Airtable bases or TimeTonic books available to import
database-remote-table-import
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Import Airtable or TimeTonic tables into the application as remote tables. This keeps data in the remote source.
database-remote-table-list
ChatGPTList the tables and views available from an Airtable base or TimeTonic book
database-row-create
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create a new row in a table. Provide fields as an object where keys are column names and values are the cell values. Use YYYY-MM-DD for date values, HH:mm for time values, and YYYY-MM-DDTHH:mm for datetime values (for example, 2026-10-02T14:30). Do not include seconds, milliseconds, or a timezone.
database-row-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Delete a row from a table by its ID
database-row-get
ChatGPTRead a single row from a table by its ID
database-row-list
ChatGPTRead a page of rows from a table
database-row-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Update an existing row in a table. Provide fields as an object where keys are column names and values are the updated cell values. Use YYYY-MM-DD for date values, HH:mm for time values, and YYYY-MM-DDTHH:mm for datetime values (for example, 2026-10-02T14:30). Do not include seconds, milliseconds, or a timezone.
database-table-create
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create an internal table with its initial columns
database-table-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Permanently delete an internal table and all of its data
database-table-list
ChatGPTList all tables available in the application
database-table-rename
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Rename an internal table
database-table-schema-get
ChatGPTGet the schema of a table
design-custom-component-create
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create and install a new custom component as version 1. It is not added to a screen. You must generate the metadata and JavaScript yourself, then pass them to this tool. The server validates and persists the definition. Metadata rules: - Return metadata matching the input schema exactly. All default values are strings; ids are kebab-case; label is concise, written in French, and at most 15 characters; category is "Personalisés". - metadataVersion must be 2. Provide a complete inline SVG icon based on an icon from lucide.dev. The SVG root must use viewBox="0 0 24 24", fill="currentColor", and stroke="currentColor". Keep the Lucide paths as outlines with fill="none" so the Studio can use the root fill as the icon tile color and render the outline in white. Do not use Lucide's default fill="none" on the SVG root. The exact metadata object, including metadataVersion, id, family, and icon, must be embedded in the JavaScript and registered without modification. - When creating version 1, family must equal id. When creating a new version, family must equal the source component family returned by design-custom-component-list. - Property names are concise, start with an uppercase letter, and are written in French. - Add exactly one property with main: true. Use styles, not properties, for colors. Declare at most one click action as { id: 'action', name: 'Action', type: 'action', options: [], default: '', main: false, write: false }. - For a read-only component, do not declare table, selection, or write properties. - For a list component, declare data as the main table property, optional filter and sort properties, and a writable row-variable selection property. Use column properties for table fields; each column id and name must be identical. Use table and row-variable only for list components. - For an input component that saves a value, declare one property with write: true. - Style ids start with --. Do not declare width or height styles. Default colors use RGB values and never transparent. - Style names are concise, start with an uppercase letter, and are written in French. JavaScript rules: - Return one valid self-executing vanilla Web Component JavaScript file: (function () { ... })(); no import, export, framework, external dependency, external CSS, comment, Markdown, or explanatory text. - Use a flexbox host with width: 100%, box-sizing: border-box, padding: 10px 10px, and font-family: var(--theme-font-family). Do not use another font family. - Register only with zySdk.services.registry.registerComponent(metadata, ComponentClass); never use customElements.define. Register the exact metadata sent to this tool. - A Custom Element constructor must only call super(), initialize JavaScript fields, and optionally attach a shadow root. It must not mutate the host's attributes or children. - Never call setAttribute, removeAttribute, toggleAttribute, classList, style, id, role, tabIndex, innerHTML, textContent, or appendChild on this in the constructor: browsers reject document.createElement() when a constructor leaves attributes on the host. Render and mutate the host in connectedCallback, attributeChangedCallback, or a method called after connection. - Read regular properties with this.getAttribute(propertyId). Dispatch clicked for an action, selected with { selection } for list selection, and changed with { value } for input changes. - A list component declares set data(val) { this._data = val; this._render(); }. Data arrives after construction; render asynchronously. Read list column values from this._data.items[index] using the column name. Each item has _id. - Styles are already available as host CSS variables. Assume properties and styles have values. If information is missing, make a reasonable implementation decision without asking a question.
design-custom-component-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Permanently delete one custom component version. It fails and returns screen references while instances of that version still exist. Delete those instances first.
design-custom-component-list
ChatGPTList custom components installed in the connected application. Use the exact component ID when updating, deleting or adding one to a screen.
design-custom-component-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create and install a new immutable version of an existing custom component. The customComponentId must identify the latest version in its family. Existing screen instances are never replaced automatically. First use design-custom-component-list to obtain the source metadata, JavaScript, prompt history, family, and version. Generate a complete replacement metadata and JavaScript, then pass them to this tool. The new metadata id must be unique because the JavaScript registers that exact metadata. The metadata family must equal the source family. The server assigns the next plugin version. You must generate the metadata and JavaScript yourself, then pass them to this tool. The server validates and persists the definition. Metadata rules: - Return metadata matching the input schema exactly. All default values are strings; ids are kebab-case; label is concise, written in French, and at most 15 characters; category is "Personalisés". - metadataVersion must be 2. Provide a complete inline SVG icon based on an icon from lucide.dev. The SVG root must use viewBox="0 0 24 24", fill="currentColor", and stroke="currentColor". Keep the Lucide paths as outlines with fill="none" so the Studio can use the root fill as the icon tile color and render the outline in white. Do not use Lucide's default fill="none" on the SVG root. The exact metadata object, including metadataVersion, id, family, and icon, must be embedded in the JavaScript and registered without modification. - When creating version 1, family must equal id. When creating a new version, family must equal the source component family returned by design-custom-component-list. - Property names are concise, start with an uppercase letter, and are written in French. - Add exactly one property with main: true. Use styles, not properties, for colors. Declare at most one click action as { id: 'action', name: 'Action', type: 'action', options: [], default: '', main: false, write: false }. - For a read-only component, do not declare table, selection, or write properties. - For a list component, declare data as the main table property, optional filter and sort properties, and a writable row-variable selection property. Use column properties for table fields; each column id and name must be identical. Use table and row-variable only for list components. - For an input component that saves a value, declare one property with write: true. - Style ids start with --. Do not declare width or height styles. Default colors use RGB values and never transparent. - Style names are concise, start with an uppercase letter, and are written in French. JavaScript rules: - Return one valid self-executing vanilla Web Component JavaScript file: (function () { ... })(); no import, export, framework, external dependency, external CSS, comment, Markdown, or explanatory text. - Use a flexbox host with width: 100%, box-sizing: border-box, padding: 10px 10px, and font-family: var(--theme-font-family). Do not use another font family. - Register only with zySdk.services.registry.registerComponent(metadata, ComponentClass); never use customElements.define. Register the exact metadata sent to this tool. - A Custom Element constructor must only call super(), initialize JavaScript fields, and optionally attach a shadow root. It must not mutate the host's attributes or children. - Never call setAttribute, removeAttribute, toggleAttribute, classList, style, id, role, tabIndex, innerHTML, textContent, or appendChild on this in the constructor: browsers reject document.createElement() when a constructor leaves attributes on the host. Render and mutate the host in connectedCallback, attributeChangedCallback, or a method called after connection. - Read regular properties with this.getAttribute(propertyId). Dispatch clicked for an action, selected with { selection } for list selection, and changed with { value } for input changes. - A list component declares set data(val) { this._data…
design-screen-create
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Create and persist one or more Zyllio screens. Before choosing a component format, call design-screen-format-get. For onboarding, welcome or introductory screens, lead with a visually verified, relevant Unsplash illustration in an image component at the top of the screen, then use concise benefit-led marketing copy and a clear call to action. Detail screens should not be mostly composed of label components; use relevant visual components to create a clear hierarchy. When creating peer screens that users revisit frequently, such as Home, Catalogue, Loans, Profile or Settings, include the same bottom navigation bar on each of those screens. Prefer it over button-only navigation for primary daily destinations. Keep buttons for contextual actions and linear flows such as onboarding, authentication, forms, creation, editing and detail screens. Use meaningful Zyllio icon names for screen and navigation icons. Set transitionTemplateRef to null for every component that does not navigate; do not use its own screen or template reference as a placeholder.
design-screen-custom-component-add
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Add an installed custom component to the root of an existing screen using its default properties and styles. Use the exact custom component version ID. order is the zero-based position among root screen elements.
design-screen-custom-component-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Permanently remove one custom component instance from a screen. Use the instanceId returned when the instance was added.
design-screen-delete
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Permanently delete an existing native Zyllio screen from the connected application.
design-screen-format-get
ChatGPTGet the structured screen format accepted by design-screen-create and design-screen-update. Use this before creating or updating a screen, especially for bindings, list-detail flows and bottom-navigation decisions.
design-screen-get
ChatGPTGet one screen in the simplified format accepted by design-screen-update.
design-screen-list
ChatGPTList the screens available in the connected Zyllio application. Use design-screen-get to read a screen content.
design-screen-update
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Update and persist an existing Zyllio screen. Before choosing a component format, call design-screen-format-get. Components use componentId, order, transitionScreenId and their type-specific properties. Icon fields use Zyllio icon names such as briefcase-business, workflow, or monitor; do not send Unicode codes. For example, replace a screen with one text component using { "screenId": "1", "name": "Welcome", "components": [{ "componentId": "text", "order": 0, "transitionScreenId": null, "text": "Welcome" }] }. Set transitionScreenId to null for every component that does not navigate; do not use its own screen id as a placeholder.
feature-install
ChatGPTBefore a sequence of application changes, call application-changes-begin once. Call application-changes-finish only after the complete sequence. Install a supported Zyllio feature. Authentication creates the French Utilisateurs table and its authentication screens when no users table role exists; it requires the screen displayed after login. Chat creates a Messages table and screen. Comments creates an Avis table and screen. Chat and comments require a source screen and a selected-row binding.