Lightyear CryptoPunks
by Lightyear-Technologies-Limited · remote · no sign-in to list tools · v1.0.0 · published by GitHub user Lightyear-Technologies-Limited
Browse traits, filter 10K punks, listings, bids, Merkle roots, and bid pricing for CryptoPunks.
11 tools: 2 change things and 9 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads9Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http cryptopunks https://punks.lightyear.build/api/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Changes things 2Claude Code: ask
compute_merkle_rootCompute the Merkle root for a set of CryptoPunk IDs.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Compute the Merkle root for a set of CryptoPunk IDs. The root matches the on-chain Solady MerkleProofLib encoding used by the Stash contract. Rate limit: 5 per 10 min (compute bucket — shared with filter_punks, resolve_merkle_root).
Annotations the server declares
- readOnlyHint: true
filter_punksFilter CryptoPunks by type and traits.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Filter CryptoPunks by type and traits. Returns matching punk IDs and their Merkle root. Rate limit: 5 per 10 min (compute bucket — shared with compute_merkle_root, resolve_merkle_root).
Annotations the server declares
- readOnlyHint: true
Only reads 9Claude Code: allow
browse_traitsList all CryptoPunk traits with their counts.No findings
Why it is in this group
- The name "browse_traits" says "browse": a word for reading.
Description, as the server wrote it List all CryptoPunk traits with their counts. Optionally filter by type to see how many punks of that type have each trait. Rate limit: 10 per 10 min (read bucket — shared with browse_types, get_punk_details, get_listings, get_floor_price, get_bids_for_punk, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
browse_typesList all CryptoPunk type categories with their counts.No findings
Why it is in this group
- The name "browse_types" says "browse": a word for reading.
Description, as the server wrote it List all CryptoPunk type categories with their counts. Rate limit: 10 per 10 min (read bucket — shared with browse_traits, get_punk_details, get_listings, get_floor_price, get_bids_for_punk, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
get_bid_recommendationAnalyze market data and recommend a bid price range for a CryptoPunk trait selection.No findings
Why it is in this group
- The name "get_bid_recommendation" says "get": a word for reading.
Description, as the server wrote it Analyze market data and recommend a bid price range for a CryptoPunk trait selection. Combines floor price, competing bids, and set composition into actionable guidance. `composition` lists only the traits that define the selection; use `absentTraits` for a full exclusion list when needed. Rate limit: 1 per 1 min (recommend bucket).
Annotations the server declares
- readOnlyHint: true
get_bids_for_merkle_rootGet pending EIP-712 bids matching a specific Merkle root.No findings
Why it is in this group
- The name "get_bids_for_merkle_root" says "get": a word for reading.
Description, as the server wrote it Get pending EIP-712 bids matching a specific Merkle root. Useful for seeing competition on a trait-based bid set. Rate limit: 10 per 10 min (read bucket — shared with browse_types, browse_traits, get_punk_details, get_listings, get_floor_price, get_bids_for_punk).
Annotations the server declares
- readOnlyHint: true
get_bids_for_punkGet pending EIP-712 bids that include a specific CryptoPunk.No findings
Why it is in this group
- The name "get_bids_for_punk" says "get": a word for reading.
Description, as the server wrote it Get pending EIP-712 bids that include a specific CryptoPunk. Returns bids from the CryptoPunks Bids API. Rate limit: 10 per 10 min (read bucket — shared with browse_types, browse_traits, get_punk_details, get_listings, get_floor_price, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
get_floor_priceGet the current floor ask price from the native CryptoPunks marketplace.No findings
Why it is in this group
- The name "get_floor_price" says "get": a word for reading.
Description, as the server wrote it Get the current floor ask price from the native CryptoPunks marketplace. Excludes restricted (onlySellTo) and zero-value listings. Returns `totalActive` (same denominator as get_listings). Rate limit: 10 per 10 min (read bucket — shared with browse_types, browse_traits, get_punk_details, get_listings, get_bids_for_punk, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
get_listingsGet currently listed CryptoPunks from the native marketplace.No findings
Why it is in this group
- The name "get_listings" says "get": a word for reading.
Description, as the server wrote it Get currently listed CryptoPunks from the native marketplace. By default returns only publicly buyable listings (excludes restricted onlySellTo and zero-value entries); pass `includeRestricted: true` to include private bundle sales. Optionally filter by price range. Returns `totalActive` (publicly buyable listings, same denominator as get_floor_price) and `matchedCount` (after your filters). Rate limit: 10 per 10 min (read bucket — shared with browse_types, browse_traits, get_punk_details, get_floor_price, get_bids_for_punk, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
get_punk_detailsGet metadata for specific CryptoPunks: type, traits with rarity percentages, and permalink.No findings
Why it is in this group
- The name "get_punk_details" says "get": a word for reading.
Description, as the server wrote it Get metadata for specific CryptoPunks: type, traits with rarity percentages, and permalink. Rate limit: 10 per 10 min (read bucket — shared with browse_types, browse_traits, get_listings, get_floor_price, get_bids_for_punk, get_bids_for_merkle_root).
Annotations the server declares
- readOnlyHint: true
resolve_merkle_rootReverse-engineer a Merkle root back to its punk IDs and inferred trait selection.No findings
Why it is in this group
- The name "resolve_merkle_root" says "resolve": a word for reading.
Description, as the server wrote it Reverse-engineer a Merkle root back to its punk IDs and inferred trait selection. ONLY works for roots that already have at least one bid in the CryptoPunks Bids API — this tool looks bids up by root, then derives trait config from the resulting punk set. Returns `resolved: false` for unknown roots; constructing a root locally and passing it here will not work. Rate limit: 5 per 10 min (compute bucket — shared with filter_punks, compute_merkle_root).
Annotations the server declares
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http cryptopunks https://punks.lightyear.build/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__cryptopunks__browse_types",
"mcp__cryptopunks__browse_traits",
"mcp__cryptopunks__get_punk_details",
"mcp__cryptopunks__get_listings",
"mcp__cryptopunks__get_floor_price",
"mcp__cryptopunks__get_bids_for_punk",
"mcp__cryptopunks__get_bids_for_merkle_root",
"mcp__cryptopunks__get_bid_recommendation",
"mcp__cryptopunks__resolve_merkle_root"
],
"ask": [
"mcp__cryptopunks__filter_punks",
"mcp__cryptopunks__compute_merkle_root"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as cryptopunks. Review it before you use it.
