gradeNot graded
page: Every page
describe_appAnswer
Use when the page is unfamiliar or its current scope is uncertain. Returns a compact map of sections, views, vocabulary, and coverage. Next: choose a content search, a control lookup, or cross-page discovery from the gap; do not page headings solely to enumerate them. After an action, use `_observation` as `changesSince`.
View tool JSON
{
"name": "describe_app",
"kind": "answer",
"impl": "imperative",
"description": "Use when the page is unfamiliar or its current scope is uncertain. Returns a compact map of sections, views, vocabulary, and coverage. Next: choose a content search, a control lookup, or cross-page discovery from the gap; do not page headings solely to enumerate them. After an action, use `_observation` as `changesSince`.",
"inputSchema": {
"type": "object",
"properties": {
"opaque": {
"type": "boolean",
"description": "Boxes of elements the text index cannot read (canvas, unlabeled images), not the orientation."
},
"describe": {
"type": "boolean",
"description": "With `opaque:true`, read each canvas/image region with an on-device model (`description`). Slow — use a small `limit`. Fail-open where no model exists."
},
"section": {
"type": "string",
"enum": [
"reachableViews",
"outline",
"landmarks",
"currentTrail"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"default": 10
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"revision": {
"type": "integer",
"minimum": 0
},
"since": {
"type": "string",
"description": "Prior `_etag`."
},
"changesSince": {
"type": "string",
"description": "Prior `_observation` after an action. Emits `announce` (live-region text the page stated) and `errorText` (a field's own validation message) so you read the outcome, not just that state changed."
},
"summarize": {
"type": "boolean",
"description": "Slow, lossy; less text; short skips"
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
}
},
"page": "/"
}find_on_pageAnswer
Use for a fact, explanation, or passage on this page; not for a control or exhaustive inventory. Returns ranked evidence and an optional answer. Expand an excerpt only when it leaves a material gap. For a job use locate_control; for another page use agentic_content.
View tool JSON
{
"name": "find_on_page",
"kind": "answer",
"impl": "imperative",
"description": "Use for a fact, explanation, or passage on this page; not for a control or exhaustive inventory. Returns ranked evidence and an optional answer. Expand an excerpt only when it leaves a material gap. For a job use locate_control; for another page use agentic_content.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Content, not a control."
},
"goal": {
"type": "string",
"minLength": 1,
"description": "`read` default; `navigate` requests an action."
},
"limit": {
"type": "integer",
"minimum": 1,
"default": 5
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"revision": {
"type": "integer",
"minimum": 0
},
"since": {
"type": "string",
"description": "Prior `_etag`."
},
"summarize": {
"type": "boolean",
"description": "Slow, lossy; less text; short skips"
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
},
"required": [
"query"
]
},
"page": "/"
}locate_controlAction
Use for a specific user job, not a label guess or a page-wide inventory. Returns ranked live controls/links and refinements when intent is ambiguous. Resolve the chosen address immediately before the host acts. Page only while the job remains unresolved.
View tool JSON
{
"name": "locate_control",
"kind": "act",
"impl": "imperative",
"description": "Use for a specific user job, not a label guess or a page-wide inventory. Returns ranked live controls/links and refinements when intent is ambiguous. Resolve the chosen address immediately before the host acts. Page only while the job remains unresolved.",
"inputSchema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"description": "Control job, not guessed label."
},
"limit": {
"type": "integer",
"minimum": 1,
"default": 4
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"revision": {
"type": "integer",
"minimum": 0
},
"role": {
"type": [
"string",
"array"
],
"minLength": 1,
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
},
"description": "ARIA-role filter."
},
"affordance": {
"type": [
"string",
"array"
],
"minLength": 1,
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
},
"description": "Open-vocabulary job filter."
},
"landmark": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
},
"required": [
"description"
]
},
"page": "/"
}resolve_addressAction
Use with an address already returned by another tool: ground a control before an action, or expand a region when its excerpt is insufficient. Returns fresh state, navigation, box, and readable region evidence. Never reuse a box; follow a next page only if omitted text or controls affect the decision.
View tool JSON
{
"name": "resolve_address",
"kind": "act",
"impl": "imperative",
"description": "Use with an address already returned by another tool: ground a control before an action, or expand a region when its excerpt is insufficient. Returns fresh state, navigation, box, and readable region evidence. Never reuse a box; follow a next page only if omitted text or controls affect the decision.",
"inputSchema": {
"type": "object",
"properties": {
"address": {
"type": "object",
"description": "Copy; never edit.",
"properties": {
"frame": {
"type": "string",
"minLength": 1
},
"landmark": {
"type": [
"string",
"null"
]
},
"landmarkName": {
"type": [
"string",
"null"
]
},
"headingPath": {
"type": "array",
"items": {
"type": "string"
}
},
"row": {
"type": [
"string",
"null"
]
},
"role": {
"type": "string",
"minLength": 1
},
"name": {
"type": [
"string",
"null"
]
},
"ordinal": {
"type": "integer",
"minimum": 0
},
"peerCount": {
"type": "integer",
"minimum": 1
},
"anchorText": {
"type": "string"
},
"textOffset": {
"type": "integer",
"minimum": 0
},
"controlOffset": {
"type": "integer",
"minimum": 0
},
"textRevision": {
"type": "integer",
"minimum": 0
},
"resolveWith": {
"type": "string",
"enum": [
"read_region",
"resolve_address"
]
},
"headingScope": {
"type": "string",
"enum": [
"subtree",
"outline"
]
}
},
"required": [
"landmark",
"landmarkName",
"headingPath",
"row",
"role",
"name",
"ordinal",
"peerCount"
],
"additionalProperties": true
},
"scrollIntoView": {
"type": "boolean",
"description": "Move before measuring."
},
"expand": {
"type": "boolean",
"description": "Read more of a region: paginate its full text (`textOffset`) and include its controls."
},
"summarize": {
"type": "boolean",
"description": "Slow, lossy; less text; short skips"
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
},
"required": [
"address"
]
},
"page": "/"
}query_selectorAnswer
Use for known CSS or an inventory the user explicitly needs; not as a default orientation step. `actions` and `forms` can be large, so one job should use locate_control. Returns bounded matching rows. Request only fields needed; page only when omitted rows could change the answer.
View tool JSON
{
"name": "query_selector",
"kind": "answer",
"impl": "imperative",
"description": "Use for known CSS or an inventory the user explicitly needs; not as a default orientation step. `actions` and `forms` can be large, so one job should use locate_control. Returns bounded matching rows. Request only fields needed; page only when omitted rows could change the answer.",
"inputSchema": {
"type": "object",
"properties": {
"view": {
"type": "string",
"enum": [
"actions",
"structure",
"scopes",
"forms"
]
},
"selector": {
"type": "string",
"minLength": 1,
"description": "Known CSS."
},
"limit": {
"type": "integer",
"minimum": 1,
"default": 10
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"revision": {
"type": [
"integer",
"string"
],
"minimum": 0,
"minLength": 1,
"description": "Copy from a cursor."
},
"role": {
"type": [
"string",
"array"
],
"minLength": 1,
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"affordance": {
"type": [
"string",
"array"
],
"minLength": 1,
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"landmark": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"description": "Copied exact accessible name; actions only."
},
"heading": {
"type": "string",
"minLength": 1,
"description": "Copied exact heading; structure only."
},
"frames": {
"type": "boolean",
"description": "Follow readable frames; default true."
},
"fields": {
"type": [
"array",
"null"
],
"uniqueItems": true,
"description": "Return only evidence needed for the next decision: usually name and address; add state, text, or box only when they matter.",
"items": {
"type": "string",
"enum": [
"tag",
"role",
"name",
"text",
"state",
"box",
"address",
"attributes",
"scope",
"frame"
]
}
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
},
"oneOf": [
{
"required": [
"view"
],
"not": {
"required": [
"selector"
]
}
},
{
"required": [
"selector"
],
"not": {
"required": [
"view"
]
}
}
]
},
"page": "/"
}agentic_contentAction
Use for same-origin resources or a cross-page graph; not for facts already on this page. `list`/`find` returns bounded live links and resource handles. Navigate only destinations relevant to the user’s goal, retain source/destination/purpose, and report unvisited or truncated scope.
View tool JSON
{
"name": "agentic_content",
"kind": "act",
"impl": "imperative",
"description": "Use for same-origin resources or a cross-page graph; not for facts already on this page. `list`/`find` returns bounded live links and resource handles. Navigate only destinations relevant to the user’s goal, retain source/destination/purpose, and report unvisited or truncated scope.",
"inputSchema": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"list",
"read",
"find"
]
},
"query": {
"type": "string"
},
"url": {
"type": "string"
},
"goal": {
"type": "string",
"minLength": 1,
"description": "`navigate` verifies a live HTML URL when available."
},
"limit": {
"type": "integer",
"minimum": 1,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"revision": {
"type": "string",
"minLength": 1,
"description": "Copy from a cursor."
},
"summarize": {
"type": "boolean",
"description": "Slow, lossy; less text; short skips"
},
"reason": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\r\\n]+$",
"description": "One-line intent; the host may display it."
}
},
"allOf": [
{
"if": {
"properties": {
"intent": {
"const": "find"
}
},
"required": [
"intent"
]
},
"then": {
"required": [
"query"
],
"properties": {
"query": {
"minLength": 1
}
}
}
},
{
"if": {
"properties": {
"intent": {
"const": "read"
}
},
"required": [
"intent"
]
},
"then": {
"required": [
"url"
],
"properties": {
"url": {
"minLength": 1
}
}
}
}
]
},
"page": "/"
}