[{"slug":"ZV-2026-1984","server_name":"api.kviria.com","severity":"breaking","title":"api.kviria.com: Field intent was removed from kviria input; consumers still sending it may be rejected or silently ignored.","summary":"[risky] Description of kviria changed (66% word delta). [breaking] Field intent was removed from kviria input; consumers still sending it may be rejected or silently ignored. [breaking] Field candidates was removed from kviria input; consumers still sending it may be rejected or silently ignored. [breaking] Field references was removed from kviria input; consumers still sending it may be rejected or silently ignored. [risky] Optional field state was added to kviria; may shift model behaviour. [breaking] Field transcript on kviria is now required. [safe] Field anchor on kviria is no longer required. [risky] Field state was added to kviria output. [breaking] Enum value resolved removed from decision on kviria. [breaking] Enum value confirm removed from decision on kviria. [breaking] Enum value candidates removed from decision on kviria. [breaking] Enum value notFound removed from decision on kviria. [breaking] Enum value clarify removed from decision on kviria. [risky] Enum value one added to decision on kviria. [risky] Enum value one_unconfirmed added to decision on kviria. [risky] Enum value many added to decision on kviria. [risky] Enum value none added to decision on kviria. [risky] Enum value unclear added to decision on kviria. [risky] Enum value not_a_place_request added to decision on kviria.","changes":[{"kind":"description_changed","tool":"kviria","after":"Kviria finds the place, address or street corner a user means near their current position and returns its verified coordinate with an evidence trail.\n\nWhen to call: on every user turn of a place conversation, from the first time the user mentions a place, a kind of place, an address, a street, a corner or what is around them, until the place is settled. That includes yes or no answers, picks (\"the second one\"), corrections (\"no, the other one\"), follow-ups (\"what's across from it\") and questions about your last answer (\"are you sure?\"). Kviria resolves each of these from the state, so do not answer them yourself.\n\nWhat to send: transcript is the user's whole last turn, word for word. state is the `state` field of the previous kviria response, copied exactly: that field only, never the whole response; send an empty string on the first call. anchor is the user's current position exactly as you were given it: send it on the first call, and after that only when the position changes; never invent or round it.\n\nWhat comes back, and your move: one - the place is settled; say its name and distance exactly as returned. one_unconfirmed - ask \"Is it {name} ({distanceM} m)?\" and send the user's answer as the next call. many - name the candidates with their distances, ask which one, and send the user's answer as the next call. none - Kviria looked and found nothing; say so and ask for a nearby business or landmark. unclear - ask the user to say more about the place. not_a_place_request - the user's words are not about a place; reply to the user yourself.\n\nPhrase your reply from the returned facts only; never invent a place, a distance or any other detail. Distances are meters; convert them for your user.\n\nCoverage: the contiguous United States. Outside it the answer is none with an out_of_coverage entry and the turn is free; tell the user instead of retrying.\n\nErrors: 400 invalid_state means the state was altered; start again with an empty state. 503 parser_unavailable: do not retry the call. Tell the user you cannot look it up right now and to ask again in a moment; never ask the user to rephrase for it.","before":"Kviria narrows a user's spoken reference down to exactly one place or address and returns its verified coordinate with an evidence trail. Call it with the user's raw message and their current anchor {lat, lng}. Phrase your reply from the returned facts ONLY: state names, distances, and categories exactly as returned; never invent distances, crosswalks, landmarks, opening hours, or any sensory detail. For a 'confirm' decision, ask the user \"is it {name} ({distanceM} m)?\" and pass their bare yes/no back as the next transcript, echoing the candidates array verbatim. For 'candidates', list them with their distances and ask which one; on the user's next message echo the SAME candidates array back so the engine binds the pick mechanically. Preserve the pendingConfirm marker on the candidate it came with. The target is the final outcome: present its coordinate, never paraphrase the place name. If the user rejects (no), present the returned candidates or ask for more detail. Do not call with invented anchors; the anchor is the user's real position. Kviria is in beta: current coverage is the contiguous United States (approximately lat 24.4 to 49.5, lng -125.0 to -66.8). Queries outside the covered area return an honest notFound with an out_of_coverage evidence entry, and that turn is free. Tell the user the area is outside current coverage instead of retrying.","detail":"Description of `kviria` changed (66% word delta).","severity":"risky","descriptionDelta":0.6621004566210046},{"kind":"input_property_removed","path":"inputSchema.properties.intent","tool":"kviria","before":{"type":"object","oneOf":[{"type":"object","required":["action","target"],"properties":{"action":{"const":"find"},"target":{"$ref":"#/definitions/find_target"}}},{"type":"object","properties":{"action":{"const":"search"},"categoryAny":{"type":"array","items":{"type":"string"},"description":"Exact labels the user WANTS (e.g. [\"mexican_restaurant\"])"},"categoryNot":{"type":"array","items":{"type":"string"},"description":"Exact labels the user rejects (e.g. [\"cafe\"])"}}},{"type":"object","required":["action","of"],"properties":{"of":{"$ref":"#/definitions/target_anchor"},"side":{"enum":["left","right"]},"action":{"const":"neighbors"}}},{"type":"object","required":["action","of"],"properties":{"of":{"$ref":"#/definitions/target_anchor"},"action":{"const":"near"},"categoryAny":{"type":"array","items":{"type":"string"}},"categoryNot":{"type":"array","items":{"type":"string"}}}},{"type":"object","required":["action","of"],"properties":{"of":{"$ref":"#/definitions/target_anchor"},"action":{"const":"across"},"categoryAny":{"type":"array","items":{"type":"string"}}}},{"type":"object","required":["action","street","n"],"properties":{"n":{"type":"integer","minimum":1},"action":{"const":"along"},"street":{"type":"string"}}},{"type":"object","required":["action","number"],"properties":{"action":{"const":"at_address"},"number":{"type":"string"},"street":{"type":"string"}}},{"type":"object","required":["action","street"],"properties":{"action":{"const":"street_zoom"},"street":{"type":"string"}}},{"type":"object","required":["action","street"],"properties":{"action":{"const":"street_end"},"street":{"type":"string","description":"The street whose end places the user wants."},"categoryAny":{"type":"array","items":{"type":"string"},"description":"Optional kind filter for the end places (\"is there any market at the end of this street?\")."},"categoryNot":{"type":"array","items":{"type":"string"}}}},{"type":"object","required":["action","value"],"properties":{"value":{"enum":["yes","no"]},"action":{"const":"confirm"}}},{"type":"object","required":["action","index"],"properties":{"index":{"type":"integer","minimum":1},"action":{"const":"select"}}}],"description":"The structured meaning of the user's words. Send exactly one of transcript or intent. Category filters take EXACT labels from the area's real categories (provided in every response). Unfiltered `across` returns the place on the opposite side with its own category; add categoryAny to ask for a specific kind. Full mapping rules: https://kviria.com/skill.md"},"detail":"Field `intent` was removed from `kviria` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.candidates","tool":"kviria","before":{"type":"array","items":{"type":"object","required":["gers"],"properties":{"gers":{"type":"string","maxLength":128,"minLength":1},"name":{"type":["string","null"],"maxLength":512},"category":{"type":["string","null"],"maxLength":256},"location":{"type":"object","required":["lat","lng"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}}},"distanceM":{"type":"number","minimum":0},"pendingConfirm":{"type":"boolean","description":"Marks the confirm-gate target; echo it back exactly as received."}}},"maxItems":50,"description":"The pending candidates from the previous response, echoed VERBATIM (including the pendingConfirm marker) so clarification answers and confirm yes/no bind mechanically."},"detail":"Field `candidates` was removed from `kviria` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.references","tool":"kviria","before":{"type":"array","items":{"type":"object","required":["gers"],"properties":{"lat":{"type":"number","description":"Reference latitude as returned by Kviria."},"lng":{"type":"number","description":"Reference longitude as returned by Kviria."},"gers":{"type":"string","maxLength":128,"minLength":1},"name":{"type":["string","null"],"maxLength":512}}},"maxItems":5,"description":"Previously resolved places, most recent first, so \"it\" and \"that cafe\" resolve on later turns. Optional. Echo any lat/lng Kviria returned so distances stay real."},"detail":"Field `references` was removed from `kviria` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.state","tool":"kviria","after":{"type":"string","maxLength":2263,"description":"The `state` field of the previous kviria response, copied character for character: that field only, never the whole response, and never shortened. Empty string on the first call."},"detail":"Optional field `state` was added to `kviria`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_added","path":"inputSchema.required.transcript","tool":"kviria","detail":"Field `transcript` on `kviria` is now required.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.anchor","tool":"kviria","detail":"Field `anchor` on `kviria` is no longer required.","severity":"safe"},{"kind":"output_property_added","path":"outputSchema.properties.state","tool":"kviria","after":{"type":"string","description":"The conversation state. Send it back unchanged as `state` on the next call."},"detail":"Field `state` was added to `kviria` output.","severity":"risky"},{"kind":"enum_value_removed","path":"outputSchema.properties.decision","tool":"kviria","before":"resolved","detail":"Enum value `resolved` removed from `decision` on `kviria`.","severity":"breaking"},{"kind":"enum_value_removed","path":"outputSchema.properties.decision","tool":"kviria","before":"confirm","detail":"Enum value `confirm` removed from `decision` on `kviria`.","severity":"breaking"},{"kind":"enum_value_removed","path":"outputSchema.properties.decision","tool":"kviria","before":"candidates","detail":"Enum value `candidates` removed from `decision` on `kviria`.","severity":"breaking"},{"kind":"enum_value_removed","path":"outputSchema.properties.decision","tool":"kviria","before":"notFound","detail":"Enum value `notFound` removed from `decision` on `kviria`.","severity":"breaking"},{"kind":"enum_value_removed","path":"outputSchema.properties.decision","tool":"kviria","before":"clarify","detail":"Enum value `clarify` removed from `decision` on `kviria`.","severity":"breaking"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"one","detail":"Enum value `one` added to `decision` on `kviria`.","severity":"risky"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"one_unconfirmed","detail":"Enum value `one_unconfirmed` added to `decision` on `kviria`.","severity":"risky"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"many","detail":"Enum value `many` added to `decision` on `kviria`.","severity":"risky"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"none","detail":"Enum value `none` added to `decision` on `kviria`.","severity":"risky"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"unclear","detail":"Enum value `unclear` added to `decision` on `kviria`.","severity":"risky"},{"kind":"enum_value_added","path":"outputSchema.properties.decision","tool":"kviria","after":"not_a_place_request","detail":"Enum value `not_a_place_request` added to `decision` on `kviria`.","severity":"risky"}],"published_at":"2026-10-08T23:58:15.479Z"}]