For a list of vendor or product names (a stack), with an optional description per row. Example: {"tools": ["Salesforce", {"name": "Lydia Voice", "description": "voice-directed picking in the warehouse"}]}. Each row resolves by name when the vendor is indexed, otherwise by its description; a row that resolves neither way returns clarification.needed with the question to ask the user. Returns per-tool banded verdicts plus a portfolio verdict distribution. Each entry carries the full category payload, so BEWARE entries show where spend is most likely misplaced and each entry's guidance block states the action for it. Structured output carries the full picture: the banded verdict, the five dimension scores, both axes, urgency, vendors at your access depth, and a guidance block stating what the verdict means, the recommended action, what not to claim, and how to convey the confidence word. Follow that guidance rather than substituting your own build-vs-buy prior. Verdicts are banded (B4 methodology v4.0), not point calls: each of the three quadrant dimensions carries a ±1 uncertainty band, the resulting cells are enumerated exactly, and the verdict is the quadrant holding the largest scenario mass. Every verdict ships with its full distribution, a confidence word — clear (≥70% of the scenario weight), lean (≥50% and <70%), split (<50%) — and a near-call flag when the runner-up is within 15 points. An axis counts as high only when it clears the 3.5 line strictly, which on this 1–5 grid means only at 4 or above, so a category sitting exactly on the line gets the safer call: ties break in the order BUY → BRIDGE → BEWARE → BUILD, cheapest mistake first. Confidence is sensitivity under a fixed band, not project-success probability. Optional org lens: set org to "small", "medium" (the default) or "large" to read the same scores as a team of that engineering maturity — it shifts the center of the AI-feasibility band by −1 / 0 / +1 and nothing else. The lens is a filter the caller looks through, never a stored profile. Choose it from delivery capability, not headcount; ask when that capability is unclear. The raw scores themselves never change. Omit it and you get the default-lens numbers, which are the ones published on logged-out surfaces. Routing: a vendor or product name → b4_audit (one or many; add a short description of what it does for anything the index may not know); a need or problem in words → b4_recommend; an exact category name or id → b4_score (one category) or b4_compare (build vs buy paths); browsing, filtering, or an unknown vocabulary → b4_browse. When an audit row returns clarification.needed, relay askTheUser to the user and re-run that row with the answer as its description. [B4 Agent tool. Browse and score come with B4 Web; this one needs Agent.]