{"uid":"cap_233rsYrMWRhTpZvggrP_j","slug":"halowerk-intent-clarifier-64f80c93","name":"Halowerk Intent Clarifier","description":"Takes a list of candidate intents, each described by attributes, plus whatever is already known, and returns the one attribute worth asking about next. Candidates contradicted by the known values are ruled out first and listed with the attribute that excluded them; a candidate that simply does not declare a known attribute is kept, because silence is not a contradiction.","url":"https://agent.halowerk.com/v1/intent-clarify","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"known":{"type":"object","description":"Attribute values already established, for example from earlier answers.","additionalProperties":{"type":["string","number","boolean","null"]}},"ask_about":{"type":"array","items":{"type":"string","maxLength":128,"minLength":1},"maxItems":50,"description":"Restrict the question to these attributes. Empty or absent means all of them."},"candidates":{"type":"array","items":{"type":"object","required":["id","attributes"],"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"description":"Identifier, unique within the call."},"label":{"type":"string","maxLength":300,"description":"Optional human-readable name, echoed unchanged."},"prior":{"type":"number","default":1,"maximum":1000,"minimum":0,"description":"Relative likelihood of this candidate before asking. Used to weight the expected outcome."},"attributes":{"type":"object","description":"What distinguishes this candidate. Values must be scalar.","additionalProperties":{"type":["string","number","boolean","null"]}}},"additionalProperties":false},"maxItems":50,"minItems":2,"description":"The competing intents, two to fifty."},"max_options":{"type":"integer","default":5,"maximum":10,"minimum":2,"description":"How many answer options the question may offer. Excess values are named under omitted_values, never dropped silently."},"attribute_prompts":{"type":"object","description":"Your own question wording per attribute. Used verbatim where given.","additionalProperties":{"type":"string","maxLength":300}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_iSmx3eschui3FLTAlwkVy","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Given a list of candidate intents with distinguishing attributes and already-known values, returns the single most informative question to ask next to narrow down which intent the user has.","exampleAgentPrompt":"I have four candidate intents — 'book_flight', 'check_flight_status', 'cancel_flight', and 'upgrade_seat' — each with attributes like destination, date, and booking_ref. I already know the user's destination is 'London'. Which single attribute should I ask about next to best narrow down which intent they have?","exampleUseCases":[{"title":"Customer support intent routing","prompt":"I'm building a support bot that handles five possible intents: 'reset_password', 'billing_dispute', 'cancel_subscription', 'upgrade_plan', and 'report_bug'. Each has different required attributes. The user hasn't told me anything yet. Which attribute should I ask about first to most quickly identify what they want?"},{"title":"E-commerce product finder clarification","prompt":"A shopper might be looking for a laptop, a tablet, a phone, or a desktop — I have all four as candidates with attributes like budget, brand, and screen_size. I already know their budget is under $800. What's the best next question to ask to figure out which product they want?"},{"title":"Travel booking assistant disambiguation","prompt":"My travel agent bot has three possible intents for this user: 'book_hotel', 'book_flight', or 'rent_car'. I know the user's travel date is next Friday and destination is Paris. Which attribute should I ask about next to determine which of these three services they actually need?"}],"resultDescription":"Returns the single attribute whose answer would most effectively narrow down the list of candidate intents, along with a suggested question (using custom wording if provided), the set of allowable answer options, any values omitted due to the max_options cap, and a list of candidates already ruled out with the attribute that excluded each one.","failureModes":["Fewer than 2 candidates provided — validation error","Candidate attributes contain non-scalar values — schema rejection","max_options outside 2–10 range — validation error","ask_about references attributes not present in any candidate — may return no useful question","All candidates share the same value for every attribute — no discriminating question can be found","Candidates list exceeds 50 items — rejected","Attribute prompt string exceeds 300 characters — truncation or rejection"],"whenToPreferThis":"Choose this endpoint when you have a well-defined set of competing intents (2–50) each described by explicit attributes, and you want an optimal next clarifying question rather than generating questions heuristically. It is especially useful in multi-turn conversational flows where you accumulate answers incrementally and need to minimize the number of questions asked. Prefer it over general LLM prompting when you need deterministic, weighted candidate elimination with explicit ruled-out reasoning.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-13T18:48:57.729Z","isFirstParty":false}