Skip to main content
Glama

AIWebHelper

让一个人和一个 AI 同看同一个浏览器窗口的 MCP 服务器。 人指出要改的地方,AI 读取同一块屏幕并点击。

为什么

人看到的是屏幕,AI 看到的是文件。用截图把隔在中间的那段填上,两边就开始猜——而猜是猜不准的。「这边帮我改一下」——「哪里?」——一张截图——「不是那儿,是那上面」。

这个工具把这个来回消掉。人只需 Alt+点击 指一下,AI 收到的是:

  하고 싶은 말: 이 합계 글씨가 너무 작아요
  글자: 8,700,000원
  요소: span.v.mono.income
  선택자: div.ledg-sum span.v.mono.income
  짐작: apps/mail/src/client/ledger/  (클래스 ledg-sum)
  감싼 것: div.ledg-sum ← div.ledg-sums ← div.ledg
  ⚠ 잘림: 6px 모자람 (112px 필요, 106px 있음)
  크기: 106×23
  스타일: block · 17px · rgb(30,142,90)
  주소: http://localhost:5360/ledger/e2fa416e
  창 폭: 1000px (기기 픽셀비 2)

窗口宽度和「被截掉多少」一起送过来,这点特别值钱。截断会因为宽度不同时有时无,所以「已经截掉了」和「我这里没有截掉」两边同时为真的情况,在现实中真的会出现。

Related MCP server: Ghostlight

怎么运作

由两个部分搭成。

  • 浏览器扩展(extension/)——用工具栏按钮或 Alt+Shift+P 打开。 只寄生在打开中的那个标签页。打开之前,不会进到任何页面里。 调用服务器的动作由扩展替页面做(bridge.js)。因为如果页面直接去呼叫 127.0.0.1,网站有可能挡住——像 X 这种把 connect-src 钉死的地方,点了也只是「Failed to fetch」。扩展不会碰到这层墙,所以到哪都一致。 (书签工具里没有桥,所以那时就只能由页面自己直接呼叫。)

  • 这边(server.js)——收下点选这种 HTTP 讯息(127.0.0.1:47391),再用 MCP 工具交给 AI。 反方向路径也同一条通道——AI 想让页面做的事,就变成一个挂着的请求由页面来领。 与其每 0.5 秒去敲门一次,改用一期待开的写法,这样就算整天运行在用户正用着的页面上,还是很安静。

重点就是不种进项目里。如果工具要跟着项目走,每个项目都得重新种一遍,也总担心会跟去混进 release。

点选的这一段(extension/picker.js)只有一份。扩展载入同一个文件,服务器也把同一个文件放出成 /picker.js(给书签方式用)。只要有两份,就会出现「书签可以、扩展不作」的那种脑子问题。

端口

47391。7000、8000、5000 等是有太多 dev server 在挤的,早晚会相争。一相争,点选就会被悄悄带到先占了那个编号的程序那里。因此端口开门失败时,每个工具响应前面都会附上这情况。要搬可以用 AIWH_PORT;这时候 /picker.js 会把自己正在监听的端口写进响应里。

挂上

在 ~/.claude.json(或其它 MCP 客户端的设置)加上:

{
  "mcpServers": {
    "aiwebhelper": {
      "command": "node",
      "args": ["/절대/경로/AIWebHelper/server.js"]
    }
  }
}

想改端口就用 "env": { "AIWH_PORT": "47391" }。

安装扩展(首次一次即可)

  1. Chrome 里打开 chrome://extensions

  2. 右上角把开发者模式打开

  3. 点**「加载已解压的扩展程序」**,选本仓库的 extension/ 文件夹

命令行的 --load-extension 在较新的 Chrome(137 以上)已经被封了。前面三步就是唯一的路,只需要做一次。Edge、Whale 也一样。

想用书签方式的话,向 AI 要「how_to_start」即可——那是无法装扩展的浏览器使用的。

使用

  1. 到你想改的页面(生产或本机皆可)

  2. 按工具栏按钮或 Alt+Shift+P,徽标出现 ON

  3. 照常使用即可——这工具不会干扰你。app 照原来的方式跑。

  4. 在要改的地方点击 Alt+点击(point),在出现的输入框里写下你想改成什么,再按回车(或留白)

  5. AI 用 wait_for_pick 等待并原样收走

开了之后,从那时候起你们看的就是同一个窗口。吹一句「帮我把这个画面看一下」AI 就读;说「(帮我)点一下这里」它就会点。AI 也会直接在画面上用 page_point 高亮让你看「你说的是这个吗」,而不用文字。

Alt+P 能切到「连续点选」(按顺序抓几个目标);Esc 关闭一次;按钮再按一次关闭。

工具

人与 → AI 这是:

wait_for_pick

就一直等,等到人点到后拿取。适合在「地方是哪?」时呼叫

latest_pick

最近一次被点到的内容

list_picks

最近几次的内容

clear_picks

把清空

how_to_start

转交给人手ета的参考说明(书签用)

AI → 人正在看的窗:

page_look

现在的画面——哪里页、文字、能点的都还有

page_point

把高亮器盖上「你指的是这个?」

page_click · page_fill · page_key

点击 · 填入 · 按走 key

page_goto

把那个标签页带到别处

page_run

其余的全部——算那些值、滚动、重设宽度

一起看——先知道再写

page_* 这组,动的是人已经登录着的真实窗口。被我按下,就真的会保存、送出、删除。没有撤销。方便到什么程度,代价就大到什么程度。

有这三层围栏。

  • 只在打开的标签页里动作。 打开之前,不会钻进任何页面。只要按 Esc 或工具钮一次,就在那里断掉。徽标上的 ON 表示现在接好了。

  • 只通 127.0.0.1。 没有从外面这家伙搬这窗口的路。

  • 模棱两可,就不按。 比如屏幕上有三个「保存」时,不会偷偷地选第一个——而是把列表交回去,用 nth 去决定等。遇到再问一次只多一次来回;但错了一次就没有回头路了。

host_permissions 写得宽,是为了让打开的那个标签在跳转也连得住。若是用 activeTab ——换页就没了,你只要开着它点一次链接就被断了。所以既宽,那就要靠「只有在开的那个标签里动作」——这就是最大的围栏了。平时不用,还是关掉好。

规则 —— 从 CSS class 找到文件

在 presets/*.json 里,为每个项目写明「class 前缀 → 文件位置」的规则。它按网址自己挑选用(match)。

{
  "name": "내 프로젝트",
  "match": ["localhost", "example.com"],
  "rules": [{ "prefix": "ledg-", "home": "src/client/ledger/" }]
}

没有规则也可以。 元素、选择器、外层容器、被裁剪的部分、窗口宽度——这些都会原样呈现出来;规则只是额外加的罐头。

比起接 React 的 source 信息(_debugSource),这种方式更持久。那个 React 19 已经没了,而且 production build 里 component 名也会被压倒消失。CSS class 就算过建也还在。

我没有做的东西

  • 屏幕截图。 只要有文字、宽度和裁剪量,大多图非必要;while adding图会把对话拖重。

  • 嵌入 app 的方式。 因为每个 React project 都要重新弄一遍,还会担心它混进部署产物里。

  • Electron 样子。最初我们也尝试过;但那还是有人要复制 — 把那种来回留在掉。用 MCP 的话,AI 就直接拿到。

  • 远程联机。 只开 127.0.0.1——沒有必要去接收别人浏览器掷过来的点选。

Available Tools

13 tools
clear_picksA

짚어 둔 것을 비운다. 새 이야기를 시작할 때.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It clearly states the tool 'empties' (비운다) the picked items, which signals a destructive/clearing operation. However, it does not disclose whether the operation is irreversible, what exactly gets cleared (all picks vs. recent ones), or whether confirmation is needed. The core effect is conveyed, but the details are thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: first states the action, second states when to use it. Every word contributes meaning, and the core information is front-loaded. No filler or redundant schema repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description provides the essential facts: what it clears and the occasion for using it. It could be slightly more explicit in defining what '짚어 둔 것' are, but this is clarified by sibling tool names and the context of a story-starting workflow. The description is adequate, though not exhaustive.

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?

There are no parameters and the schema already fully covers them (100% coverage). With zero parameters, the description has little to add about parameter semantics. The baseline of 4 applies; the description's contextual note about starting a new story provides some extra purpose but no parameter-specific guidance is needed.

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 clear action: '짚어 둔 것을 비운다' ('empties what was picked/pointed out'). This clearly identifies the tool as clearing collected 'picks' and distinguishes it from sibling tools like list_picks, latest_pick, and wait_for_pick. However, the resource is phrased indirectly ('짚어 둔 것') rather than explicitly named 'picks,' so it relies on context.

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 provides an explicit usage context: '새 이야기를 시작할 때' ('when starting a new story'). This tells the agent when to use the tool but does not mention exclusions or compare it to alternatives, such as using list_picks before clearing or avoiding it mid-story.

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

how_to_startA

사람에게 건넬 안내 — 브라우저에 «짚기» 를 켜는 법(북마클릿·콘솔). 처음 한 번 필요하다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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. The text makes clear that the tool itself is merely a guide and does not perform a direct picking or state-changing browser action, which helps set the right expectation. It does not detail output format, but the purpose of a human-facing guide is sufficiently conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single sentence that conveys the audience, the required action, the installation channel, and the one-time usage characteristic. No redundancy, no filler, no explanation of obvious details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool used once at the beginning, the description provides the core needed context: who the instruction is for, what it changes in the browser, and that it is a one-time prerequisite. It could mention what the tool returns or how to complete the given instructions, but for the minimal meta purpose this is sufficient.

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?

The tool accepts zero parameters, so there is no parameter meaning to be lost. The description does not need to compensate for any schema gaps because none exist.

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 clearly states that this is a guide to hand to a person for turning on the browser picking feature via bookmarklet or console. It distinguishes itself from the sibling tools that perform actual picking/page actions by framing itself as a one-time explanatory resource rather than an operation.

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 phrase '처음 한 번 필요하다' (needed only once at the beginning) gives explicit timing context for when this tool should be used. It does not explicitly name alternatives, but the one-time setup nature clearly separates it from the recurring pick and page tools.

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

latest_pickA

가장 최근에 짚은 곳. 기다리지 않고 지금 있는 것만 본다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full behavioral burden. It discloses one useful trait: the tool is non-blocking and operates on the current state only, not waiting for a new pick. It does not however state whether calling it mutates anything, what happens when no pick exists yet, or what exactly is returned, so transparency is adequate but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, front-loaded with the main purpose, and every phrase earns its place. The first sentence states the resource; the second gives the decisive behavioral contrast of not waiting and seeing only current state. There is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter, the description is mostly sufficient and the no-wait behavior is important context. But there is no output schema, and the description does not clarify what the returned value looks like or what the tool does when no pick has occurred. Those gaps matter for an AI agent deciding how to use the result or how to handle an empty state.

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?

The tool takes zero parameters, so the input schema carries little meaning. With 0 params, the baseline is 4, and the description does not need to compensate for parameter documentation. Nothing about parameters is missing or ambiguous.

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 identifies a specific resource, '가장 최근에 짚은 곳' (the most recently picked place), and gives the essential verb concept of '본다' (looks/retrieves what is currently there). It also differentiates itself from wait_for_pick by emphasizing '기다리지 않고', so the purpose is clear. It stops short of 5 because 'pick' is never explicitly defined and the retrieval verb is somewhat vague.

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 phrase '기다리지 않고 지금 있는 것만 본다' gives the agent a clear usage context: use this when the current, latest picked value is wanted immediately, without waiting for a future pick. This also contrasts naturally with the sibling wait_for_pick. However, the description does not explicitly name alternatives like list_picks or explain when not to use it, so it misses a 5.

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

list_picksB

최근에 짚은 곳들을 새것부터 본다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo몇 개까지 (기본 10)

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does state ordering; newest first, and implies read-only listing, but it does not explain whether it destroys anything, how it handles empty state, or if there are side effects. For a simple list read this is adequate but thin, so a 3 is appropriate.

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?

A single short Korean sentence is concise and front-loaded with the core behavior: viewing recent picks with ordering. It does not waste words or repeat schema information, although it could have included a tad more context without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter listing tool without an output schema, the description states the relevant ordering (newest first) and recency of items, but the word 'picks' is not clearly defined in the context of these sibling tools. Simple enough that an agent might infer it, but there is room to specify output shape or edge cases.

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

Parameters3/5

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

The only parameter 'limit' has a full description in the schema ('how many, default 10'), covering 100% of parameters. The tool description adds no extra meaning for the limit parameter, so the baseline score of 3 applies without bonus.

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 'recently picked places, newest first' clearly identifies the task as listing picks in reverse chronological order. It distinguishes from sister tool latest_pick by implying multiple items rather than a single newest one, though it could be more explicit about that contrast.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like latest_pick or clear_picks. The phrase 'recently picked' hints that it is appropriate for seeing recent entries, but it does not state circumstances, exclusions, or why an agent might select it over a sibling tool.

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

page_clickA

화면의 무언가를 누른다. 선택자(CSS)나 보이는 글자로 찾는다. 사람이 보는 창에서 진짜로 눌리는 것이다 — 저장·삭제·발송도 그대로 일어난다. 여럿에 맞으면 누르지 않고 목록을 돌려준다. 그때 nth 로 정한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
nthNo여럿일 때 몇 번째인지 (1부터)
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)
textNo보이는 글자로 찾기 (선택자 대신)
selectorNoCSS 선택자

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden, and it carries it well. It discloses that the click is a real, impactful action that can save/delete/send, and that it does NOT click when multiple matches occur — it instead returns a list. This is exactly the kind of side-effect/cancellation behavior an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded. '화면의 무언가를 누른다' states the core action first. Each sentence earns its place: method of finding, realness/severity of clicks, and ambiguity/return behavior. There is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 optional parameters and no output schema, the description covers the most important behavior: real click, side effects, find-by-selector/text, and ambiguous-match behavior with nth. It could be slightly more explicit about page parameter before invocation, but the schema already documents it. Overall, essential information is present.

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

Parameters3/5

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

Schema coverage is 100%, and each parameter has already has clear descriptions (selector, text, page, nth, 1-based index). The description adds tells how targets can be found ('CSS selector 또는 visible text') and mentions visual text, which maps to the 'text' parameter, but it does not meaningfully explain parameter semantics beyond 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?

The description clearly states a verb ('누른다' - clicks) and a specific resource ('화면', the screen). It also explains how it finds targets (CSS selector or visible text) and that it performs real clicks with side effects like save/delete/send. This distinguishes it well from click-like tools such as page_collect or page_look, even without naming siblings.

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

Usage Guidelines3/5

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

The usage context is implied: use this tool when you want to click something visible on the page. It also gives one internal usage rule: when multiple elements match, it returns a list instead of clicking, and then nth should be provided. However, it never contrasts itself with alternatives like page_collect or page_run, or states when not to use it.

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

page_fillA

입력칸에 글을 넣는다. React 같은 곳에서도 먹도록 값 변경을 알린다.

ParametersJSON Schema
NameRequiredDescriptionDefault
nthNo여럿일 때 몇 번째인지 (1부터)
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)
textYes
submitNo넣고 Enter 까지 (기본 false)
selectorYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it does disclose an important behavioral trait: the tool not only fills the input but also fires the necessary value-change event so framework-managed fields work. This is genuinely useful context beyond the schema, though it does not mention submit behavior or failure outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, purposeful sentences with no filler. The core action is front-loaded, and the React value-change detail is added only as a second sentence because it is an important behavioral edge case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no annotations and no output schema, the description conveys the main action and one important nuance but does not explain what happens on submit, how nth/page apply, or what failure indications might look like. It is minimally viable, not comprehensive.

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

Parameters3/5

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

The schema already documents submit, page, and nth, and the description loosely indicates that text is the content and selector is the target input. With 60% schema coverage, the description adds modest value for the two undocumented parameters but does not deeply compensate for the gaps.

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 action—putting text into an input field—which is not a tautology and is more precise than generic synonyms. It also adds the React value-change dispatch behavior, which helps differentiate it from keyboard or click tools. It does not explicitly name sibling tools, but the verb and resource distinction is clear enough.

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

Usage Guidelines3/5

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

The remark that it triggers value changes so it works in React-like contexts implies a use case, but there is no explicit guidance about when to choose this over page_key or another alternative. Context is implied, not stated as a decision rule.

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

page_gotoB

사람이 보고 있는 탭을 다른 주소로 옮긴다.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description itself must convey behavioral traits, and it does communicate that this is a state-changing navigation action on an existing tab. However, it does not disclose whether the tool waits for page load, whether it can fail on invalid addresses, or whether it replaces the current tab rather than opening a new one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no redundancy or filler. It front-loads the essential ideas: target is the current tab, action is navigation, goal is a different address.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple navigation tool, the description plus schema is enough to understand the basic call: provide a target address and optionally specify a tab. It is still missing context about return behavior, loading expectations, and when this tool is intended to be preferred over browser-level alternatives.

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

Parameters3/5

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

Schema coverage is only 50%, so the description should compensate for the undocumented `url` field. The phrase '다른 주소' adds navigation meaning to that parameter, but it does not explicitly map to the parameter name, and it says nothing about the `page` parameter or how it disambiguates tabs.

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 Korean description states a clear action: move the currently viewed tab to another address, which unmistakably identifies this as a navigation command. It distinguishes itself from siblings like page_click and page_fill in behavior, but it does not explicitly name or contrast those alternatives, which keeps it from a 5.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use page_goto instead of page_click, page_run, or another page-level tool. There is no when-to-use/when-not-to-use statement, so an agent must infer appropriateness from the tool name and sibling list.

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

page_keyB

키를 누른다 (Enter · Escape · Tab · ArrowDown 등).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
nthNo여럿일 때 몇 번째인지 (1부터)
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)
selectorNo이 요소에 (없으면 지금 focus 된 곳)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral disclosure burden. It only says 'presses a key' and does not mention whether the key press goes to the focused element, the optional selector target, or whether it can cause side effects like tab navigation or focus changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The examples are immediately useful and directly relevant to the single required parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The overall tool context is not fully established: there are no annotations or output schema, and the description omits important behavioral details such as focus handling, optional targeting context, and expected execution outcome.

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

Parameters3/5

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

Schema description coverage is 75%, so most parameters are already documented. The description adds value for the key parameter by listing concrete acceptable values, but adds nothing for nth, page, or selector beyond what the schema already explains.

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?

The description states a precise action, '키를 누른다' (presses a key), with concrete key examples. The verb-and-object pairing clearly distinguishes it from page_navigation, clicking, and filling tools among the siblings.

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

Usage Guidelines2/5

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

No usage context, when-to-use guidance, or alternatives are provided. The description simply says 'presses a key' without explaining when to choose this over page_click, page_fill, or other sibling tools.

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

page_listA

지금 짚기가 켜져 있는 탭들. 탭이 둘 이상이면 조작 도구가 «어느 탭인지» 를 되물으므로, 그때 여기서 골라 page 로 준다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries the full behavioral burden. It explains that the output represents currently picked tabs and how that output is consumed by manipulation tools. It does not disclose the exact return shape, what the values look like, or edge cases such as an empty list, and there is no output schema to fill that gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the subject stated first and the usage context immediately following. There is no filler or repeated structural information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool, the description is mostly complete: it tells the agent what data is available and how to use it. The main missing piece is an explicit statement of the returned value's shape, especially without an output schema, but the intended use is still inferable.

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?

The input schema has zero properties, so parameter semantics are irrelevant here. Schema description coverage is 100%, and the description correctly avoids inventing parameter details.

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 identifies the tool as showing tabs that currently have 'picking' enabled, which matches the page_list name and its role of selecting a page. It does not use an explicit verb like 'returns a list,' but the resource and state are clear. It is distinguishable from the manipulation tools, though it does not explicitly differentiate itself from sibling pick tools such as list_picks.

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 usage scenario: when more than one tab is picked, manipulation tools ask which tab is intended, and the agent should call page_list and pass the chosen value to page. This is clear and actionable. However, it does not name alternative tools or say explicitly when not to use it.

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

page_lookA

사람이 보고 있는 화면을 읽는다. 주소·제목·창 크기와, 눈에 보이는 글과 누를 수 있는 것들. 무엇을 할지 정하기 전에 먼저 이것을 부른다 — 화면이 이미 바뀌어 있을 수 있다.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)
selectorNo이 안만 읽는다 (없으면 화면 전체)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the burden of behavioral disclosure. It clearly indicates this is an observation operation and specifies exactly what will be read: URL, title, window size, visible text, and clickable elements. The note that the screen may have changed adds useful situational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: it states the main behavior, enumerates subject matter, and closes with practical usage guidance. Every sentence adds value, and there is no repetition or fluff.

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 tool with two optional parameters, a fully documented schema, and no output schema, this description provides sufficient context. It explains why and when to call the tool plus the content of the returned information, so an agent can select and invoke it correctly without missing pieces.

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

Parameters3/5

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 input schema. The description adds no parameter-level detail beyond the schema, so it meets the baseline without providing extra semantic value.

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 verb ('읽는다') and a specific resource: the screen a person is looking at. It also enumerates what is captured — address, title, window size, visible text, and clickable elements — making the tool's read-only role unmistakable relative to sibling action tools like page_click and page_goto.

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?

Explicitly instructs the agent to call this tool first, before deciding what to do, and gives the rationale: the screen may have changed. It clearly articulates when to use it, though it does not explicitly name alternatives or say when not to use it.

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

page_pointA

사람에게 «이거 말하는 거예요» 하고 화면에서 짚어 보인다. 형광펜처럼 테두리를 그리고 말을 붙인다. 무엇을 고칠지 이야기할 때, 말로 설명하는 대신 이것을 쓴다.

ParametersJSON Schema
NameRequiredDescriptionDefault
nthNo여럿일 때 몇 번째인지 (1부터)
sayNo붙일 말
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)
selectorYes

TDQS

A4.1/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full responsibility for behavior. It clearly discloses the visible effect: show the user the element, draw a highlight, and attach a message. It is slightly less transparent about whether the highlight persists or whether any page state is changed, but the core behavior is well described.

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 description is short and well-structured: it states the action, the visible result, and a clear use case. A tiny redundancy between the parenthetical example and the following explanation keeps it from being fully compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and only four simple parameters, the description plus the schema is very sufficient for callers. The main missing point is that page_point does not say whether it has any lasting or permanent side effects, such as leaving an annotation after the call.

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

Parameters3/5

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

The schema already describes most parameters (nth, say, page), so the description adds little beyond a broad confidence. It reinforces the purpose of selector and say, but it does not clarify what selector is or give details about return values. With schema coverage at 75%, the description does not need to do all the heavy lifting but also does not add significant extra meaning.

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?

The description uses a specific verb '짚어 보인다' (point out) and explains the mechanism: draws a highlight-like border and attaches a word. This clearly distinguishes page_point from siblings such as page_click or page_fill, making its purpose immediately recognizable.

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 explicitly says to use this when discussing what to fix, instead of explaining verbally. This gives a clear usage context, though it does not name sibling tools or explicitly say when not to use other page_* tools.

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

page_runA

페이지 안에서 자바스크립트를 돌리고 결과를 받는다. 위 도구로 안 되는 것 전부 — 값 재기·스크롤·폭 바꾸기·여러 단계. 마지막 식의 값이 결과다. await 를 쓸 수 있다.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsYes
pageNo어느 탭인지 — 주소나 제목의 일부 (탭이 둘 이상일 때만 필요)

TDQS

A4.4/5.0
Behavior4/5

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

Discloses important behavior: it runs in the page, supports await, and returns the value of the last expression. It does not mention error handling or side effects, but for a JavaScript-execution tool the central effect is clearly stated, and no annotations were provided to rely on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, purposeful sentences with no filler. The main verb is named first, followed by usage context and behavioral details needed to invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description explains the return convention and the supported JavaScript capabilities, which is the core missing context. It does not specify error/timeout conventions, but for a fallback automation tool this is still a sufficiently useful definition.

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?

The page parameter is already documented in the schema, while the description adds meaningful semantic for the js parameter: it is a command string that can use await and whose final expression is the result. This compensates for the moderate schema coverage and gives actionable input rules.

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 that it executes JavaScript inside a page and returns the result, which is a specific action on a clear resource. It also describes example operations (measuring, scrolling, resizing, multiple steps) and distinguishes itself from the specialized sibling page tools.

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?

Explicitly positions the tool as the fallback for anything the other page_* tools cannot do, giving strong when-to-use guidance. It does not name the specific sibling tools as alternatives, but the exclusion is likely clear enough from the surrounding tool set.

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

wait_for_pickA

사람이 화면에서 «여기» 라고 짚을 때까지 기다렸다가 그 자리를 돌려준다. «어디를 고칠까요» 라고 되묻는 대신 이것을 부른다. 이미 짚어 둔 것이 있으면 바로 준다.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_secNo몇 초까지 기다리나 (기본 120)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full load, and it does explain waiting, returning the selected position, and returning immediately if a pick already exists. However, it does not disclose timeout behavior, what happens when no pick occurs, or whether the call mutates or persists any internal pick state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences cover the action, the preferred usage context, and a key optimization. Each sentence is useful, there is no redundant repetition of the schema, and the primary behavior is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only one optional parameter and no output schema, so the description communicates the basic interaction well. Still, it leaves out the return value's concrete shape (e.g., coordinates versus element reference) and fails to state what occurs after timeout, which are relevant for an agent deciding how to handle the response.

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

Parameters3/5

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

The schema already fully documents timeout_sec with a clear summary and default value. The description adds the contextual fast-path condition, but it does not add new meaning to the parameter itself, so this dimension stays at the baseline for full schema coverage.

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 clearly defines a specific verb and resource: it waits until a person taps on the screen and then returns that spot. It does not explicitly contrast itself with siblings such as latest_pick or clear_picks, but the wait-for-interaction behavior is semantically distinct enough for the reader to understand the tool's core function.

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 explicit usage direction: instead of asking 'where should I fix it', call this tool. It also notes the immediate-return behavior when a pick already exists, which guides the agent in expecting a likely cheap call or a potentially blocking wait depending on state.

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.

  1. 13 tool updatesv0.1.0
    • First observedclear_picks
    • First observedhow_to_start
    • First observedlatest_pick
    • First observedlist_picks
    • First observedpage_click
    • First observedpage_fill
    • First observedpage_goto
    • First observedpage_key
    • First observedpage_list
    • First observedpage_look
    • First observedpage_point
    • First observedpage_run
    • First observedwait_for_pick

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation5/5

The tools split cleanly into pick management, page interaction, and onboarding. The pick tools each have a distinct behavior — waiting, returning latest, listing, clearing — and the page_* tools are distinct interaction actions, so agents should be able to choose the right one.

Naming Consistency3/5

The page_* tools follow a clear, consistent verb pattern, but the pick-related tools are inconsistent: latest_pick, list_picks, clear_picks, and wait_for_pick mix singular/plural and different phrase structures. how_to_start is also a one-off, making overall naming mixed but still readable.

Tool Count5/5

With 13 tools, the server is well-scoped for its purpose. The tools cover onboarding, pick lifecycle, tab awareness, page reading, interaction, and a JavaScript escape hatch without feeling bloated or redundant.

Completeness5/5

The tool set covers the full assisted-browsing workflow: setup, picking, waiting, page introspection, navigation, clicking, typing, pointing out, and arbitrary JavaScript for unusual cases. The page_run tool especially fills any long-tail gaps that the more specialized tools cannot handle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server that lets AI agents drive your real Chromium browser with your existing signed-in sessions, providing visible, local, and inspectable automation for tasks like navigation, clicking, typing, and form filling.
    25
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local browser MCP server that lets AI assistants control a real desktop browser via tools like navigate, snapshot, and search_web.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A native MCP server that gives AI assistants full Chrome control via the DevTools Protocol and an unpacked extension, including semantic element refs, real input, screenshots, and browser/tab/window management. It exposes 43 callable tools with a visible control overlay and an optional read-only security profile.
    3
    MIT