Limbo

Demo, RTP 96.00%, paytable, symbols & full capture data

Free demo · not real-money play
✓ Working · checked 2 weeks, 2 days ago Verified · 17 Aug 2026
RTP 96.00%
Volatility —
Max win —
Grid —
For webmasters & affiliates
Embed demo

Direct demo link or iframe code for your site. Free · no sign-up

1 embed plays · 1 month ago
Asset pack

16 screenshots · palette · spec sheet. ZIP — captcha check, no sign-up

Slot API

GET /v1/slots/limbo-b22/

10,000 free requests / month · sign-up required

Ask AI MCP

This slot’s spec, symbols, palette and demo link — queryable from Claude, Cursor or VS Code. Read-only · free · no key, no sign-up.

mcp.i-gaming.tools/mcp
What to ask → 2-min setup
Verified capture
iGaming Tools capture pipeline Manual demo playthrough · paytable OCR-verified

Captured by hand from a live demo and verified frame-by-frame — the paytable was OCR-checked against the provider. 3 aspects we couldn’t confirm are flagged below, not hidden.

Captured 17 Aug 2026 View capture log

Per-screen breakdown

16 demo screens
16 PNG (ZIP)
Autoplay settings
autoplay Autoplay settings
Base game
base_game Base game
Base game
base_game Base game
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Info / About screen
info Info / About screen
Logo
logo Logo
Preview / Loading screen
preview Preview / Loading screen
Rules / How to play
rules Rules / How to play
Rules / How to play
rules Rules / How to play
Game settings
settings Game settings
Win screen
win_screen Win screen

Search Demand

monthly search interest · last 12 months
Total demand / month
Sep '25: 1,950 1,950 Sep Oct '25: 1,800 1,800 Oct Nov '25: 1,530 1,530 Nov Dec '25: 1,890 1,890 Dec Jan '26: 1,840 1,840 Jan Feb '26: 1,590 1,590 Feb Mar '26: 1,560 1,560 Mar Apr '26: 1,470 1,470 Apr May '26: 1,540 1,540 May Jun '26: 1,430 1,430 Jun Jul '26: 1,270 1,270 Jul Aug '26: 1,270 1,270 Aug
Per-country demand by month · sorted by month-over-month growth (freshest first)
Country Aug '26 Jul '26 Jun '26 May '26 Apr '26 Mar '26 Feb '26 Jan '26 Dec '25 Nov '25 Oct '25 Sep '25
🇨🇭Switzerland 30 0 30 30 0 30 0 0 0 30 30 30
🇵🇰Pakistan 40 20 40 80 40 40 40 60 60 60 60 40
🇵🇷Puerto Rico 20 0 0 0 0 0 0 0 0 0 0 0
🇧🇷Brazil 120 110 90 110 80 90 120 140 100 100 130 110
🇮🇩Indonesia 30 20 30 30 20 40 50 50 70 20 30 30
🇵🇭Philippines 20 10 10 20 20 20 30 20 20 20 40 40
🇪🇸Spain 10 0 10 10 10 10 10 10 10 10 20 10
🇳🇬Nigeria 10 0 10 10 10 10 10 10 0 10 10 10
🇧🇾Belarus 10 0 0 10 0 10 10 10 10 10 10 10
🇯🇴Jordan 10 0 10 0 10 10 10 10 10 10 0 10
🇰🇷South Korea 10 0 0 10 10 10 0 0 10 10 10 10
🇨🇷Costa Rica 10 0 0 10 0 10 10 10 0 0 10 10
🇭🇰Hong Kong 10 0 0 10 10 0 0 0 10 10 10 10
🇰🇿Kazakhstan 10 0 0 10 0 10 10 10 0 10 10 0
🇱🇧Lebanon 10 0 10 0 10 0 10 10 10 0 10 0
🇧🇭Bahrain 10 0 0 0 0 0 0 0 10 0 0 0
🇮🇳India 420 420 520 520 520 640 640 780 780 520 640 780
🇺🇸United States 40 40 80 60 80 40 60 80 80 80 60 140
🇪🇬Egypt 20 20 10 30 10 10 40 20 30 20 20 20
🇲🇾Malaysia 20 20 20 20 20 20 20 20 20 20 20 20
🇲🇽Mexico 10 10 10 20 40 20 10 20 50 10 20 20
🇲🇦Morocco 10 10 10 10 20 30 20 20 20 30 20 30
🇧🇪Belgium 20 20 0 20 20 20 20 20 20 20 20 20
🇹🇷Turkey 20 20 10 10 10 10 20 10 10 20 30 20
🇻🇳Vietnam 10 10 10 10 10 10 20 20 10 10 20 20
🇮🇹Italy 10 10 20 10 10 10 10 10 10 20 10 20
🇦🇺Australia 10 10 10 20 10 10 10 10 10 10 20 10
🇫🇷France 10 10 10 10 10 10 10 10 10 10 20 20
🇵🇱Poland 10 10 30 10 10 20 0 10 10 10 10 10
🇸🇦Saudi Arabia 10 10 10 10 10 10 10 10 10 10 20 10
🇦🇷Argentina 10 10 10 10 10 10 10 10 10 10 10 10
🇨🇱Chile 10 10 10 10 10 10 10 10 10 10 10 10
🇩🇰Denmark 10 10 10 10 10 10 10 10 10 10 10 10
🇬🇷Greece 10 10 10 10 10 10 10 10 10 10 10 10
🇯🇵Japan 10 10 10 10 10 10 10 10 10 10 10 10
🇿🇦South Africa 10 10 10 10 10 10 10 10 10 10 10 10
🇸🇪Sweden 10 10 10 10 10 10 10 10 10 10 10 10
🇹🇭Thailand 10 10 10 10 10 10 10 10 10 10 10 10
🇺🇦Ukraine 10 10 10 10 10 10 10 10 10 10 10 10
🇧🇬Bulgaria 10 10 10 10 10 10 10 10 10 0 10 10
🇬🇹Guatemala 10 10 10 10 10 10 10 0 10 10 10 10
🇵🇪Peru 10 10 10 0 10 10 10 10 10 10 10 10
🇷🇴Romania 10 10 10 10 10 0 10 10 10 10 10 10
🇨🇿Czech Republic 0 0 10 10 10 10 10 10 10 10 10 10
🇳🇴Norway 10 10 10 10 0 10 0 10 10 10 10 10
🇦🇪United Arab Emirates 10 10 0 10 10 0 10 10 10 10 10 10
🇳🇮Nicaragua 10 10 10 10 10 10 10 0 10 0 0 10
🇸🇬Singapore 0 0 0 10 10 10 10 0 10 10 10 10
🇬🇭Ghana 10 10 10 0 10 0 0 0 0 10 10 10
🇦🇹Austria 10 10 10 0 0 0 10 10 0 0 10 0
🇮🇪Ireland 0 0 10 0 0 0 10 10 10 0 10 10
🇱🇻Latvia 10 10 10 0 0 0 0 10 0 0 10 10
🇸🇮Slovenia 0 0 10 10 0 10 10 0 0 10 10 0
🇸🇻El Salvador 0 0 10 10 10 0 0 0 10 10 0 0
🇲🇹Malta 0 0 0 10 10 10 0 10 0 0 10 0
🇳🇿New Zealand 10 10 0 0 0 0 0 10 10 10 0 0
🇶🇦Qatar 10 10 0 10 0 10 0 0 10 0 0 0
🇨🇾Cyprus 0 0 10 10 10 0 0 0 10 0 0 0
🇭🇳Honduras 0 0 0 10 0 10 0 10 0 10 0 0
🇴🇲Oman 0 0 0 0 10 0 0 0 10 10 0 10
🇵🇦Panama 0 0 0 0 0 0 0 10 10 0 0 10
🇪🇪Estonia 0 0 0 0 0 0 0 0 10 10 0 0
🇮🇸Iceland 0 0 0 0 0 0 0 0 0 0 0 10
🇩🇪Germany 20 30 40 40 30 20 30 30 40 20 20 30
🇩🇿Algeria 10 20 20 20 10 40 30 50 50 20 30 30
🇬🇧United Kingdom 10 20 10 20 30 10 10 10 10 10 20 20
🇳🇱Netherlands 0 10 10 10 10 10 10 10 10 10 20 10
🇵🇹Portugal 0 10 20 10 20 10 10 10 10 10 0 0
🇹🇳Tunisia 0 10 10 10 10 10 10 10 10 10 10 10
🇨🇴Colombia 0 10 10 10 10 10 0 10 10 10 10 10
🇩🇴Dominican Republic 0 10 10 10 10 10 10 10 10 10 0 10
🇭🇺Hungary 0 10 10 0 10 10 10 10 10 10 10 10
🇭🇷Croatia 0 10 0 10 10 10 10 10 10 0 10 10
🇸🇰Slovakia 0 10 10 10 10 10 10 10 0 10 0 10
🇰🇪Kenya 0 10 0 10 0 0 10 10 10 10 0 10
🇱🇹Lithuania 0 10 0 10 0 10 0 10 0 0 10 10
🇰🇼Kuwait 0 10 0 0 10 10 0 10 0 0 0 0
🇫🇮Finland 20 40 40 20 20 20 20 20 20 20 20 20
🇨🇦Canada 20 60 20 20 60 20 20 20 40 60 100 60
Full per-country breakdown via the API →

What we extracted from Limbo

Everything pulled from Limbo into machine-readable data — symbols, paytable, palette, modes and assets. A capture result, not a game review.
16 screens captured
6 palette colors from frames
6 accessibility groups profiled
3 gameplay modes NOT captured — flagged honestly below

manual demo playthrough → 16 screens captured → paytable verified (OCR) → catalogued & reviewed

Specification

verified parameters
provider InOut Games
rtp 96.00% · single configuration
bonus_buy No
mechanic Crash
release_date 2024

Bonus modes

1 mode
Base Game Modifier base
Single-Round Target Bet

Player pre-sets a bet and a target multiplier before pressing PLAY. The engine generates exactly one random outcome number and compares it to the target: outcome >= target pays bet x target (the chosen target, not the rolled number); outcome < target forfeits the whole bet. No rising curve, no manual cash-out - resolution is instantaneous. Minimum selectable target is 1.01x (Chance 95.54%); other sampled targets: 2x (48.25%), 5x (19.30%), 10x (9.65%), 50x (1.93%).

Colour system

extracted from frames · HEX
Export palette
#171F2E base dominant 1 base
#223245 base dominant 2 base
#4B5567 base dominant 3 base
#56B646 base dominant 4 base
#979AA1 base dominant 5 base
#384457 base dominant 6 base

Accessibility

profile for all groups
Color Blind
  • WIN vs LOSS is communicated PRIMARILY by color alone (green=win, red/pink=loss) for the centre-stage settled multiplier and for the coefficient-history ticker badges/paged-history chips - no accompanying icon or text label (no W/L, no check/cross) disambiguates outcome there.
  • A redundant non-color cue DOES exist, but only inside the 'My bet history' table: a LOSS row's Win column shows a dash '-' while a WIN row shows a dollar amount. This redundancy is present only in that one modal, not on the main gameplay screen or the ticker strip.
Screen Reader
  • Balance, bet, target, live chance percentage, min/max bet, max win and the resulting multiplier are all rendered as text with clear English labels ('Chance:', 'Min bet:', etc.). The Provably Fair panel exposes long hexadecimal seed/hash strings that would be tedious but functional to read aloud.
Motor Accessibility
  • All controls (bet MIN/MAX, quick-bet chips, target -/+ stepper, target presets, PLAY, Auto game toggle) are large, well-separated buttons. Auto Play (10/20/50/100 rounds, with optional stop-on-cash-change/stop-on-big-win conditions) reduces the number of repeated manual PLAY presses needed.
Hearing Accessibility
  • Sound and Music are independent toggles, both OFF by default; no information was observed to be conveyed only through audio - win/loss is shown via colour and text.
Low Vision
  • Selected vs unselected preset/chip buttons (bet quick-chips, target presets, auto-play round-count pills) are distinguished mainly by a subtle fill/border lightness difference rather than a colour hue change - a low-contrast cue that may be hard to see for low-vision users.

Media & assets

4 files · 4 types
16 PNG (ZIP)
Base game
base_game
Base game
base_game
Logo
logo
Preview / Loading screen
preview

Data provenance

what we captured and what we didn't
Idle base game, win screen (payout math verified: bet x target), loss round, target floor probe (1.01x) and a structural upper-field probe, bet floor (0.12) and ceiling (200) probes, populated coefficient-history ticker, How to play rules, Game rules (bet/win limits), Provably fair settings, My bet history table, Auto play options dialog, settings/burger menu, loading splash.
No printed ceiling exists for the target multiplier anywhere in-game. A 10-digit value (9999999999x) was accepted only via a synthetic input event bypassing normal typing - this is a UI text-field length limit, not a declared game cap, and is not reported as a game maximum.
RTP is not printed anywhere inside the game interface (How to play, Game rules, Provably fair settings and My bet history were all checked).
Discrepancy: the InOut Games provider catalogue listing states RTP 96.0%, but multiplying the game's own live 'Chance: N%' display by the selected target at five sampled targets (1.01x/2x/5x/10x/50x) gives a constant product of 96.5% at every point. Both figures are recorded; neither is silently corrected to match the other.

Ask AI about Limbo

MCP · VERIFIED CAPTURE DATA

AI apps like Claude are chat apps: you ask, they answer. Normally they can’t see this capture — MCP is the plug that connects them to it. Add one link, and your chat answers with this slot’s verified data. No coding.

Server https://mcp.i-gaming.tools/mcp paste into Claude, Cursor, VS Code, Gemini, Codex, Windsurf or Zed · read-only · free · no key Setup guides →
What it looks like

How does Limbo play? Keep it simple.

Player pre-sets a bet and a target multiplier before pressing PLAY. The engine generates exactly one random outcome number and compares it to the target: outcome >= target pays bet x target (the chosen target, not the rolled number); outcome < target forfeits the whole bet. No rising curve, no manual cash-out - resolution is instantaneous. Minimum selectable target is 1.01x (Chance 95.54%); other sampled targets: 2x (48.25%), 5x (19.30%), 10x (9.65%), 50x (1.93%).

RTP 96.00%demo ✓

From the verified capture of 17 Aug 2026 — not from the AI’s memory.

Playersearch_slots

“Find slots like this but medium volatility — with free demos.”

→ matches by mechanics and theme; official free demos only.

Affiliateget_slot ×2

“Comparison table: Limbo vs Chicken Road — RTP, max win, bonus buy.”

→ side-by-side table, ready for your review page.

Editorget_slot

“Fact-check my review: RTP, max win, paylines, bonus-buy price, release year.”

→ OCR-verified numbers — including the 3 aspects we couldn’t confirm, flagged.

Designerget_slot

“Creative brief: theme, 6 palette hexes and the symbol descriptions.”

→ same palette and symbol data as the sections above, as one brief.

Verified capture: manual playthrough, paytable OCR-checked Honest gaps: 3 uncaptured aspects flagged, not hidden Read-only · free, no key · per-IP rate limit 18+Free demo data only — no real-money links

Technical info

Free JSON data API — token auth.
GET /api/v1/slots/limbo-b22/

Public data API. Send Authorization: Token <your-token>. Full structured data, media and demo links in one call. See the API docs.

Spec sheet — extracted, unverified. This is the raw OCR dump, not the full API response.
GET /api/v1/slots/limbo-b22/
{
  "game": {
    "name": "Limbo",
    "catalog_name": "Limbo",
    "provider": "InOut Games",
    "provider_ref": "limbo",
    "demo_url": "https://api.inout.games/api/launch?gameMode=limbo&operatorId=ee2013ed-e1f0-4d6e-97d2-f36619e2eb52&currency=USD&lang=en",
    "device_captured": "desktop",
    "viewport": "1280x800",
    "game_category": "crash",
    "game_kind_note": "Not a reel slot. Single-outcome instant-resolution multiplier game: player pre-sets a bet and a target multiplier, presses PLAY, one random outcome number is generated and compared to the target. There is no rising curve and no manual cash-out button (unlike classic 'crash'/Aviator-style games) -- the round is decided the instant it is generated. Classified as game_category=crash by catalogue precedent, cross-checked against our own captured tech docs for two other catalogue entries of the same device (see genre_siblings section below), not by name similarity.",
    "art_style": "Flat-shaded 2D vector cartoon illustration with a dark navy-blue deep-space background (stars as small white/grey dots, one large brownish cratered planet, one faint ringed planet, subtle horizon glow lines). Character rendering uses clean bold outlines, flat cel-shaded colour fills and soft ambient glow (a light-blue halo under the flying saucer, orange rocket-flame glow) rather than photoreal shading or gradients-heavy realism. No 3D rendering, no photographic textures. Mood is light/comedic mascot-driven rather than tense or cinematic despite the gambling subject matter. UI chrome is minimalist flat dark-slate panels with rounded corners, a single accent green for primary actions, and small flat icons -- a generic modern casino-web dashboard look layered over the cartoon space scene. Camera/viewpoint is a fixed frontal 2D stage view (no isometric or top-down elements).",
    "wordmark_in_game": "LIMBO, top-left corner, stylised: bright lime-green bold condensed uppercase letters 'LIMB', with the final 'O' replaced by a small yellow-orange circular planet/ringed-planet glyph tilted slightly, giving a space-themed logotype. Seen on every in-game screen (base_game.png, rules_p1.png, rules_p2.png, info_p1.png, info_p2.png, settings.png, autoplay.png, win_screen.png, loss_round.png, coefficient_history.png, target_bounds_min.png, bet_min.png, bet_max.png, target_bounds_max.png).",
    "provider_loading_wordmark": "preview.png shows a SEPARATE splash screen for the platform/provider, not the game: on a near-black (very dark navy, almost black) background, a large centred logotype reading 'iNOUT' -- stylised as a yellow-to-orange gradient hexagonal/shield badge containing a white lowercase 'i' and bold black 'N' on the left, followed by 'OUT' in large bold white letters to the right -- with a small spinning loader icon and the text 'Loading...' beneath it. This is the platform/aggregator brand (iNOUT Games), distinct from the in-game 'LIMBO' wordmark; do not conflate the two as the same logotype.",
    "main_character": "A cartoon anthropomorphic cat astronaut/pilot: tan-and-brown striped tabby fur, green eyes, wearing a black business suit jacket with white shirt and red necktie, holding/smoking a cigar in its mouth (small orange ember glow), seated in a rounded high-backed magenta/purple captain's chair with four small maroon spherical antenna-like knobs on top. The chair sits atop a flying saucer: a blue-and-white domed cockpit band over a wide flattened saucer body banded in dark magenta/maroon and pale blue/white stripes, with a bright orange-yellow triangular rocket exhaust flame shooting downward beneath it. This character+saucer group is centred on every gameplay screen and is the single persistent visual anchor of the game (independent of round outcome; only the flame length/brightness may vary, not verifiable precisely across frames)."
  },
  "core_mechanic": {
    "summary": "Player chooses a bet amount and a target multiplier BEFORE the round, then presses PLAY. The server/provably-fair engine generates exactly one random outcome multiplier for that round. If the generated outcome is greater than or equal to the chosen target, the round is a WIN and pays bet x target; if the outcome is below the target, the round is a LOSS and the whole bet is forfeited. There is no rising/climbing animation and no manual cash-out action -- resolution is instantaneous and the outcome number is simply displayed centrally after the round settles.",
    "how_to_play_steps_ocr": [
      "1. Enter the bet amount.",
      "2. Enter the odds at which the flying saucer will reach or exceed.",
      "3. Press the \"Play\" button.",
      "4. Malfunction voids all pays and plays"
    ],
    "how_to_play_source_frame": "rules_p1.png",
    "payout_formula": "WIN amount = bet * target_multiplier (the TARGET the player chose, not the randomly rolled/displayed outcome number). Verified two ways on the same round (bet=3, target=2x, rolled outcome=7.57x): (1) win_screen.png shows balance rising from 999761.11 to 999767.11, i.e. +6.00 = 3*2 exactly, even though the rolled number (7.57x) was far higher than the target; (2) info_p2.png 'My bet history' panel shows a 'Mult.' column that prints the TARGET actually used for settlement (x2 for the win row, matching a Win of $6), not the rolled outcome value at all.",
    "loss_display_note": "In 'My bet history' (info_p2.png), losing rounds show 'Mult.: x0' and 'Win: -' regardless of what number the round actually rolled centrally on screen (loss_round.png shows the round rolled x1.77, below the x2 target) -- the history table encodes only WIN/LOSS + the settlement multiplier used, not the raw random draw.",
    "money_cap": {
      "value": 20000,
      "currency": "USD",
      "label_ocr": "Max win: 20 000 USD",
      "source_frame": "rules_p2.png",
      "note": "This is a per-round money cap on the payout amount, NOT a multiplier ceiling. It is independent of the target-multiplier field's own (much larger) structural limits described below."
    }
  },
  "bet_and_target_limits": {
    "bet_limits": {
      "min_bet_usd": 0.12,
      "max_bet_usd": 200,
      "source": "Game rules panel (rules_p2.png): 'Min bet: 0.12 USD' / 'Max bet: 200 USD'",
      "verified_in_field": "MIN button on the bet field drives the value to 0.12 (bet_min.png); MAX button drives it to 200 (bet_max.png) -- both exactly match the printed Game rules panel, no discrepancy."
    },
    "target_multiplier_limits": {
      "min_target": 1.01,
      "min_target_how_measured": "Minus-stepper (\"-\" button next to the target field) clicked repeatedly (16 clicks) until the value stopped decreasing; floor confirmed stable at 1.01x (target_bounds_min.png, Chance shown as 95.54%).",
      "max_target_printed_ceiling": null,
      "max_target_structural_probe": "9999999999x (ten digits) was accepted by the input field via a native-setter-driven value change (bypassing the normal keystroke path) and PLAY actually processed a real bet at that target (balance moved), so the field is not silently clamped to a small number client-side. Chance display recalculated to 0.00% at this extreme.",
      "why_max_is_an_honest_omit": "Neither the 'How to play?' panel, the 'Game rules' panel, 'Provably fair settings', nor 'My bet history' print any multiplier ceiling anywhere. The only structural boundary found is the input element's maxLength=10-digits attribute, which is a UI text-field constraint, not a game-declared multiplier cap. Reporting the structural probe value as 'max_multiplier' would misrepresent an implementation detail as a game rule, so max_multiplier is left null/omitted; the structural finding is documented here instead for completeness.",
      "target_presets_ocr": ["2x", "5x", "10x", "50x"],
      "target_stepper_controls": "'-' and '+' buttons flank a numeric target field between the bet field and the PLAY button."
    }
  },
  "chance_and_rtp": {
    "printed_chance_by_target": [
      {"target": 1.01, "chance_pct": 95.54, "source_frame": "target_bounds_min.png"},
      {"target": 2, "chance_pct": 48.25, "source_frame": "base_game.png"},
      {"target": 5, "chance_pct": 19.30, "source_frame": "not directly re-opened by documenter, taken from capturer measurement, consistent with the arithmetic pattern below"},
      {"target": 10, "chance_pct": 9.65, "source_frame": "not directly re-opened by documenter, taken from capturer measurement, consistent with the arithmetic pattern below"},
      {"target": 50, "chance_pct": 1.93, "source_frame": "not directly re-opened by documenter, taken from capturer measurement, consistent with the arithmetic pattern below"}
    ],
    "personally_reverified_by_documenter": [
      {"target": 2, "chance_pct": 48.25, "frame": "base_game.png / win_screen.png / loss_round.png (all show 'Chance: 48.25%' with target field = 2x)"},
      {"target": 1.01, "chance_pct": 95.54, "frame": "target_bounds_min.png"}
    ],
    "chance_x_target_product": 96.5,
    "product_arithmetic": "95.54*1.01=96.5, 48.25*2=96.5, 19.30*5=96.5, 9.65*10=96.5, 1.93*50=96.5 -- constant across all five measured targets.",
    "rtp_sent_to_catalog": {
      "value": 96.0,
      "source": "InOut Games provider game listing (inout.games/game/limbo)"
    },
    "rtp_measured_in_game": {
      "value": 96.5,
      "how": "The game prints a live 'Chance: N%' figure for whatever target multiplier is currently selected. Multiplying that displayed chance by the selected target multiplier gives the theoretical return, because this game's payout is exactly bet*target on a win and 0 on a loss -- so RTP = chance_fraction * target. This product is constant (96.5) at every one of the five sampled targets, which is itself evidence it reflects a genuine underlying RTP setting rather than noise.",
      "independent_confirmation": "A sibling game of the identical genre/device already documented in this catalogue, Limbo+ (Pragmatic Play), prints the SAME formula in its own rules text: \"the win chance formula is RTP divided by target multiplier\" -- i.e. chance = RTP / target, equivalently RTP = chance * target. This is an independent, provider-authored confirmation of the exact arithmetic used above, not an invention of ours."
    },
    "discrepancy_note": "The catalogue-listed 96.0% and our in-game-derived 96.5% do not match, and the gap is not an artifact of rounding: at RTP=96.0, the printed chance for target=2x would have to read exactly 48.00%, but the game prints 48.25%. Both numbers are recorded honestly; 96.0 is what the provider's own listing states and is what should be treated as the 'declared RTP', while 96.5 is our own arithmetic derivation from the game's live Chance display and is presented as a measurement, not a provider claim. This discrepancy is worth flagging to the catalogue owner but is not something either figure should be silently 'corrected' to match.",
    "rtp_flatness_vs_genre_siblings": "Unlike this build, the two other catalogue members of the same device family have RTP that VARIES by chosen target: Limbo XY (BGaming) carries a documented range of 96.99-98.57% (condition_note: depends on the target multiplier chosen); Limbo+ (Pragmatic Play) prints 97.50% but explicitly qualifies that this figure is reached only when the MAXIMUM target multiplier is chosen, implying lower return at smaller targets. In THIS build (InOut Games' Limbo), the chance*target product is IDENTICAL (96.5) across every sampled target from 1.01x to 50x -- i.e. return is flat/constant regardless of the target the player selects. This is a genuine mechanical difference from both siblings and should be described as such, not smoothed over."
  },
  "screens": {
    "preview": {
      "file": "preview.png",
      "type": "preview",
      "description": "Platform loading splash, NOT the in-game wordmark. Near-black navy background. Centred large 'iNOUT' logotype: a yellow-to-orange gradient hexagonal badge with a white 'i' and bold black 'N' on the left, plus bold white 'OUT' lettering to the right. Below it, a small circular spinner icon and the caption 'Loading...' in light grey. No other UI elements visible.",
      "ocr_text": "iNOUT / Loading..."
    },
    "base_game": {
      "file": "base_game.png",
      "type": "base_game",
      "description": "Idle/ready-to-play state. Top bar (dark slate-navy, full width): far left the green-and-white 'LIMBO' wordmark; centre-right cluster has a dark pill button 'How to play?' with a small circled-'i' icon, a balance pill showing '1 000 000' with a white circular dollar-sign coin icon, a fullscreen-toggle square icon button, and a hamburger-menu icon button (three horizontal lines) at the far right. Below the top bar, a full-width rounded rectangle outlined in pale blue reads (centred, light grey text) 'The latest coefficients will be displayed here' -- this is the coefficient-history ticker in its EMPTY/idle state (no rounds played yet this session). Centre stage: large bold white text 'x1.00' (the default/idle multiplier display, shown before any round has been played). Below that, the cat-astronaut-in-flying-saucer character (see game.main_character) centred against the starfield/space background (small planet lower-right, small asteroid rock lower-left, scattered white dot 'stars'). A thin horizontal pale line crosses the stage roughly at character-shoulder height (a subtle horizon/track guide). Below the character: a dark rounded pill reading 'Chance: 48.25%' (left-of-centre) and a rounded toggle switch pill reading 'Auto game' with an OFF-state circular knob on the left (right side of screen). Bottom control panel (dark slate rounded panel, full width): LEFT group is the bet field -- a rounded rectangle with 'MIN' button on the left edge, the numeric bet value '3' centred, 'MAX' button on the right edge; below it four quick-bet chip buttons '2 $', '3 $' (appears highlighted/selected, slightly lighter fill), '8 $', '20 $', each with a small white circular dollar-coin icon. MIDDLE group is the target field -- a rounded rectangle with a '-' (minus) button, the numeric target value '2x' centred, a '+' (plus) button; below it four target preset buttons '2x' (highlighted/selected), '5x', '10x', '50x'. RIGHT is a large green rounded rectangle button labelled 'PLAY' in bold white uppercase -- the single primary call-to-action, colour-coded green against the panel's dark slate, high contrast.",
      "ocr_text": "LIMBO / How to play? / 1 000 000 $ / The latest coefficients will be displayed here / x1.00 / Chance: 48.25% / Auto game / MIN 3 MAX / 2$ 3$ 8$ 20$ / - 2x + / 2x 5x 10x 50x / PLAY"
    },
    "rules_p1": {
      "file": "rules_p1.png",
      "type": "rules",
      "page": 1,
      "description": "Modal dialog titled 'How to play?' (with an 'x' close button top-right) over a dimmed/blurred base_game background. Numbered 4-step list, plain white text on dark slate-navy panel: 1. Enter the bet amount. 2. Enter the odds at which the flying saucer will reach or exceed. 3. Press the \"Play\" button. 4. Malfunction voids all pays and plays.",
      "ocr_text": "How to play? / 1. Enter the bet amount. / 2. Enter the odds at which the flying saucer will reach or exceed. / 3. Press the \"Play\" button. / 4. Malfunction voids all pays and plays"
    },
    "rules_p2": {
      "file": "rules_p2.png",
      "type": "rules",
      "page": 2,
      "description": "Modal dialog titled 'Game rules', subtitle 'Bet limits are presented below', over dimmed base_game background. Three stacked dark rows, each a label on the left in grey and a bold white value on the right: 'Min bet: 0.12 USD', 'Max bet: 200 USD', 'Max win: 20 000 USD'. Small grey footer text below: 'Malfunction voids all pays and plays.'",
      "ocr_text": "Game rules / Bet limits are presented below / Min bet: 0.12 USD / Max bet: 200 USD / Max win: 20 000 USD / Malfunction voids all pays and plays"
    },
    "settings": {
      "file": "settings.png",
      "type": "settings",
      "description": "Hamburger-menu dropdown panel open in the top-right corner over the base_game screen. Header row: a small circular avatar icon (dark head silhouette with headset, on a cyan/teal circular background), the name 'Cyan Occu...' (truncated), and a 'Change avatar' link in grey. Below, two toggle rows with speaker/note icons: 'Sound' (toggle OFF, white knob on left of a dark track) and 'Music' (toggle OFF). A thin divider line. Then three menu rows with small line-icons: a shield-checkmark icon + 'Provably fair settings', a document/pencil icon + 'Game rules', a clock icon + 'My bet history'. At the bottom, small grey text 'Powered by' followed by the 'iNOUT' logotype (yellow/orange badge + white 'OUT' lettering) -- this is the platform/provider footer credit distinct from the in-game LIMBO wordmark.",
      "ocr_text": "Cyan Occu... / Change avatar / Sound / Music / Provably fair settings / Game rules / My bet history / Powered by iNOUT"
    },
    "autoplay": {
      "file": "autoplay.png",
      "type": "autoplay",
      "description": "Modal dialog titled 'Auto play options' over a dimmed background (background shows a settled round mid-ticker: central multiplier 'x3.22' in green, and a row of 8 small history-badge chips visible above it, alternating green/red -- see coefficient_history description). Section 'Number of rounds' with four selectable pill buttons: '10' (selected, outlined in green), '20', '50', '100' (all unselected, dark grey fill). Below, three conditional-stop rows, each with a round toggle switch (all shown OFF, white knob left) and a label, plus a numeric stepper (- / value / +) defaulted to 0: 'Stop if cash decreases by' [0], 'Stop if cash increases by' [0], 'Stop if single win exceeds' [0]. Bottom: full-width green 'START' button.",
      "ocr_text": "Auto play options / Number of rounds / 10 20 50 100 / Stop if cash decreases by 0 / Stop if cash increases by 0 / Stop if single win exceeds 0 / START"
    },
    "win_screen": {
      "file": "win_screen.png",
      "type": "win_screen",
      "description": "Settled WINNING round. Top-left navigation arrow '<', top-right two history-badge chips 'x7.57' (green outline/text) and 'x1.77' (red/pink outline/text), then a '>' arrow -- this is a small paged history strip, not the full ticker. Balance pill top bar reads '999 767.11 $'. Centre stage: large bold GREEN text 'x7.57' -- the rolled outcome for this round. Character/background unchanged from base_game. 'Chance: 48.25%' pill and 'Auto game' toggle unchanged. Bottom panel: bet field shows '3', target field shows '2x' (both frozen at the values used for this round).",
      "ocr_text": "999 767.11 $ / x7.57 / x1.77 / Chance: 48.25% / Auto game / MIN 3 MAX / - 2x + / PLAY",
      "verified_delta": "Round result: bet 3, target 2x, rolled outcome 7.57x (>= target) => WIN, payout = 3*2 = 6."
    },
    "loss_round": {
      "file": "loss_round.png",
      "type": "base_game",
      "description": "Settled LOSING round (labelled base_game in manifest by shot-type convention, but it is a distinct post-round state, not the idle screen -- documented separately from base_game per instructions). Top-right shows a single history-badge chip 'x1.77' in red/pink. Balance pill reads '999 764.11 $'. Centre stage: large bold RED/PINK text 'x1.77' -- the rolled outcome, below the 2x target that was needed. Bottom panel unchanged: bet '3', target '2x'.",
      "ocr_text": "999 764.11 $ / x1.77 / Chance: 48.25% / Auto game / MIN 3 MAX / - 2x + / PLAY",
      "verified_delta": "Round result: bet 3, target 2x, rolled outcome 1.77x (< target) => LOSS, bet 3 forfeited entirely."
    },
    "coefficient_history": {
      "file": "coefficient_history.png",
      "type": "info",
      "description": "Base_game-style screen after several rounds have been played, showing the top ticker bar populated (contrast with its empty state in base_game.png). Eight small rounded-rectangle badge chips laid out left-to-right, each showing a multiplier value with a colour that encodes WIN vs LOSS: 'x3.22' (green), 'x1.29' (red/pink), 'x12.57' (green), 'x1.63' (red/pink), 'x1.15' (red/pink), 'x12.5' (green), 'x7.57' (green), 'x1.77' (red/pink). Centre stage shows the current/most recent result, large green 'x3.22'. Balance '999 767.11 $'.",
      "ocr_text": "999 767.11 $ / x3.22 x1.29 x12.57 x1.63 x1.15 x12.5 x7.57 x1.77 / x3.22 / Chance: 48.25%",
      "colour_semantics": "Every observed green badge/number corresponds to a rolled value >= the round's target (WIN); every red/pink one corresponds to a rolled value < target (LOSS). No numeric threshold is printed on the badge itself explaining why it is green or red -- the colour is the only inline signal within the ticker strip (the underlying target used for each historical round is not shown next to its badge)."
    },
    "info_p1": {
      "file": "info_p1.png",
      "type": "info",
      "page": 1,
      "description": "Modal 'Provably fair settings' dialog. Subtitle: 'This game uses Provably Fair technology to determine game result.' Section 'Next client (Your) seed:' with explanatory grey text below it: 'Round result is determined form combination of server seed and first 3 bets of the round.' (note: 'form' appears to be a typo for 'from' in the source text). Section 'Random on every game:' with a dark input-style row labelled 'Current:' and a hex string '9e045c4fe45ad6eb' plus a copy-to-clipboard icon. Section 'Next server seed SHA256:' with a dark row showing a long hex hash '61755ef7829575dadd8b36895a4d4f94b5248b28d2a0535...' (truncated by a copy icon) . Footer grey text: 'You can check fairness of each bet from bets history.'",
      "ocr_text": "Provably fair settings / This game uses Provably Fair technology to determine game result / Next client (Your) seed: / Round result is determined form combination of server seed and first 3 bets of the round. / Random on every game: / Current: 9e045c4fe45ad6eb / Next server seed SHA256: 61755ef7829575dadd8b36895a4d4f94b5248b28d2a0535... / You can check fairness of each bet from bets history"
    },
    "info_p2": {
      "file": "info_p2.png",
      "type": "info",
      "page": 2,
      "description": "Modal 'My bet history' dialog, table with columns 'Date', 'Bet', 'Mult.', 'Win', and an unlabeled rightmost column of small green shield-checkmark icons (per-row provably-fair verification badges). Four visible rows, all dated '17-08-26': row1 17:09, Bet '$3', Mult. 'x2' (shown in a highlighted/framed pill), Win '$6' -- a WIN row; row2 17:09, Bet '$3', Mult. 'x0' (red text), Win '-' -- a LOSS row; row3 17:08, Bet '$3', Mult. 'x2', Win '$6' -- WIN; row4 17:08, Bet '$3', Mult. 'x0' (red), Win '-' -- LOSS. A partially-cut fifth row is visible at the bottom edge before a green 'LOAD MORE' button.",
      "ocr_text": "My bet history / Date Bet Mult. Win / 17:09 17-08-26 $3 x2 $6 / 17:09 17-08-26 $3 x0 - / 17:08 17-08-26 $3 x2 $6 / 17:08 17-08-26 $3 x0 - / LOAD MORE",
      "note": "The 'Mult.' column encodes settlement outcome, not the raw rolled number: WIN rows show the TARGET multiplier used (x2), LOSS rows uniformly show 'x0' -- the actual rolled value (e.g. 7.57 or 1.77, as seen centre-stage on win_screen.png/loss_round.png) is NOT reproduced in this history table at all."
    },
    "target_bounds_min": {
      "file": "target_bounds_min.png",
      "type": "info",
      "description": "Base_game-style screen with the target field driven to its lower bound via the '-' stepper. Target field shows '1.01x', Chance pill shows 'Chance: 95.54%'. Bet field unchanged at '3'. Balance '999 983.11 $' (reflects prior test spins).",
      "ocr_text": "999 983.11 $ / x1.00 / Chance: 95.54% / MIN 3 MAX / - 1.01x +"
    },
    "target_bounds_max": {
      "file": "target_bounds_max.png",
      "type": "info",
      "description": "Base_game-style screen after the target field was force-set to a 10-digit value via a synthetic input event. Target field shows '9999999999x', Chance pill shows 'Chance: 0.00%'. Bet field also probed at its floor, showing '0.12' (min bet). This documents the structural upper-bound probe described in bet_and_target_limits; it is NOT a game-declared ceiling.",
      "ocr_text": "999 968.11 $ / x1.00 / Chance: 0.00% / MIN 0.12 MAX / - 9999999999x +"
    },
    "bet_min": {
      "file": "bet_min.png",
      "type": "info",
      "description": "Bet field driven to its floor via the 'MIN' button: value shows '0.12', matching the printed Min bet in Game rules exactly. Target field unchanged ('2x' preset, Chance 48.25%... note: this frame actually shows target '9999999999x' carried over from the adjacent probe, Chance 0.00% -- see ocr_text).",
      "ocr_text": "999 968.11 $ / x1.00 / Chance: 0.00% / MIN 0.12 MAX / - 9999999999x +"
    },
    "bet_max": {
      "file": "bet_max.png",
      "type": "info",
      "description": "Bet field driven to its ceiling via the 'MAX' button: value shows '200', matching the printed Max bet in Game rules exactly. Target field in this frame still shows the extreme probe value '9999999999x' (Chance 0.00%) carried over from the adjacent structural test.",
      "ocr_text": "999 971.11 $ / x1.00 / Chance: 0.00% / MIN 200 MAX / - 9999999999x +"
    }
  },
  "control_panel_layout": {
    "top_bar": ["LIMBO wordmark (far left)", "'How to play?' button", "balance pill with coin icon", "fullscreen toggle icon", "hamburger menu icon (far right)"],
    "ticker_bar": "Full-width rounded outline bar directly under the top bar; empty state reads 'The latest coefficients will be displayed here'; populated state shows up to 8 small colour-coded multiplier badge chips (green=win, red/pink=loss) for the most recent settled rounds.",
    "centre_stage": "Large bold multiplier readout (white '1.00' at idle, green when the settled result was a win, red/pink when it was a loss), the cat-astronaut-in-saucer character, and the space background.",
    "chance_and_auto_row": "'Chance: N%' pill (updates live as the target field changes) on the left/centre, 'Auto game' toggle switch on the right.",
    "bottom_panel": {
      "bet_field": "MIN button, numeric bet value, MAX button; below it 4 quick-bet chips: 2$/3$/8$/20$",
      "target_field": "'-' stepper, numeric target value, '+' stepper; below it 4 target presets: 2x/5x/10x/50x",
      "play_button": "Large green 'PLAY' button, primary call to action"
    }
  },
  "colors_described": {
    "background": "dark navy/near-black deep space with small pale grey/white dot stars, one brownish cratered planet, one faint ringed planet outline",
    "top_bar_and_panels": "dark slate-navy, flat fill, rounded corners",
    "wordmark_LIMBO": "bright lime/lemon-green bold letters with an orange-yellow circular planet glyph replacing the final O",
    "primary_action_button_PLAY": "solid green with white bold text",
    "win_multiplier_text_and_badges": "bright green",
    "loss_multiplier_text_and_badges": "red/pink (a warm coral-red, distinct from the green but both are fully saturated colours; on a dark background)",
    "toggle_switches_off_state": "dark grey track with a white circular knob positioned on the left",
    "character": "tan/brown striped cat fur, black suit jacket, white shirt, red necktie, magenta/purple chair, blue-white saucer body with maroon/dark-red banding, orange-yellow rocket flame"
  },
  "accessibility_notes": {
    "colorblind": {
      "risk_identified": true,
      "detail": "The single most important state distinction in this game -- WIN vs LOSS, both for the just-settled round (centre-stage multiplier text) and for the history ticker/badges/bet-history table -- is communicated PRIMARILY by colour alone: green for win, red/pink for loss. In the coefficient-history strip and the top-right paged-history chips, there is no accompanying icon, symbol, or text label (e.g. no 'W'/'L' marker, no check/cross icon) next to each badge to disambiguate the outcome for users who cannot distinguish green from red (e.g. deuteranopia/protanopia). The one partial exception is the 'My bet history' table, where a LOSS row's Win column literally shows a dash '-' and a WIN row shows a dollar amount -- this IS a redundant non-colour signal, but only inside that one modal, not on the main gameplay screen or the ticker strip. RECOMMENDATION for the game owner: add a redundant non-colour cue (e.g. a small check/cross glyph, or 'W'/'L' text) to the win/loss multiplier badges on the main screen and ticker, not just in the bet-history table.",
      "other_color_pairs": "Selected vs unselected preset/chip buttons (e.g. the '3 $' bet chip, the '2x' target chip, the auto-play round-count pill) are distinguished mainly by a subtle fill/border lightness difference rather than colour hue change -- low risk for colourblind users since it is a luminance/border cue, but LOW CONTRAST may be an issue for low-vision users; not independently measurable from these screenshots with confidence."
    },
    "screen_reader": {
      "notes": "All primary numeric information (balance, bet, target, chance percentage, min/max bet, max win, resulting multiplier) is rendered as on-canvas/DOM text with clear English labels ('Chance:', 'Min bet:', etc.), which is favourable for text-to-speech if properly exposed via ARIA/DOM (not verifiable from screenshots alone whether these are real DOM text nodes vs canvas-drawn text -- flagged as uncertain). The four-step 'How to play?' text is concise and could be read aloud verbatim as the core mechanic explanation. The Provably Fair panel exposes long hexadecimal seed/hash strings that would be tedious but functional to read aloud (a screen reader should be able to enable copy-to-clipboard alternative)."
    },
    "deaf_hard_of_hearing": {
      "notes": "Settings panel exposes independent Sound and Music toggles (both observed OFF by default in settings.png), meaning the game is fully playable with audio muted; no critical information appears to be conveyed only through sound in the captured screens (win/loss is shown visually via colour+text, not implied to require an audio cue)."
    },
    "motor_impairment": {
      "notes": "All controls (bet MIN/MAX, bet quick-chips, target -/+ stepper, target presets, PLAY, Auto game toggle) are large, well-separated rounded buttons suitable for pointer/touch access; the Auto play feature (10/20/50/100 rounds, with optional stop-on-cash-change/stop-on-big-win conditions) reduces the need for repeated manual PLAY presses, which benefits users with limited fine motor control or stamina for repetitive clicking."
    }
  },
  "features_present": {
    "free_spins": false,
    "bonus_round": false,
    "bonus_buy": false,
    "win_screen": true,
    "loss_screen": true,
    "autoplay": true,
    "provably_fair": true,
    "bet_history": true,
    "reels_lines_paytable": "not applicable -- this is not a reel-based slot; there are no symbols, no paylines, and no symbol-payout table anywhere in the game."
  },
  "no_bonus_feature_verification": {
    "claim": "No bonus round, no bonus-buy feature exists anywhere in this game.",
    "evidence_channel_1": "Full text read of 'How to play?' (rules_p1.png, 4 steps), 'Game rules' (rules_p2.png, bet/win limits only), 'Provably fair settings' (info_p1.png) and 'My bet history' (info_p2.png) -- none of the four panels mentions any bonus or buy mechanic.",
    "evidence_channel_2": "DOM/scene control enumeration (scripts/scene_probe.py) listed all interactive controls on the page and a full-page innerText scan found neither the word 'bonus' nor 'buy' anywhere in the document."
  },
  "genre_siblings_comparison": {
    "method": "Compared against our own already-captured tech documentation for two other catalogue entries of the identical device (pre-set target multiplier, single random outcome, no rising curve, no cash-out), not by name similarity alone.",
    "Limbo XY (BGaming)": {
      "device_match": "confirmed identical: 'The player sets a bet amount and a target multiplier, then presses Play/Bet. A random outcome multiplier is generated...'",
      "rtp": "documented as a RANGE, 96.99% to 98.57%, condition_note: depends on the target multiplier chosen (variant=player_config)"
    },
    "Limbo+ (Pragmatic Play)": {
      "device_match": "confirmed identical, and explicitly described in its own rules as: 'result is revealed as a single number, not a rising curve' (Aviator/JetX-family multiplier compared to a player-chosen target)",
      "rtp": "documented as 97.50%, explicitly qualified as achieved ONLY when the maximum target multiplier is chosen (lower target => lower return, per its own printed rule)",
      "genre_formula_disclosed": "Limbo+'s own rules print the underlying jackpot-style formula for the whole genre: 'the win chance formula is RTP divided by target multiplier' -- independently corroborating the chance*target=RTP arithmetic used above for this build."
    },
    "this_build_InOut_Limbo": {
      "rtp_behavior": "FLAT/constant: chance*target = 96.5 at every one of the five sampled targets (1.01x, 2x, 5x, 10x, 50x). Unlike both siblings, return does not appear to depend on which target multiplier the player selects.",
      "significance": "This is a genuine mechanical difference between this specific build and its two catalogue siblings, and is documented as such rather than assumed to be the same behaviour just because the genre and provider family are similar."
    }
  },
  "anomalies_and_uncertain": [
    {
      "topic": "Provably-fair text mentions multi-bet rounds",
      "detail": "info_p1.png prints: 'Round result is determined form combination of server seed and first 3 bets of the round.' This describes a round with multiple simultaneous bets, but Limbo has exactly one bet field and one PLAY button -- one bet per round, always. This is almost certainly boilerplate/template text shared across the provider's wider game family (other InOut titles may allow several concurrent bets per round) and does not accurately describe THIS game's actual single-bet mechanic. Also contains a typo: 'form' should read 'from'.",
      "confidence": "documented as observed text; the mismatch with actual mechanics is the documenter's inference, flagged explicitly rather than silently corrected."
    },
    {
      "topic": "Leaked untranslated debug string",
      "detail": "When the target-multiplier field was forced to an out-of-normal-range value (999999x) via a synthetic input event that bypasses the app's normal onChange handling path, the page's rendered text (document.body.innerText) was observed to contain the string 'WIN + $ не число' -- Russian for 'not a number' -- instead of a normal win/loss render. This was captured informally (_anomaly_notanumber.png, not a canonical shot type) because it required a synthetic-event workaround outside normal keyboard-driven play, so it should be read as evidence of an internal client-side error-handling path (with an apparently untranslated Russian-language fallback string) reachable only under an abnormal, non-organic input method -- not something a normal player would encounter through the UI's own stepper/typing controls.",
      "confidence": "observed directly, but triggered by an artificial testing method; not claimed to be reachable in normal play."
    },
    {
      "topic": "max_multiplier",
      "detail": "No printed ceiling found anywhere in the game's own text. See bet_and_target_limits.target_multiplier_limits for the full honest-omit rationale.",
      "confidence": "honest omit, not a guess"
    },
    {
      "topic": "RTP",
      "detail": "Game does not print an RTP figure anywhere. 96.0% (catalogue listing) is recorded as the declared figure; 96.5% (chance*target arithmetic) is recorded as our own measurement. See chance_and_rtp section. Neither value is presented as more 'correct' than the other.",
      "confidence": "both numbers grounded, discrepancy explicitly flagged, not resolved by us"
    }
  ],
  "not_on_these_frames": [
    "No reels, paylines, or symbol paytable exist in this game -- it is not a reel slot, so this category of documentation does not apply.",
    "No rising/climbing multiplier curve and no manual cash-out control were observed anywhere -- consistent with the game's own 'How to play?' description of an instant single-number result."
  ]
}

API documentation for this slot

Ready-to-run request examples in curl, Python, JavaScript & PHP — plus the full structured-data field reference for this exact slot, on GitHub.