Skip to main content
Glama

Configure this project's portal connection

configure_project

Connect 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

TableJSON Schema
NameRequiredDescriptionDefault
uiNotrue/omit = open the local setup page (default); false = skip it and use elicitation / headless args.
vc_dirNoLocal git repo path to mirror content writes into.
api_keyNoPortal API key (Admin → Auth → API Keys). Skips the prompt.
densityNoLayout density for generated blocks (default comfortable). Skips the prompt.
user_idNoYour user UUID (Admin → Users; copy from the URL). Skips the prompt.
vc_pushNoPush after each commit (default true when a remote is set).
scaffoldNoWrite the project design.md and the managed CLAUDE.md block (default true). false = write only the config.
validateNoValidate portal creds with a live login (default true).
vc_tokenNoGitHub PAT for HTTPS push (stored locally, never logged).
overwriteNoOverwrite an existing project config (default false).
vc_remoteNoGit remote name (default origin).
portal_urlNoBase portal URL, e.g. https://your-portal.zuarbase.net (skips the prompt).
theme_modeNoWhich theme modes blocks must support (default light). Skips the prompt.
brand_colorNoBrand accent color (any CSS color, e.g. #0b7285). Seeds this project's design.md. Skips the prompt.
interactiveNotrue = require interactive prompts (fails if the client can't elicit); false = headless, arguments only; omit = auto (prompt when supported and fields are missing).
vc_usernameNoHTTPS username for the token (default x-access-token).
open_browserNoWhen the setup page opens, best-effort open the form in your browser (default true); false just returns the URL.
portal_labelNoA 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_githubNoForce GitHub version control on/off instead of asking.
vc_remote_urlNoGitHub repo URL, e.g. https://github.com/you/portal-state.git
validate_githubNoValidate the GitHub token/repo via the API (default true).
claude_in_chromeNoRecord 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.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key side effects: writes config, pins to portal identity, refuses overwrite unless overwrite=true, writes to version control, stores secrets locally and never echoes them. Also explains the security restriction that write-safety toggles are only available via browser, preventing agents from widening permissions. This is exceptionally transparent beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but information-dense. It front-loads the core purpose and then explains the flow. Some redundancy exists (e.g., repeated mention of browser fallback), but overall each sentence contributes to understanding. Could be slightly tightened, but acceptable for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 22 parameters, no output schema, and complex side effects (browser interaction, security constraints, version control, fallback behaviors), the description is remarkably complete. It covers all major behaviors, prerequisites, security notes, and interaction flows, leaving the agent well-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaningful context: explains ui default, that api_key skips the prompt, density default, and how the browser path differs from args. It doesn't enumerate every parameter but gives enough to understand their roles, especially the security implications of the ui argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Connect THIS portal to a project folder.' It specifies the verb 'connect/configure' and resource 'portal/project'. It distinguishes itself from sibling tools like update_config by focusing on initial configuration and browser-based setup, but doesn't explicitly differentiate from all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use the browser UI vs headless mode, explains fallback behavior, and mentions the flow after configuration (points to design_intake). It doesn't explicitly mention alternatives like update_config for later changes, but the primary usage context is well covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zuarbase/Zuar-Portal-MCP-Public'

If you have feedback or need assistance with the MCP directory API, please join our Discord server