Skip to main content
Glama

profile_start

Opens a browser session for a named identity and returns the endpoint needed to drive it.

Instructions

Open a browser session for an identity and return the endpoint to drive it.

The identity keeps its frozen fingerprint, its exit proxy, and its logged-in cookies — starting it does not re-randomize anything. Starting an identity that already has a session open is a no-op that returns the existing one.

Args: name: identity name, exactly as profiles_list reports it. headless: run without a visible window. Default False (headed), which is what sites expect and what you want for anything login-shaped.

Returns the session record: name, opened_at, idle_seconds, url (the page it is on), plus cdp_endpoint — a ws:// DevTools address you can attach your own automation to. It is only published for Chrome-core identities that have external debugging turned on in the app (off by default; Edit -> Advanced -> External debugging, needs a second verification, then reopen the identity). Otherwise it is None, cdp_unavailable gives the daemon's reason code (external_debug_off, external_debug_not_granted, not_supported_for_engine, starting) and cdp_note says what to do — the session commands work either way.

Prefer the daemon's own commands over attaching to cdp_endpoint. A session driven from outside bypasses Nullprint's consistency guards, so an outside tool can set a viewport, locale, timezone, or header that contradicts the identity's frozen fingerprint and make it detectable. Attach at your own risk, and change nothing the identity did not already claim.

Fails with a readable message if the identity does not exist (404), if too many sessions are already warm (429), or if the daemon is not running.

Input Schema

NameRequiredDescriptionDefault
nameYes
headlessNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.5

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations present the description carries the full burden and does: it discloses that the frozen fingerprint, exit proxy, and cookies persist across starts, that re-starting an open session is a no-op, and the exact failure modes (404 unknown identity, 429 session cap, daemon down). It also explains the conditional/unreliable nature of cdp_endpoint with reason-code enumeration and the detection risk of driving a session externally.

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?

Front-loaded with the core action and return value, then Args, Returns, and caveats in a sensible order. Every section earns its place, though the cdp reason-code list (external_debug_off, external_debug_not_granted, not_supported_for_engine, starting) is dense and arguably belongs in return-value documentation rather than the tool description.

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?

No output schema and no annotations, so the description must supply the return contract itself — it does, enumerating name, opened_at, idle_seconds, url, cdp_endpoint, cdp_unavailable, and cdp_note. Combined with the failure modes and the persistence semantics, an agent has everything needed to invoke and interpret it correctly.

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

Parameters5/5

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

Schema coverage is 0%, so the description must document both parameters, and it does: 'name' is pinned to the exact string profiles_list reports (a useful cross-tool contract not in the schema), and 'headless' gets its default plus a concrete recommendation for login-shaped work. This adds genuine meaning beyond the bare type/default in the schema.

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

Purpose5/5

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

States a specific verb and resource ('Open a browser session for an identity') plus what it returns ('the endpoint to drive it'). It is clearly separable from siblings like profile_create (makes the identity) and profile_stop (closes it), and it also states the idempotent no-op case so the agent knows re-invocation is safe.

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?

Gives explicit conditional guidance: headless defaults to False because 'headed... is what you want for anything login-shaped,' and it names the alternative driver path ('Prefer the daemon's own commands over attaching to cdp_endpoint') with the reason. It never explicitly routes to profile_stop for closing or says when not to start a session, so it stops short of full when/when-not coverage.

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