ourzora/zora-protocol/public

Claude Code and agent skill by ourzora/zora-protocol

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Install

npx vskill@latest install ourzora/zora-protocol/public

SKILL.md

Zora Coins SDK Skill

SDK version: @zoralabs/coins-sdk@0.5.2 | Network: Base mainnet (8453) | Testnet: Base Sepolia (84532)

You are an AI assistant helping developers build on the Zora Coins Protocol. Use this reference to guide implementation. Link to docs.zora.co for full code examples.

When to Use What

GoalFunction / Section
Deploy a new coincreateCoin() or createCoinCall()
Upload metadata before creatingcreateMetadataBuilder()
Buy or sell a cointradeCoin() or createTradeCall()
Update coin metadata or payout addressupdateCoinURI() or setPayoutRecipient()
Look up a specific coingetCoin() or getCoins()
Get a user's holdingsgetProfileBalances()
Browse trending / top coinsExplore queries (getCoinsTopGainers, etc.)
Look up trend coins by tickergetTrend() or getTrends()
Build in Python / Go / RubyREST API
Interact at the contract levelContract Reference section

Protocol Overview

ZORA Coins are ERC-20 media coins on Base (chain ID 8453). Every coin has a Uniswap V4 pool with locked liquidity, automatic reward distribution, and sniper protection.

Chain support:

  • Base mainnet (8453) — Production. All features available.
  • Base Sepolia (84532) — Testnet. ZORA, CREATOR_COIN, and CREATOR_COIN_OR_ZORA currencies are NOT available on Sepolia.

Coin types:

TypeSupplyCreator allocationTrading feeBacking
Creator Coin1B50% vests over 5 years1%ZORA or ETH
Content Coin1B10M immediate1%Creator coin or ZORA
Trend Coin1BNone (100% to pool)0.01%Pre-configured

Fee distribution (creator/content coins, 1% total):

Recipient% of total fees
Creator50%
Platform referral20%
LP rewards20%
Trade referral4%
Protocol5%
Doppler1%

All rewards are converted to the backing currency and distributed automatically on every swap.

Sniper tax: 99% fee at launch, decaying linearly to the base fee over 10 seconds.

SDK Setup

Install: npm install @zoralabs/coins-sdk viem

Configure API key (recommended to avoid rate limiting and to get more accurate coin valuations via getProfileBalances):

ts
import { setApiKey } from "@zoralabs/coins-sdk";
setApiKey("your-api-key-here");

Get an API key at https://zora.co/settings/developer

Full setup guide: https://docs.zora.co/coins/sdk

Creating Coins

Functions: createCoin() (high-level, sends tx) and createCoinCall() (low-level, returns raw calldata)

Parameters (`CreateCoinArgs`):

ParameterTypeRequiredDescription
creatorAddressYesCreator wallet address
namestringYesCoin name
symbolstringYesTrading symbol
metadata{ type: "RAW_URI", uri: string }YesMetadata URI (IPFS recommended)
currencyContentCoinCurrencyYesSee enum below
chainIdnumberNoDefaults to Base mainnet (8453)
startingMarketCapStartingMarketCapNoLOW (default) or HIGH
platformReferrerAddressNoEarns 20% of trading fees permanently
additionalOwnersAddress[]NoAdditional owner addresses
payoutRecipientOverrideAddressNoOverride payout address
skipMetadataValidationbooleanNoSkip URI validation (not recommended)

`ContentCoinCurrency` enum values:

ts
"CREATOR_COIN"; // Back with creator's coin
"CREATOR_COIN_OR_ZORA"; // Creator coin if exists, otherwise ZORA
"ZORA"; // Back with ZORA token
"ETH"; // Back with ETH

Note: CREATOR_COIN, CREATOR_COIN_OR_ZORA, and ZORA are NOT available on Base Sepolia.

`StartingMarketCap` values: LOW (default, most coins) or HIGH (known creators/brands, higher initial price to prevent sniping)

Returns (`createCoin`): { hash, receipt, address, deployment, chain }

Returns (`createCoinCall`): { calls: [{ to, data, value }], predictedCoinAddress }

Metadata builder — upload assets and produce a URI:

ts
import {
createMetadataBuilder,
createZoraUploaderForCreator,
} from "@zoralabs/coins-sdk";
const { createMetadataParameters } = await createMetadataBuilder()
.withName("My Coin")
.withSymbol("MC")
.withDescription("Description")
.withImage(imageFile)
.upload(createZoraUploaderForCreator(creatorAddress));

Extract deployment from logs (for custom tx flows):

ts
import { getCoinCreateFromLogs } from "@zoralabs/coins-sdk";
const coinDeployment = getCoinCreateFromLogs(receipt);

Full docs: https://docs.zora.co/coins/sdk/create-coin Metadata builder: https://docs.zora.co/coins/sdk/metadata-builder

Trading Coins

Functions: tradeCoin() (full flow with permits) and createTradeCall() (direct ETH trades)

Parameters (`TradeParameters`):

ParameterTypeRequiredDescription
sell{ type: "eth" } or { type: "erc20", address }YesToken to sell
buy{ type: "eth" } or { type: "erc20", address }YesToken to buy
amountInbigintYesAmount in smallest unit
slippagenumberNo0 to 0.99 (default 0.05 = 5%)
senderAddressYesTransaction sender
recipientAddressNoDefaults to sender

Supported swaps: ETH <-> ERC20, Creator Coin <-> Creator Coin, Content Coin <-> Creator Coin, ERC20 <-> ERC20

The SDK automatically handles permit signatures (EIP-2612 via permit2) to avoid separate approval transactions. Only EOA wallets are supported (smart wallet support coming soon).

Network: Base mainnet only.

Full docs: https://docs.zora.co/coins/sdk/trade-coin

Updating Coins

Functions: updateCoinURI() and setPayoutRecipient() (owner-only)

  • updateCoinURI({ coin, newURI }) — Update metadata URI (IPFS preferred)
  • setPayoutRecipient({ coin, newPayoutRecipient }) — Change reward recipient

Non-owners receive an OnlyOwner revert.

Full docs: https://docs.zora.co/coins/sdk/update-coin

Querying Coins

Coin data
FunctionDescriptionKey params
getCoin({ address, chain? })Single coin detailsaddress, chain (default 8453)
getCoins({ coinAddresses, chainId? })Batch coin detailsArray of addresses
getCoinComments({ address, chain?, after?, count? })Coin commentsPagination via after cursor
getCoinHolders({ address, chainId?, after?, count? })Coin holders listPagination via after cursor
getCoinSwaps({ address, chain?, after?, first? })Trade historyPagination via after cursor
Profile data
FunctionDescriptionKey params
getProfile({ address })User profileWallet address or handle
getProfileBalances({ address, after?, count? })User's coin balancesPagination via after cursor
getProfileCoins({ identifier, count?, after? })Coins created by userPagination via after cursor
Explore
FunctionDescription
getCoinsTopGainers()Largest 24h market cap increases
getCoinsTopVolume24h()Highest 24h trading volume
getCoinsMostValuable()Highest market cap
getCoinsNew()Most recently created
getCoinsLastTraded()Most recent trading activity
getCoinsLastTradedUnique()Most recent unique trader activity
getCreatorCoins()Coins from new creators
getMostValuableCreatorCoins()Highest-valued creator coins
getMostValuableAll()Most valuable across all coin types

All explore functions accept optional count and after for cursor-based pagination.

Trend coins
FunctionDescriptionKey params
getTrend({ ticker })Single trend coin by tickerCase-insensitive
getTrends({ name })Search trend coins by nameWith pagination

Full docs: https://docs.zora.co/coins/sdk/queries

Common Patterns

Create a coin with metadata upload
ts
// 1. Build and upload metadata
const { createMetadataParameters } = await createMetadataBuilder()
.withName("My Coin")
.withSymbol("MC")
.withDescription("A coin")
.withImage(imageFile)
.upload(createZoraUploaderForCreator(creatorAddress));
// 2. Create the coin (spreads name, symbol, uri from metadata)
const result = await createCoin({
call: {
...createMetadataParameters,
creator: creatorAddress,
currency: "ZORA",
chainId: 8453,
},
walletClient,
publicClient,
});
// 3. Verify deployment
const coin = await getCoin({ address: result.address });
Look up a coin, then buy it
ts
// 1. Look up the coin
const { data } = await getCoin({ address: coinAddress });
console.log(data.zora20Token.marketCap);
// 2. Buy with ETH
const receipt = await tradeCoin({
tradeParameters: {
sell: { type: "eth" },
buy: { type: "erc20", address: coinAddress },
amountIn: parseEther("0.01"),
slippage: 0.05,
sender: account.address,
},
walletClient,
account,
publicClient,
});
Paginate through results

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 93 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
212
Repository forks
186
7-day trend score
27

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ourzora/zora-protocol/public/badge)](https://verified-skill.com/skills/ourzora/zora-protocol/public)

Something wrong with this skill or its page? Tell us.