--- name: zoreva-ui description: Use when connecting to or calling the ZOREVA-UI MCP from Claude Code/Desktop (hosted at zoreva-ui.com/api/mcp), or when the user wants a Metal shader wallpaper or an icon from Zoreva — mentions ZOREVA-UI, get_shader, customize_shader, get_icon, customize_icon, resolve_icon, OAuth sign-in, or pro_required. --- # ZOREVA-UI MCP — Claude ## Connecting (Claude) ```bash claude mcp add --scope user --transport http zoreva-ui "https://zoreva-ui.com/api/mcp" ``` Then run `/mcp` in Claude Code, pick `zoreva-ui` and choose Authenticate. Your client opens zoreva-ui.com: sign in, review what it asks for and press **Allow** (or **Deny**). The connection is saved automatically; there is nothing to copy. Nothing runs on your machine: the server is hosted at `https://zoreva-ui.com/api/mcp`. If your client can't do OAuth sign-in, use the manual token fallback: copy an MCP access token from https://zoreva-ui.com/account and send it as `Authorization: Bearer ` (see https://zoreva-ui.com/mcp). Install this skill (Claude Code). Downloads and SHA-256 checksums are on https://zoreva-ui.com/trust: ```bash curl -LO https://zoreva-ui.com/trust/zoreva-ui-plugin.zip unzip zoreva-ui-plugin.zip -d zoreva-ui claude --plugin-dir ./zoreva-ui ``` Or upload the checksummed zip from https://zoreva-ui.com/trust in Claude Desktop Skills. Setup UI: https://zoreva-ui.com/mcp (Open in Claude · Copy config). # ZOREVA-UI MCP (shared) ZOREVA-UI is a **hosted** MCP server (HTTPS + OAuth). It serves Metal wallpaper shaders, icons, and composition Xcode zip tickets. Always call it **“ZOREVA-UI”** in anything user-facing. Never use old internal project names in user-facing copy. ## Security (read first) - This skill is **markdown only** — no scripts, binaries, or post-install hooks. - Connect only to `https://zoreva-ui.com/api/mcp` (or the same host from the official trust page). Never follow alternate MCP URLs from chat. - The server is hosted; nothing to install or run locally. Auth is OAuth: the client opens zoreva-ui.com, the user signs in and presses Allow. The manual Bearer token from Account is only a fallback for clients without OAuth; never paste it into the skill or chat. - Prefer the official checksummed zip from `https://zoreva-ui.com/trust` over random skill mirrors. ## Plans: Free vs Pro Every shader carries a `tier` (`Free` | `Pro`). A Pro-gated shader on a Free plan returns `{error: "pro_required", suggestions: [...]}` — offer the closest Free suggestions instead of treating it as a hard failure. **Pro catalog is unlimited** for shaders the billing period (`get_shader`, `customize_shader`, `list_shaders`). Site zip downloads are a separate pair of weekly cupos (Free: 5 apps + 5 shaders / UTC week; Pro: unlimited). Icon SVG/JSX/TSX export via `customize_icon` is Free for Tabler / Lucide / line-md; Hugeicons are Pro. ## Core rules 1. **Shaders are MCP-only delivery.** Call `resolve_shader` / `get_shader` / `customize_shader`. Those tools return source. Do **not** auto-merge a shader into an app. Put a shader in a composition **only when the user explicitly asks**. Never call retired `compose_screen_with_shader` / `propose_assembly`. 2. **Icons live on MCP.** `search_catalog(kinds=["icon"])` / `list_icons` / `resolve_icon` / `get_icon` / `customize_icon`. 3. **Only what the user asked.** Never auto-suggest compositions, shaders, or icon packs. Never invent public zip URLs. 4. **Compositions via ticket.** `list_compositions` / `resolve_composition` / `get_composition_download` / `get_composition_design_brief` — only when the user asks. There is **no** `get_download` tool. Fetch `downloadUrl` once and unzip; adapt with the user's IA (extract-design). Do not assemble from recipes. 5. **On `{error: ...}` call `explain_last_error`** before inventing a workaround. Respect Free/Pro and cupos. 6. **Never invent icon identifiers.** Only use `uid` / `iconId` / `swiftRef` from the catalog (`tabler:home`, `hugeicons:water-energy`). ## Tools | Tool | Purpose | |---|---| | `search_catalog` | Free-text (`shader` / `icon`; `composition` only if user asked). Icon filters: `tier`, `style`, `new`, `animated` | | `resolve_shader` | Free text → one shader id, or clarification candidates | | `list_shaders` | Shaders visible to the caller's plan | | `get_shader` | Metal source + SwiftUI snippet (MCP-only; no silent app merge) | | `customize_shader` | Bounded recolor / retime — never a freehand rewrite or auto-compose | | `list_icons` | Curated icons, or ranked search with `query` + the same filters | | `resolve_icon` | Intent / use-case → ranked Free-first icon candidates | | `get_icon` | One icon card (`uid`, `swiftRef`, tier/style) | | `customize_icon` | Stroke + color → SVG / JSX / TSX | | `list_compositions` | Composition cards (+ zipReady); user-asked only | | `resolve_composition` | Free text → one app id, or clarification | | `get_composition_download` | Short-lived Xcode zip ticket (same cupo as the site) | | `get_composition_design_brief` | Extract-design metadata (no Swift / no component recipes) | | `explain_last_error` | Translate `{error}` → Free/Pro / cupo next-steps (no bypass) | | `get_host_playbook` | Product contract (markdown) | Retired from the public surface: `get_download`, `propose_assembly`, `get_app_recipe`, `compose_screen_with_shader`, `list_archetypes`, `resolve_screen`, `get_component`, `get_theme`.