Skip to content

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.

input.type is "scry". The remaining fields:

interface ScryInput {
presentation: PromptPresentation;
cards: Array<CardDto>;
zones: Array<ScryDestination>;
}

References: CardDto , PromptPresentation , ScryDestination

type ScryDestination = "libraryTop" | "libraryBottom" | "graveyard" | "exile" | "hand";

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.

Top of library and bottom of library bins

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

Top of library and graveyard bins

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

Top of library, graveyard, and exile bins

Add more zones — ["libraryTop", "graveyard", "exile"] renders three bins.

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.

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"]] }
}