Cloak Agent
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TEXT_MODEL | Yes | model id, e.g. a small fast model | |
| TYPESAFE_MODEL | No | default `jev-latest` | jev-latest |
| CLOAK_AGENT_CDP | No | attach to an already running browser, e.g. `http://127.0.0.1:9222` | |
| TYPESAFE_API_KEY | Yes | Jev decisions | |
| TEXT_MODEL_API_KEY | Yes | key for that endpoint | |
| TEXT_MODEL_HEADERS | No | JSON object of extra request headers, if your provider needs any | |
| CLOAK_AGENT_PROFILE | No | persistent browser profile (cookies and consent choices survive) | ~/.cloakbrowser-agent/profile |
| TEXT_MODEL_BASE_URL | Yes | OpenAI-compatible base URL, e.g. `https://openrouter.ai/api/v1` | |
| CLOAK_AGENT_HEADLESS | No | `1` = run headless | off |
| CLOAK_AGENT_HUMANIZE | No | `0` = instant clicks and typing (faster, less human-like) | on |
| TEXT_MODEL_REASONING | No | sent as `reasoning_effort` (`low` / `medium` / `high`); `none` omits it | |
| CLOAKBROWSER_LICENSE_KEY | No | CloakBrowser license key (`cb_...`). Instead of setting it here, you can run `cloakbrowser login` once: the saved key is picked up automatically | |
| CLOAK_AGENT_IDLE_MINUTES | No | close the browser after this long without calls | 5 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browseA | Complete a web task in a stealth browser and return the relevant page content as markdown. Args: goal: The task in plain language, e.g. "Search Google for X and show the results" or "Find the price of the iPhone 17 on idealo.de". Include every value the task needs (search terms, form values), because fields are filled from the goal. url: Start page. Required unless continuing an existing tab. tab_id: Continue in a tab returned earlier (a follow-up step, or after needs_input / blocked). Status values: done, blocked, needs_input (the goal lacks a value a field requires: call again with the same tab_id and a goal that includes it), budget (step limit reached), error. The tab stays open so the user can see it; its tab_id is returned. The browser closes itself after a few idle minutes, which also closes its tabs. |
| close_tabB | Close a tab that browse left open. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: 'browse' handles all web tasks, while 'close_tab' is solely for cleanup. There is no overlap or ambiguity in their intent.
Both names use snake_case, but 'browse' is a bare verb while 'close_tab' follows a verb_noun pattern. This minor inconsistency is still readable and predictable.
With only two tools, the set feels thin for a web browsing agent, even though the 'browse' tool is designed to handle many tasks via natural language goals. A few more utilities (e.g., list tabs) could improve scope.
The surface covers the core lifecycle: start a browsing task and close a tab. Missing are minor conveniences like listing open tabs or closing all tabs, but agents can work around these via tab_ids.