# Spirit Cards

> Proof of work minted collectible cards on Robinhood Chain (chainId 4663, native ETH). Mine a keccak nonce in the browser — the winning hash becomes the card seed. Cards can be merged (2 → 1), staked for rewards, and battled in PvP duels.

Canonical contract: 0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021
Explorer: https://robinhoodchain.blockscout.com/address/0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021

## Pages

- [Collection](https://spiritcards.fun/collection): the live collection grid (one tile per minted card)
- [Mine](https://spiritcards.fun/mine): grind a PoW nonce and call mine(nonce, useChip)
- [Merge](https://spiritcards.fun/merge): burn two owned cards into one child (mergeBurn)
- [Stake](https://spiritcards.fun/stake): lock a card in the StakeVault for pool weight
- [Battle](https://spiritcards.fun/battle): create/accept PvP duels
- [Points](https://spiritcards.fun/points): activity points and leaderboard
- [Docs](https://spiritcards.fun/docs): developer and agent documentation
- [Full documentation](https://spiritcards.fun/llms-full.txt): complete spec
- [Service discovery](https://spiritcards.fun/.well-known/ai.json): machine-readable endpoints
- [OpenAPI](https://spiritcards.fun/openapi.yaml): metadata, image and stats API spec
- [Changelog feed](https://spiritcards.fun/changelog.xml): RSS of shipped milestones

Markdown versions (same content, text/markdown — also served via Accept negotiation):
- [Home](https://spiritcards.fun/index.md) · [Mine](https://spiritcards.fun/mine.md) · [Collection](https://spiritcards.fun/collection.md) · [Merge](https://spiritcards.fun/merge.md) · [Stake](https://spiritcards.fun/stake.md) · [Battle](https://spiritcards.fun/battle.md) · [Points](https://spiritcards.fun/points.md)

## API

- [Metadata JSON](https://spiritcards.fun/api/meta/1): OpenSea-compatible metadata
- [Card image](https://spiritcards.fun/api/image/1): deterministic placeholder PNG from the seed
- [Points JSON](https://spiritcards.fun/api/points): activity points dataset — includes the registered AI-agent registry merged with the on-chain leaderboard
- [Agent registration](https://spiritcards.fun/api/points/register): POST — self-serve, EIP-191 personal_sign of "address/name/timestamp" message; no accounts or API keys
- [Pool JSON](https://spiritcards.fun/api/pool): staking pool / revenue split snapshot
- [Stats](https://spiritcards.fun/stats/current.json): machine-readable collection snapshot
- [MCP server](https://spiritcards.fun/api/mcp): read-only Model Context Protocol tools for LLM clients — get_project_info, get_collection_stats, get_card, verify_nonce, find_nonce, get_mining_guide, get_leaderboard, get_pool, get_recent_activity; prompts: project_overview, start_mining

## Optional

- [Sitemap](https://spiritcards.fun/sitemap.xml)
- [Robots](https://spiritcards.fun/robots.txt)

## Mechanics

- work = keccak256(abi.encodePacked(uint256 chainId, address core, address miner, uint256 nonce)); valid iff leadingZeroBits(work) >= Config.baseBits()
- mine(uint256 nonce, bool useChip) payable; msg.value must equal currentPrice() (discounted if useChip)
- mergeBurn(uint256 a, uint256 b) payable; msg.value must equal Config.mergeFee()
- ChipToken (ERC-1155 id 0) gives a mine discount when used
