← WebMCP Directory

Tool tree

demo-app-three-bay.vercel.app

Developer ToolsTools verified
Website
CityDesk; city services
Explore capabilities

    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": "/"
    }