browser-forest
Server Details
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
- Status
- Healthy
- Uptime
- 86.3% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct action—click, fill, navigate, scroll, screenshot, extract, snapshot, session lifecycle—and none overlap meaningfully. The only similar pair is extract and snapshot, but their outputs serve clearly different purposes: one returns semantic content, the other a page structure for interaction.
All tool names follow the same bf_ + verb(snake_case) convention, e.g., bf_create_session, bf_navigate, bf_click. There is no mixed casing or vague generic naming, making the pattern predictable and easy to remember.
Nine tools is well-scoped for a browser automation and data extraction server. Each tool has a clear role, and the set is neither bloated nor too thin.
The tool surface covers the main browser lifecycle and core interaction loop: create session, navigate, perceive via snapshot/extract, act via click/fill/scroll, and close. Minor gaps exist, such as no explicit wait tool or forward/back navigation, but agents can work around these using existing tools.
Available Tools
9 toolsbf_clickBInspect
点击元素(CSS 选择器或 XPath)。阶段 2:转发 BG 引擎(框架感知 smart click,行为层更真实)。
| Name | Required | Description | Default |
|---|---|---|---|
| xpath | No | 可选:XPath(与 selector 二选一) | |
| selector | No | CSS 选择器(如 #submit 或 button.login) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'framework-aware smart click' and 'more realistic behavior layer,' which adds some flavor, but these are vague and do not explain side effects, waiting behavior, failure modes, or whether clicking may navigate or submit forms. This is a significant transparency gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the essential action sentence. The second sentence, however, contains unclear jargon ('阶段 2', 'BG 引擎') that may confuse rather than clarify, so it is not perfectly crisp.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with two documented optional parameters and no output schema, so the description is close to workable. However, it does not clarify whether at least one of selector/xpath is expected, what the tool returns, or what 'BG engine' means. This leaves a minor but real completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description restates the CSS/XPath choice but adds no new detail about mutual exclusivity, selector syntax, precedence, or examples. The baseline of 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: clicking an element, and specifies the two targeting mechanisms (CSS selector or XPath). This immediately distinguishes it from sibling tools like bf_navigate, bf_fill, and bf_scroll. The '阶段 2 / BG engine' phrasing is jargon, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when an element needs to be clicked—but it does not explicitly state when not to use it or compare it with alternatives. The 'smart click / behavior layer more realistic' phrase hints at a use context, but there is no concrete guidance on choosing this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_closeAInspect
关闭当前浏览器会话(释放资源并计入用量)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds meaningful context by stating that closing the session releases resources and counts toward usage, which is useful for an agent deciding whether to invoke it. It does not describe error behavior or idempotency, but it goes beyond the bare verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence states the action, the scope, and the side effects with no filler. The verb is front-loaded, and every phrase contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter close operation with no output schema, the essential information is minimal: what is closed, that resources are released, and that usage is counted. The description covers these well. It omits return-value or no-session behavior, but those are not critical for such a simple teardown tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter meaning for the description to add. Per the rubric, 0 params sets the baseline at 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '关闭当前浏览器会话' (close current browser session). It is clearly distinguishable from siblings such as bf_create_session, bf_navigate, and bf_extract, as it is the terminal/session-ending operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are mentioned. The usage is implied by the tool name and sibling context, but the description does not say when a session should be closed versus kept open or when to create a new session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_create_sessionAInspect
创建一个新的云浏览器会话(归属当前 API key 用户)。可带初始 URL 直接导航。同一连接内再次调用会替换当前会话(旧会话自动关闭)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | 可选:创建后立即导航到的 URL | |
| contextId | No | 可选:复用上下文(cookies/登录态)的 context ID | |
| proxyHost | No | ||
| proxyPort | No | ||
| proxyType | No | ||
| proxyPassword | No | ||
| proxyUsername | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the most important lifecycle behavior: repeated calls close the previous session. It also notes ownership by the API key user Pomu. It omits return value and error conditions, but the disclosed behaviors are material for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the core action front-loaded. The second sentence efficiently adds navigation and replacement behavior without any redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the critical lifecycle behavior (creation, initial navigation, replacement) but does not address the 5 proxy-related parameters or the reuse contextId. With no output schema, the return value is also unspecified, leaving an agent with only partial information for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29% (only url and contextId have descriptions). The description only restates the url behavior already present in the schema ('可带初始 URL 直接导航') without adding new meaning. It provides no guidance for contextId or any of the proxy parameters, so it fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('创建'/create) and resource ('云浏览器会话'/cloud browser session), with an ownership qualifier. It also distinguishes itself from all sibling tools, which operate on an existing session (click, fill, navigate, etc.), making its function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says the tool creates a new session, can navigate to an initial URL, and that repeated calls replace the current session (old session auto-closes). This gives clear context for when to call it, but it does not explicitly mention alternatives like using bf_navigate for later navigation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_extractAInspect
提取当前页面内容为 markdown/结构化 JSON(title/正文/表格/链接列表)。可指定 CSS 选择器只提取区域。这是采集类 Agent 的核心工具。
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | 默认 markdown | |
| selector | No | 可选:只提取匹配此 CSS 选择器的区域 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-oriented extraction behavior, the 'current page' scope, and the optional CSS selector restriction. However, it does not mention any side effects, prerequisites like a loaded page, error behavior, or how it interacts with dynamic content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. It front-loads the main purpose, then a useful optional behavior, then the use context. Every clause adds information relevant to selecting and invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-optional-parameter tool, no output schema, and no annotations, the description is largely complete: it explains the output formats, the selector behavior, and the intended use case. It is missing only finer caveats about return structure or DOM dependencies, but these are minor for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value by specifying that the selector limits extraction to a region and by clarifying what the structured JSON contains (title, body, tables, links), going beyond the schema's sparse parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('extract') with a clear resource ('current page content') and explicitly lists output forms (markdown/structured JSON) and content types (title, body, tables, links). It also distinguishes this from navigation and interaction sibling tools by framing it as the core tool for scraping agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states this is the core tool for collection/scraping agents, giving a clear context for when to use it. It does not explicitly mention when not to use it or compare it with sibling alternatives, but the extraction-specific framing provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_fillBInspect
填充输入框的值(CSS 选择器或 XPath)。阶段 2:转发 BG 引擎(框架感知 smart fill,支持受控组件)。
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| xpath | No | 可选:XPath(与 selector 二选一) | |
| selector | No | CSS 选择器(如 input[name=email]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It adds useful traits—framework-aware smart fill and controlled-component support—but does not disclose side effects, event triggering, replacement behavior, or prerequisites like an active session or loaded page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the primary function. The second sentence is jargon-heavy ('stage 2: forward BG engine') and somewhat cryptic, but the framework-aware/controlled-component detail does add capability context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation mutation tool, it gives enough to make a plausible call, but it omits session/page prerequisites and outcome information. The 'BG engine' phase reference is unexplained, leaving a notable contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the description clarifies that 'value' is the text to enter, and that selector/xpath identify the target. However, it does not add meaningful format constraints or further explain the optional parameters beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a concrete action—'fill the value of an input box'—with explicit targeting via CSS selector or XPath. This clearly separates it from sibling tools such as bf_click and bf_extract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use bf_fill instead of alternatives, and no exclusions or preconditions. The tool's purpose is implied by its name, but the expected context (e.g., matching an editable field before clicking/submitting) is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_screenshotBInspect
截取当前页面截图,返回 base64 PNG。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the output (base64 PNG) but does not mention potential side effects, whether a session is required, or whether the screenshot captures the viewport or full page. This is minimal disclosure for a tool that could have implicit state dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that delivers the core information: what the tool does and what it returns. It is front-loaded and free of filler. This is appropriately concise for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters, but the description lacks context about prerequisites (e.g., an active browser session) and the exact scope of the screenshot (viewport vs. full page). Since there is no output schema, the description should clarify return semantics; it does state the format but not the extent. For a low-complexity tool this is acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema is trivially complete (100% coverage). The description adds no parameter information, but none is needed. The baseline of 4 applies because the schema fully documents the absence of parameters, and the description does not mislead or omit anything relevant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (capture) and resource (current page), and specifies the return format (base64 PNG). It is specific enough to be distinguished from sibling tools like bf_navigate or bf_click, though it does not explicitly differentiate from bf_snapshot, which might imply a similar operation. Overall, the purpose is clear and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing an active session), nor does it indicate cases where a different tool would be more appropriate. An agent would have to infer usage from the tool name alone, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_scrollAInspect
页面滚动。direction: down/up,count: 滚动次数(每次约一屏)。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 默认 1 | |
| direction | No | 默认 down |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It adds one useful behavioral detail—each count scrolls approximately one screen—but does not mention whether scrolling is instantaneous, waits for rendering, or handles page boundaries. Nevertheless, scrolling is a low-risk, non-destructive operation and the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one short sentence plus inline parameter hints—and front-loads the main action before parameter details. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description plus schema cover the essential information: what to scroll, which direction, how many times, and the scroll amount. It could be more complete by stating when to use it relative to siblings, but nothing critical is missing for a basic call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so it already documents the direction enum and count default. The description adds meaningful semantic context by defining count as approximately one screen per scroll, clarifying the effect of changing count beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as page scrolling with direction and count parameters. It is distinct from sibling tools (click, navigate, screenshot, snapshot) even though it does not name an alternative explicitly. The verb+resource pair ('页面滚动') is specific, but sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the name and description: whenever the agent needs to scroll the page. However, there is no explicit 'when to use' guidance, no exclusions, and no reference to alternatives such as bf_navigate for moving to a new page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bf_snapshotAInspect
获取页面可访问性快照(AX tree + refs),是 BG 引擎框架感知的输入——Agent 用它感知页面结构,配合 bf_click/bf_fill 形成感知→交互闭环。阶段 2:转发 BG 引擎。
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | 可选:只快照匹配此 CSS 选择器的区域 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
描述披露了返回内容为 AX tree + refs,这对快照类工具是核心行为;但没有任何 annotations,且描述未说明该操作是否为只读、是否需要现有会话、失败时的行为等。信息足够基本使用,但不够透明。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述非常简短,主要信息前置,没有多余罗列。但“阶段 2:转发 BG 引擎”句式含糊,对实际调用帮助有限,略微削弱了表达效果。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
工具复杂度低,只有一个可选参数且无输出 schema;描述已覆盖返回值、调用场景和与相关工具的配合方式,足以让 Agent 判断何时调用。主要不足是“阶段 2”语义不明确,以及缺少会话前置条件说明。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
input schema 对唯一的 selector 参数有 100% 描述覆盖,描述本身没有对参数增加新的含义。在 schema 已充分说明参数的情况下,基线为 3 是合适的。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述以“获取页面可访问性快照(AX tree + refs)”明确了动词和资源,并说明其在感知→交互闭环中的角色。不过它没有直接与 bf_extract 或 bf_screenshot 区分,尽管“AX tree”本身暗含了区别。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
“Agent 用它感知页面结构,配合 bf_click/bf_fill 形成感知→交互闭环”给出了明确的使用时机和协同工具。但未说明何时不应使用或是否存在替代工具,因此不到满分。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
bf_click - First observed
bf_close - First observed
bf_create_session - First observed
bf_extract - First observed
bf_fill - First observed
bf_navigate - First observed
bf_screenshot - First observed
bf_scroll - First observed
bf_snapshot
Publisher details
- Operator
- AiMoJing Technology Limited
- Operator website
- https://browserforest.com
- Vendor relationship
- First-party
- Documentation
- https://browserforest.com/docs
- Trust center
- Unknown
- Restrictions
- Requires API key; developer accounts only
Related MCP Connectors
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceCloud browser API with anti-detect engine + AI behavior layer. Session-based undetectable browsers for AI agents and developers.MIT
- FlicenseNot gradedqualityCmaintenanceProvides AI-powered undetectable browser automation for data harvesting, bypassing protections like Cloudflare, and intercepting network traffic, with 90 tools for element interaction, extraction, and network debugging.2-
- AlicenseAqualityCmaintenanceEnables AI agents to fully control a browser for web automation, including navigation, clicking, typing, scrolling, screenshots, and DOM inspection, with session persistence and anti-bot bypass.4033 npmMIT
- AlicenseAqualityDmaintenanceStealth browser automation for AI agents, using source-patched Chromium to bypass bot detection systems like Cloudflare, reCAPTCHA, and FingerprintJS.28Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.