Skip to main content
Glama

profile_create

Creates a new browser identity with a frozen, self-consistent fingerprint and unique name, optionally binding a proxy, engine, group, tags, and startup URLs.

Instructions

Create a new identity. Its fingerprint is generated and frozen on the spot.

You do not choose the fingerprint — the point of the product is that every identity gets one self-consistent, frozen set of traits that stays byte-identical across restarts. Do not create identities speculatively: they count against the installation's quota.

Args: name: the new identity's name. Must be unique — creating a name that already exists fails rather than overwriting it. engine: which browser core backs the identity. Leave unset to use this installation's default; an unknown value is rejected with the list of accepted ones. The engine field in profiles_list shows what existing identities use. proxy: exit proxy URL, e.g. "http://user:pass@host:port" or "socks5://host:port" — any vendor, bring your own. Omit it and the identity runs on a direct connection. Test a URL with proxy_check before binding it here. group, tags, note: the local ledger — which account, email, or purpose this identity is bound to. Free text, searchable in the app, and returned under meta by profiles_list. urls: startup tabs — pages opened automatically when the identity starts. force_dark: personal display preference, OFF by default. True inverts web pages that have no dark theme of their own (Google Ads and the like) to dark; sites may notice the changed colors, so use it only on identities the user manages for themselves, never on accounts being built up. Leave unset to keep pages exactly as the sites render them. Chrome-engine identities only.

Returns {name, os, created}. Fails with a readable message if the name is taken (409), if the quota is reached or the installation is unauthorized (403), or if an argument is rejected (422).

Input Schema

NameRequiredDescriptionDefault
nameYes
noteNo
tagsNo
urlsNo
groupNo
proxyNo
engineNo
force_darkNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.5

TDQS

A4.9/5.0
Behavior5/5

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

With zero annotations the description carries the full burden and does so: quota consumption, fingerprint being frozen and byte-identical across restarts, failure-instead-of-overwrite on duplicate names, invalid engine rejection, and the account-safety caveat that force_dark alters page colors. It also enumerates the 409/403/422 failure modes with meanings.

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 invariant before the args list, and the args section is scannable. Slightly verbose in places — the fingerprint explanation is restated across two sentences — but nearly every line adds decision-relevant information, so the length is mostly justified.

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 an eight-parameter mutation tool with no annotations and no output schema, the description still supplies the return shape ({name, os, created}) and the full error taxonomy. Nothing an agent needs in order to call this correctly is missing.

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 all eight parameters — and it does: name (uniqueness semantics), engine (default fallback, rejection behavior, discovery via profiles_list), proxy (two concrete URL forms, direct-connection default, proxy_check prerequisite), group/tags/note (ledger phrasing, searchability, surfaced under `meta`), urls (startup tabs), and force_dark (default OFF, engine restriction, risk warning). This goes well beyond what the bare schema offers.

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?

Opens with a specific verb and resource ("Create a new identity") and immediately explains the immutable-fingerprint model that distinguishes this tool from siblings like profiles_list or profile_settings. An agent knows exactly what it produces and why it can't be configured away.

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

Usage Guidelines5/5

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

Explicitly states when not to use it ("Do not create identities speculatively: they count against the installation's quota") and routes prerequisite checks to siblings ("Test a URL with proxy_check before binding it here", "The `engine` field in profiles_list shows what existing identities use"). The unique-name constraint also tells the agent what to do if a name exists.

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