Configure this project's portal connection
configure_projectConnect a folder to a Zuar Portal: writes a validated config and scaffolds design.md/CLAUDE.md. The setup page accepts API keys in a browser, keeping them from passing through the model.
Instructions
Connect THIS folder to a Zuar Portal — one install can serve many portals, each folder gets its own ./.zuar-portal/config.json. By default this opens a tiny local setup page (http://127.0.0.1:, single-use token) served by this MCP process, best-effort opening your browser and returning the link immediately (non-blocking): you type the URL, API key, write-safety toggles, access scope, and version-control settings IN THE BROWSER, so the API key never passes through the model. On Save it validates the portal with a live login, writes the config + a .gitignore (0600, secrets never committed), then PINS the folder to the portal's live identity (later writes to a DIFFERENT portal are refused) — all applied live, no restart; the success page points you at design_intake to scaffold this project's design.md + CLAUDE.md. The write-safety toggles are set ONLY via this human form (no tool argument sets them), and WIDENING data/admin writes additionally needs the env opt-in PORTAL_ALLOW_OPERATOR_TOGGLES, so an agent can never widen its own permissions. Falls back to MCP elicitation, then headless arguments, when a browser can't be used: pass ui:false, or pass portal_url + api_key + user_id as arguments — that path also scaffolds a project design.md every block inherits and a managed CLAUDE.md block. Refuses to overwrite an existing config via the args path unless overwrite=true; the browser form prefills current values and Save is your consent. Secrets are stored locally and never echoed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ui | No | true/omit = open the local setup page (default); false = skip it and use elicitation / headless args. | |
| vc_dir | No | Local git repo path to mirror content writes into. | |
| api_key | No | Portal API key (Admin → Auth → API Keys). Skips the prompt. | |
| density | No | Layout density for generated blocks (default comfortable). Skips the prompt. | |
| user_id | No | Your user UUID (Admin → Users; copy from the URL). Skips the prompt. | |
| vc_push | No | Push after each commit (default true when a remote is set). | |
| scaffold | No | Write the project design.md and the managed CLAUDE.md block (default true). false = write only the config. | |
| validate | No | Validate portal creds with a live login (default true). | |
| vc_token | No | GitHub PAT for HTTPS push (stored locally, never logged). | |
| overwrite | No | Overwrite an existing project config (default false). | |
| vc_remote | No | Git remote name (default origin). | |
| portal_url | No | Base portal URL, e.g. https://your-portal.zuarbase.net (skips the prompt). | |
| theme_mode | No | Which theme modes blocks must support (default light). Skips the prompt. | |
| brand_color | No | Brand accent color (any CSS color, e.g. #0b7285). Seeds this project's design.md. Skips the prompt. | |
| interactive | No | true = require interactive prompts (fails if the client can't elicit); false = headless, arguments only; omit = auto (prompt when supported and fields are missing). | |
| vc_username | No | HTTPS username for the token (default x-access-token). | |
| open_browser | No | When the setup page opens, best-effort open the form in your browser (default true); false just returns the URL. | |
| portal_label | No | A name for this portal, e.g. 'Acme Production'. Used in the binding warnings and refusals, so a wrong-portal mistake reads as a name rather than a hostname. Skips the prompt. | |
| setup_github | No | Force GitHub version control on/off instead of asking. | |
| vc_remote_url | No | GitHub repo URL, e.g. https://github.com/you/portal-state.git | |
| validate_github | No | Validate the GitHub token/repo via the API (default true). | |
| claude_in_chrome | No | Record whether the Claude for Chrome extension is available, so agents may visually verify blocks (screenshot the render, read the console) instead of only reviewing code. Skips the prompt. |