qualien-mcp
Officialqualien-mcp
Ein Composite-MCP-Gateway — es bündelt mehrere Model Context Protocol-Server hinter einer Verbindung, kuratiert für SDET / QE-Workflows. Fügen Sie Ihrem KI-Assistenten einen Server hinzu, statt fünf.
npx qualien-mcpVon Haus aus liefert es das QE-Starterset — Playwright MCP (Browser-Automatisierung, DOM, Screenshots) und Filesystem MCP (Projektdateien lesen/bearbeiten, Page Objects, Test-Utilities) — ohne Konfiguration. Die Tools werden Ihrem Assistenten mit Namensraum als playwright__… und filesystem__… bereitgestellt.
Warum ein Gateway?
Ihr Assistent kann sich bereits direkt mit vielen MCP-Servern verbinden — ein Gateway verdient seinen Platz also dadurch, dass es etwas tut, was ein Haufen Server nicht kann:
Ein Endpunkt — zu jedem Client hinzufügbar (Claude Code, Claude Desktop, Cursor, …).
Kuration — pro Server und pro Tool aktivierbar/deaktivierbar. Weniger, besser benannte Tools = bessere Tool-Auswahl durch das Modell (200 Tools auf einmal zu geben macht es schlechter).
Eine Routing-/Logging-Oberfläche — jeder Aufruf wird mit Downstream, Tool und Latenz auf stderr protokolliert.
Sauberer Lebenszyklus — startet jeden Downstream als Kindprozess und beendet sie alle beim Exit (keine verwaisten Browserprozesse).
Für QE kuratiert — ein meinungsstarkes SDET-Toolkit, kein generischer Proxy.
Related MCP server: Multi-MCP Hub
So verwenden Sie es mit Ihrem Assistenten
Claude Code (.mcp.json oder Benutzereinstellungen):
{
"mcpServers": {
"qualien": { "command": "npx", "args": ["-y", "qualien-mcp"] }
}
}Claude Desktop (claude_desktop_config.json) — gleiche Struktur unter mcpServers.
Dieser einzelne Eintrag gibt Ihrem Assistenten jedes Tool von jedem aggregierten Server.
Weitere Server hinzufügen
Legen Sie eine qualien-mcp.config.json in Ihr Arbeitsverzeichnis (oder übergeben Sie --config <path>). Einträge überlagern die eingebauten Standardwerte — definieren Sie einen Schlüssel neu, um ihn zu ändern, oder setzen Sie enabled: false, um eine Standardeinstellung zu deaktivieren. Kein neues Release nötig.
{
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/abs/path/to/allow"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"],
"tools": { "deny": ["browser_close"] }
}
}
}Siehe qualien-mcp.config.example.json für die vollständige Struktur (command, args, env, enabled, tools.allow / tools.deny).
Eingebauter Katalog
qualien-mcp bringt einen kuratierten Katalog bekannter Server mit (gegen npm verifiziert), sodass Sie einen per Schlüssel nur mit Ihren Secrets aktivieren können — ohne sich Pakete oder Befehle merken zu müssen:
{
"servers": {
"chrome-devtools": { "enabled": true },
"postgres": { "enabled": true, "env": { "DATABASE_URI": "postgres://…" } },
"slack": { "enabled": true, "env": { "SLACK_MCP_XOXP_TOKEN": "xoxp-…" } }
}
}Führen Sie npx qualien-mcp catalog aus, um alle mit ihren Anforderungen aufzulisten. Aktueller Katalog:
Schlüssel | Was | Benötigt |
| Browser-Automatisierung, DOM, Screenshots | — |
| Projektdateien lesen/bearbeiten | ein zulässiges Verzeichnis (Standard: cwd) |
| PRs, Issues, Code-Review | Ihre GitHub-OAuth-App + |
| Strukturiertes Denken / Debugging | — |
| Persistenter Wissensgraph | — |
| Netzwerk, Konsole, Perf, Speicher | — |
| SQL / Backend-Daten validieren |
|
| SQL / Backend-Daten validieren | MySQL-Env |
| Slack lesen/schreiben |
|
| Container verwalten | Docker-Daemon |
| Cluster inspizieren/betreiben | kubeconfig |
| Jede REST-API anhand ihrer Spezifikation steuern |
|
| Jira-Issues lesen/aktualisieren | Atlassian-API-Token-Env |
| Figma-Designs lesen |
|
use mountet einen Katalog-Server unter einem anderen Schlüssel (z. B. zwei Datenbanken): { "db-prod": { "use": "postgres", "enabled": true, "env": {…} } }. Alles, was nicht im Katalog ist, definieren Sie weiterhin vollständig (command/args oder type/url).
Remote- und OAuth-Server (z. B. GitHub)
Downstreams können sowohl remote (Streamable HTTP) als auch lokal sein. Ein Remote-Server ist { "type": "http", "url": "…" }, und wenn er OAuth benötigt, meldet sich jeder Benutzer mit seinem eigenen Konto an — Tokens werden pro Benutzer unter ~/.qualien-mcp/credentials.json (0600) gespeichert und niemals gebündelt oder geteilt.
Das gehostete MCP von GitHub ist der Referenzfall. Es unterstützt keine dynamische Client-Registrierung, daher registrieren Sie Ihre eigene GitHub-OAuth-App einmal und geben qualien-mcp deren Client-ID:
GitHub → Einstellungen → Entwicklereinstellungen → OAuth-Apps → Neu. Legen Sie die Callback-URL auf
http://127.0.0.1:41999/callbackfest. Kopieren Sie die Client-ID.In
qualien-mcp.config.json:
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"oauth": true,
"clientId": "<your client id>"
}
}
}Autorisieren (öffnet Ihren Browser, einmalig):
npx qualien-mcp login githubDanach verbindet sich das Gateway nicht-interaktiv mit GitHub (aktualisiert Tokens bei Bedarf) und stellt github__*-Tools bereit. Wenn ein Remote-Server noch nicht angemeldet ist, überspringt ihn das Gateway mit einem Hinweis (run: npx qualien-mcp login github) und bedient weiterhin alles andere — es blockiert nie den Start. Server, die doch dynamische Registrierung unterstützen, benötigen keine clientId.
Standardmäßig sicher
qualien-mcp setzt Schutzmaßnahmen zentral, vor der Weiterleitung eines Aufrufs durch — sie gelten also unabhängig davon, was der Downstream erlaubt, und auch Composite-Tools können sie nicht umgehen:
Datenbanken sind schreibgeschützt —
postgres/mysql-Aufrufe mit Schreib-/DDL-SQL (INSERT/UPDATE/DELETE/DROP/…) werden abgelehnt. Opt-in mit{ "postgres": { "readOnly": false } }.Dateisystem-Wurzeln —
{ "filesystem": { "roots": ["./src", "./tests"] } }lehnt jeden Aufruf ab, dessen Pfadargument diese Verzeichnisse verlässt.Destruktive Infrastruktur-Tools blockiert —
docker/kubernetes-Tools, deren Name destruktiv klingt (delete/remove/prune/kill/…), werden abgelehnt, außer{ "allowDestructive": true }.Plus Pro-Server-Kuration über
tools.deny/tools.allow.
Ehrlicher Umfang: Diese stoppen ein LLM davor, versehentlich Schaden anzurichten. Die SQL-Prüfung ist schlüsselwortbasiert (heuristisch), kein Parser — sie ist kein adversarielles Sandboxing. Echte Isolation erfordert die eigenen Berechtigungen des Downstreams oder einen Container.
Composite-QE-Tools
Über Passthrough hinaus bringt qualien-mcp Tools mit, die es selbst implementiert (Namespace qe__) und die mehrere Downstreams in einem Aufruf orchestrieren — der QE-Nutzen eines Gateways.
qe__verify_api_vs_db — End-to-End-API↔DB-Konsistenz in einem Aufruf. Geben Sie ihm zwei Unteraufrufe (Namespaced-Tools, die Sie über tools/list entdecken können); er führt beide aus und vergleicht die Payloads per Diff:
{
"api": { "tool": "openapi__getUser", "arguments": { "id": 1 } },
"db": { "tool": "postgres__query", "arguments": { "sql": "select id, name from users where id = 1" } },
"match": "subset" // every field the DB returns must match the API (default)
}
// → { "match": false, "differences": [ { "path": "name", "api": "Ann", "db": "Bob" } ], … }Composite-Tools erscheinen nur, wenn ihre erforderlichen Downstreams verbunden sind (qe__verify_api_vs_db benötigt einen database-Server). Weitere folgen (repro-from-Jira, page-object-from-URL, flaky triage).
So funktioniert es
In einem Prozess ist qualien-mcp gleichzeitig ein MCP-Server für Ihren Assistenten und ein MCP-Client für jeden Downstream:
assistant ⇄ qualien-mcp ⇄ playwright-mcp
⇄ filesystem-mcp
⇄ …tools/listfächert zu jedem Downstream auf, filtert nach Ihren Kurationsregeln und vergibt Namensräume als<server>__<tool>.tools/callroutet über dieses Präfix zum besitzenden Server und reicht die Antwort direkt durch.Ressourcen und Prompts werden auf dieselbe Weise aggregiert, wenn ein Downstream sie bereitstellt.
Ein Downstream, der nicht startet, wird protokolliert und übersprungen — das Gateway bedient weiterhin den Rest.
Protokolle gehen an stderr (stdout ist das Protokoll); Ihr Host zeigt sie in seinen MCP-Protokollen an.
Roadmap
v0.1 — Playwright + Filesystem, Namespacing, Kuration, Logging, sauberer Lebenszyklus ✅
Als Nächstes — konfigurationsgetriebene Erweiterung (GitHub über sein gehostetes OAuth-MCP, DB, Sequential-Thinking, Memory, Chrome DevTools), Composite-QE-Tools (z. B. API ↔ DB-Konsistenz in einem Aufruf prü
Available Tools
38 toolsfilesystem__create_directoryCreate DirectoryAIdempotent
Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true (not destructive, succeeds silently if exists), and the description adds value by confirming silent success on existing directories and clarifying the nested creation behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, all front-loaded with essential information. No redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with output schema (though not detailed in description), the description is mostly complete. It could mention the return value or output schema explicitly, but the tool's simplicity makes this less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains 'path' is the target directory (and implies acceptance of nested paths), but does not specify format (absolute vs relative) or validation details beyond 'Only works within allowed directories'. This is adequate but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('directory'), clearly stating it can create a new directory or ensure it exists. It distinguishes itself from sibling tools like filesystem__write_file or filesystem__move_file by focusing solely on directory creation, and mentions nested directory support.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (setting up directory structures, ensuring required paths exist) and notes it works only within allowed directories, providing clear context. It does not explicitly mention when NOT to use it or suggest alternatives, but given the sibling tools are mostly browser-related, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__directory_treeDirectory TreeARead-only
Get a recursive tree view of files and directories as a JSON structure. Each entry includes 'name', 'type' (file/directory), and 'children' for directories. Files have no children array, while directories always have a children array (which may be empty). The output is formatted with 2-space indentation for readability. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| excludePatterns | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds behavioral details: output structure (children arrays for directories, empty arrays for empty dirs), 2-space indentation formatting, and the allowed directories restriction. This supplements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loads the purpose, then details output format. Every sentence provides value, with no redundancy or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description adequately explains the return structure. However, it lacks guidance on how to use the 'excludePatterns' parameter, which is essential for filtering. This gap reduces completeness for a tool with two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the 'path' parameter (implied) or the 'excludePatterns' parameter at all. The description adds no meaning beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and specifies the resource as a 'recursive tree view of files and directories.' It describes the JSON output structure with 'name', 'type', and 'children' for directories, distinguishing it from flat list tools like list_directory or search_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that the tool 'Only works within allowed directories,' which implies a constraint, but it does not explicitly state when to use a tree view versus flat listing or file search. There is no guidance on alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__edit_fileEdit FileADestructive
Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| edits | Yes | ||
| dryRun | No | Preview changes using git-style diff format |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool is destructive (destructiveHint: true), line-based, and returns a git-style diff. It also notes the allowed-directory restriction, which adds behavioral context beyond the annotation. However, it does not mention whether the edits are applied atomically or if file locking is involved, but given the annotation already warns of destructiveness, the description provides sufficient extra clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: what it does, how it works, and a constraint. It is front-loaded and contains no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, an output schema (for the diff), and annotations, the description covers the key aspects: operation type, line-based selection, exact matching requirement, diff output, and directory restriction. It does not explain the output format structure (though the output schema might handle that) or error conditions, but it is sufficiently complete for a tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%—the 'oldText' and 'path' parameters lack descriptions in the schema. However, the description clarifies that 'oldText' must be an exact match and that edits are line-based, adding meaning for the 'edits' and 'oldText' parameters. The 'path' parameter is not elaborated, but the tool's purpose implies it's a file path. The 'dryRun' parameter is described in the schema, so the description compensates for schema gaps reasonably well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs 'line-based edits to a text file' and replaces 'exact line sequences with new content.' It distinguishes itself from the sibling 'filesystem__write_file' by specifying that edits are line-based and exact, and it also mentions it returns a git-style diff, which is a unique output format not shared by other file tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Only works within allowed directories,' which provides a basic constraint but does not give explicit guidance on when to use this tool versus alternatives like 'write_file' for complete rewrites or 'move_file' for renames. No when-not-to-use or alternative tool names are mentioned, so it is adequate but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__get_file_infoGet File InfoARead-only
Retrieve detailed metadata about a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is perfect for understanding file characteristics without reading the actual content. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description correctly adds value by listing specific return fields (size, creation time, etc.) and the scope constraint 'only works within allowed directories'. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The first sentence front-loads the purpose, the second lists outputs, and the third adds scope. Ideal structure for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description covers the tool's purpose, return details, and scope adequately. Minor gaps: no mention of error handling or whether the path is absolute/relative, but overall it is sufficient for a simple metadata tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not provide details about the 'path' parameter format, allowed values, or examples. The only additional hint is that it must be within allowed directories, which is insufficient to fully guide parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed metadata (size, times, permissions, type) for a file or directory. It explicitly distinguishes from reading content by saying 'without reading the actual content', which differentiates it from siblings like `read_file`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you need file characteristics rather than content. It implicitly contrasts with content-reading tools, though it does not explicitly list alternatives or state 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.
filesystem__list_allowed_directoriesList Allowed DirectoriesARead-only
Returns the list of directories that this server is allowed to access. Subdirectories within these allowed directories are also accessible. Use this to understand which directories and their nested paths are available before trying to access files.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety and scoping. The description adds that subdirectories within allowed directories are also accessible, which is a useful detail. However, it doesn't disclose edge cases like what happens if no directories are configured or whether the list is static or dynamic. With annotations handling the core safety profile, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences, each serving a clear purpose: the first defines the return value, the second provides usage guidance. There is no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, has an output schema, and annotations are present, the description is complete. It explains what the tool returns, that subdirectories are included, and when to use it. No additional context is needed for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter-level semantics. The baseline score of 4 applies because there is no burden to compensate for missing schema coverage; the schema is fully covered by the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns the list of allowed directories and notes that subdirectories are also accessible. It uses a specific verb ('Returns') and resource ('list of directories'), and it distinguishes itself from sibling tools by focusing on the concept of 'allowed' directories rather than listing a specific path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to use this tool to understand which directories are available before trying to access files, implying a prerequisite step. While it doesn't explicitly mention when not to use it or directly compare to alternatives, the context of sibling filesystem tools (like list_directory) makes the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__list_directoryList DirectoryBRead-only
Get a detailed listing of all files and directories in a specified path. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by describing the output format (prefixes) and reinforcing the allowed-directories constraint. However, it does not disclose whether the listing is recursive or flat, behavior for non-existent paths, or performance characteristics. Given the annotations already cover safety, the description provides moderate additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, front-loading the core purpose. Each sentence adds value: purpose, output format, and constraint. There is no wasted text. It could be slightly more structured (e.g., separating parameter notes), but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which can describe return values) and a simple single-parameter input, the description covers the basic purpose and constraint. However, it omits critical details: whether the listing is recursive or flat, what happens if the path is invalid or a file, and how to handle paths outside allowed directories. This leaves gaps for an agent that needs to handle edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'path' parameter. The description only mentions a 'specified path' without explaining format, whether it should be absolute or relative, or how to reference allowed directories. The constraint 'Only works within allowed directories' adds some context but does not compensate for the lack of parameter documentation, leaving the agent without clear guidance on how to construct the path value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a listing of files and directories for a specified path, with a verb 'Get a detailed listing' and resource 'files and directories'. It mentions distinguishing features like [FILE] and [DIR] prefixes. However, it does not explicitly differentiate from similar sibling tools like list_directory_with_sizes or directory_tree, reducing clarity for an agent choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a constraint ('Only works within allowed directories') but gives no guidance on when to use this tool versus alternatives (e.g., list_directory_with_sizes, directory_tree). It states it is 'essential for understanding directory structure and finding specific files', but this is vague and does not explicitly exclude other use cases or provide when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__list_directory_with_sizesList Directory with SizesARead-only
Get a detailed listing of all files and directories in a specified path, including sizes. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is useful for understanding directory structure and finding specific files within a directory. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| sortBy | No | Sort entries by name or size | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description carries a lower burden. It adds the behavioral constraint 'Only works within allowed directories,' which is valuable. However, it does not disclose other details like recursion depth, handling of hidden files, or error behavior when the path is invalid. The description is consistent with annotations (no contradiction).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences) and front-loaded. The first sentence states the core action, the second adds format detail, and the third provides usage context and a constraint. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no nested objects, output schema present), the description covers the key aspects: purpose, output format, constraint (allowed directories), and a general use case. It does not mention recursion depth or default sorting order (covered by schema), but these are minor omissions. The output schema likely handles return value details, so the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only sortBy has a description). The tool description mentions 'in a specified path' and 'including sizes', which indirectly covers the path parameter and the nature of the output. It does not explicitly describe the parameters beyond what the schema provides. The description adds some context but does not fully compensate for the missing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a detailed listing of all files and directories in a specified path, including sizes.' It also specifies the output format with [FILE] and [DIR] prefixes, which distinguishes it from sibling tools like filesystem__list_directory (likely without sizes) and filesystem__directory_tree (tree structure).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'This tool is useful for understanding directory structure and finding specific files within a directory,' which provides general guidance. However, it does not explicitly compare with alternatives like filesystem__list_directory or filesystem__directory_tree, nor does it state when to avoid using this tool. The guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__move_fileMove FileADestructive
Move or rename files and directories. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true, indicating the tool modifies the filesystem. The description adds transparency by stating the operation will fail if the destination exists, and that both source and destination must be within allowed directories. However, it doesn't clarify whether renaming is destructive (replaces existing data at source after move), though annotations partially cover this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding distinct value: first states overall function, second explains failure behavior, third clarifies scope. It is front-loaded with the key purpose. Could be slightly more concise (e.g., 'rename' is repeated) but is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, an output schema exists (handling return values), and annotations already provide behavioral hints, the description is reasonably complete. It covers the key constraint (destination must not exist) and the allowed directory scope. One minor gap: it doesn't specify that the tool can also rename in-place (implied but not explicit).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no descriptions for the two parameters. The description fully compensates by explaining that source is the path to the file or directory to move/rename, and destination is the new path. The description adds meaning about cross-directory moves and same-directory renaming, which is essential since the schema lacks any parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it moves or renames files and directories, specifies that it can both move between directories and rename in one operation, and notes that the operation will fail if the destination exists. This distinguishes it from sibling tools like filesystem__write_file or filesystem__create_directory, which do different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (moving/renaming files or directories, including across directories), but does not explicitly mention when NOT to use it or provide alternatives. However, the context of sibling tools (e.g., filesystem__write_file, filesystem__create_directory) provides implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__read_fileRead File (Deprecated)ARead-only
Read the complete contents of a file as text. DEPRECATED: Use read_text_file instead.
| Name | Required | Description | Default |
|---|---|---|---|
| head | No | If provided, returns only the first N lines of the file | |
| path | Yes | ||
| tail | No | If provided, returns only the last N lines of the file |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds the deprecation status, which is behavioral context. However, it states 'complete contents' while the schema offers head/tail parameters for partial reads, creating subtle ambiguity about default behavior. No mention of encoding, size limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and deprecation warning. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered elsewhere. However, the description omits details about head/tail interaction, file encoding, and potential file size limitations. Adequate for a deprecated tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (head/tail described, path not). The description adds no parameter clarification—especially missing for 'path' (format, allowed directories). It does not compensate for the undocumented required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Read' and the resource 'file', and clearly indicates deprecation with a direct alternative ('Use read_text_file instead'), distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-not-to-use instruction ('DEPRECATED') and explicitly names the alternative tool ('read_text_file') that should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__read_media_fileRead Media FileARead-only
Read a file and return it as a base64-encoded content block with its MIME type. Image and audio files are returned as image/audio content; any other file type is returned as an embedded resource. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description fully aligns with annotations (readOnlyHint=true). Adds critical behavioral details not in annotations: base64 encoding, MIME type, image/audio vs embedded resource handling, and directory restriction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences. Every clause adds value: base64, MIME type, file type distinction, directory restriction. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output exists and is not described, which is fine. For a 1-parameter tool with good description and annotations, it covers all essentials. Lacks mention of size limits or encoding edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only 1 parameter (path) and schema coverage 0%, but description compensates by stating the expected file types and behavior. A bit more detail on path format (absolute/relative) would make it 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Verb 'Read', resource 'media file', with specific behavior (base64, MIME type, image/audio vs other). Distinguishes from siblings read_file and read_text_file by targeting media content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly says 'Only works within allowed directories' which implies a precondition. However, no explicit guidance on when to use this vs read_file vs read_text_file for non-media files or when format matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__read_multiple_filesRead Multiple FilesARead-only
Read the contents of multiple files simultaneously. This is more efficient than reading files one by one when you need to analyze or compare multiple files. Each file's content is returned with its path as a reference. Failed reads for individual files won't stop the entire operation. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Array of file paths to read. Each path must be a string pointing to a valid file within allowed directories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by stating 'Failed reads for individual files won't stop the entire operation,' which is a key behavioral trait. It also confirms 'Only works within allowed directories,' consistent with openWorldHint=false. While annotations already provide readOnlyHint=true and openWorldHint=false, the description adds useful detail about partial failures and return format, enhancing transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of four clear sentences that front-load the core purpose and progressively add efficiency, partial failure, and scope details. Each sentence adds value and there is no redundant or extraneous text. Could be slightly more compact by merging the last two sentences, but overall it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, annotations, and an output schema, the description covers the essential context: purpose, efficiency, partial failure behavior, and directory restriction. Minor gaps exist (e.g., maximum number of paths, handling of binary vs text files). However, given the tool's simplicity, the description is largely complete and provides agent with sufficient decision-making information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'paths' parameter. The tool description does not add new semantic nuance beyond what the schema already provides (e.g., no additional format, constraints, or limits on the number of paths). Per scoring rules, baseline 3 applies when high coverage exists and description does not extend meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read the contents of multiple files simultaneously' with a specific verb and resource. It explicitly differentiates from sibling single-file tools like filesystem__read_file by highlighting batch efficiency and stating 'more efficient than reading files one by one.' This makes the tool's purpose distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'when you need to analyze or compare multiple files.' It also notes the efficiency benefit over sequential reads. However, it does not explicitly exclude scenarios where the batch approach might be inappropriate (e.g., very large file sets) nor name alternative tools (e.g., filesystem__read_file) as direct exclusions. Overall, usage guidance is strong but lacks explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__read_text_fileRead Text FileARead-only
Read the complete contents of a file from the file system as text. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Use the 'head' parameter to read only the first N lines of a file, or the 'tail' parameter to read only the last N lines of a file. Operates on the file as text regardless of extension. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| head | No | If provided, returns only the first N lines of the file | |
| path | Yes | ||
| tail | No | If provided, returns only the last N lines of the file |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and no destructive hints, so the agent knows it is safe. The description adds that it handles various text encodings, provides detailed error messages, and operates on all files as text regardless of extension. These are useful but not critical beyond the annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences with no wasted words. It front-loads the primary purpose, then adds parameter usage notes, then scope restrictions. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (so return format is documented), annotations provide safety info, and the description covers purpose, parameter usage, and allowed directory restrictions. It could briefly mention that reading multiple files requires a different tool, but overall it is adequate for a straightforward read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers path (required), head, and tail with descriptions for head and tail but not path. The description explains head and tail parameters in more detail (first/last N lines). Schema description coverage is 67%, so the description compensates for the missing path description. Overall adds moderate value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read the complete contents of a file from the file system as text', specifying a concrete verb (read) and resource (file contents). It differentiates from sibling tools like filesystem__read_file (similar) and filesystem__read_media_file by emphasizing it handles text encodings and works on any extension as text, not media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the head and tail parameters to read partial content, and mentions it 'only works within allowed directories'. However, it does not differentiate from filesystem__read_file (identical purpose) or specify when to use read_multiple_files instead, so some sibling differentiation is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__search_filesSearch FilesARead-only
Recursively search for files and directories matching a pattern. The patterns should be glob-style patterns that match paths relative to the working directory. Use pattern like '.ext' to match files in current directory, and '**/.ext' to match files in all subdirectories. Returns full paths to all matching items. Great for finding files when you don't know their exact location. Only searches within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pattern | Yes | ||
| excludePatterns | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, so the read-only behavior is already specified. The description adds that it 'only searches within allowed directories' and returns 'full paths', which provides useful context beyond annotations, but does not detail result format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, uses clear examples, and every sentence adds value. It is compact without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 required params, simple glob patterns), the description covers purpose, pattern syntax, scope, and constraints. The output schema likely handles return structure, so the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning the description must compensate. It describes the 'pattern' parameter with glob syntax examples and explains 'path' as the working directory base. The 'excludePatterns' parameter is not mentioned in the description but is obvious from its name and array type. The description adds significant clarity over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool recursively searches for files and directories matching a glob pattern, distinguishing it from siblings like list_directory (listing without search), get_file_info (single file info), and read_file operations. It explicitly mentions the verb 'search' and resource 'files and directories'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete glob pattern examples ('*.ext' and '**/*.ext') and states it is great for when exact location is unknown. While it does not explicitly mention when not to use it versus list_directory or directory_tree, the context of finding unknown paths is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filesystem__write_fileWrite FileADestructiveIdempotent
Create a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: 'overwrite existing files without warning' (matches destructiveHint=true), 'handles text content with proper encoding', and 'only works within allowed directories'. It does not contradict annotations (idempotentHint and destructiveHint are consistent). However, it omits details like return value or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences that are front-loaded with the core action. Every sentence adds value: purpose, warning, encoding, scope. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 simple params) and existence of an output schema, the description covers the main behavior but misses parameter semantics and fails to explain what the content parameter expects (e.g., text encoding, size limits). It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%—no parameter descriptions in the input schema. The description does not mention the parameters at all, providing no additional meaning beyond the parameter names 'path' and 'content'. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create a new file or completely overwrite an existing file' and specifies the resource (files). It also notes the scope ('only works within allowed directories'), which distinguishes it from sibling tools that operate on browser content, not filesystem files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises caution and warns about overwriting without warning, implying careful use. It distinguishes from edit_file (not listed as sibling but implied) by saying 'completely overwrite', but it does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_clickCDestructive
Perform click on a web page
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | Button to click, defaults to left | |
| target | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element | |
| modifiers | No | Modifier keys to press | |
| doubleClick | No | Whether to perform a double click instead of a single click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds no additional behavioral context beyond stating the action. It does not disclose side effects (e.g., navigation, page state changes) or permission requirements, relying entirely on the 'destructive' hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise and front-loaded. However, it is too minimal to be informative; space could be better used to add context without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and multiple sibling tools, the description is very incomplete. It does not explain what happens after clicking (e.g., waiting for navigation, return value), the scope of interaction (openWorldHint=true), or how the 'target' parameter relates to the 'element' parameter. Significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The tool description adds no extra meaning to parameters beyond what the schema already provides. A baseline of 3 is appropriate since the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Perform click on a web page' clearly states the verb and resource, but it is vague and does not differentiate from sibling tools like hover, double-click (which is a parameter), or select_option. It is not a tautology but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., playwright__browser_hover, playwright__browser_drag). It does not mention when not to use it or any prerequisites. Without such guidance, an agent may select this tool inappropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_closeCDestructive
Close the page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Close the page' while annotations (title: 'Close browser', destructiveHint: true, readOnlyHint: false) indicate it closes the browser. This contradiction between description and annotations makes the behavioral intent unclear. The description also fails to detail what state changes occur, confirmation steps, or whether the entire session is terminated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (single sentence) but underspecified. While brevity is valued, the content is too sparse to be effectively informative, especially given the contradiction with annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple with no parameters and no output schema, the description should at least unambiguously state what is closed (browser vs page) and any notable side effects. It fails to do so, leaving the agent confused about the tool's exact scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (schema coverage 100% with empty object), so the description does not need to add parameter information. The baseline for zero parameters is 4, and the description does not detract from this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Close the page', which is a verb+resource, but the tool name and annotation title indicate it closes the browser. This mismatch creates ambiguity about the actual resource being closed, lowering clarity. It does distinguish from siblings since no other sibling closes anything, but the inconsistency hurts the score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as navigating away or using a different browser management tool. There is no context on prerequisites, side effects, or situations to avoid, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_console_messagesCRead-only
Returns all console messages
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Return all console messages since the beginning of the session, not just since the last navigation. Defaults to false. | |
| level | Yes | Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info". | info |
| filename | No | Filename to save the console messages to. If not provided, messages are returned as text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, which already indicate a safe, read-only operation. The description adds no behavioral context beyond the schema. It says 'all' but the schema's 'all' parameter defaults to false, meaning it returns only recent messages by default. This slight mismatch without clarification reduces transparency. The description does not mention level filtering behavior or the filename side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is under-specified rather than appropriately concise. It does not earn its place because it omits essential context like filtering behavior, session scope, or return format. Every sentence should add value; this one is too vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters, one required, and no output schema, the description should provide a high-level overview of behavior and return value. It fails to mention that messages are cleared on navigation by default, that level includes more severe messages, or that filename saves to a file. The tool is relatively simple, but the description is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with well-documented parameters (all, level, filename). The description adds no new parameter meaning beyond what the schema provides. Per rubric, high coverage supports a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Returns all console messages' clearly states the verb (returns) and resource (console messages). The title 'Get console messages' reinforces this. While it distinguishes from siblings like network_requests by topic, it could be more specific about the scope (browser page console) and the fact that 'all' is controlled by the 'all' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like network_requests or when to combine with other tools. There is no mention of prerequisites (e.g., page must be loaded) or context (e.g., after navigation). The single sentence gives no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_dragBDestructive
Perform drag and drop between two elements
| Name | Required | Description | Default |
|---|---|---|---|
| endTarget | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| endElement | No | Human-readable target element description used to obtain the permission to interact with the element | |
| startTarget | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| startElement | No | Human-readable source element description used to obtain the permission to interact with the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as destructiveHint: true and openWorldHint: true, indicating the operation modifies state and relies on external context. The description does not elaborate on these or mention any other behavioral details (e.g., element visibility requirements, coordinate-based vs. element-based drag). It provides marginal added value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and to the point. No wasted words, but could potentially include more context without becoming overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a drag-and-drop operation (interaction with page elements, potential for state changes), and lack of output schema, the description is insufficient. It does not explain how elements are identified (via snapshot references), what happens to intermediate mouse events, or how errors are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning all parameters have descriptions in the schema. The description does not add extra meaning beyond what is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'drag and drop' action between two elements. The verb 'Perform' and resource 'drag and drop' are specific. It distinguishes from siblings like 'click' and 'hover', but not explicitly against 'browser_drop' which might be related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, 'browser_drop' is a sibling with potentially overlapping functionality, and there is no mention of prerequisites like needing a page snapshot or permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_dropADestructive
Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data to drop, as a map of MIME type to string value (e.g. {"text/plain": "hello", "text/uri-list": "https://example.com"}). | |
| paths | No | Absolute paths to files to drop onto the element. | |
| target | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description adds the behavioral context of simulating a drag from outside the page. However, it does not mention potential side effects like triggering page navigation, file downloads, or that the element must be a valid drop target. The description adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence defines the core action, the second adds a critical constraint. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality and constraints. It does not explain the permission mechanism for the 'element' parameter (covered in schema) or the need for a valid drop target, but for a specialized tool with a detailed schema, it is sufficiently complete. No output schema exists, but the return value is implied by the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds a usage constraint ('at least one of paths or data must be provided') that is not in the schema's required list, and clarifies the two modes. This adds meaningful value beyond the parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'drop' and the resource 'files or MIME-typed data onto an element'. It distinguishes from sibling tools like file_upload by specifying 'as if dragged from outside the page', and clarifies the two input modes with the constraint 'at least one of paths or data must be provided'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly distinguishes from file upload (for input elements) and drag (within-page), but does not explicitly state when to use this tool versus alternatives. It does provide a clear prerequisite: at least one of 'paths' or 'data' must be provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_evaluateBDestructive
Evaluate JavaScript expression on page or element
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element | |
| filename | No | Filename to save the result to. If not provided, result is returned as text. | |
| function | Yes | () => { /* code */ } or (element) => { /* code */ } when element is provided |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false, indicating the tool can modify page state. The description adds no further behavioral context (e.g., that it can change the DOM, trigger side effects, or require element permission). It does not contradict annotations, but lacks additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence. It is concise and front-loaded with the key action. However, it could be more informative within the same length by including a brief note about return values or when to use the element parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not mention the return value (text or saved file). The agent is left guessing whether the result is returned as text or saved. For a tool that evaluates arbitrary JavaScript, this is a significant gap. The filename parameter description in the schema partially compensates, but the tool description should clarify.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters have basic descriptions. The tool description itself adds no extra meaning beyond the schema. The function parameter's schema description is moderately helpful (showing syntax), but the overall description does not elaborate on how parameters interact or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Evaluate JavaScript expression') and the target ('on page or element'). It distinguishes this from other browser interaction tools like click or navigate. However, it does not explicitly differentiate from the sibling 'playwright__browser_run_code_unsafe', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., when to use run_code_unsafe instead). The description does not include any context about prerequisites, typical use cases, or exclusions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_file_uploadCDestructive
Upload one or multiple files
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive, non-read-only, and open-world behavior. The description adds no behavioral context beyond 'upload', such as side effects, interaction with the file chooser dialog, or state changes. The description adds minimal value over annotations for understanding implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two words plus a brief schema). It front-loads the verb and resource. However, it could be expanded slightly to include context without being verbose, but for a simple tool this is adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set, high schema coverage, and presence of annotations, the description is minimally adequate. It covers the basic action but lacks information about when the file chooser appears, whether the element must be an input[type=file], or how it interacts with other browser tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'paths', which explains absolute paths, single/multiple files, and cancellation. The tool description adds no additional parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Upload one or multiple files' clearly states the verb (upload) and resource (files). It distinguishes from sibling browser tools like navigate, click, and filesystem tools because 'upload' is specific to file selection in a browser context. However, it does not specify the target (e.g., to a file input element), which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Siblings include filesystem write tools, but no context is provided about prerequisites (e.g., a file input must be focused) or when to avoid using it. The schema mentions cancellation, but overall usage direction is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_fill_formBDestructive
Fill multiple form fields
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to fill in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false, so the agent knows this is a write operation. The description adds no further behavioral details (e.g., that it modifies the page, requires user interactions, or handles errors). With annotations present, the bar is lower, but the description still adds no value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded and efficient. However, it could be slightly more informative without sacrificing brevity, earning a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested array with 5 sub-properties, no output schema), the description is far too minimal. It does not mention that the tool requires target references from a page snapshot, how it handles multiple fields, or what happens on failure. The schema provides structure but the description fails to contextualize the tool's purpose and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters clearly (e.g., target, name, type, value). The description does not add any additional meaning or examples beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fill multiple form fields' clearly states the action (fill) and resource (form fields). It distinguishes from sibling tools like 'type' (single field) and 'click' by implying batch operation, though it could be more explicit about the 'multiple' aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., 'type' for single fields, 'click' for interactive elements). No prerequisites, such as needing a page snapshot or target references, are mentioned. The description is too terse to provide usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_findARead-only
Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Plain text to search for in the page snapshot (case-insensitive substring match). Provide either text or regex, not both. | |
| regex | No | Regular expression to search for in the page snapshot. Matching is case-sensitive by default; wrap the pattern in slashes to add flags, e.g. "/error/i" for case-insensitive. Provide either text or regex, not both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat safety. It adds value by explaining the return format (nodes with surrounding context and paths) and the cost benefit. However, it doesn't specify edge cases (e.g., what happens if no match is found).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and quickly adding the key behavioral and efficiency insight. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 optional parameters, no output schema), the description fully covers purpose, usage context, return format, and cost trade-off. It leaves no significant gap for an agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description's job is lighter. It adds clarity by explaining the search semantics (case-insensitive substring for text, case-sensitive with optional flag syntax for regex) and the mutual exclusivity constraint, which goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the accessibility snapshot of the current page for text or a regular expression, and returns matching nodes with context. This distinguishes it from sibling tools like playwright__browser_snapshot (which captures the whole snapshot) and navigation/interaction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it's 'cheaper than capturing the whole snapshot when you only need to locate an element and its ref', providing clear guidance on when to use this tool versus the more expensive snapshot tool. It also implies not to use it for full-page analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_handle_dialogBDestructive
Handle a dialog
| Name | Required | Description | Default |
|---|---|---|---|
| accept | Yes | Whether to accept the dialog. | |
| promptText | No | The text of the prompt in case of a prompt dialog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, indicating mutation potential. The description adds no further behavioral context beyond the title, but does not contradict annotations. No additional detail on what happens (e.g., dialog closed, page affected) is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, efficient and front-loaded. However, it is minimal and could say more without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters, no output schema, and annotations are present but basic. The description does not explain return behavior or error conditions, leaving gaps about what the tool outputs or requires.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in the schema. The description adds no additional meaning beyond the schema, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'handle a dialog', which identifies a specific browser interaction. However, it does not distinguish from siblings like invoking alerts or prompts, and the term 'dialog' is broad but implied by context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description lacks context about prerequisites (e.g., dialog must be present) or 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.
playwright__browser_hoverCDestructive
Hover over element on page
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true and openWorldHint: true, but the description adds no behavioral context beyond the obvious. It does not disclose that hovering may trigger mouseover events, change UI state, or require the element to be visible. The description fails to enrich the understanding provided by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately conveys the core function. It is not verbose, but it is also not overly terse to the point of being useless. It earns its place by stating the purpose clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple hover tool, the description is too sparse. It lacks any context about return values, prerequisites (e.g., page loaded, element visible), side effects, or when to use hover over other interactions. Given the tool's 2 parameters and no output schema, the description should provide more guidance to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both parameters (target and element) are already well-described in the schema. The tool description 'Hover over element on page' adds no additional meaning or usage hints for the parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Hover over element on page' clearly states the action (hover) and the target (element on a page). It distinguishes from sibling tools by naming a specific interaction, but it is brief and could be more precise about the nature of the hover (e.g., triggering mouse events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs. alternatives like playwright__browser_click, playwright__browser_drop, or playwright__browser_find. It does not mention prerequisites, constraints, or scenarios where hovering is appropriate. This is a significant gap given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_network_requestARead-only
Returns full details (headers and body) of a single network request, or a single part if part is set. Use the number from browser_network_requests.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No | Return only this part of the request. Omit to return full details. | |
| index | Yes | 1-based index of the request, as printed by browser_network_requests. | |
| filename | No | Filename to save the result to. If not provided, output is returned as text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds clarity about returning full vs. partial data and mentions saving to a file via the `filename` parameter, which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the primary purpose. However, it could be slightly more structured, e.g., by separating the primary use from the optional `part` behavior more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the input schema is comprehensive (100% coverage) and there is no output schema, the description adequately explains what the tool returns and how to use it. It references the sibling tool for context, which is helpful. It might be improved by mentioning expected data formats or caveats about large responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. However, the description adds no additional semantics beyond what the schema provides (e.g., it does not explain how the index relates to the list output, or how file saving works). This lack of extra context for a complex tool with file output drags the score down.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns full details (headers and body) of a single network request, and allows returning a single part via the `part` parameter. It also references the sibling tool `browser_network_requests` for the index number, distinguishing its purpose from the list tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides use by stating to use the number from `browser_network_requests`, which establishes a prerequisite. However, it does not provide any when-not-to-use guidance or mention alternatives for related tasks like filtering or multiple requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_network_requestsARead-only
Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Only return requests whose URL matches this regexp (e.g. "/api/.*user"). | |
| static | Yes | Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false. | |
| filename | No | Filename to save the network requests to. If not provided, requests are returned as text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds that the list is scoped to requests 'since loading the page', which is a useful behavioral constraint. It correctly characterizes the tool as a read-only, non-destructive operation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. The first sentence states the core function, the second gives immediate cross-reference to the sibling tool. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (list of network requests) and has no output schema. The description mentions it returns a 'numbered list' and points to the sibling for full details, which partially compensates for the lack of output specification. However, the agent might benefit from knowing what information is in the list (e.g., URL, status, method) beyond just numbers. Good overall but a slight gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add any additional context about the parameters (filter, static, filename) beyond what the schema already provides. Since the schema descriptions are adequate, the description adds no extra value here. A higher score would require explanation of parameter interactions or typical usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Returns' and the resource 'numbered list of network requests'. It immediately distinguishes itself from its sibling 'browser_network_request' by directing the agent to use that tool for full details. The purpose is specific and leaves no confusion about what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to use this tool (to get a list) and when to switch to the sibling tool (for full details). It implies that this tool provides an overview and the sibling provides depth. However, it does not explicitly mention when not to use it or any prerequisites (e.g., must have a page loaded). Good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_press_keyCDestructive
Press a key on the keyboard
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Name of the key to press or a character to generate, such as `ArrowLeft` or `a` |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is minimal and adds little beyond the annotations. Annotations already show destructiveHint=true and readOnlyHint=false, implying mutation, but the description does not explain what side effects occur (e.g., navigation, form submission, or triggering shortcuts). Without annotations, this would score lower, but the descriptions should supplement the annotations with context like "This can trigger browser keyboard shortcuts or activate form submission." The description merely restates the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it is too terse and lacks structure. It does not front-load crucial details like supported key formats or behavioral notes. The sentence is earned, but it could be expanded slightly to improve completeness without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructiveHint=true annotation and the lack of an output schema, the description should explain what happens after the key press (e.g., does the browser navigate? Does a form submit?). With many sibling tools and only one parameter, the description is inadequate for an AI agent to fully understand when and how to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'key', and its description is comprehensive: 'Name of the key to press or a character to generate, such as `ArrowLeft` or `a`'. The tool description adds no further meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "Press a key on the keyboard" clearly identifies the verb (press) and resource (key on keyboard), but it does not distinguish this tool from similar sibling tools like playwright__browser_type or playwright__browser_click. The purpose is clear but lacks specificity about what types of keys or combinations are supported.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like playwright__browser_type (for typing text) or playwright__browser_click (for mouse actions). It does not explain if this tool is suitable for key combinations (e.g., Ctrl+C), special keys, or single character keys, nor does it mention prerequisites such as having a focused element. The explicit destructiveHint=true annotation suggests it may cause state changes, but the description does not elaborate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_resizeADestructive
Resize the browser window
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Width of the browser window | |
| height | Yes | Height of the browser window |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations: destructiveHint=true indicates state change, which resizing implies. However, it adds no additional behavioral context beyond what the annotations already convey. The description is consistent and sufficient when combined with annotations, but it does not elaborate on side effects like viewport changes or page re-layout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of five words with no wasted words. It is front-loaded and immediately understandable. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two numeric parameters, no output schema), the description is borderline adequate. It does not specify units (pixels), constraints, or how resizing interacts with the page. While the core action is clear, additional context like 'changes the viewport size' or 'affects page layout' would improve completeness without becoming verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters having descriptions (width and height). The description does not add any meaning beyond the schema; it simply restates the action. Baseline 3 is appropriate as the schema already documents the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Resize the browser window' is clear, specific, and uses a verb-resource pair. It uniquely identifies the action among sibling tools, as no other tool handles resizing. The purpose is immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, constraints, or when resizing is appropriate. Sibling tools like 'playwright__browser_navigate' or 'playwright__browser_take_screenshot' are unrelated, but no explicit when-not or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_run_code_unsafeADestructive
Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | A JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction. For example: `async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }` | |
| filename | No | Load code from the specified file. If both code and filename are provided, code will be ignored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true. The description adds critical context: it runs code in the server process (not browser), is RCE-equivalent, and uses the word 'Unsafe' prominently. This aligns with the annotations and provides deeper behavioral insight beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences but packs essential information: the action, the resource, and a stark safety warning. No redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the schema and annotations, gives a solid understanding. However, it omits mention of prerequisites (e.g., an open page context) and does not specify what the function returns (though the example shows a return). For a high-risk tool, slightly more context on expected preconditions would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have clear descriptions. The 'code' parameter includes an executable example and explains how the function is invoked with a 'page' argument. The 'filename' parameter clarifies precedence when both are provided. Schema coverage is 100% with no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a Playwright code snippet' with a specific verb and resource. It immediately flags the tool as 'Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent', which sharply distinguishes it from sibling tools like playwright__browser_evaluate that run JavaScript in the browser context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly warns against casual use by labeling it 'unsafe' and 'RCE-equivalent', but it does not explicitly state when to choose this tool over alternatives (e.g., playwright__browser_evaluate for browser-side code). No when-not-to-use or prerequisite conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_select_optionBDestructive
Select an option in a dropdown
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| values | Yes | Array of values to select in the dropdown. This can be a single value or multiple values. | |
| element | No | Human-readable element description used to obtain permission to interact with the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as destructiveHint:true (modifies UI) and readOnlyHint:false, which is consistent. The description adds no further behavioral details about side effects (e.g., triggering events, page reloads). It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence) and front-loaded. It is appropriately concise for a simple action, but could be slightly expanded with usage hints without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, all described in schema), the description is minimally adequate. However, it lacks context about return value (none provided) or multi-select behavior, which would help completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add additional semantics beyond what the schema provides (e.g., explaining how 'values' interact, or when 'element' is necessary). It relies fully on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool selects an option in a dropdown, which is a specific verb+resource. It distinguishes well from siblings like 'fill_form', 'click', and 'type', which are for different interactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool vs alternatives like 'fill_form' or 'click' for dropdowns. It does not mention prerequisites (e.g., needing a page snapshot first) or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_snapshotARead-only
Capture accessibility snapshot of the current page, this is better than screenshot
| Name | Required | Description | Default |
|---|---|---|---|
| boxes | No | Include each element's bounding box as [box=x,y,width,height] in the snapshot. Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect) | |
| depth | No | Limit the depth of the snapshot tree | |
| target | No | Exact target element reference from the page snapshot, or a unique element selector | |
| filename | No | Save snapshot to markdown file instead of returning it in the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'accessibility snapshot' nature but does not disclose return formats or other behavioral details, leaving room for more context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one concise sentence that front-loads the core action and includes a useful comparison. No filler or repetitive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple read-only tool with strong annotations and complete schema parameter descriptions, the description is mostly sufficient. It does not explicitly state the output format, but the schema's 'filename' parameter hints at markdown output, and overall complexity is low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all four parameters, including meanings for boxes, depth, target, and filename. The description does not add parameter-specific value beyond what the schema already documents, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'capture' and resource 'accessibility snapshot of the current page', clearly distinguishing the tool's function. The added comparison 'this is better than screenshot' differentiates it from the sibling screenshot tool, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'this is better than screenshot' gives explicit guidance to prefer this tool over a sibling when an accessibility snapshot is needed. However, it does not mention any exclusions or cases where a screenshot would be more appropriate, so it lacks a full when/not-when comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_tabsBDestructive
List, create, close, or select a browser tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to navigate to in the new tab, used for new. | |
| index | No | Tab index, used for close/select. If omitted for close, current tab is closed. | |
| action | Yes | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false, so the description's 'create, close' is consistent but adds no new behavioral insight. It does not disclose error handling (e.g., what happens if you close a non-existent tab), side effects of 'select' (focus changes), or the fact that openWorldHint=true implies external side effects. The description is too minimal to add value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is very concise and front-loaded. It lists the actions without any filler. However, it could be more structured (e.g., bullet points) to improve readability, but it is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns for each action (e.g., for 'list', a list of tabs; for 'new', the new tab's info). It does not do this. Additionally, the description does not mention the tool's scope (e.g., operates on the current browser context). The tool has multiple actions and no output documentation, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter (url, index, action). The description does not add any extra meaning or clarify usage of the parameters beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb-resource combination: 'List, create, close, or select a browser tab.' This directly addresses the four distinct actions the tool performs, and it distinguishes the tool from sibling tools like playwright__browser_navigate (which navigates the current tab) and playwright__browser_close (which closes the entire browser).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that for navigating the current page one should use playwright__browser_navigate, or that closing the browser should use playwright__browser_close. The actions are listed but without context of trade-offs or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_take_screenshotARead-only
Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Image format for the screenshot. If unset, inferred from the filename extension, otherwise png. | |
| scale | Yes | Image resolution scale. "css" produces a screenshot sized in CSS pixels (smaller, consistent across devices). "device" produces a high-resolution screenshot using device pixels (larger, accounts for the device pixel ratio). Default is css. | css |
| target | No | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element | |
| filename | No | File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg|webp}` if not specified. Prefer relative file names to stay within the output directory. | |
| fullPage | No | When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds value by stating 'You can't perform actions based on the screenshot,' which is a behavioral limitation beyond the annotation. However, it does not disclose other traits like the screenshot being a static capture or the handling of dynamic content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, each serving a distinct purpose: stating the action and providing a critical usage limitation. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 6 parameters and no output schema, the description does not explain what the tool returns (e.g., file path, base64 data) or how to interpret the output. It also lacks guidance on parameter usage (e.g., when to use fullPage, target, or element). The agent is left without critical context for a tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and all parameters are well-described in the input schema. The description adds no additional parameter-level information, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Take a screenshot of the current page,' specifying the verb and resource. It also distinguishes from the sibling tool 'browser_snapshot' by noting that actions cannot be based on the screenshot, effectively differentiating the two tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises against using this tool for actions and directs to 'browser_snapshot' as an alternative. However, it does not provide guidance on when to use this tool (e.g., for visual inspection, documentation) or exclude other scenarios, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_typeCDestructive
Type text into editable element
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type into the element | |
| slowly | No | Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once. | |
| submit | No | Whether to submit entered text (press Enter after) | |
| target | Yes | Exact target element reference from the page snapshot, or a unique element selector | |
| element | No | Human-readable element description used to obtain permission to interact with the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds little beyond annotations. While annotations indicate the tool is destructive (destructiveHint: true) and not read-only, the description does not elaborate on side effects (e.g., replacing content, pressing Enter with submit, typing character by character with slowly). The agent gains minimal behavioral context from the description alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, containing no wasted words. It front-loads the core action. However, it is perhaps too brief given the tool's multiple parameters and behavioral nuances, but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters and no output schema, the description should provide a fuller picture of the tool's behavior. It does not explain how the tool interacts with the page (e.g., focusing the element, clearing content), nor does it mention the optional 'slowly' or 'submit' behaviors. The agent would need to rely heavily on the schema and trial-and-error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the context that the element must be 'editable', which is not in the schema. This provides marginal additional meaning, but no further parameter detail beyond what the schema already supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Type text into editable element' uses a specific verb and resource, clearly indicating the tool inputs text into an editable field. However, it does not distinguish itself from sibling tools like playwright__browser_fill_form or playwright__browser_press_key, which also involve text entry, so it loses a point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Siblings such as fill_form (for multiple fields), press_key (for single keys), or click (to focus) are not mentioned, nor are any exclusions or prerequisites given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playwright__browser_wait_forARead-only
Wait for text to appear or disappear or a specified time to pass
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | The text to wait for | |
| time | No | The time to wait in seconds | |
| textGone | No | The text to wait for to disappear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the three waiting conditions but does not explain blocking behavior, timeout implications, or what happens if the condition is never met. Minimal additional transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb 'Wait.' Every word is essential; no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with three optional parameters. The description covers the three modes but does not explain behavior when multiple parameters are specified (e.g., precedence), nor does it mention return values or error conditions. Given the lack of output schema and the simplicity, the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter (text, time, textGone). The description does not add new semantic information about the parameters beyond what the schema already provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: waiting for text to appear, disappear, or a specified time. This is a specific verb (wait) with clear conditions, distinguishing it from other browser actions like click, navigate, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like playwright__browser_snapshot or playwright__browser_find, nor does it mention when not to use it. No usage context is given.
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. Dates show when Glama detected each change.
38 tool updates
v0.4.0- First observed
filesystem__create_directory - First observed
filesystem__directory_tree - First observed
filesystem__edit_file - First observed
filesystem__get_file_info - First observed
filesystem__list_allowed_directories - First observed
filesystem__list_directory - First observed
filesystem__list_directory_with_sizes - First observed
filesystem__move_file - First observed
filesystem__read_file - First observed
filesystem__read_media_file - First observed
filesystem__read_multiple_files - First observed
filesystem__read_text_file - First observed
filesystem__search_files - First observed
filesystem__write_file - First observed
playwright__browser_click - First observed
playwright__browser_close - First observed
playwright__browser_console_messages - First observed
playwright__browser_drag - First observed
playwright__browser_drop - First observed
playwright__browser_evaluate - First observed
playwright__browser_file_upload - First observed
playwright__browser_fill_form - First observed
playwright__browser_find - First observed
playwright__browser_handle_dialog - First observed
playwright__browser_hover - First observed
playwright__browser_navigate - First observed
playwright__browser_navigate_back - First observed
playwright__browser_network_request - First observed
playwright__browser_network_requests - First observed
playwright__browser_press_key - First observed
playwright__browser_resize - First observed
playwright__browser_run_code_unsafe - First observed
playwright__browser_select_option - First observed
playwright__browser_snapshot - First observed
playwright__browser_tabs - First observed
playwright__browser_take_screenshot - First observed
playwright__browser_type - First observed
playwright__browser_wait_for
TDQS
The tools are mostly distinct as they are grouped by 'playwright__' and 'filesystem__' prefixes and have clear action-target descriptions, though a few like 'read_file' and 'read_text_file' could be confused, especially with the deprecation note.
The naming convention is largely consistent with a pattern of 'module__verb_noun' (e.g., playwright__browser_click, filesystem__read_text_file). Minor inconsistency arises with some 'playwright__browser_' tools that use somewhat different verb phrasing (e.g., 'run_code_unsafe' vs 'evaluate'), and the presence of a deprecated 'read_file' alongside the preferred 'read_text_file' is confusing.
With 38 tools, the set is on the high side. While it covers browser automation and file system operations fairly thoroughly, the sheer number could be overwhelming and suggests potential for consolidation or trimming of overlapping or rarely useful tools.
The file system tools provide a comprehensive set for read, write, edit, search, and directory management. The browser tools cover navigation, interaction, and inspection well. Minor gaps exist, such as lacking a dedicated tool for clearing browser data or handling multiple dialogs, but the core workflows are well supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Marketplace gateway: 100+ services and 1,400+ tools behind one MCP connection with unified auth
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAggregates multiple MCP servers behind a single, secure endpoint with unified tool/resource discovery, OAuth authentication, and resilient request routing. Enables users to manage and interact with multiple MCP backends through one centralized interface with load balancing and circuit breakers.2-
- FlicenseNot gradedqualityDmaintenanceA centralized gateway and router that integrates multiple MCP servers into a single endpoint with built-in policy enforcement and secret management. It features a Web GUI for managing tool access, audit logs, and multi-environment configurations across various sub-servers.-
- AlicenseNot gradedqualityCmaintenanceA gateway that aggregates multiple MCP servers into a single endpoint, namespacing their tools and forwarding calls, so an agent connects to one MCP to access the entire stack.MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP gateway that aggregates multiple MCP servers and API plugins behind a single endpoint with authentication, rate limiting, audit logging, REST API bridge, and web dashboard.8MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/qualienai/qualien-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server