MCP App Store
by KeenEthics

Overview

Zyllio lets authenticated Zyllio Studio users inspect, build, and publish the Zyllio application they select during OAuth authorization. It manages application details and theme settings, screens, internal database tables, columns and rows, application assets, and analytics. Changes apply only to the selected application; publishing replaces its live PWA deployment.

Tools

analytics-get

ChatGPT
Get analytics for the authenticated application

application-changes-begin

ChatGPT
Start 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

ChatGPT
Finish the active Studio update session only after every requested application change is complete. This refreshes the open Studio once.

application-icon-get

ChatGPT
Get the connected Zyllio application icon as PNG base64 data.

application-icon-update

ChatGPT
Before 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

ChatGPT
Get the identity and description of the connected Zyllio application

application-info-update

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Get the theme of the connected Zyllio application.

application-theme-update

ChatGPT
Before 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

ChatGPT
List image database assets that can be referenced from application data.

asset-database-upload

ChatGPT
Before 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

ChatGPT
List image assets available in the connected Zyllio application.

asset-static-upload

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
List the Airtable bases or TimeTonic books available to import

database-remote-table-import

ChatGPT
Before 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

ChatGPT
List the tables and views available from an Airtable base or TimeTonic book

database-row-create

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Read a single row from a table by its ID

database-row-list

ChatGPT
Read a page of rows from a table

database-row-update

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
List all tables available in the application

database-table-rename

ChatGPT
Before 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

ChatGPT
Get the schema of a table

design-custom-component-create

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
List 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Before 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

ChatGPT
Get 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

ChatGPT
Get one screen in the simplified format accepted by design-screen-update.

design-screen-list

ChatGPT
List the screens available in the connected Zyllio application. Use design-screen-get to read a screen content.

design-screen-update

ChatGPT
Before 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

ChatGPT
Before 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.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps