Story Protocol · Confidential Data RailsLive on Aeneid

Ship encrypted, paid,
license-gated data.

The wagmi-style toolkit for CDR. Install one package and gate encrypted data behind a real on-chain payment or license check — in under a minute.

$ npm create cdr-kit
Read the docs
15 packages on npm99 + 7 Solidity testsMIT licensedCI green on main
<VaultGate uuid={4200} />
vault.uuid4200
read.conditionSubscription
price.period5 $IP / 30d
7b 22 73 69 67 6e 61 6c 22 3a 22 ?? ?? ?? 9f a3 2e c1 04 7d e8 11 b6 ?? ?? ?? 6a 0c
condition not met~15s threshold read
condition()checkReadCondition(uuid, …)
Three pillars, one kit

Not one feature — a toolkit over CDR.

Encryption stays in CDR. Payments stay in Story's IP layer. cdr-kit wires them together ergonomically across React, autonomous agents, and Solidity.

01@cdr-kit/react

React layer

Drop a <VaultGate> around encrypted data. Hooks, a Clerk-style <Vault> compound, and a mock mode so you can build UI with no wallet or chain.

useAccessVault()
useSubscribeAndAccess()
<VaultGate /> · <Vault.Unlocked />
Component showcase
02@cdr-kit/agent

Autonomous agent kit

An LLM agent that buys data with its own wallet — discover, pay, decrypt, decide. Five framework adapters plus an MCP server.

agent.discover()
agent.subscribeAndAccess()
vercel-ai · openai · langchain · goat
See the agent loop
03contracts/

Condition library

A standard library of tested Solidity conditions — Subscription, TierGate, Composable — plus the CdrKitVault factory that mints, registers IP, and gates in one tx.

SubscriptionCondition
TierGateCondition · Composable
CdrKitVault.create()
Browse conditions
Quickstart

Gated encrypted data
in under 60 seconds.

  1. 1

    Install the React layer

    One package pulls in the typed core SDK and the provider.

  2. 2

    Wrap your app in <CdrProvider>

    Pass a wagmi config + API URL to go live, or a mock kit for local dev.

  3. 3

    Drop in <VaultGate>

    It checks the on-chain condition, releases key shares, and hands you the decrypted bytes.

$ pnpm add @cdr-kit/react @cdr-kit/core wagmi viem

import { CdrProvider, VaultGate } from "@cdr-kit/react";

<CdrProvider config={wagmiConfig} apiUrl={apiUrl}>
  <VaultGate uuid={4200} auto
    fallback={<SubscribeButton />}>
    {(data) => <pre>{new TextDecoder().decode(data)}</pre>}
  </VaultGate>
</CdrProvider>
// → renders the decrypted payload once the condition is satisfied
The centerpiece

An agent that buys
data by itself.

Hand an LLM the three CDR tools and it runs the whole loop — no human in the loop. A seller stages a subscription-gated trading signal; the agent finds it, pays real $IP from its own wallet, decrypts, and answers.

  • discover — scans the factory for vaults matching intent.
  • subscribe & access — pays from its own wallet, collects key shares.
  • decide — reads the decrypted signal and acts on it.
cdr-kit-example-vercel-ai-chatbotlive · aeneid
Condition standard library

Composable access rules,
deployed and tested.

Every vault's read & write access is a view function the validator network calls. cdr-kit ships a standard library — typed, tested, and addressed in @cdr-kit/contracts.

SubscriptionConditiondeployed

Recurring paid access — price per period, period length, payee, native-IP or WIP-royalty mode.

0xB75Cc6571ac7E0ee30A519192740fc471e187458
TierGateConditiondeployed

Gate by a held Story IP license-token tier. License-aware access, natively on chain.

0xdA704Faf61b2FFB37205d7Eb8C1D26BD3090455f
ComposableConditiondeployed

Boolean AND / OR over child conditions, up to 8 deep. Subscription OR tier, royalty AND license.

0x74F2f94e7867b07ECDFbcc667050CBec1dE2800B
CreatorWrite / Opendeployed

Gate writes to the vault creator, or open access as a sanity / fallback condition.

0x85CEB3…195b2F · 0x78528c…d82389
CdrKitVaultfactory

One tx: mint the vault NFT, register it as Story IP, allocate the CDR slot, set the read condition, attach PIL terms.

0xac592f165D8dD1f27A087bdB39c0b2f619FF6C8C
TimeWindowCondition

Reads gated to an absolute [startTs, endTs] window. endTs=0 = open-ended. Release-on-date drops, embargoes, scheduled publication, time-bound previews.

0x67911435F262e7e4EC4F7FEB4e868a67b9dd90b1
DeadManSwitchCondition

Auto-unlock to heirs (or public) if the creator stops poke()-ing within duration. The canonical wallet-recovery + leak-on-disappearance pattern.

0x37226f97e184843aB0b8d4f08A55969801B97766
ConditionalEscrowCondition

Buyer pays → confirms delivery → seller is paid + buyer reads. Optional arbiter for disputes; seller can claim after a buyer-silence timeout.

0x7fcDe02DB7c14fD3587aB2fED064a1D8355b7584
MultiSigCondition

N-of-M with two parallel approval paths: off-chain EIP-712 sigs (gas-free) OR on-chain approve(uuid, epoch). Either path reaching threshold passes. rotateSigners invalidates both. First-of-kind in the CDR ecosystem.

0x3A0Cf72f167A2c1f5a7A5025eb36219f28C20FCd
@cdr-kit/mcp

One config block.
CDR in every MCP host.

A single binary exposes the three CDR tools over stdio — discover, subscribe, access. Paste it into your host and your assistant can transact for itself.

Claude DesktopCursorWindsurfOpenClaw
claude_desktop_config.json
{
  "mcpServers": {
    "cdr-kit": {
      "command": "cdr-kit-mcp",
      "env": {
        "PRIVATE_KEY": "0x…",
        "STORY_API_URL": "https://…"
      }
    }
  }
}

npm install -g @cdr-kit/mcp  ·  provides the cdr-kit-mcp binary

Proof, not a slide deck

Live on Aeneid.

Story's testnet — chain id 1315. Contracts verified 2026-05-28; end-to-end encrypt→write→read→decrypt round-trips confirmed on real chain.

12
packages published to npm
3 live
seeded subscription vaults (4200–4202)
~15s
typical threshold read latency
30
Solidity tests passing
contractaddress (aeneid · 1315)explorer
CdrKitVault0xac592f165D8dD1f27A087bdB39c0b2f619FF6C8Cview
SubscriptionCondition0xB75Cc6571ac7E0ee30A519192740fc471e187458view
TierGateCondition0xdA704Faf61b2FFB37205d7Eb8C1D26BD3090455fview
ComposableCondition0x74F2f94e7867b07ECDFbcc667050CBec1dE2800Bview
Why cdr-kit

Honest about the wedge.

vs. Lit / TACo

The Story IP coupling

CDR's threshold encryption is commodity. The edge is what it composes with — a read condition can require a license tier, a subscription, or a royalty payment, natively, on the same chain.

vs. Story's cdr-demo

Productization, not a demo

Story's reference ships ~9 app-internal demo contracts. cdr-kit turns them into a standard, installable, tested, typed library — and adds the advanced conditions (Subscription, TierGate, Composable) that exist nowhere else.

what it is not

A library, not a SaaS

No account, no hosted dashboard, no “sign up.” You install npm packages and own your stack. cdr-kit sits on top ofStory Protocol and CDR — it doesn't replace them.

Start now

npm create cdr-kit

Pick a template — data-marketplace, paywall, MCP quickstart, or autonomous agent — and ship.

$ npm create cdr-kit@latest