Skip to main content
Glama

AIWebHelper

Ein MCP-Server, bei dem Mensch und KI dasselbe Browserfenster sehen.
Der Mensch pickt die Stelle, die geändert werden soll; die KI liest denselben Bildschirm und klickt.

Warum

Der Mensch sieht auf den Bildschirm, die KI sieht in die Dateien. Verbindet man die Lücke mit Screenshots, beginnt man zu raten – und Raten liegt daneben. „Das hier bitte mal ändern“ – „Welche Stelle?“ – Screenshot – „Nicht die, sondern die darüber.“

Dieses Tool macht das Ping-Pong überflüssig. Wenn der Mensch per Alt+Klick pickt, bekommt die KI genau das:

  하고 싶은 말: 이 합계 글씨가 너무 작아요
  글자: 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)

Dass die Fensterbreite und das Maß des Abschneidens zusammenkommen, ist besonders wertvoll. Das Abschneiden erscheint und verschwindet je nach Breite: „Es ist abgeschnitten“ und „Es ist nicht abgeschnitten“ können beide zugleich wahr sein.

Related MCP server: Ghostlight

Wie es funktioniert

Es sind zwei Hälften.

  • Browser-Erweiterung (extension/) – ein- und ausgeschaltet über den Tool-Button oder Alt+Shift+P. Sie hängt nur an dem eingeschalteten Tab. Vor dem Einschalten greift sie auf keine Seite zu. Die Serveranfragen übernimmt die Erweiterung (bridge.js), weil es geeignet laufen kann, wenn die Seite selbst 127.0.0.1 aufruft – bei X beispielsweise, das connect-src festnagelt, endet ein Pick sonst nur mit „Failed to fetch“. Die Erweiterung stößt nicht an diese Wand und funktioniert dadurch überall gleich. (Ein Bookmarklet hat keine Brücke; dort ruft die Seite den Server direkt.)

  • Hier (server.js) – nimmt die Picks über HTTP entgegen (127.0.0.1:47391) und reicht sie der KI um MCP-Werkzeuge weiter. Die Gegenrichtung geht durch dieselbe Tür: Was die KI erledigen will, holt sich die Seite über einen offengehaltenen Request. Statt alle 0,5 Sekunden zu klopfen, bleibt die Anfrage geöffnet; so bleibt es ruhig, selbst wenn die Seite den ganzen Tag in einer gebrauchten Ansicht läuft.

Das Projekt selbst wird dabei nicht eingepflanzt – das ist der Punkt. Würde das Tool dem Projekt folgen, müsste man es in jedes Projekt neu einbauen und hätte Angst davor, dass es in den Deploy gerät.

Das Pick-Einzelteil (extension/picker.js) existiert nur in einer Ausfertigung. Die Erweiterung legt diese Datei selbst in die Seite, und der Server liefert dieselbe Datei als /picker.js für das Bookmarklet aus. Zwei Eintrachtungen würden genau „im Bookmarklet geht's, in der Erweiterung nicht“-Probleme erzeugen.

Port

47391. Die 7000-/8000-/5000er-Bereiche sind voll mit Dev-Servern; irgendwann stößt man zusammen – und dann fließt der Pick leise zu dem zuerst geöffneten Nutzinteresse. Wenn sich die Tür nicht öffnen muss, wird diese Tatsache vor jede Werkzeug-Antwort geschrieben. Man kann mit AIWH_PORT wechseln; dann liefert /picker.js mit own gehörten Port aus geliefert.

Installieren

In ~/.claude.json (oder die Konfiguration deines MCP-Clients) schreibt:

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

Zum Portwechseln nimm "env": { "AIWH_PORT": "47391" }.

Erweiterung einbauen (einmalig)

  1. In Chrome chrome://extensions öffnen

  2. Rechts oben Entwicklermodus einschalten

  3. Entpackte Erweiterung laden → das extension/-Verzeichnis dieses Repositories auswählen

Die Kommandozeilenoption --load-extension ist im neueren Chrome (137+) blockiert. Die drei Schritte oben sind der einzige Weg, und du brauchst ihn nur einmal machen. In Edge und Whale liegt derselbe Schalter an derselben Stelle.

Wenn du es als Bookmarklet nutzen willst, frag die KI nach «how_to_start» – sie reicht es dir aus. Das ist für Browser, bei denen man keine Erweiterung installieren kann.

Benutzung

  1. Geh auf den zu ändernden Bildschirm (Produktion oder lokal)

  2. Drück den Toolbutton oder Alt+Shift+P – im Badge erscheint ON

  3. Schreibe einfach – das Werkzeug stört nicht. Die App läuft wie gewöhnlich

  4. An der gewünschten Stelle Alt+Klick → ins eingebaute Eingabefeld auf dem Bildschirm schreiben, was du dir geändert hättest, Enter (oder leer lassen)

  5. Die KI wartet mit wait_for_pick und übernimmt genau das

Wenn du es anschaltung lässt, seht man ab diesem Zeitpunkt dasselbe Fenster. Sagst du „Schau dir den Bildschirm an“, liest die KI ihn; sagst du „Klick mich hier“, klickt sie; und wenn die KI „Meinst du das da?“ meine will, zeigt sie es mit page_point statt einer Rückfrage.

Alt+P schaltet «Dauerhaft-Picken» (mehrere nacheinander), Esc schaltet aus, den Button erneut wieder wird sie deaktiviert.

Werkzeuge

Mensch → KI:

wait_for_pick

Nicht weiter, bis ein Mensch pickt, und der übergibt. Statt „Wo soll ich reparieren?“ zu rufen

latest_pick

Der zuletzt erzeugte Pick

list_picks

Die letzten Picks

clear_picks

Anzeigen

how_to_start

Brauch an den Menschen (Bookmarklet)

KI → Fenster, in der der Mensch schaut:

page_look

Aktueller Bildschirm – Adresse, Text, Klickbares

page_point

„Genau diese Stelle?“ – mit Highlight zeigen

page_click · page_fill · page_key

Drücken · Schreiben · Taste

page_goto

Den Tab auf eine andere Adresse

page_run

Der Rest: Werte ändern, scrollen, Fensterbreite ändern

Gemeinsam ansehen – was man dazu wissen soll

page_* bewegt das echte Fenster, in dem der Mensch angemeldet ist. Was angeklickt wird, wird wirklich ge späten, wirklich gelöscht. Es gibt kein Undo. Die Bequemlichkeit ist genauso der Preis.

Der Schutzkreis hat drei Elemente:

  • Es läuft nur im eingeschalteten Tab. Vor dem Einschalten greift es nirgendwo ein. Mit dem Esc oder dem Toolbutton beendet man es in diesem Moment. Das ON im Badge bedeutet, dass die Verbindung gerade besteht.

  • Es öffnet nur 127.0.0.1. Von außen gibt es keinen Weg, dieses Fenster zu steuern.

  • Wenn es unklar ist, klickt es nicht. Wenn dreimal „Speichern“ auf dem Bildschirm steht, wählt es nicht heimlich den ersten aus, sondern gibt die Liste zurück und lässt nth entscheiden. Eine Rückfrage kostet einen freien Austausch, ein falscher Wert ist aber unwiderruflich.

host_permissions ist weit gehalten, damit die Verbindung bleibt, auch wenn der eingeschaltene Tab die Seite wechselt. activeTab so verschwinden beim Seitenwechsel etwas – schon das Drücken eines Links hat die anwendbare Verbindung geknickt. Weil die Erweiterung so einfach wirkt, wartet die Tabliste der eingeschalteten Seiten ist das einzige Schutzdach, und es ist in tugend bright, das Werkzeug abzuschalten, wenn man es nicht braucht.

Regeln – von der Klasse zur Datei

In presets/*.json ist für jedes Projekt oder Häufungspräfix/ file location“ eingetragen. Die Auswahl erfolgt automatisch über die Adresse (match).

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

Achtung: Regeln sind unnötig. Element, Selektor, den Wrapper, das Abschneiden, die Fensterbreite – alles wandert mit; die Regeln sind ein Bonus.

Das hält uns länger als die React-Quellinfos (_debugSource). Die wurden in React 19 entfernt, außerdem werden in Production-Builds die Komponentennamen abgesperrt und wegkomprimiert. CSS-Klassen überleben den Build.

Was ich nicht gebaut habe

  • Screenshot. Wenn man Text, Größe und das Maß des Abschneidens hat, braucht man ein Bild meist nicht; Bilder machen die Unterhaltung schwer.

  • Einbau ins Projekt. Müsste man für jedes Projekt neu machen und parent sich in den Deploy.

  • Electron-Hülle. Am Anfang habe ich so gemacht, aber dann bleibt ein Copy-Paste-Roundtrip durch den Menschen. Mit MCP bekommt es die KI direkt.

  • Fernverbindung. Es öffnet nur 127.0.0.1. Es gibt keinen Grund, Picks aus fremden Browser zu akzeptieren.# AIWebHelper

Ein MCP-Server, auf dem Mensch und KI dasselbe Browserfenster betrachten.
Der Mensch pickt die zu ändernde Stelle; die KI liest denselben Bildschirm und klickt.

Warum

Der Mensch sieht den Bildschirm, die KI sieht die Dateien. Wenn man die Lücke mit Screenshots überbrückt, fängt man an, übereinander zu raten – und Raten ist daneben. „Das hier bitte mal ändern“ – „Welche Stelle?“ – Screenshot – „Nicht die, sondern eine darüber.“

Dieses Werkzeug macht diesen Ping-Pong überflüssig. Wenn der Mensch per Alt+Klick pickt, bekommt die KI genau das hier:

  하고 싶은 말: 이 합계 글씨가 너무 작아요
  글자: 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)

Dass die Fensterbreite und das Ausmaß des Abschneidens mitkommen, ist besonders wertvoll. Das Abschneiden tritt je nach Breite auf und verschwindet wieder: „Es ist abgeschnitten“ und „Es ist nicht abgeschnitten“ können beide zugleich wahr sein.

Wie es funktioniert

Es sind zwei Hälften.

  • Browser-Erweiterung (extension/) – eingeschaltet über den Toolbar-Button oder Alt+Shift+P. Sie hängt nur am aktivierten Tab. Vor dem Einschalten greift sie auf keine Seite zugreift. Den Server ruft die Erweiterung auf (bridge.js), nicht die Seite. Denn wenn die Seite selbst 127.0.0.1 anruft, kann die Website das blocken – bei X etwa ist connect-src so eng gesetzt, dass ein Pick sonst nur mit „Failed to fetch“ endet. Die Erweiterung stößt nicht auf diese Mauer und läuft damit überall gleich. (Ein Bookmarklet hat keine Brücke; in diesem Fall ruft die Seite direkt auf.)

  • Das hier (server.js) – nimmt Picks über HTTP entgegen (127.0.0.1:47391) und reicht sie der KI als MCP-Werkzeuge aus. Die Gegenrichtung läuft durch dieselbe Tür: Was die KI zu erledigen wünscht, holt sich die Seite über einen offen gehaltenen Request. Statt alle 0,5 Sekunden anzuklopfen, bleibt der Request offen – so bleibt es still, auch wenn die Seite den ganzen Tag benutzt.

Nicht in das Projekt eingepflanzt zu sein, ist gerade der Punkt. Wenn das Werkzeug dem Projekt folgen würde, müsste man es für jedes Projekt neu einpflanzen und sich um das Produkt und den Deploy verkaufen.

Die Picker-Einheit (extension/picker.js) gibt genau einmal. Die Erweiterung fügt diese Datei ein, und der Server liefert dieselbe Datei als /picker.js aus (für das Bookmarklet). Würdest du beide parallele Dateien führst, entstehen „als in the Bookmarklet geht, in der Erweiterung nicht“-Fälle.

Port

47391. Die 7000-, 8000- und 5000er-Bereiche nutzen viele Dev-Server; irgendwann passen sie sich zusammen. Wichtigste! Dann fliegt der Pick gedacht zu der Einheit, die zuerst geöffnet wurde. Deshalb: Lässt sich die Tür nicht öffnen, steht genau das in jeder Antwort – und Wort als Hinweise. Verschieben lässt sich der Port über AIWH_PORT – dann liefert /picker.js mit eingebauter eigener Port aus.

Installation

In ~/.claude.json (oder der Konfiguration des MCP-Clients, den du benutzt):

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

Um den Port zu ändern: "env": { "AIWH_PORT": "47391" }.

Extension einrichten (einmalig)

  1. In Chrome chrome://extensions öffnen

  2. Oben rechts Entwicklermodus einschalten

  3. Entpackte Erweiterung laden → den Ordner extension/ dieses Repos auswählen

Die Kommandozeilenoption --load-extension ist in neuerem Chrome (137+) blockiert. Diese drei Schritte sind der einzige Weg, und nach einem einz langen. Edge und Whale haben die Auswahl an derselben Stelle.

Wenn du es als Bookmarklet nutzen möchtest, fragst du die KI mit «how_to_start» – das bekommst du dann. Für Browser, die sich nicht verlassen kann.

Benutzung

  1. Geh zu dem zu ersetzenden Screen (Produktion oder lokal)

  2. Drück den Toolbar-Button oder Alt+Shift+P – im Badge steht ON

  3. Einfach weiter 코사용 – das Werkzeug stört nicht. Die App läuft normal weiter

  4. Alt+Klick auf die zu ändernde Stelle → ins Eingabefeld im Bildschirm schreiben, was geändert werden soll; Enter (auch leer lassen)

  5. Die KI wartet mit wait_for_pick auf das und bekommt dann

Läuft es einmal, sieht man danach denselben Fenster zu. „Schau dir diesen Bildschirm an“ – danndir liest ihn die KI, „Drück hier“ – drückt die KI. Und wenn die KI „Meinten Sie das?“ fragt, zeigt sie es nicht verbal, sondern zu einer page_point.

Alt+P schaltet «Dauerpick» (wenn mehrere Stände nacheinander gepickt werden), Esc aus, oder den Button wieder drücken.

Werkzeuge

Mensch → KI:

wait_for_pick

Wartet, bis der Mensch pickt, und zeiget ihn. Statt „Wo soll ich reparieren?“ die MK in rufen

latest_pick

Der letzte &

list_picks

Die letzten Picks

clear_picks

wirklich

how_to_start

Anleitung, die man dem Menschen überreicht (Bookmarklet)

KI → das Fenster, das der Mensch sieht:

page_click · page_fill · page_key

page_key

page_look

Der aktuelle Bildschirm – Adresse, Text, klickbare Elemente

page_point

„ …“ – zeigt T damit mit einem Textmarker

page_click · page_fill · page_key

Klicken · Schreiben · Taste

page_goto

Diesen Tab zu anderen Adressen

page_run führt

Den Rest – alte Werte neu ausrechnen, scrollen, Breite ändern

Zusammen sehen – Wissenswertes

page_* bewegt das echte Fenster, in dem der Mensch angemeldet ist. Ein Klick wird: wirklich gescht spoken, wirklich gelöscht zwischen. Nicht mehr rückgängig zu machen. Die Bequemlichkeit um den Preis.

Es gibt drei Zäune:

  • Es läuft im aktiven Tab nur. Vor dem Einschalten greift das Werkzeug auf keine Seite zurück. Schaltest du mit Esc oder dem Toolbutton ab, wird die Verbindung an der Stelle abgeschnitten. Das ON im Badge weißt, dass sie noch verbunden ist.

  • Es öffnet sich nur auf 127.0.0.1. Von außen gibt es keinen Weg, zwischen so sicher:

  • Im Zweifel wird nicht geklickt. Wenn ein “Speichern” auf dem Bildschirm dreimal gibt, wählt sie nicht stillschritst. Das Array: der Liste weiter, den sie zurückgibt, und nth entscheidet. Ihre Wolle passt sich er, eine falsche ohne Rückfrage nicht.

host_permissions ist so breit, damit die Verbindung erhalten bleibt, auch wenn derwonkte Tab die Seite wechselt. activeTab würde beim SeitПереход verschwinden, und selbst ein Klick auf einener Link den Aufbau bricht. Umso breiter der Bereich, die Liste der aktiven Tabs ist der einzige Zaun – also aus besser: solange man es nicht benutzt, es ausschalten.

Regeln – Von der Klasse zur Datei

In presets/*.json wird pro Projekt eine «Klassenprefix → Dateipfad» abgelegt. Die Auswahl wird automatisch über die Adresse geprüft (match).

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

Regeln braucht es nicht. Elemente, Selektoren, eigene Container, Inhalt /abgeschnitten, Fensterbreite – Alles wird ausgeben, vieles Gute oder nicht.

Regeln bezahlen ist nur ein Bonus.

Diese Methode ist langlebiger als Reacts Quell-Information (_debugSource): Die hat in React 19 ohnehin fehlt, und im Production-Build werden Komponentennummern komprimiert. CSS-Klassen besitzen den Build überstehen.

Was fehlt

  • Screenshots. Mit Text, Gr Go and Ausmaße des Abschneidens braucht man meist kein Bild; Bilder machen den Dialog dann.

  • Im App auf ebenso.

  • Electron-Schalen. Es war zunächst so gemacht, aber dann bleibt bei der Mensch einen Copy-Paste-Fluss. Mit MCP bekommt die KI das Direkt.

  • Remoteverbindung. Öffnet nur für 127.0.0.1. Für Picks aus fremden Browser gibt es ziemlich keinen Anlass.

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