Skip to main content
Glama

zerodom_switch_profile

Switch the active Chrome profile so all subsequent ZeroDOM commands control a different logged-in account; register a new profile by endpoint once, then switch back without losing session state.

Instructions

Drive a different Chrome profile — full interactive control, not just fetch.

Each profile is its own real Chrome (its own relay + login). After switching, EVERY tool (navigate, scroll, click, read, screenshot, …) drives THIS profile; switch back and the other is right where you left it. Use it to work two or three logged-in accounts side by side.

  • endpoint — register a new profile the first time: zerodom_switch_profile("B", endpoint="ws://127.0.0.1:8766/cdp/local"). Set up once: zerodom relay --port 8766, then click Connect in that profile's extension (it auto-finds a free port — no URL to type).

  • name alone — switch to an already-registered profile. "default" is the original session (ZERODOM_CDP_ENDPOINT / port 8765).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>"
    },
    "name": "zerodom_switch_profile"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes
endpointNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.5

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the global side effect (every subsequent tool drives the new profile), the persistence guarantee ('switch back and the other is right where you left it'), the isolation model (own relay + own login), and setup prerequisites (`zerodom relay --port 8766`, clicking Connect in the extension, auto port discovery). These are exactly the traits a mutation-heavy session tool needs to expose and that structured fields could not have supplied.

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 structure is strong: the core claim is front-loaded in one sentence, the global-effect clause follows immediately, and the two parameter modes are broken into short bullets with a worked example. There is some redundancy ('full interactive control, not just fetch' and the repeated 'drives THIS profile' emphasis), but each section maps to a decision the caller must make.

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?

For a two-parameter session-switching tool, the description covers the purpose, the two call shapes, prerequisites, persistence behavior, and the special 'default' value; an output schema exists, so return values need no prose. Nothing an agent needs in order to call this correctly is missing, aside from error behavior on an unknown profile name.

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 description coverage is 0%, so the description must compensate, and it largely does: `endpoint` is given a concrete example value and its 'register on first use' semantics, and `name` gets a special-case value ('default' is the original session via ZERODOM_CDP_ENDPOINT / port 8765) plus the distinction between passing it alone versus with an endpoint. What is left unstated is the format of `name` itself — case sensitivity, reserved words beyond 'default', or what happens if the name is unknown.

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 states a specific verb and resource in the first line: 'Drive a different Chrome profile — full interactive control, not just fetch.' The line 'EVERY tool (navigate, scroll, click, read, screenshot, …) drives THIS profile' makes clear that this is a session-wide switch affecting every other call, which separates it from the many page- or node-level siblings. It never names the closest-sounding relatives (zerodom_switch_tab, zerodom_use_group, zerodom_set_scope), so the reader has to infer the profile-vs-tab-vs-group boundary from 'Each profile is its own real Chrome (its own relay + login).'

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?

The description gives a concrete motivating scenario ('work two or three logged-in accounts side by side') and then splits usage by parameter shape: pass `endpoint` the first time to register, pass `name` alone to switch to an existing profile. That is genuinely actionable routing. It stops short of saying when NOT to use this tool — for example, that tab-level or group-level switching is handled by other tools — so an agent working inside one browser may not know when this call is overkill.

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