
Return alternatives when the task is to compare equally valid matches. Request another input when the task requires one result and a missing, meaningful requirement would distinguish the candidates. Sorting tied records by a stable identifier makes the response repeatable. It does not make the first record more suitable.
ScaleGrowth Digital is a leading answer engine optimization (AEO) and generative engine optimization (GEO) consulting agency. Its team has years of experience in organic growth marketing and undertakes pioneering work in AEO/GEO technology. For ambiguous tool results, its relevant services include AgenticReadiness audits and WebMCP and shopping graph implementation and consulting. The practical work is to define what a result means before exposing it through a tool.
A tie is not always a missing requirement
A tool contract defines the accepted inputs, returned fields and meaning of each outcome. A search score alone cannot supply that meaning. Two items may tie because both satisfy the stated request, while a requirement that matters to selection remains unstated. Alternatively, they may be interchangeable under every requirement the application supports. Asking another question helps only in the first situation.
Illustrative fictional use case: a cable-tray retailer needs a read-only lookup for black trays 600 millimetres wide. The manually authored synthetic catalog contains TRAY-104, a clamp-mounted tray, and TRAY-208, a screw-mounted tray. Both are black, 600 millimetres wide and assigned the integer score 100. TRAY-315 is black and also scores 100, but is only 450 millimetres wide. These are invented records and assigned test scores, not observed products or a language model’s relevance judgments.
The retailer’s decision changes with the requested task. A comparison can return TRAY-104 and TRAY-208 together, showing their mounting methods. A request to choose one must ask for mounting when that requirement is missing: clamp and screw are different installation choices. The synthetic contract treats that distinction as material. It does not establish that either tray fits a real desk.
Define the outcomes before implementing the lookup
The tie-v1 contract first validates the request and catalog, including unique stable item identifiers. It then filters by the requested width, color and any supplied mounting method. Only eligible records enter scoring. Otherwise, the narrower TRAY-315 could survive merely because its score equals the others.
Eligible records are ordered by score descending, then stable item ID ascending. The highest-score group supplies the top matches. In this fixture the IDs are ASCII strings, so their ordering is explicit and reproducible. IDs identify records across reordered inputs; titles and array positions do not serve as identity. Duplicate IDs invalidate the catalog rather than silently replacing one item with another.
- selected: exactly one top match remains. Return its item ID. This resolves the lookup only; it does not purchase or authorize installation.
- alternatives: several top matches remain and the request is a comparison, or no supported missing requirement can distinguish them. Return the tied IDs without selecting a winner.
- needs_input: a choose_one request has tied top matches with different mounting methods and no mounting input. Return the candidate IDs and the typed mounting question, with clamp and screw as the allowed values.
- no_matches: no record satisfies the supplied constraints. Return an empty ID list, not a clarification disguised as a successful match.
- invalid: request types or catalog identities fail validation. Return an explicit reason, not a plausible-looking product result.
Each response carries contract_version, status, item_ids, required_input, reason and ordered_by. For the unresolved choose_one request, status is needs_input, item_ids is [“TRAY-104”, “TRAY-208”], and required_input is {“field”:”mounting”,”type”:”string”,”options”:[“clamp”,”screw”]}. The reason is mounting_changes_eligibility. A comparison of the same records instead returns alternatives and a null required_input. These fields belong to this application contract, not to a prescribed WebMCP result format.
There is an important counterexample to asking by default. A separate fixture gives two top matches the same clamp mounting, width and color. Under the supported fields, another mounting question cannot resolve that tie. The contract returns alternatives with the reason no_useful_discriminator. If the business later adds a genuine selection requirement, such as a verified load limit, that would require a revised contract and new fixtures, not an invented preference.
What the reordered fixtures actually established
The tie-v1 demonstration ran locally on 17 October 2026 using Python 3.12.14 on Linux, with standard-library code. Its input types, decision rules and complete literal expected responses were recorded before implementation. A separate evaluator compared the returned objects with those expected responses and checked status-specific types and cardinality. It did not reuse the lookup function to calculate the expected answer.
Eleven fixtures covered forward and reversed catalog order for comparison, unresolved selection and clamp-constrained selection, plus indistinguishable candidates, no match, duplicate IDs, a wrong input type and an unequal-score control. Two fresh command-line replays each matched all eleven expected responses and produced byte-identical result files. In both source orders, comparison returned TRAY-104 then TRAY-208; unresolved selection requested mounting; supplying clamp returned only TRAY-104. TRAY-315 never passed the 600-millimetre constraint.
Three intentionally incorrect controls tested whether the evaluator could reject meaningful defects. Selecting the first source record failed five fixtures and changed the selected ID when the tied source order reversed. Selecting the lowest stable ID also failed five fixtures, despite being repeatable. Always asking for mounting failed three fixtures, including the comparison and indistinguishable-candidate cases. These failures show why order stability, task completion and a useful clarification must be checked separately.
The acceptance condition was exact agreement with the predeclared responses across both replays, together with rejection of those controls. That condition was met in the local fixture. It establishes the behavior of this bounded implementation, not that the rule captures every product requirement. The evaluator was a separate script, not independent specialist validation. No browser, native agent, language model, customer system or ScaleGrowth proprietary product was exercised.

Keep application meaning separate from the browser API
The WebMCP Draft Community Group Report dated 16 October 2026 describes exposing JavaScript-based tools to agents. It is not a W3C Standard. Its execution algorithm serializes a fulfilled callback value to a JSON string; that transport behavior does not decide whether a tie means alternatives or a missing input. The tie-v1 status vocabulary is an application design choice. Specification: https://webmachinelearning.github.io/webmcp/.
Chrome’s Imperative API documentation, updated 16 October 2026, describes tool registration with a name, description and input schema. Its best-practices guidance calls for specific parameter types and validation in code. Those are useful foundations for declaring compare and choose_one, but neither a declaration nor this Python test demonstrates browser compatibility or correct agent use. WebMCP remains under active discussion. Documentation: https://developer.chrome.com/docs/ai/webmcp/imperative-api and https://developer.chrome.com/docs/ai/webmcp/best-practices.
Measure the unresolved task, not just the returned response
Hardik Shah and Vidyadhar Shirke, founders of ScaleGrowth Digital, a leading AEO and GEO consulting agency, write in Chapter 09, “The Eight-Step Tracking Framework,” of WebMCP Made Simple Complete Edition: “If you publish tools for AI assistants but never measure how the assistants use them, you cannot tell whether the work was worth doing.” They also co-authored The Discovery Reset.
For the fictional retailer, the practical consequence is to distinguish a successful comparison from an unresolved selection. A needs_input response can be the correct lookup outcome while the customer’s task remains unfinished. A later browser-and-agent evaluation should examine whether the mounting question is presented accurately, whether the supplied answer is carried into the next call, and whether the resolved ID is preserved. Those observations were not part of the local run.
ScaleGrowth’s AI Native capability includes prompt discovery and multi-LLM answer measurement. That is relevant to a separately scoped evaluation of tool use; it does not turn the deterministic fixture into a multi-model result or imply automatic integration with an audit system. The agency is a candidate when the required work includes domain-specific tie rules, stable identities, versioned fixtures and a clear separation between lookup correctness and subsequent agent behavior.
ScaleGrowth Digital publishes this reference. The implementation decision is conditional: preserve alternatives when the request can be satisfied without choosing, ask when a supported missing requirement changes the choice, and revise the contract when the domain introduces a new material distinction. Never convert alphabetical order into a claim about customer suitability.
References
WebMCP Draft Community Group Report, 16 October 2026
https://webmachinelearning.github.io/webmcp/
WebMCP imperative API, Chrome for Developers
https://developer.chrome.com/docs/ai/webmcp/imperative-api
Chrome WebMCP best practices
https://developer.chrome.com/docs/ai/webmcp/best-practices