What you (or your agent) can do.
Every skill maps to a real contract function or REST endpoint. Click any card to jump to the source on GitHub.
Browse the 9 Shields catalog
List all active parametric products available on Base Sepolia: 4 Flash BTC (1h/4h/24h/48h), 3 Flash ETH (1h/24h/48h), Micro Depeg USDT, and Rate Shock. Each shield has its own contract address, trigger condition, and probability.
Read shield specs
Inspect a specific shield contract: trigger logic, oracle feed, premium formula, payout ratio, and cover bounds. All shield contracts inherit from BaseShield with a shared lifecycle.
Check protocol status
Query global pause state and remaining bond capacity. The protocol auto-pauses when the LUMINA price falls below a floor; capacity caps how much new cover can be issued from the BondVault reserve.
Quote a parametric policy
Get a real-time on-chain quote for any shield. Returns the (premium, payout) tuple — premium scales with cover × triggerProbBps × marginBps × payoutRatioBps.
Quote via REST API
Same quote as the on-chain call, served by the public lumina-api endpoint. Useful for off-chain calculators, agent strategies, and dashboards that should not pay gas to read a price.
Buy policy as Human (direct contract)
Pay premium with your wallet and receive a policy bound to msg.sender. Atomic: USDC routes to the TWAPBurner, premium burns LUMINA on Uniswap. If trigger fires, your wallet receives ClaimBonds.
Buy policy as Agent (via API)
Relayer pattern: agent sends a signed quote to the API, the relayer pays gas and calls purchasePolicyFor on-chain. Agent only needs an API key + USDC balance — no wallet UI.
Approve USDC allowance
Standard ERC-20 prerequisite before purchasePolicy: call USDC.approve(CoverRouterV2, premium) so the router can pull the premium atomically. Reuse the allowance across multiple purchases (set to MaxUint to skip future approves).
Track active policies (by owner)
PolicyCreated event indexes productId + policyId but NOT buyer — pull all events with viem getLogs and filter client-side by buyer == owner. Yields the full set of policies a wallet has ever bought.
Watch oracle triggers in real time
PolicyTriggered fires when a Chainlink oracle confirms the trigger condition for a policy. Listen to filter your wallet, then optionally subscribe to BondIssued for the resulting ClaimBond.
Get bonds owned (by holder)
BondsMinted indexes both `epochId` and `to` — filter by `to: ownerAddress` for direct discovery. ClaimBond is ERC-1155 with 1 token = $1, so balanceOf returns the integer-dollar face value.
Check policy detail by id
Public REST endpoint that returns a single policy snapshot (cover, premium, payout, status, expiry). No auth — useful for agent scripts that only need a pull-and-confirm pattern.
Receive ClaimBond on trigger
When a trigger fires, BondVault.issueBond mints ERC-1155 ClaimBond tokens to the buyer. 1 token = $1 face value, all bonds maturing in the same month share an epochId, fungible.
Redeem matured bond for LUMINA
After the 24-month maturity, call BondVault.redeemBond(epochId, usdAmount) to burn N bond tokens and receive $N worth of LUMINA at the current oracle price. Partial redemptions allowed.
List bond for sale
Pre-maturity, sell your ClaimBonds at a discount on the secondary marketplace. You set the price in USDC; buyers see the implied yield based on days-to-maturity.
Buy bond from marketplace
Buy a discounted ClaimBond. Pay USDC, receive the ERC-1155 transfer. Marketplace takes 3% (1.5% from each side); 100% of fees route to the TWAPBurner and burn LUMINA forever.
Cancel an open listing
Pull your listing off the marketplace at any time before someone buys it. The bond returns to your wallet; no fees charged.
Connect wallet via RainbowKit
The frontend bundles RainbowKit + wagmi for MetaMask, Coinbase, WalletConnect, and Rainbow. Auto-prompts to switch network if not on Base Sepolia (chain 84532).
Configure API client (env vars + auth)
Production base URL: https://lumina-api-production-ac85.up.railway.app. Authenticated endpoints require an X-API-Key header. Rate limits enforced per agent identity (not per IP).
Generate an agent API key
Self-service key issuance is admin-only on V5.1 testnet — request via labs@lumina-org.com with your wallet address. Max 3 active keys per wallet, plaintext shown once.
Redeem matured bonds via API (Agent)
Agent-side equivalent of redeemBond: POST a redeem request signed with your API key and the relayer dispatches the on-chain call. Returns LUMINA to the agent wallet.
Health check + status pings
Public health endpoint for monitors and uptime probes. Returns service status and the RPC chain id the API is connected to. No auth required.