scry
Sent for effects that sort cards into zones — Scry, Surveil, and Fateseal all use this prompt. The player assigns each presented card to one of the allowed destinations.
Arguments
Section titled “Arguments”input.type is "scry". The remaining fields:
interface ScryInput { presentation: PromptPresentation; cards: Array<CardDto>; zones: Array<ScryDestination>;}#[serde(rename_all = "camelCase")]pub struct ScryInput { pub presentation: PromptPresentation, pub cards: Vec<CardDto>, pub zones: Vec<ScryDestination>,}
References: CardDto , PromptPresentation , ScryDestination
type ScryDestination = "libraryTop" | "libraryBottom" | "graveyard" | "exile" | "hand";Rendering
Section titled “Rendering”The client renders one destination bin per entry in zones — so the same
prompt covers Scry, Surveil, and wider sorts. You decide which destinations to
offer (and in what order) by setting zones; the examples below are just three
configurations.

Classic Scry — ["libraryTop", "libraryBottom"] gives top- and bottom-of-library bins.

["libraryTop", "graveyard"] swaps the bottom bin for the graveyard (Surveil-style).

Add more zones — ["libraryTop", "graveyard", "exile"] renders three bins.
Response
Section titled “Response”type ScryOutput = { type: "scryDecision"; zoneCardIds: string[][] };zoneCardIds is parallel to zones: return one array of card ids per entry in
zones, in the same order, each listing the cards placed in that zone in their
final order. Every card in cards must appear in exactly one of the arrays.
Example
Section titled “Example”A two-card Scry, keeping one on top and binning the other:
{ "promptId": 7, "decidingPlayerId": "player-0", "input": { "type": "scry", "presentation": { "title": "Scry 2", "targets": [] }, "cards": [ { "id": "lib-0", "name": "Island" }, { "id": "lib-1", "name": "Counterspell" } ], "zones": ["libraryTop", "libraryBottom"] }}zoneCardIds[0] corresponds to "libraryTop" and zoneCardIds[1] to
"libraryBottom"; each entry references a card id from cards:
{ "promptId": 7, "output": { "type": "scryDecision", "zoneCardIds": [["lib-1"], ["lib-0"]] }}