greenwood
README.md
# Greenwood
**A game index for Robinhood Chain that ranks the build before it prices the token.**
Robinhood Chain (chain id 4663) went live on 1 July 2026. Within weeks it had a gaming layer, and within weeks that layer was mostly tokens. Robinhood's own ecosystem directory has no games category. The one purpose-built hub that existed before this one advertised 42 games, surfaced ten, and displayed hardcoded prices on six of them, including a drained pool shown as the chain's busiest game.
Greenwood asks one question of every title: **is this a game, or a ticker with art?** It answers from live chain data, with every score carrying its written reason, and it refuses to show a number it cannot verify.
- **Website** — index, per-game screen breakdown, evidence, market and token panels, site liveness.
- **REST API** — the same JSON, with an OpenAPI 3.1 description and a studio economy ingest contract.
- **MCP server** — eight tools and one resource for Claude, Cursor and any MCP client, reading the chain directly.
## The screen
| Criterion | Weight | Source |
|---|---|---|
| Playable build | 30% | Direct HTTP check of the official site plus hand-verified playability |
| Team visibility | 15% | Attested in the registry |
| Liquidity depth | 20% | DexScreener best pool |
| Holder spread | 15% | Blockscout top-ten share, or estimated from holder count and marked as such |
| Ticker clarity | 20% | Registry collision count; capped when no contract is attested |
Bands: **sound** ≥ 65, **watch** 45–64, **avoid** < 45. Pre-launch entries are **unscreened**. Full rules in [`docs/METHOD.md`](docs/METHOD.md) and on `/method`.
## Data rules
1. **Nothing is backfilled.** A failed provider leaves the field null and marks the snapshot `partial`.
2. **Contracts are attested, not matched.** A token address enters the registry only when two independent sources agree. This chain carries six Senkai-named and four Thornveil-named ERC-20s.
3. **Liveness is checked directly**, one request per listing per refresh.
4. **Every score carries its basis** as a sentence next to the number.
5. **Registry edits are dated** and the registry is re-swept every four weeks.
## Layout
```
apps/web Next.js 15 site + /api/v1 route handlers
packages/core registry, chain providers (viem RPC, Blockscout, DexScreener, liveness), screen, snapshot, economy store
packages/mcp stdio MCP server over @greenwood/core
docs/ API, MCP, method, design notes
data/economy/ studio-reported economy reports (JSON, gitignored)
```
## Quick start
Requires Node 22.12+ and pnpm 10.
```bash
pnpm install
cp .env.example .env # optional; defaults use the public RPC and explorer
pnpm sweep # prints what the chain says about every registry entry right now
pnpm dev # http://localhost:3210
```
Production:
```bash
pnpm build
pnpm start
```
### MCP
```bash
pnpm --filter @greenwood/core build && pnpm --filter @greenwood/mcp build
claude mcp add greenwood -- node /absolute/path/to/greenwood/packages/mcp/dist/index.js
```
See [`docs/MCP.md`](docs/MCP.md) for other clients and the tool list.
### API
```bash
curl http://localhost:3210/api/v1/games/kindra
curl http://localhost:3210/api/v1/openapi.json
```
See [`docs/API.md`](docs/API.md), including the economy ingest contract.
## Environment
| Variable | Default | Purpose |
|---|---|---|
| `GREENWOOD_RPC_URL` | public Robinhood RPC | Swap for Alchemy/QuickNode in production |
| `GREENWOOD_BLOCKSCOUT_URL` | `https://robinhoodchain.blockscout.com` | Explorer instance |
| `GREENWOOD_DATA_DIR` | `./data` | Where economy reports are stored |
| `GREENWOOD_INGEST_TOKEN` | unset | Enables `POST /api/v1/games/:id/economy` and the MCP submit tool |
| `NEXT_PUBLIC_SITE_URL` | `http://localhost:3210` | Canonical URL, OpenAPI servers |
## Adding a game
Edit `packages/core/src/registry.ts`. Copy an entry, fill `evidence` with dated observations, leave `tokenAddress` null until two sources agree, then run `pnpm sweep` and `pnpm test`. Never resolve a contract by ticker.
## Tests
```bash
pnpm test
```
Node's built-in runner over the compiled core. Covers registry integrity, band ordering, dead-site zeroing, pre-launch exclusion, partial flagging, ticker collisions and token-gate penalties.
## Independence
Greenwood is independent and not affiliated with Robinhood Markets, Inc., Offchain Labs, DexScreener or any listed project. Nothing here is investment advice. MIT licence.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues