Skip to main content
Glama

find

Describe a page element in plain language to locate it in Firefox. Returns ranked ref handles ready for action tools by matching accessible names, text, and attributes.

Instructions

Look up elements by describing them in ordinary language instead of by selector: "the search box at the top", "whatever button adds this to a cart", "the heading that mentions pricing". Scoring runs over the same tree read_page builds - accessible names, an element's own text, and attributes such as id, name, placeholder, title and href - with extra weight for a handful of intents (search, login, cart, menu, close, submit, dropdown, checkbox, heading). Results come back ranked, best first, each with the ref_N handle the action tools need, and at most 20 are printed; when more than that matched, the output tells you to describe the target more tightly. The search reaches 30 levels deep and the first 5000 elements walked, and it says so when it stopped short - so an empty result on a huge page means widen the net with read_page, not that the element is absent. query and tabId are both required, and handles expire with the document, so run find again after any navigation; a browser_batch step must state the id itself. As everywhere on this server the automation profile skips any per-site approval step, while an unanswered alert or confirm holds the page until firefox_dialog clears it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesDescribe the target the way you would to a person: by its job ("login button", "the search field in the header") or by wording visible on it ("Add to cart", "organic mango"). A few concrete words beat a full sentence; filler such as "the", "please" and "click" is dropped before matching.
tabIdYesRequired: the session tab to search. Ask tabs_context_mcp or firefox_status for valid ids; only the tabs this session owns are addressable, and a browser_batch step must spell the id out.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the search ranking approach, the 20-result limit, the 30-level and 5000-element traversal bounds, handle expiration, and the behavior around alerts and approval prompts. This gives the agent a solid model of side effects and limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but mostly purposeful. It front-loads the core purpose and then covers algorithm details, limits, and usage edge cases. A few points about tabId are repeated between the main description and the schema, but overall it is efficiently organized and each clause adds operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and lack of an output schema, the description is remarkably complete. It explains what results look like (ranked list with ref_N handles), how many can be returned, what happens when limits are exceeded, when results become stale, and how alerts affect execution. This gives the agent enough context to use the tool reliably without hidden surprises.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial semantic detail beyond the schema: it explains how to formulate the query, that filler words are dropped, that only session-owned tabs are addressable, and how to obtain valid tab IDs. This helps the agent invoke the tool correctly in real workflows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: looking up elements by natural language description rather than by selector. It gives concrete examples and distinguishes itself from read_page by referencing the same tree, making the tool's role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical usage guidance: how to phrase queries, what to do when too many results are returned, and when to fall back to read_page on an empty result. It also notes that handles expire after navigation and that browser_batch must spell out tabId. It does not explicitly contrast with every sibling tool, but the main alternative is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.