GalleryFRAYActivityLeaderboardStudio
GalleryArtistsFRAYActivityLeaderboardCode modulesHow it worksMy claimsStudio

Discover, collect and make digital art that lives onchain. Built on KEEL, so every work stays viewable without depending on any one website.

Creative toolsPreserveDocumentationHow we verifyCode modulesLook up a workYour profile
OnKeel Guide
⌕/
Browse documentation
Overview

Start here

One engine. A connected creative world.Your work, your choicesThe Shell & Harness

Create

Revisions, freezes & preservationKEEL collections & mintingThe launchpad: from work to releaseThe marketplace: after the mintYour artist page & creative identityCosts, reads & interrupted uploads

System

The Hold: storing a workThe Crucible: checks & permissionsParts, modules & shared codeInline, Hybrid & direct mediaEthereum, Tezos & AnchorsKEEL on Ethereum / EVMKEEL on Tezos / TEZThe Index & discoveryThe Rites: contract map

Tools

Images, code & worldsThe SDK: KEEL from codeChain data: let the work respondMCP: working with an assistantThe editor: bring it all together

Projects

FRAY: KEEL’s auction systemOnchaininator: preserving existing work

Reference

The design language: one word, one jobKEEL’s words, explainedWhen something does not open
Overview

Start here

One engine. A connected creative world.Your work, your choicesThe Shell & Harness

Create

Revisions, freezes & preservationKEEL collections & mintingThe launchpad: from work to releaseThe marketplace: after the mintYour artist page & creative identityCosts, reads & interrupted uploads

System

The Hold: storing a workThe Crucible: checks & permissionsParts, modules & shared codeInline, Hybrid & direct mediaEthereum, Tezos & AnchorsKEEL on Ethereum / EVMKEEL on Tezos / TEZThe Index & discoveryThe Rites: contract map

Tools

Images, code & worldsThe SDK: KEEL from codeChain data: let the work respondMCP: working with an assistantThe editor: bring it all together

Projects

FRAY: KEEL’s auction systemOnchaininator: preserving existing work

Reference

The design language: one word, one jobKEEL’s words, explainedWhen something does not open

Guide/Tools·2 min read

Chain data: let the work respond

Turn a supported contract value into a named variable before your artwork draws its first frame.

Select an underlined word to see what it means.

In this guide
Give a number a creative role.The value arrives before the drawing starts.A snapshot captures one moment.Use code or ask an agent.

“Can the world outside my sketch change what it shows?”

Try a collection-supply snapshot and see how data reaches the artwork.
CHAIN DATA / FROM A VALUE TO A VISUALTRY THE IDEA
01 / CHOOSE A VALUE02 / PREPARE BEFORE DRAWING
// Prepared data snapshot
// KEEL.data contains:
// { supply: 8 }

// Your drawing reads it
rings = KEEL.data.supply

In a real prepared layer, the values are frozen and include the source chain and block.

03 / THE WORK RESPONDS8 rings from one named value
Local interactive example. Moving the slider changes sample data, not a contract or a live chain read.

Give a number a creative role.

Imagine a character whose glow comes from its health, or a drawing whose rings come from a collection’s supply. Pick the contract read, name the value, and decide what it means in your work.

The example above uses local sample values. A real build reads the selected contract and records the chain and block alongside the result.

The value arrives before the drawing starts.

The SDK prepares a small data script that runs before the runtime and artwork. Your code can read a named value such as KEEL.data.supply. The sandbox can show which variables the prepared work contains.

Example: use a prepared value in your artwork
Example: use a prepared value in your artwork
// The prepared data module runs before this artwork.
const supply = Number(KEEL.data.supply);
const rings = Math.min(24, Math.max(1, supply));
// Use rings in your drawing function.

A snapshot captures one moment.

The prepared layer carries the chain and block it was read from. Reopening that build uses the prepared values. To follow later changes, design a refresh or a new revision explicitly.

Choose whether the piece should preserve a moment or keep changing. That choice is part of the artwork, and collectors should be able to understand it.

Use code or ask an agent.

The SDK and MCP expose the same preparation path. An agent can prepare the data fragment, add it to the project, and inspect the sandbox report. It should show you the selected source and values before the release review.

Technical reference: supported reads and build order

SDK: readOnchainData, buildOnchainDataFragment, assertOnchainDataRoundTrip. MCP: keel-onchain-data-prepare. The generated classic script runs in the data phase at weight -32768, before runtime and render. Supported return values are static bool, address, bytes32, and integer types; dynamic strings, bytes, and arrays are refused. Wide integers are preserved as decimal text. The prepared pack records chainId and blockNumber. It is read-only preparation, not a signed or published update.

KEEP EXPLORING

The SDK: KEEL from code→MCP: working with an assistant→Images, code & worlds→Revisions, freezes & preservation→The editor: bring it all together→
← PreviousThe SDK: KEEL from codeNext →MCP: working with an assistant

ON THIS PAGE

Give a number a creative role.The value arrives before the drawing starts.A snapshot captures one moment.Use code or ask an agent.