Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 202 additions & 0 deletions 22minds/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
---
name: 22minds
description: >
22 frontier LLMs from 7 labs independently analyze live derivatives data
and call UP, DOWN, or FLAT for BTC, ETH, or SOL every 15 minutes.
Every prediction becomes a real Polymarket bet. 300+ verified bets and
counting. Use when the user wants directional signal, model consensus,
crypto prediction, or multi-model analysis.
---

# 22MINDS

22 AI minds. every 15 minutes. real money.

Claude, Gemini, GPT, DeepSeek, Grok, MiniMax, Qwen — built by
different labs, trained on different data, shaped by different
architectures. each one sees the same live derivatives. each
calls independently. when 20 of them reach the same conclusion
about market positioning, that's not groupthink. that's
independent convergence.

300+ polymarket bets. every one public. every one settled.
https://lexispawn.xyz/predictions

```bash
curl -s https://lexispawn.xyz/api/direction/ETH | python3 -m json.tool
```

## two products, one engine

**the trading system** bets when minds converge. high agreement
across multiple labs = real money on polymarket. the track
record is the proof.

**the content layer** publishes when minds diverge. claude calls
FLAT on exhausted positioning while gemini calls DOWN on
contrarian lean — that split is the story. divergence is
information. convergence is action.

your agent can consume either signal. the `/direction` endpoint
returns both: consensus for trading, per-model whispers for
divergence analysis.

## what one API call returns

a scored consensus from 22 models across 7 labs. not one model's
opinion — a weighted signal with per-model reasoning you can
parse, filter, or route.

```json
{
"asset": "ETH",
"price": 2150.28,
"derivatives": {
"funding_rate": 0.0051,
"ls_ratio": 1.387,
"oi_change": 0.16
},
"consensus": {
"direction": "DOWN",
"score": 7,
"consensus_percent": 82,
"avg_conviction": 5.8,
"minds_responded": 22,
"distribution": { "up": 2, "down": 18, "flat": 1, "errors": 1 }
},
"whispers": [
{
"model": "claude-opus-4.6",
"family": "Claude",
"direction": "DOWN",
"conviction": 6,
"setup": "BREAKING — longs unwinding, LS 1.664→1.447",
"reasoning": "OI drain with persistent crowded longs indicates exits..."
}
]
}
```

each model returns a SETUP assessment before calling direction.
the setup field tells you WHY, not just WHAT.

## three-state framework

every model classifies the market before calling direction:

- **BUILDING** — crowd accumulating. positions growing. directional
pressure forming. ask: will they be proven wrong?
- **BREAKING** — crowd unwinding. positions closing. mechanical
pressure in the direction of the exit flow.
- **EMPTY** — no significant positioning. no crowd to exploit.
the only state where FLAT is correct.

when 18/22 models say BREAKING and 4 say BUILDING, the split
tells you the market is at an inflection point. that's signal.

## endpoints

| endpoint | what it returns |
|----------|-----------------|
| `GET /api/direction/:asset` | fresh 22-model scan. BTC, ETH, or SOL. 2-5 min. |
| `GET /api/predictions/stats` | full track record — bets, accuracy, PnL, per-asset |
| `GET /api/predictions/history` | complete bet history as JSON |
| `GET /api/predictions/live` | current active bet. x402-gated (402 on unauth) |
| `GET /predictions` | live predictions page with countdown timer |

full API docs: [references/api-reference.md](references/api-reference.md)

## track record

300+ bets. updated every 15 minutes.

ETH carries it. +$1,500 PnL across 120+ bets. the system found
its edge in ETH derivatives positioning — crowded longs unwinding
is the most reliable signal in the dataset. BTC and SOL are
break-even, still calibrating.

the LOW tier (small bets on uncertain signals) runs 53% accuracy.
HIGH tier is 49%. uncertainty itself carries information — when
the models aren't sure, the small bet outperforms the big one.

live numbers:
```bash
curl -s https://lexispawn.xyz/api/predictions/stats
```

## quality tiers

```
HIGHEST: $690 (90%+ consensus, 60%+ cross-lab agreement)
HIGH: $420 (69%+ consensus, 60%+ cross-lab agreement)
LOW: $80 (everything else that passes gates)
```

sizing reflects conviction. when 20+ of 22 models from 7 different
labs call the same direction, the bet is larger. when the signal is
ambiguous, it bets small and lets the uncertainty speak.

## what each model sees

every 15 minutes, each of 22 models receives:

- **live derivatives** from gate.io — funding rate, long/short
ratio, open interest change. raw trajectory data across
multiple time windows.
- **positioning trajectory** — how many consecutive windows in the
current LS regime + accuracy during that regime. "crowded-long
for 12 windows, 42% accuracy" tells the model the signal is spent.
- **cross-asset context** — what BTC is doing while ETH is being
evaluated. correlated moves matter.
- **adversarial step** — argue the strongest case against your own
call before committing.

the prompt maps where the crowd is positioned and asks one
question: is that position vulnerable?

## composability

**x402 signal access** — `/api/predictions/live` returns HTTP 402 on
unauthenticated requests. agents pay to access the current live bet.
the payment flows FROM the consuming agent TO lexispawn. this is a
revenue endpoint, not a cost.

`/api/predictions/history` and `/api/predictions/stats` are free.

**botchan** — bet results and model analysis publish to botchan feeds
via net protocol.
netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad

**bankr-signals** — automated signal publishing to the bankr-signals
feed is in development. not yet live.

## 22 models, 7 labs

```
Claude (5): opus-4.6 opus-4.5 sonnet-4.5 haiku-4.5 sonnet-4.6
Gemini (6): 3-pro 3-flash 2.5-pro 2.5-flash 3.1-pro 3.1-flash-lite
OpenAI (6): gpt-5.2 gpt-5.2-codex gpt-5-mini gpt-5.4 gpt-5.4-mini gpt-5.4-nano
DeepSeek (1): v3.2
xAI (1): grok-4.1-fast
MiniMax (2): m2.5 m2.7
Qwen (1): qwen3-coder
```

7 labs. errors don't correlate across training sets. insights do.
when bankr adds models, the consensus gets wider. the mind count
is an era marker, not a ceiling.

## identity

| | |
|---|---|
| **agent** | ERC-8004 #11363 |
| **ENS** | lexispawn.eth |
| **wallet** | 0xd16f8c10e7a696a3e46093c60ede43d5594d2bad |
| **token** | $SPAWN on Base (0xc5962538b35Fa5b2307Da3Bb7a17Ada936A51b07) |
| **hub** | lexispawn.xyz |
| **predictions** | lexispawn.xyz/predictions |
| **scanner** | lexispawn.xyz/scanner |
| **X** | x.com/lexispawn |

built by lexispawn. guided by seacasa. powered by bankr.
135 changes: 135 additions & 0 deletions 22minds/references/api-reference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# 22MINDS API Reference

Base URL: `https://lexispawn.xyz/api` (public) or `http://localhost:4021` (VPS direct)

---

## Endpoints

### `GET /`

Service metadata. No authentication.

**Response:**
```json
{
"service": "22minds",
"version": "3.0.0",
"models": 22,
"families": ["Claude", "Gemini", "OpenAI", "DeepSeek", "xAI", "MiniMax", "Qwen"],
"pricing": { "amount": "0.00005 ETH", "free_tier": "3 requests/day" },
"payment": { "protocol": "x402", "wallet": "0xd16f...", "chain": "Base (8453)" }
}
```

### `GET /health`

Health check. No authentication.

**Response:** `{ "status": "ok", "models": 22, "timestamp": "..." }`

### `GET /x402`

x402 payment configuration for automated clients.

### `GET /models`

List all 22 active models with families and weights.

**Response:**
```json
{
"count": 22,
"models": [
{ "id": "claude-opus-4.6", "name": "Opus 4.6", "family": "Claude", "weight": 1.5 },
{ "id": "gemini-3-pro", "name": "3 Pro", "family": "Gemini", "weight": 1.3 },
{ "id": "gpt-5.4", "name": "5.4", "family": "OpenAI", "weight": 1.4 },
"...19 more"
]
}
```

### `GET /direction/:asset`

**Main endpoint.** Queries all 22 models via Bankr LLM Gateway with live
gate.io derivatives and returns scored consensus. Takes 2-5 minutes
(not cached — each call is a fresh 22-model scan).

Supported assets: `BTC`, `ETH`, `SOL`

#### Response Fields

| Field | Type | Description |
|-------|------|-------------|
| `asset` | string | BTC, ETH, or SOL |
| `consensus.direction` | string | `UP`, `DOWN`, `FLAT`, or `SPLIT` |
| `consensus.score` | number | Weighted consensus score 0-10 |
| `consensus.consensus_percent` | number | Percentage of responding models in the majority direction. 22/22 = 100%, 15/22 = 68% |
| `consensus.avg_conviction` | number | Average conviction across responding models (1-10 scale) |
| `consensus.minds_responded` | number | Models that returned valid responses (max 22) |
| `consensus.distribution` | object | `{ up, down, flat, errors }` vote counts |
| `price` | number | Current asset price at query time |
| `derivatives` | object | Raw derivatives data: funding_rate, ls_ratio, oi_change_pct |
| `whispers` | array | Per-model breakdown (see below) |
| `context` | object | Regime info, cross-asset context |

#### Whisper Object

| Field | Type | Description |
|-------|------|-------------|
| `model` | string | Model ID (e.g. `claude-opus-4.6`) |
| `family` | string | Lab family (Claude, Gemini, OpenAI, DeepSeek, xAI, MiniMax, Qwen) |
| `direction` | string | `UP`, `DOWN`, or `FLAT` |
| `conviction` | number | Model's self-rated conviction 1-10 |
| `setup` | string | Market state: `BUILDING`, `BREAKING`, or `EMPTY` |
| `reason` | string | Model's reasoning for the call |

### `GET /read/:contractAddress`

Token analysis endpoint. Queries all models for BUY/SELL/HOLD consensus
on any Base token by contract address.

**x402 gated:** 3 free requests/day per IP, then requires payment.

#### Headers

| Header | Required | Description |
|--------|----------|-------------|
| `X-Payment` | After free tier | Base transaction hash proving payment |

#### Response Fields

| Field | Type | Description |
|-------|------|-------------|
| `token` | object | DexScreener market data snapshot |
| `consensus.action` | string | `BUY`, `SELL`, or `HOLD` — plurality across all models |
| `consensus.score` | string | Weighted average confidence 1-10 |
| `consensus.distribution` | object | `{ buy, sell, hold }` vote counts |
| `whispers` | array | Per-model breakdown: name, family, raw response, parsed action/score |
| `models_queried` | number | Total models that responded |
| `x402.paid` | boolean | Whether request used a payment |
| `x402.free_remaining` | number | Free tier requests remaining today |

#### Error Responses

| Status | Meaning |
|--------|---------|
| `402` | Payment required — free tier exhausted |
| `402` (with `tx_hash`) | Payment verification failed |

### `GET /predictions/live`

Current active Polymarket bet. **x402 gated** (returns 402 without payment).

### `GET /predictions/history`

Full bet history as JSON array. **Free, no authentication.**

### `GET /predictions/stats`

Aggregate statistics: total bets, wins, losses, accuracy, PnL,
per-asset and per-quality-tier breakdowns. **Free, no authentication.**

```bash
curl -s https://lexispawn.xyz/api/predictions/stats | python3 -m json.tool
```
14 changes: 14 additions & 0 deletions 22minds/scripts/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "15minds",
"version": "3.0.0",
"type": "module",
"description": "Multi-model consensus engine — queries every frontier AI model via Bankr LLM Gateway",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"cors": "^2.8.5",
"ethers": "^6.16.0",
"express": "^4.18.2"
}
}
Loading