catalyst-slate
⚠️ PRE-FLIGHT CHECK — Slate activation (one-time, per project): Before any Slate command, confirm Slate is activated in the console. Open the Catalyst console → your project → Slate (left sidebar) → click Start Exploring. This is a one-time step. Skipping it means
catalyst deploy slatefails withHTTP 400even thoughslate:createsucceeds locally.
How It Works
- Check if Slate is activated — Use MCP: call
CatalystbyZoho_List_All_Slate_Appswith the project ID.- If it returns apps or an empty list → Slate is activated. Proceed.
- If it returns
INVALID_URL_PATTERN→ Slate is not yet activated. This is NOT an MCP bug — it means the service needs a one-time console activation. Tell the user:"Please open the Catalyst console, go to your project → Slate (left sidebar) → click Start Exploring. This is a one-time step that takes 5 seconds. Let me know when done and I'll continue." Wait for confirmation, then proceed.
- Never fall back to Web Client (legacy) because Slate isn't activated yet. Web Client is deprecated — Slate is always the right choice for frontend hosting. The one-time activation is not a reason to change the approach.
If Slate was not selected during
catalyst init, runcatalyst slate:create --name <name> --framework <framework> --defaultimmediately after init. This command updatescatalyst.jsonand prompts for the source directory automatically — it is faster than manual setup and should be the default recommendation. - Check if Slate app exists — If no app exists yet, run
catalyst slate:create --name <name> --framework <framework> -nito scaffold one. If Slate was not selected duringcatalyst init, run this immediately after init. - Load
references/slate-basics.md— for framework setup,slate-config.tomlformat, and baseUrl configuration. - Cross-domain calls — If the query involves calling functions from a Slate app, apply the full URL +
generateAuthToken()+ CORS whitelist pattern.⚠️ Migrating from basic client hosting? Relative paths like
/server/fn/executethat worked in basic client silently break on Slate — Slate is served from*.onslate.comwhile functions are on*.catalystserverless.com. Every function call must become an absolute URL. Find and replace all relative/server/...paths with the fullhttps://<project>.catalystserverless.com/server/...URL and addgenerateAuthToken()headers. - Deploy — Before deploying, confirm Slate is activated in the console (Console → Slate).
slate:createruns locally and succeeds without activation — the first backend call happens at deploy time, which fails withHTTP 400: Please access the Slate service in your project's console before deployingif not activated. Once confirmed:catalyst deploy slate <name> -nideploys to the current environment. Preview URLs are available after the build completes.