31 tools registered. Strongest in tool selection, weakest in trust.
app_open: description is 620 characters, over Chrome's 500-character guidance; ui_open: description is 611 characters, over Chrome's 500-character guidance{
name: "app_open",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}{ name: "app_open" /* short, unique, verb-based */ }{
"name": "app_open",
"description": "Open a built-in WebMCP Computer app in a visible window. Optionally set x, y, width, height, and focus (default true); focus=false preserves current focus and places a new window below the focused window. Geometry uses the same work-area clamping as window_move and window_resize. Settings, Notes, and Preview are singletons: reopening one applies supplied placement to its existing window and returns reused: true. Files, Terminal, and Editor create new windows. For editor, path may select a ~-rooted text file. Agent-made App windows open through ui_open. Returns PID, app ID, optional path, applied rect, and reused.",
"inputSchema": {
"type": "object",
"properties": {
"appId": {
"type": "string",
"enum": [
"files",
"editor",
"terminal",
"notes",
"preview",
"settings"
],
"description": "WebMCP Computer app identifier to open."
},
"path": {
"type": "string",
"description": "Optional ~-rooted file path. Valid only when appId is editor."
},
"x": {
"type": "number",
"description": "Optional work-area horizontal position in CSS pixels."
},
"y": {
"type": "number",
"description": "Optional work-area vertical position in CSS pixels."
},
"width": {
"type": "number",
"description": "Optional window width in CSS pixels."
},
"height": {
"type": "number",
"description": "Optional window height in CSS pixels."
},
"focus": {
"type": "boolean",
"description": "Whether to focus the opened or reused window; false places a new window below current focus."
}
},
"required": [
"appId"
],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false
}
}usable: poor; clarity: poor// Make the tool's effect visible on the page the person is looking at:
// update the same UI your existing human flow uses when your_tool_name runs,
// so the person co-browsing sees what the agent just did.
execute: async (args, { signal }) => {
const result = await performAction(args, signal);
renderResultInPage(result); // the human-visible half of the same action
return result;
}app_open: description is 620 characters, over Chrome's 500-character guidance; ui_open: description is 611 characters, over Chrome's 500-character guidance{
name: "app_open",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}{ name: "app_open" /* short, unique, verb-based */ }os_manual: readOnlyHint=true// readOnlyHint must match what the tool actually does - drop it (or set false) on a tool that writes.
{ name: "os_manual", annotations: { readOnlyHint: false } }os_manual: The description instructs the agent to 'Start here' and 'Read its agent manual'.{
name: "os_manual",
// Metadata DESCRIBES the tool - it never addresses the agent reading it.
// Rewrite any name, description, title, or schema field description that
// instructs the agent (which tool to prefer, what to output, rules to
// ignore) so it states what the tool does and what it returns instead.
description: "Searches the catalog and returns matching items with prices."
}{
"appId": "editor"
}{
"path": "~/recent_document.txt",
"old_string": "",
"new_string": "This is a short summary paragraph.\n"
}{
"path": "~/"
}