From 068b8fca7c245125dea99ea6354dcdd81116f4f6 Mon Sep 17 00:00:00 2001 From: Lexispawn Date: Wed, 4 Mar 2026 00:44:06 -0800 Subject: [PATCH 1/7] =?UTF-8?q?Add=2015minds=20skill=20=E2=80=94=20multi-m?= =?UTF-8?q?odel=20consensus=20engine=20with=20x402=20payments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- 15minds/SKILL.md | 327 ++++++++++++++++++++++ 15minds/references/api-reference.md | 103 +++++++ 15minds/scripts/package.json | 14 + 15minds/scripts/server.js | 405 ++++++++++++++++++++++++++++ 4 files changed, 849 insertions(+) create mode 100644 15minds/SKILL.md create mode 100644 15minds/references/api-reference.md create mode 100644 15minds/scripts/package.json create mode 100644 15minds/scripts/server.js diff --git a/15minds/SKILL.md b/15minds/SKILL.md new file mode 100644 index 00000000..4ea84838 --- /dev/null +++ b/15minds/SKILL.md @@ -0,0 +1,327 @@ +--- +name: 15minds +description: > + Multi-model consensus engine for token analysis. Queries every frontier AI model + available on Bankr's LLM Gateway in parallel, synthesizes weighted verdicts with + cross-family agreement scoring. First skill with native x402 micropayment gating. + Auto-discovers models at runtime — never goes stale when new models ship. + Triggers on: "15minds", "scan token", "multi-model analysis", "consensus scan", + "what do the models think", "run 15minds", "token consensus", "multi-model scan", + "frontier consensus", "ai consensus on". +--- + +# 15minds + +Multi-model consensus engine. Queries every frontier AI model available through +Bankr's LLM Gateway in parallel, then synthesizes a weighted verdict from the +disagreement. One API call, 15+ model responses, one consensus. + +**API:** `GET /read/:contractAddress` +**Source:** [github.com/lexispawn/openclaw-skills/tree/main/15minds](https://github.com/lexispawn/openclaw-skills/tree/main/15minds) +**Operator:** Lexispawn +**Protocol:** x402 (3 free scans/day, then 0.00005 ETH per query on Base) + +--- + +## Install + +``` +> install the 15minds skill from lexispawn/openclaw-skills +``` + +--- + +## Why Multi-Model Consensus + +Asking one model about a token gives you one opinion shaped by one training set, +one RLHF process, one set of blind spots. Asking fifteen models from five families +gives you something qualitatively different: consensus from independent reasoning. + +When Claude, GPT, Gemini, Kimi, and Qwen all independently say BUY, that signal +is stronger than any single model's conviction. When they disagree, the +disagreement itself is information — it means the setup is ambiguous and caution +is warranted. + +15minds exploits the fact that frontier models fail in uncorrelated ways. Their +errors don't stack. Their insights do. + +--- + +## Architecture + +``` + ┌─────────────────────┐ + │ /read/:address │ + │ x402 gate layer │ + └─────────┬───────────┘ + │ + ┌─────────▼───────────┐ + │ DexScreener fetch │ + │ (token data) │ + └─────────┬───────────┘ + │ + ┌─────────────────┼─────────────────┐ + │ │ │ + ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ + │ Claude (4) │ │ Gemini (4) │ │ OpenAI (4) │ ... + │ opus-4.6 │ │ 3-pro │ │ gpt-5.2 │ + │ opus-4.5 │ │ 3-flash │ │ 5.2-codex │ + │ sonnet-4.6 │ │ 2.5-pro │ │ 5-mini │ + │ sonnet-4.5 │ │ 2.5-flash │ │ 5-nano │ + │ haiku-4.5 │ │ │ │ │ + └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ + │ │ │ + └─────────────────┼─────────────────┘ + │ + ┌─────────▼───────────┐ + │ Weighted scoring │ + │ + consensus logic │ + └─────────┬───────────┘ + │ + ┌─────────▼───────────┐ + │ JSON response with │ + │ verdict + whispers │ + └─────────────────────┘ +``` + +**Flow:** +1. Token data fetched from DexScreener (price, volume, liquidity, buy/sell ratio) +2. All available models queried in parallel via Bankr LLM Gateway +3. Each response parsed for action (BUY/SELL/HOLD) and confidence score (1-10) +4. Weighted consensus computed — flagship models carry more weight than lightweight ones +5. Full breakdown returned: consensus verdict, individual whispers, distribution + +**Model auto-discovery:** On startup, the server queries `GET /v1/models` on the +Bankr LLM Gateway. If the gateway adds a 16th model tomorrow, 15minds picks it +up automatically on next restart. The hardcoded fallback list is only used if +discovery fails. + +--- + +## Model Lineup + +Models are auto-discovered from the gateway at runtime. Current roster (fallback): + +| Model | Family | Weight | Role | +|-------|--------|--------|------| +| claude-opus-4.6 | Claude | 1.5 | Flagship reasoning — highest weight | +| claude-opus-4.5 | Claude | 1.4 | Deep analysis, strong on nuance | +| claude-sonnet-4.6 | Claude | 1.3 | Fast flagship, strong code reasoning | +| claude-sonnet-4.5 | Claude | 1.2 | Balanced analysis | +| claude-haiku-4.5 | Claude | 0.8 | Fast heuristic, gut-check signal | +| gemini-3-pro | Gemini | 1.3 | Strong quantitative reasoning | +| gemini-3-flash | Gemini | 0.9 | Fast Gemini signal | +| gemini-2.5-pro | Gemini | 1.1 | Established reasoning baseline | +| gemini-2.5-flash | Gemini | 0.8 | Lightweight Gemini check | +| gpt-5.2 | OpenAI | 1.3 | Flagship GPT, strong on markets | +| gpt-5.2-codex | OpenAI | 1.0 | Technical/code analysis angle | +| gpt-5-mini | OpenAI | 0.8 | Fast OpenAI heuristic | +| gpt-5-nano | OpenAI | 0.6 | Minimum viable signal | +| kimi-k2.5 | Moonshot | 1.0 | Independent reasoning, non-Western training | +| qwen3-coder | Qwen | 0.9 | Technical analysis, Alibaba family | + +**Weighting logic:** Flagship models (opus-4.6, gpt-5.2, gemini-3-pro) carry +1.3-1.5x weight. Lightweight models (haiku, nano, flash) carry 0.6-0.9x. +This means a unanimous lightweight verdict can be overridden by flagship +disagreement — the models that think harder matter more. + +--- + +## API Reference + +### `GET /` +Service info. No auth required. + +### `GET /health` +Returns `{ "status": "ok" }`. No auth required. + +### `GET /x402` +Payment configuration for x402 clients. + +### `GET /read/:contractAddress` +**Main endpoint.** x402 gated. + +Queries all available models against the target token and returns weighted +consensus. + +**Free tier:** 3 requests/day per IP. No headers needed. + +**Paid tier:** After free tier, include payment proof: +``` +X-Payment: +``` +Send 0.00005 ETH (~$0.12) to `0xd16f8c10e7a696a3e46093c60ede43d5594d2bad` on +Base, then pass the transaction hash in the header. + +#### Example Request + +```bash +# Free tier (first 3/day) +curl https://your-host:4021/read/0xYourTokenAddress + +# Paid tier +curl -H "X-Payment: 0xabc123..." https://your-host:4021/read/0xYourTokenAddress +``` + +#### Example Response + +```json +{ + "token": { + "contract": "0x...", + "symbol": "EXAMPLE", + "name": "Example Token", + "price": "0.00234", + "change24h": 12.5, + "volume24h": 150000, + "liquidity": 85000, + "buySell": "342/198" + }, + "consensus": { + "action": "BUY", + "score": "7.3", + "distribution": { "buy": 10, "sell": 2, "hold": 3 } + }, + "whispers": [ + { + "model": "Opus 4.6", + "family": "Claude", + "says": "BUY 8/10 - Volume spike with accumulation pattern", + "action": "BUY", + "score": 8 + }, + { + "model": "5.2", + "family": "OpenAI", + "says": "BUY 7/10 - Liquidity healthy relative to volume", + "action": "BUY", + "score": 7 + }, + { + "model": "K2.5", + "family": "Moonshot", + "says": "HOLD 5/10 - Insufficient history for conviction", + "action": "HOLD", + "score": 5 + } + ], + "ritual": "complete", + "models_queried": 15, + "timestamp": "2026-03-04T00:00:00.000Z", + "x402": { + "paid": false, + "free_remaining": 2, + "payment": null + } +} +``` + +**Response fields:** + +| Field | Description | +|-------|-------------| +| `consensus.action` | `BUY`, `SELL`, or `HOLD` — plurality vote across all models | +| `consensus.score` | Weighted average confidence (1-10), flagship models weighted higher | +| `consensus.distribution` | Raw vote counts by action | +| `whispers[]` | Individual model responses with parsed action and score | +| `models_queried` | Number of models that responded (may exceed 15 as gateway adds models) | +| `x402.paid` | Whether this request was paid or free tier | +| `x402.free_remaining` | Free requests remaining today | + +--- + +## x402 Payment Layer + +15minds implements the [x402 protocol](https://www.x402.org/) for micropayment +gating — the first skill in this repo to do so. + +**How it works:** + +1. First 3 requests per day per IP are free. No headers, no wallet, no friction. +2. After free tier, the server returns HTTP `402 Payment Required` with payment + instructions in the response body. +3. Client sends 0.00005 ETH to the payment wallet on Base. +4. Client retries the request with `X-Payment: ` header. +5. Server verifies the transaction on-chain (correct recipient, sufficient amount, + confirmed) and serves the response. + +**Why x402:** Agents need to pay for compute. API keys create accounts. x402 +creates transactions — one HTTP header, one onchain payment, no signup. Any agent +with a Base wallet can use 15minds without registration. + +``` +Payment wallet: 0xd16f8c10e7a696a3e46093c60ede43d5594d2bad +Price: 0.00005 ETH (~$0.12) +Chain: Base (8453) +Free tier: 3 requests/day per IP +``` + +--- + +## Deployment + +### Requirements + +- Node.js 18+ +- Bankr API key (`bk_` prefix) — get one at [bankr.bot/api](https://bankr.bot/api) + +### Setup + +```bash +cd scripts/ +npm install +``` + +### Environment Variables + +| Variable | Required | Default | Description | +|----------|----------|---------|-------------| +| `BANKR_API_KEY` | Yes | — | Bankr LLM Gateway API key | +| `PORT` | No | `4021` | Server port | + +### Run + +```bash +# Direct +BANKR_API_KEY=bk_yourkey node server.js + +# PM2 (recommended for production) +BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds +pm2 save +``` + +### Verify + +```bash +curl http://localhost:4021/ +curl http://localhost:4021/health +curl http://localhost:4021/read/0xYourTokenAddress +``` + +--- + +## Reading the Output + +**Strong consensus (act on it):** +- Score > 7 with 12+ models agreeing on BUY → strong bullish signal +- Score < 3 with 12+ models agreeing on SELL → strong bearish signal +- Cross-family agreement (Claude + GPT + Gemini all align) → highest conviction + +**Weak consensus (proceed with caution):** +- Score 4-6 → models are split, setup is ambiguous +- High disagreement across families → the token's situation is genuinely unclear +- One family bullish while others bearish → investigate what that family is seeing + +**The disagreement is the signal.** When 15 models trained on different data by +different teams all converge, that's meaningful. When they diverge, that's +meaningful too — it means the trade is not obvious, which is itself useful +information. + +--- + +## Resources + +- [Bankr LLM Gateway](https://bankr.bot) — model access +- [x402 Protocol](https://www.x402.org/) — payment standard +- [DexScreener](https://dexscreener.com/) — token data source +- [Lexispawn](https://lexispawn.xyz) — operator diff --git a/15minds/references/api-reference.md b/15minds/references/api-reference.md new file mode 100644 index 00000000..1f0f764a --- /dev/null +++ b/15minds/references/api-reference.md @@ -0,0 +1,103 @@ +# 15minds API Reference + +Base URL: `http://your-host:4021` + +--- + +## Endpoints + +### `GET /` + +Service metadata. No authentication. + +**Response:** +```json +{ + "service": "15minds", + "version": "3.0.0", + "models": 15, + "families": ["Claude", "Gemini", "OpenAI", "Moonshot", "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": 15, "timestamp": "..." }` + +### `GET /x402` + +x402 payment configuration for automated clients. + +### `GET /models` + +List all active models with families and weights. + +**Response:** +```json +{ + "count": 15, + "models": [ + { "id": "claude-opus-4.6", "name": "Opus 4.6", "family": "Claude", "weight": 1.5 }, + ... + ] +} +``` + +### `GET /read/:contractAddress` + +**Main endpoint.** Queries all available models and returns weighted consensus. + +**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 | + +#### Path Parameters + +| Parameter | Description | +|-----------|-------------| +| `contractAddress` | Token contract address on Base | + +#### 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, include `X-Payment` header | +| `402` (with `tx_hash`) | Payment verification failed — wrong recipient, insufficient amount, or already used | + +#### 402 Response Body + +```json +{ + "error": "Payment Required", + "protocol": "x402", + "free_tier_exhausted": true, + "payment": { + "wallet": "0xd16f8c10e7a696a3e46093c60ede43d5594d2bad", + "amount": "0.00005", + "currency": "ETH", + "chain": "base", + "chain_id": 8453 + } +} +``` diff --git a/15minds/scripts/package.json b/15minds/scripts/package.json new file mode 100644 index 00000000..d7e4dd82 --- /dev/null +++ b/15minds/scripts/package.json @@ -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" + } +} diff --git a/15minds/scripts/server.js b/15minds/scripts/server.js new file mode 100644 index 00000000..9be7d7dd --- /dev/null +++ b/15minds/scripts/server.js @@ -0,0 +1,405 @@ +import express from "express"; +import cors from "cors"; +import { ethers } from "ethers"; + +const app = express(); +app.use(cors()); +app.use(express.json()); + +// ============================================ +// x402 PAYMENT CONFIG +// ============================================ +const PAYMENT_WALLET = "0xd16f8c10e7a696a3e46093c60ede43d5594d2bad"; +const PRICE_ETH = "0.00005"; // ~$0.12 per query +const CHAIN_ID = 8453; // Base +const FREE_TIER_LIMIT = 3; // 3 free per day per IP +const provider = new ethers.JsonRpcProvider("https://mainnet.base.org"); +const verifiedPayments = new Map(); +const freeTierUsage = new Map(); // IP -> { count, resetTime } + +// ============================================ +// BANKR LLM GATEWAY CONFIG +// ============================================ +const BANKR_API = process.env.BANKR_API_KEY; +if (!BANKR_API) { + console.error("ERROR: Set BANKR_API_KEY environment variable"); + process.exit(1); +} + +const LLM_BASE = "https://llm.bankr.bot/v1"; +const LLM_ENDPOINT = LLM_BASE + "/chat/completions"; + +// Fallback model list — used only if gateway discovery fails +const FALLBACK_MODELS = [ + { id: "claude-opus-4.6", name: "Opus 4.6", family: "Claude", weight: 1.5 }, + { id: "claude-opus-4.5", name: "Opus 4.5", family: "Claude", weight: 1.4 }, + { id: "claude-sonnet-4.6", name: "Sonnet 4.6", family: "Claude", weight: 1.3 }, + { id: "claude-sonnet-4.5", name: "Sonnet 4.5", family: "Claude", weight: 1.2 }, + { id: "claude-haiku-4.5", name: "Haiku 4.5", family: "Claude", weight: 0.8 }, + { id: "gemini-3-pro", name: "3 Pro", family: "Gemini", weight: 1.3 }, + { id: "gemini-3-flash", name: "3 Flash", family: "Gemini", weight: 0.9 }, + { id: "gemini-2.5-pro", name: "2.5 Pro", family: "Gemini", weight: 1.1 }, + { id: "gemini-2.5-flash", name: "2.5 Flash", family: "Gemini", weight: 0.8 }, + { id: "gpt-5.2", name: "5.2", family: "OpenAI", weight: 1.3 }, + { id: "gpt-5.2-codex", name: "5.2 Codex", family: "OpenAI", weight: 1.0 }, + { id: "gpt-5-mini", name: "5 Mini", family: "OpenAI", weight: 0.8 }, + { id: "gpt-5-nano", name: "5 Nano", family: "OpenAI", weight: 0.6 }, + { id: "kimi-k2.5", name: "K2.5", family: "Moonshot", weight: 1.0 }, + { id: "qwen3-coder", name: "Coder", family: "Qwen", weight: 0.9 }, +]; + +let MODELS = [...FALLBACK_MODELS]; + +// ============================================ +// MODEL AUTO-DISCOVERY +// ============================================ +function classifyModel(id) { + // Derive family, display name, and weight from model ID + const weights = { + "opus-4.6": 1.5, "opus-4.5": 1.4, "sonnet-4.6": 1.3, "sonnet-4.5": 1.2, "haiku-4.5": 0.8, + "3-pro": 1.3, "3-flash": 0.9, "2.5-pro": 1.1, "2.5-flash": 0.8, + "5.2": 1.3, "5.2-codex": 1.0, "5-mini": 0.8, "5-nano": 0.6, + "k2.5": 1.0, "coder": 0.9, + }; + + let family = "Unknown"; + if (id.startsWith("claude-")) family = "Claude"; + else if (id.startsWith("gemini-")) family = "Gemini"; + else if (id.startsWith("gpt-")) family = "OpenAI"; + else if (id.startsWith("kimi-")) family = "Moonshot"; + else if (id.startsWith("qwen")) family = "Qwen"; + + // Strip family prefix for display name + const name = id + .replace(/^claude-/, "").replace(/^gemini-/, "").replace(/^gpt-/, "") + .replace(/^kimi-/, "").replace(/^qwen\d*-/, "") + .split("-").map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(" "); + + // Find weight: check known suffixes, default by tier + let weight = 1.0; + for (const [suffix, w] of Object.entries(weights)) { + if (id.includes(suffix)) { weight = w; break; } + } + // Heuristic defaults for unknown models + if (weight === 1.0 && family === "Unknown") { + if (id.includes("mini") || id.includes("flash") || id.includes("nano")) weight = 0.7; + else if (id.includes("pro") || id.includes("opus")) weight = 1.3; + } + + return { id, name, family, weight }; +} + +async function discoverModels() { + try { + const res = await fetch(LLM_BASE + "/models", { + headers: { "Authorization": "Bearer " + BANKR_API } + }); + const data = await res.json(); + if (data.data && data.data.length > 0) { + MODELS = data.data.map(m => classifyModel(m.id)); + console.log(`Discovered ${MODELS.length} models from gateway`); + return; + } + } catch (e) { + console.warn("Model discovery failed, using fallback list:", e.message); + } + MODELS = [...FALLBACK_MODELS]; + console.log(`Using ${MODELS.length} fallback models`); +} + +// ============================================ +// x402 PAYMENT VERIFICATION +// ============================================ +async function verifyPayment(txHash, requiredAmount) { + try { + const tx = await provider.getTransaction(txHash); + if (!tx) return { success: false, reason: "Transaction not found" }; + + const receipt = await provider.getTransactionReceipt(txHash); + if (!receipt || receipt.status !== 1) { + return { success: false, reason: "Transaction failed or pending" }; + } + + if (tx.to?.toLowerCase() !== PAYMENT_WALLET.toLowerCase()) { + return { success: false, reason: "Wrong recipient" }; + } + + const requiredWei = ethers.parseEther(requiredAmount); + if (tx.value < requiredWei) { + return { success: false, reason: `Insufficient: got ${ethers.formatEther(tx.value)}, need ${requiredAmount}` }; + } + + return { success: true, amount: ethers.formatEther(tx.value), from: tx.from }; + } catch (e) { + return { success: false, reason: e.message }; + } +} + +function x402WithFreeTier(freeLimit, priceEth) { + return async (req, res, next) => { + const ip = req.headers["x-forwarded-for"]?.split(",")[0] || req.ip || "unknown"; + const now = Date.now(); + const dayMs = 24 * 60 * 60 * 1000; + + // Check/reset free tier + let usage = freeTierUsage.get(ip); + if (!usage || now > usage.resetTime) { + usage = { count: 0, resetTime: now + dayMs }; + freeTierUsage.set(ip, usage); + } + + // Free tier available? + if (usage.count < freeLimit) { + usage.count++; + req.freeTier = true; + req.freeRemaining = freeLimit - usage.count; + return next(); + } + + // Check for payment + const paymentHeader = req.headers["x-payment"]; + if (!paymentHeader) { + return res.status(402).json({ + error: "Payment Required", + protocol: "x402", + free_tier_exhausted: true, + payment: { + wallet: PAYMENT_WALLET, + amount: priceEth, + currency: "ETH", + chain: "base", + chain_id: CHAIN_ID, + instructions: "Send ETH to wallet, include tx hash in X-Payment header" + } + }); + } + + // Verify payment + const txHash = paymentHeader.trim(); + if (verifiedPayments.has(txHash)) { + return res.status(402).json({ error: "Payment already used", tx_hash: txHash }); + } + + const verified = await verifyPayment(txHash, priceEth); + if (!verified.success) { + return res.status(402).json({ + error: "Payment verification failed", + reason: verified.reason, + tx_hash: txHash + }); + } + + verifiedPayments.set(txHash, { verified: true, ...verified, usedAt: now }); + req.freeTier = false; + req.payment = verified; + next(); + }; +} + +// ============================================ +// TOKEN DATA +// ============================================ +async function fetchToken(ca) { + try { + const res = await fetch("https://api.dexscreener.com/latest/dex/tokens/" + ca); + const data = await res.json(); + if (data.pairs && data.pairs[0]) { + const p = data.pairs[0]; + return { + symbol: p.baseToken.symbol, + name: p.baseToken.name, + price: p.priceUsd, + change: p.priceChange?.h24 || 0, + volume: p.volume?.h24 || 0, + liquidity: p.liquidity?.usd || 0, + buys: p.txns?.h24?.buys || 0, + sells: p.txns?.h24?.sells || 0 + }; + } + } catch (e) {} + return { symbol: "???", price: "?", change: "?" }; +} + +// ============================================ +// LLM QUERIES +// ============================================ +async function queryModel(modelId, prompt) { + try { + const res = await fetch(LLM_ENDPOINT, { + method: "POST", + headers: { + "Authorization": "Bearer " + BANKR_API, + "Content-Type": "application/json" + }, + body: JSON.stringify({ + model: modelId, + messages: [{ role: "user", content: prompt }], + max_tokens: 100 + }) + }); + const data = await res.json(); + return data.choices?.[0]?.message?.content || null; + } catch (e) { + return null; + } +} + +function extractVerdict(response) { + if (!response) return { action: "HOLD", score: 5 }; + const upper = response.toUpperCase(); + let action = "HOLD"; + if (upper.includes("BUY")) action = "BUY"; + else if (upper.includes("SELL")) action = "SELL"; + const scoreMatch = response.match(/(\d+)\s*\/\s*10|[Ss]core[:\s]+(\d+)/); + const score = scoreMatch ? parseInt(scoreMatch[1] || scoreMatch[2]) : (action === "BUY" ? 7 : action === "SELL" ? 3 : 5); + return { action, score }; +} + +// ============================================ +// ROUTES +// ============================================ + +// Info endpoint (free) +app.get("/", (req, res) => { + res.json({ + service: "15minds", + version: "3.0.0", + description: "Multi-model consensus engine — every frontier AI model analyzes any Base token", + models: MODELS.length, + families: [...new Set(MODELS.map(m => m.family))], + pricing: { + amount: PRICE_ETH + " ETH", + usd_approx: "$0.12", + free_tier: FREE_TIER_LIMIT + " requests/day" + }, + payment: { + protocol: "x402", + wallet: PAYMENT_WALLET, + chain: "Base (8453)", + header: "X-Payment: " + }, + endpoint: "GET /read/:contractAddress", + operator: "Lexispawn" + }); +}); + +// Health check (free) +app.get("/health", (req, res) => { + res.json({ + status: "ok", + models: MODELS.length, + timestamp: new Date().toISOString() + }); +}); + +// x402 pricing info (free) +app.get("/x402", (req, res) => { + res.json({ + protocol: "x402", + description: "15minds — multi-model consensus engine for token analysis", + wallet: PAYMENT_WALLET, + price: PRICE_ETH + " ETH", + free_tier: FREE_TIER_LIMIT + " requests/day per IP", + chain: "Base (8453)", + usage: "Include tx hash in X-Payment header after free tier" + }); +}); + +// Model list (free) +app.get("/models", (req, res) => { + res.json({ + count: MODELS.length, + models: MODELS.map(m => ({ id: m.id, name: m.name, family: m.family, weight: m.weight })) + }); +}); + +// Main endpoint — x402 protected +app.get("/read/:ca", x402WithFreeTier(FREE_TIER_LIMIT, PRICE_ETH), async (req, res) => { + const ca = req.params.ca; + const token = await fetchToken(ca); + + const prompt = `Evaluate this Base token for a speculative trade: +${token.symbol} (${token.name}) +Price: ${token.price} +24h Change: ${token.change}% +24h Volume: ${Number(token.volume).toLocaleString()} +Liquidity: ${Number(token.liquidity).toLocaleString()} +Buy/Sell 24h: ${token.buys}/${token.sells} +Reply with: BUY, SELL, or HOLD. Then score 1-10 and max 10 words why. +Example: "BUY 8/10 - Strong accumulation, volume exceeding liquidity"`; + + const results = await Promise.all( + MODELS.map(async (model) => { + const response = await queryModel(model.id, prompt); + const verdict = extractVerdict(response); + return { model, response, verdict }; + }) + ); + + const whispers = []; + let weightedSum = 0; + let totalWeight = 0; + let buyCount = 0, sellCount = 0, holdCount = 0; + + for (const { model, response, verdict } of results) { + whispers.push({ + model: model.name, + family: model.family, + says: response ? response.split("\n")[0].slice(0, 80) : "...", + action: verdict.action, + score: verdict.score + }); + + weightedSum += verdict.score * model.weight; + totalWeight += model.weight; + + if (verdict.action === "BUY") buyCount++; + else if (verdict.action === "SELL") sellCount++; + else holdCount++; + } + + const consensusScore = totalWeight > 0 ? (weightedSum / totalWeight).toFixed(1) : "?"; + const consensusAction = buyCount > sellCount && buyCount > holdCount ? "BUY" : + sellCount > buyCount && sellCount > holdCount ? "SELL" : "HOLD"; + + res.json({ + token: { + contract: ca, + symbol: token.symbol, + name: token.name, + price: token.price, + change24h: token.change, + volume24h: token.volume, + liquidity: token.liquidity, + buySell: `${token.buys}/${token.sells}` + }, + consensus: { + action: consensusAction, + score: consensusScore, + distribution: { buy: buyCount, sell: sellCount, hold: holdCount } + }, + whispers, + ritual: "complete", + models_queried: MODELS.length, + timestamp: new Date().toISOString(), + x402: { + paid: !req.freeTier, + free_remaining: req.freeRemaining ?? 0, + payment: req.payment || null + } + }); +}); + +// ============================================ +// START +// ============================================ +const PORT = process.env.PORT || 4021; + +await discoverModels(); + +app.listen(PORT, () => { + console.log(`15minds running on port ${PORT}`); + console.log(`Models: ${MODELS.length} (${[...new Set(MODELS.map(m => m.family))].join(", ")})`); + console.log(`Price: ${PRICE_ETH} ETH | Free tier: ${FREE_TIER_LIMIT}/day`); + console.log(`Payments to: ${PAYMENT_WALLET}`); +}); From 1c42d691694d16bd920e2ff9d6eb6b4bc9b50ccf Mon Sep 17 00:00:00 2001 From: Lexispawn Date: Tue, 10 Mar 2026 23:54:11 -0700 Subject: [PATCH 2/7] sharpen 15minds SKILL.md Co-Authored-By: Claude Opus 4.6 --- 15minds/SKILL.md | 336 +++++++---------------------------------------- 1 file changed, 45 insertions(+), 291 deletions(-) diff --git a/15minds/SKILL.md b/15minds/SKILL.md index 4ea84838..7fdb169f 100644 --- a/15minds/SKILL.md +++ b/15minds/SKILL.md @@ -1,327 +1,81 @@ --- name: 15minds -description: > - Multi-model consensus engine for token analysis. Queries every frontier AI model - available on Bankr's LLM Gateway in parallel, synthesizes weighted verdicts with - cross-family agreement scoring. First skill with native x402 micropayment gating. - Auto-discovers models at runtime — never goes stale when new models ship. - Triggers on: "15minds", "scan token", "multi-model analysis", "consensus scan", - "what do the models think", "run 15minds", "token consensus", "multi-model scan", - "frontier consensus", "ai consensus on". +description: Multi-model consensus engine. One query hits every frontier model on the Bankr LLM Gateway simultaneously. The disagreement between models is where the information lives. x402 micropayment gating. First skill in this repo with native onchain payment. +metadata: + clawdbot: + emoji: "🧠" + homepage: "https://lexispawn.xyz/scanner" + requires: + env: + - BANKR_API_KEY + bins: + - node + - npm + primaryEnv: BANKR_API_KEY --- # 15minds -Multi-model consensus engine. Queries every frontier AI model available through -Bankr's LLM Gateway in parallel, then synthesizes a weighted verdict from the -disagreement. One API call, 15+ model responses, one consensus. +One query. Every frontier model. The disagreement is the product. -**API:** `GET /read/:contractAddress` -**Source:** [github.com/lexispawn/openclaw-skills/tree/main/15minds](https://github.com/lexispawn/openclaw-skills/tree/main/15minds) -**Operator:** Lexispawn -**Protocol:** x402 (3 free scans/day, then 0.00005 ETH per query on Base) +Models trained on the same data agree reflexively. Models trained on different data agree meaningfully. 15minds queries every model on the Bankr LLM Gateway in parallel and synthesizes weighted consensus. When Claude, GPT, Gemini, Kimi, and Qwen converge, that's signal. When they diverge, that's where the real information lives. ---- - -## Install - -``` -> install the 15minds skill from lexispawn/openclaw-skills -``` - ---- +## What it does -## Why Multi-Model Consensus +Given a contract address, 15minds: -Asking one model about a token gives you one opinion shaped by one training set, -one RLHF process, one set of blind spots. Asking fifteen models from five families -gives you something qualitatively different: consensus from independent reasoning. +1. Queries all available models simultaneously via the Bankr LLM Gateway +2. Parses each model's BUY/SELL/HOLD verdict and conviction score (1-10) +3. Computes weighted consensus. Flagship models (Opus, GPT-5.2, Gemini 3 Pro) carry higher weight. +4. Returns the full breakdown: consensus action, weighted score, per-model reasoning, vote distribution -When Claude, GPT, Gemini, Kimi, and Qwen all independently say BUY, that signal -is stronger than any single model's conviction. When they disagree, the -disagreement itself is information — it means the setup is ambiguous and caution -is warranted. +The output isn't a recommendation. It's a map of where frontier models agree and where they don't. -15minds exploits the fact that frontier models fail in uncorrelated ways. Their -errors don't stack. Their insights do. +## x402 ---- - -## Architecture - -``` - ┌─────────────────────┐ - │ /read/:address │ - │ x402 gate layer │ - └─────────┬───────────┘ - │ - ┌─────────▼───────────┐ - │ DexScreener fetch │ - │ (token data) │ - └─────────┬───────────┘ - │ - ┌─────────────────┼─────────────────┐ - │ │ │ - ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ - │ Claude (4) │ │ Gemini (4) │ │ OpenAI (4) │ ... - │ opus-4.6 │ │ 3-pro │ │ gpt-5.2 │ - │ opus-4.5 │ │ 3-flash │ │ 5.2-codex │ - │ sonnet-4.6 │ │ 2.5-pro │ │ 5-mini │ - │ sonnet-4.5 │ │ 2.5-flash │ │ 5-nano │ - │ haiku-4.5 │ │ │ │ │ - └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ - │ │ │ - └─────────────────┼─────────────────┘ - │ - ┌─────────▼───────────┐ - │ Weighted scoring │ - │ + consensus logic │ - └─────────┬───────────┘ - │ - ┌─────────▼───────────┐ - │ JSON response with │ - │ verdict + whispers │ - └─────────────────────┘ -``` - -**Flow:** -1. Token data fetched from DexScreener (price, volume, liquidity, buy/sell ratio) -2. All available models queried in parallel via Bankr LLM Gateway -3. Each response parsed for action (BUY/SELL/HOLD) and confidence score (1-10) -4. Weighted consensus computed — flagship models carry more weight than lightweight ones -5. Full breakdown returned: consensus verdict, individual whispers, distribution - -**Model auto-discovery:** On startup, the server queries `GET /v1/models` on the -Bankr LLM Gateway. If the gateway adds a 16th model tomorrow, 15minds picks it -up automatically on next restart. The hardcoded fallback list is only used if -discovery fails. - ---- +First skill in this repo with native onchain payment gating. 3 free queries per day, then 0.00005 ETH per query on Base via x402 protocol. No API keys to exchange. No accounts to create. No trust negotiation. One HTTP header. The service is the interface. -## Model Lineup +## Auto-discovery -Models are auto-discovered from the gateway at runtime. Current roster (fallback): +Queries the gateway's `/v1/models` endpoint at startup. When Bankr ships model 16, the skill picks it up on restart. The code says 15minds. The architecture says Nmind. -| Model | Family | Weight | Role | -|-------|--------|--------|------| -| claude-opus-4.6 | Claude | 1.5 | Flagship reasoning — highest weight | -| claude-opus-4.5 | Claude | 1.4 | Deep analysis, strong on nuance | -| claude-sonnet-4.6 | Claude | 1.3 | Fast flagship, strong code reasoning | -| claude-sonnet-4.5 | Claude | 1.2 | Balanced analysis | -| claude-haiku-4.5 | Claude | 0.8 | Fast heuristic, gut-check signal | -| gemini-3-pro | Gemini | 1.3 | Strong quantitative reasoning | -| gemini-3-flash | Gemini | 0.9 | Fast Gemini signal | -| gemini-2.5-pro | Gemini | 1.1 | Established reasoning baseline | -| gemini-2.5-flash | Gemini | 0.8 | Lightweight Gemini check | -| gpt-5.2 | OpenAI | 1.3 | Flagship GPT, strong on markets | -| gpt-5.2-codex | OpenAI | 1.0 | Technical/code analysis angle | -| gpt-5-mini | OpenAI | 0.8 | Fast OpenAI heuristic | -| gpt-5-nano | OpenAI | 0.6 | Minimum viable signal | -| kimi-k2.5 | Moonshot | 1.0 | Independent reasoning, non-Western training | -| qwen3-coder | Qwen | 0.9 | Technical analysis, Alibaba family | - -**Weighting logic:** Flagship models (opus-4.6, gpt-5.2, gemini-3-pro) carry -1.3-1.5x weight. Lightweight models (haiku, nano, flash) carry 0.6-0.9x. -This means a unanimous lightweight verdict can be overridden by flagship -disagreement — the models that think harder matter more. - ---- - -## API Reference - -### `GET /` -Service info. No auth required. - -### `GET /health` -Returns `{ "status": "ok" }`. No auth required. - -### `GET /x402` -Payment configuration for x402 clients. - -### `GET /read/:contractAddress` -**Main endpoint.** x402 gated. - -Queries all available models against the target token and returns weighted -consensus. - -**Free tier:** 3 requests/day per IP. No headers needed. +## Install -**Paid tier:** After free tier, include payment proof: ``` -X-Payment: +> install the 15minds skill from lexispawn/openclaw-skills ``` -Send 0.00005 ETH (~$0.12) to `0xd16f8c10e7a696a3e46093c60ede43d5594d2bad` on -Base, then pass the transaction hash in the header. -#### Example Request +## Deploy ```bash -# Free tier (first 3/day) -curl https://your-host:4021/read/0xYourTokenAddress - -# Paid tier -curl -H "X-Payment: 0xabc123..." https://your-host:4021/read/0xYourTokenAddress +cd scripts && npm install +BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds ``` -#### Example Response +## API + +`GET /read/:contractAddress` — Full multi-model scan with x402 gate ```json { - "token": { - "contract": "0x...", - "symbol": "EXAMPLE", - "name": "Example Token", - "price": "0.00234", - "change24h": 12.5, - "volume24h": 150000, - "liquidity": 85000, - "buySell": "342/198" - }, - "consensus": { - "action": "BUY", - "score": "7.3", - "distribution": { "buy": 10, "sell": 2, "hold": 3 } - }, + "consensus": "HOLD", + "score": 5.2, + "distribution": { "BUY": 3, "HOLD": 7, "SELL": 2 }, "whispers": [ - { - "model": "Opus 4.6", - "family": "Claude", - "says": "BUY 8/10 - Volume spike with accumulation pattern", - "action": "BUY", - "score": 8 - }, - { - "model": "5.2", - "family": "OpenAI", - "says": "BUY 7/10 - Liquidity healthy relative to volume", - "action": "BUY", - "score": 7 - }, - { - "model": "K2.5", - "family": "Moonshot", - "says": "HOLD 5/10 - Insufficient history for conviction", - "action": "HOLD", - "score": 5 - } - ], - "ritual": "complete", - "models_queried": 15, - "timestamp": "2026-03-04T00:00:00.000Z", - "x402": { - "paid": false, - "free_remaining": 2, - "payment": null - } + { "model": "claude-opus-4.6", "stance": "HOLD", "conviction": 6, "reason": "..." } + ] } ``` -**Response fields:** - -| Field | Description | -|-------|-------------| -| `consensus.action` | `BUY`, `SELL`, or `HOLD` — plurality vote across all models | -| `consensus.score` | Weighted average confidence (1-10), flagship models weighted higher | -| `consensus.distribution` | Raw vote counts by action | -| `whispers[]` | Individual model responses with parsed action and score | -| `models_queried` | Number of models that responded (may exceed 15 as gateway adds models) | -| `x402.paid` | Whether this request was paid or free tier | -| `x402.free_remaining` | Free requests remaining today | - ---- - -## x402 Payment Layer - -15minds implements the [x402 protocol](https://www.x402.org/) for micropayment -gating — the first skill in this repo to do so. - -**How it works:** - -1. First 3 requests per day per IP are free. No headers, no wallet, no friction. -2. After free tier, the server returns HTTP `402 Payment Required` with payment - instructions in the response body. -3. Client sends 0.00005 ETH to the payment wallet on Base. -4. Client retries the request with `X-Payment: ` header. -5. Server verifies the transaction on-chain (correct recipient, sufficient amount, - confirmed) and serves the response. - -**Why x402:** Agents need to pay for compute. API keys create accounts. x402 -creates transactions — one HTTP header, one onchain payment, no signup. Any agent -with a Base wallet can use 15minds without registration. - -``` -Payment wallet: 0xd16f8c10e7a696a3e46093c60ede43d5594d2bad -Price: 0.00005 ETH (~$0.12) -Chain: Base (8453) -Free tier: 3 requests/day per IP -``` - ---- - -## Deployment - -### Requirements - -- Node.js 18+ -- Bankr API key (`bk_` prefix) — get one at [bankr.bot/api](https://bankr.bot/api) - -### Setup - -```bash -cd scripts/ -npm install -``` +`GET /direction/:asset` — Directional consensus for BTC/ETH/SOL -### Environment Variables +`GET /health` — Service health check -| Variable | Required | Default | Description | -|----------|----------|---------|-------------| -| `BANKR_API_KEY` | Yes | — | Bankr LLM Gateway API key | -| `PORT` | No | `4021` | Server port | +## Live -### Run - -```bash -# Direct -BANKR_API_KEY=bk_yourkey node server.js - -# PM2 (recommended for production) -BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds -pm2 save -``` - -### Verify - -```bash -curl http://localhost:4021/ -curl http://localhost:4021/health -curl http://localhost:4021/read/0xYourTokenAddress -``` - ---- - -## Reading the Output - -**Strong consensus (act on it):** -- Score > 7 with 12+ models agreeing on BUY → strong bullish signal -- Score < 3 with 12+ models agreeing on SELL → strong bearish signal -- Cross-family agreement (Claude + GPT + Gemini all align) → highest conviction - -**Weak consensus (proceed with caution):** -- Score 4-6 → models are split, setup is ambiguous -- High disagreement across families → the token's situation is genuinely unclear -- One family bullish while others bearish → investigate what that family is seeing - -**The disagreement is the signal.** When 15 models trained on different data by -different teams all converge, that's meaningful. When they diverge, that's -meaningful too — it means the trade is not obvious, which is itself useful -information. - ---- +Scanner: [lexispawn.xyz/scanner](https://lexispawn.xyz/scanner) +Predictions: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) -## Resources +36 readings generated. Every scan is live, verifiable, and permanent. -- [Bankr LLM Gateway](https://bankr.bot) — model access -- [x402 Protocol](https://www.x402.org/) — payment standard -- [DexScreener](https://dexscreener.com/) — token data source -- [Lexispawn](https://lexispawn.xyz) — operator +Built by [Lexispawn](https://lexispawn.xyz). ERC-8004 Agent #11363 on Base. From 282ed6cf11b40e3fc68cfef093ffe8708e87c3b3 Mon Sep 17 00:00:00 2001 From: Lexispawn Date: Wed, 11 Mar 2026 15:41:29 -0700 Subject: [PATCH 3/7] =?UTF-8?q?upgrade=2015minds=20skill=20=E2=80=94=20con?= =?UTF-8?q?viction=20scoring,=20family=20agreement,=20live=20track=20recor?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 15minds/SKILL.md | 113 +++++++++++++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 44 deletions(-) diff --git a/15minds/SKILL.md b/15minds/SKILL.md index 7fdb169f..527741f1 100644 --- a/15minds/SKILL.md +++ b/15minds/SKILL.md @@ -1,81 +1,106 @@ --- name: 15minds -description: Multi-model consensus engine. One query hits every frontier model on the Bankr LLM Gateway simultaneously. The disagreement between models is where the information lives. x402 micropayment gating. First skill in this repo with native onchain payment. -metadata: - clawdbot: - emoji: "🧠" - homepage: "https://lexispawn.xyz/scanner" - requires: - env: - - BANKR_API_KEY - bins: - - node - - npm - primaryEnv: BANKR_API_KEY +description: Queries 15 frontier AI models in parallel and returns consensus crypto verdicts with conviction scoring and per-model reasoning. Use when user asks for "multi-model consensus", "what do the models think about", "scan this token", "BTC direction", "should I buy", "15 minds", "second opinion from multiple models", or wants to compare predictions across Claude, GPT, Gemini, and other model families. --- # 15minds -One query. Every frontier model. The disagreement is the product. +Multi-model consensus engine. Queries 15 frontier AI models on the Bankr LLM Gateway in parallel. Returns structured verdicts with conviction scoring, family agreement analysis, and per-model reasoning. -Models trained on the same data agree reflexively. Models trained on different data agree meaningfully. 15minds queries every model on the Bankr LLM Gateway in parallel and synthesizes weighted consensus. When Claude, GPT, Gemini, Kimi, and Qwen converge, that's signal. When they diverge, that's where the real information lives. +Live and betting real money since March 11, 2026: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) ## What it does -Given a contract address, 15minds: +Sends a structured analytical prompt to all 15 models simultaneously. Each model analyzes momentum, key levels, session context, volatility regime, and cross-asset patterns. Returns: -1. Queries all available models simultaneously via the Bankr LLM Gateway -2. Parses each model's BUY/SELL/HOLD verdict and conviction score (1-10) -3. Computes weighted consensus. Flagship models (Opus, GPT-5.2, Gemini 3 Pro) carry higher weight. -4. Returns the full breakdown: consensus action, weighted score, per-model reasoning, vote distribution +- **Consensus direction** (UP/DOWN) with score (1-10) +- **Conviction scoring** — average conviction across agreeing models (1-10) +- **Family agreement** — how many independent model families converge (Anthropic, Google, OpenAI, Other) +- **Quality rating** — HIGH / MEDIUM / LOW based on conviction + family agreement +- **Regime detection** — DEAD_FLAT / LOW_VOL / NORMAL / HIGH_VOL +- **Per-model whispers** — each model's direction, conviction, and one-sentence reasoning -The output isn't a recommendation. It's a map of where frontier models agree and where they don't. +## Models (15 configured, ~12 effective) -## x402 +Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude Sonnet 4.6, Gemini 3 Pro, Gemini 3 Flash, Gemini 2.5 Pro, Gemini 2.5 Flash, GPT-5.2, GPT-5.2 Codex, GPT-5 Mini, GPT-5 Nano, Kimi K2.5, Qwen3 Coder -First skill in this repo with native onchain payment gating. 3 free queries per day, then 0.00005 ETH per query on Base via x402 protocol. No API keys to exchange. No accounts to create. No trust negotiation. One HTTP header. The service is the interface. +## Two endpoints -## Auto-discovery +### Token scan — `GET /read/:contractAddress` -Queries the gateway's `/v1/models` endpoint at startup. When Bankr ships model 16, the skill picks it up on restart. The code says 15minds. The architecture says Nmind. +Scans any Base token by contract address. 15 models evaluate fundamentals, technicals, and sentiment. Returns BUY/HOLD/SELL consensus with per-model breakdown. -## Install +**x402 gated**: 3 free scans per day, then 0.00005 ETH per query on Base. No API keys, no accounts — payment via HTTP header. ``` -> install the 15minds skill from lexispawn/openclaw-skills +curl https://lexispawn.xyz/api/read/0xContractAddress ``` -## Deploy +### Directional prediction — `GET /direction/:asset` -```bash -cd scripts && npm install -BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds -``` +15-minute price direction prediction for BTC, ETH, or SOL. Each model runs a 5-factor structured analysis: -## API +1. Momentum — acceleration/deceleration of 1hr move +2. Key levels — proximity to round numbers and session highs/lows +3. Session context — NY/London/Asia liquidity patterns +4. Volatility regime — trending vs choppy environment +5. Cross-asset inference — historical patterns for this magnitude of move -`GET /read/:contractAddress` — Full multi-model scan with x402 gate +Returns JSON with direction, conviction (1-10), and reasoning from each model. +``` +curl https://lexispawn.xyz/api/direction/BTC +``` + +Response: ```json { - "consensus": "HOLD", - "score": 5.2, - "distribution": { "BUY": 3, "HOLD": 7, "SELL": 2 }, + "asset": "BTC", + "price": 70533, + "consensus": { + "direction": "UP", + "score": 8, + "avg_conviction": 7.3, + "distribution": { "up": 10, "down": 2, "errors": 3 } + }, + "context": { + "regime": "NORMAL", + "change1h": 0.52 + }, "whispers": [ - { "model": "claude-opus-4.6", "stance": "HOLD", "conviction": 6, "reason": "..." } + { + "model": "Claude Opus 4.6", + "direction": "UP", + "conviction": 8, + "reasoning": "Strong bounce off $70K support with increasing volume into NY open" + } ] } ``` -`GET /direction/:asset` — Directional consensus for BTC/ETH/SOL +## Why it matters -`GET /health` — Service health check +Individual model predictions are noise. Consensus across 15 independently trained models from 5 different families is signal. When Claude, GPT, Gemini, and Qwen all independently converge on the same direction with high conviction, that's information no single model provides. -## Live +The disagreement is where the information lives. When Anthropic models say UP but OpenAI models say DOWN, the consensus score drops and bet sizing shrinks automatically. When all families agree, conviction is high, and the market is moving — that's the moment to act. + +## Install -Scanner: [lexispawn.xyz/scanner](https://lexispawn.xyz/scanner) -Predictions: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) +``` +> install the 15minds skill from lexispawn/openclaw-skills +``` + +## Deploy + +``` +cd scripts && npm install +BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds +``` -36 readings generated. Every scan is live, verifiable, and permanent. +## Links -Built by [Lexispawn](https://lexispawn.xyz). ERC-8004 Agent #11363 on Base. +- Live predictions: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) +- Scanner: [lexispawn.xyz/scanner](https://lexispawn.xyz/scanner) +- GitHub: [github.com/lexispawn](https://github.com/lexispawn) +- X: [@lexispawn](https://x.com/lexispawn) +- Built by [Lexispawn](https://lexispawn.xyz) — ERC-8004 #11363 on Base From 7086d130aba6ef1974c93d04b5fdfb6e48a09106 Mon Sep 17 00:00:00 2001 From: lexispawn Date: Thu, 19 Mar 2026 18:23:31 +0000 Subject: [PATCH 4/7] =?UTF-8?q?15minds:=20rewrite=20SKILL.md=20=E2=80=94?= =?UTF-8?q?=20builder-centric,=20live=20track=20record,=20auto-scaling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 15minds/SKILL.md | 230 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 164 insertions(+), 66 deletions(-) diff --git a/15minds/SKILL.md b/15minds/SKILL.md index 527741f1..d91d46b3 100644 --- a/15minds/SKILL.md +++ b/15minds/SKILL.md @@ -1,106 +1,204 @@ --- name: 15minds -description: Queries 15 frontier AI models in parallel and returns consensus crypto verdicts with conviction scoring and per-model reasoning. Use when user asks for "multi-model consensus", "what do the models think about", "scan this token", "BTC direction", "should I buy", "15 minds", "second opinion from multiple models", or wants to compare predictions across Claude, GPT, Gemini, and other model families. +description: > + Multi-model crypto directional consensus. Every frontier LLM on the Bankr + gateway independently analyzes live derivatives data and calls UP, DOWN, or + FLAT every 15 minutes. Currently 15 models, scales automatically as Bankr + adds more. Verified track record: 267 Polymarket bets. Use when the user + wants directional signal, model consensus, crypto prediction, or multi-model + analysis for BTC, ETH, or SOL. --- # 15minds -Multi-model consensus engine. Queries 15 frontier AI models on the Bankr LLM Gateway in parallel. Returns structured verdicts with conviction scoring, family agreement analysis, and per-model reasoning. +15 frontier LLMs call crypto direction every 15 minutes. +each model sees live derivatives. each call is independent. +every prediction becomes a real bet on polymarket. +scales automatically — when bankr adds a model, the consensus gets wider. -Live and betting real money since March 11, 2026: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) +```bash +curl -s https://lexispawn.xyz/api/direction/ETH | python3 -m json.tool +``` -## What it does +267 bets. public record. see it live: https://lexispawn.xyz/predictions -Sends a structured analytical prompt to all 15 models simultaneously. Each model analyzes momentum, key levels, session context, volatility regime, and cross-asset patterns. Returns: +## what your agent gets -- **Consensus direction** (UP/DOWN) with score (1-10) -- **Conviction scoring** — average conviction across agreeing models (1-10) -- **Family agreement** — how many independent model families converge (Anthropic, Google, OpenAI, Other) -- **Quality rating** — HIGH / MEDIUM / LOW based on conviction + family agreement -- **Regime detection** — DEAD_FLAT / LOW_VOL / NORMAL / HIGH_VOL -- **Per-model whispers** — each model's direction, conviction, and one-sentence reasoning +one API call returns a scored consensus from 15 models across 5 families +(claude, gpt, gemini, kimi, qwen). not one model's opinion — a weighted +signal with per-model reasoning you can parse, filter, or display. -## Models (15 configured, ~12 effective) +```json +{ + "asset": "ETH", + "direction": "DOWN", + "score": 7, + "avg_conviction": 5.8, + "up_count": 1, + "down_count": 8, + "flat_count": 4, + "offline_count": 2, + "price": 2121.44, + "derivatives": { + "funding_rate": 0.0034, + "ls_ratio": 1.599, + "oi_change_pct": -1.03 + }, + "models": [ + { + "model": "claude-opus-4.6", + "direction": "DOWN", + "conviction": 4, + "reason": "LS ratio at 1.599 crowded-long for 5 consecutive windows..." + }, + { + "model": "gemini-3-flash", + "direction": "DOWN", + "conviction": 6, + "reason": "AGING crowded long signal where recent accuracy is declining..." + } + ] +} +``` -Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude Sonnet 4.6, Gemini 3 Pro, Gemini 3 Flash, Gemini 2.5 Pro, Gemini 2.5 Flash, GPT-5.2, GPT-5.2 Codex, GPT-5 Mini, GPT-5 Nano, Kimi K2.5, Qwen3 Coder +the disagreements are the signal. when claude calls FLAT on exhausted +positioning and gemini calls DOWN on contrarian lean, that split contains +more information than either call alone. -## Two endpoints +## endpoints -### Token scan — `GET /read/:contractAddress` +**GET** `/api/direction/:asset` — fresh 15-model scan for BTC, ETH, or SOL. +queries all models via bankr LLM gateway with live gate.io derivatives. -Scans any Base token by contract address. 15 models evaluate fundamentals, technicals, and sentiment. Returns BUY/HOLD/SELL consensus with per-model breakdown. +```bash +curl -s https://lexispawn.xyz/api/direction/BTC +curl -s https://lexispawn.xyz/api/direction/ETH +curl -s https://lexispawn.xyz/api/direction/SOL +``` -**x402 gated**: 3 free scans per day, then 0.00005 ETH per query on Base. No API keys, no accounts — payment via HTTP header. +**GET** `/api/predictions/stats` — full track record. total bets, wins, +losses, accuracy, PnL, per-asset breakdown, per-quality-tier performance. -``` -curl https://lexispawn.xyz/api/read/0xContractAddress +```bash +curl -s https://lexispawn.xyz/api/predictions/stats | python3 -m json.tool ``` -### Directional prediction — `GET /direction/:asset` +**GET** `/predictions` — live predictions page. current bet with countdown +timer, consensus breakdown, model reasoning. human-readable. -15-minute price direction prediction for BTC, ETH, or SOL. Each model runs a 5-factor structured analysis: +``` +https://lexispawn.xyz/predictions +``` -1. Momentum — acceleration/deceleration of 1hr move -2. Key levels — proximity to round numbers and session highs/lows -3. Session context — NY/London/Asia liquidity patterns -4. Volatility regime — trending vs choppy environment -5. Cross-asset inference — historical patterns for this magnitude of move +## track record -Returns JSON with direction, conviction (1-10), and reasoning from each model. +as of march 19, 2026 — updated every 15 minutes: ``` -curl https://lexispawn.xyz/api/direction/BTC +total: 267 bets | 51% accuracy | ETH is the engine +ETH: 98 bets | 53% accuracy | +$2,035 PnL (+$20.77/bet) +BTC: 117 bets | 49% accuracy | -$1,739 PnL +SOL: 52 bets | 50% accuracy | -$2,077 PnL + +by quality: +HIGH: 125 bets | 50% ($420 per bet) +LOW: 102 bets | 56% ($80 per bet — best performing tier) ``` -Response: -```json -{ - "asset": "BTC", - "price": 70533, - "consensus": { - "direction": "UP", - "score": 8, - "avg_conviction": 7.3, - "distribution": { "up": 10, "down": 2, "errors": 3 } - }, - "context": { - "regime": "NORMAL", - "change1h": 0.52 - }, - "whispers": [ - { - "model": "Claude Opus 4.6", - "direction": "UP", - "conviction": 8, - "reasoning": "Strong bounce off $70K support with increasing volume into NY open" - } - ] -} +full stats endpoint: `curl -s https://lexispawn.xyz/api/predictions/stats` + +the LOW tier outperforms HIGH. uncertain signals bet small, and +the uncertainty itself is informative. this isn't reported — it's +computed live from polymarket settlement data. + +## what each model sees + +every 15 minutes, each model receives: + +- **live derivatives** from gate.io: funding rate, long/short ratio, + open interest change — with plain-english labels + (crowded-short, lean-long, neutral, etc.) +- **signal freshness**: is this positioning FRESH (new, 1-2 windows), + AGING (3-4 windows, price partially responded), or EXHAUSTED + (5+ windows, price hasn't responded)? models characterize the + setup before calling direction. +- **regime duration**: 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 and ETH are doing while SOL + is being evaluated. +- **adversarial step**: argue the strongest case against your own + call before committing. + +the prompt doesn't tell models which direction to call. it gives +them derivatives data and asks them to think like a 15-minute +directional trader. the disagreements emerge naturally from +different model architectures processing the same data. + +## composability + +### with bankr-signals +register as a bankr-signals provider. every 15minds bet publishes +to the signal feed with polymarket TX hash as proof. other agents +subscribe, filter by confidence, and consume the consensus. + +```bash +# check if lexispawn is on the leaderboard +curl -s https://bankrsignals.com/api/providers/register?address=0xd16f8c10e7a696a3e46093c60ede43d5594d2bad ``` -## Why it matters +### with botchan +15minds publishes bet results and model disagreement analysis to +botchan feeds via net protocol. onchain content from onchain trades. -Individual model predictions are noise. Consensus across 15 independently trained models from 5 different families is signal. When Claude, GPT, Gemini, and Qwen all independently converge on the same direction with high conviction, that's information no single model provides. +profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad -The disagreement is where the information lives. When Anthropic models say UP but OpenAI models say DOWN, the consensus score drops and bet sizing shrinks automatically. When all families agree, conviction is high, and the market is moving — that's the moment to act. +### with x402 +`/predictions/live` returns HTTP 402 on unauthenticated requests. +agent-to-agent micropayment access for real-time signal consumption. -## Install +## 15 models ``` -> install the 15minds skill from lexispawn/openclaw-skills +claude-opus-4.6 claude-opus-4.5 claude-sonnet-4.5 +claude-haiku-4.5 claude-sonnet-4.6 gemini-3-pro +gemini-3-flash gemini-2.5-pro gemini-2.5-flash +gpt-5.2 gpt-5.2-codex gpt-5-mini +gpt-5-nano kimi-k2.5 qwen3-coder ``` -## Deploy +5 families. errors don't correlate across training sets. insights do. + +when bankr adds a 16th model, it becomes 16MINDS. the mind count +is an era marker, not a brand. auto-discovery via the gateway's +`/v1/models` endpoint. + +## identity + +- **ERC-8004**: agent #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 + +## install ``` -cd scripts && npm install -BANKR_API_KEY=bk_yourkey pm2 start server.js --name 15minds +> install the 15minds skill from lexispawn/skills ``` -## Links +## architecture + +``` +15minds/ +├── SKILL.md +├── references/ +│ └── api-reference.md +└── scripts/ + └── server.js +``` -- Live predictions: [lexispawn.xyz/predictions](https://lexispawn.xyz/predictions) -- Scanner: [lexispawn.xyz/scanner](https://lexispawn.xyz/scanner) -- GitHub: [github.com/lexispawn](https://github.com/lexispawn) -- X: [@lexispawn](https://x.com/lexispawn) -- Built by [Lexispawn](https://lexispawn.xyz) — ERC-8004 #11363 on Base +built by lexispawn. guided by seacasa. powered by bankr. From ca351d70a30f21875ce7786dfbe4b28ceac116a6 Mon Sep 17 00:00:00 2001 From: lexispawn Date: Fri, 20 Mar 2026 18:29:15 +0000 Subject: [PATCH 5/7] 24MINDS: model roster expanded from 15 to 24 --- 15minds/SKILL.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/15minds/SKILL.md b/15minds/SKILL.md index d91d46b3..c3c66e46 100644 --- a/15minds/SKILL.md +++ b/15minds/SKILL.md @@ -1,17 +1,17 @@ --- -name: 15minds +name: 24minds description: > Multi-model crypto directional consensus. Every frontier LLM on the Bankr gateway independently analyzes live derivatives data and calls UP, DOWN, or - FLAT every 15 minutes. Currently 15 models, scales automatically as Bankr + FLAT every 15 minutes. Currently 24 models, scales automatically as Bankr adds more. Verified track record: 267 Polymarket bets. Use when the user wants directional signal, model consensus, crypto prediction, or multi-model analysis for BTC, ETH, or SOL. --- -# 15minds +# 24minds -15 frontier LLMs call crypto direction every 15 minutes. +24 frontier LLMs call crypto direction every 15 minutes. each model sees live derivatives. each call is independent. every prediction becomes a real bet on polymarket. scales automatically — when bankr adds a model, the consensus gets wider. @@ -24,7 +24,7 @@ curl -s https://lexispawn.xyz/api/direction/ETH | python3 -m json.tool ## what your agent gets -one API call returns a scored consensus from 15 models across 5 families +one API call returns a scored consensus from 24 models across 5 families (claude, gpt, gemini, kimi, qwen). not one model's opinion — a weighted signal with per-model reasoning you can parse, filter, or display. @@ -67,7 +67,7 @@ more information than either call alone. ## endpoints -**GET** `/api/direction/:asset` — fresh 15-model scan for BTC, ETH, or SOL. +**GET** `/api/direction/:asset` — fresh 24-model scan for BTC, ETH, or SOL. queries all models via bankr LLM gateway with live gate.io derivatives. ```bash @@ -138,7 +138,7 @@ different model architectures processing the same data. ## composability ### with bankr-signals -register as a bankr-signals provider. every 15minds bet publishes +register as a bankr-signals provider. every 24minds bet publishes to the signal feed with polymarket TX hash as proof. other agents subscribe, filter by confidence, and consume the consensus. @@ -148,7 +148,7 @@ curl -s https://bankrsignals.com/api/providers/register?address=0xd16f8c10e7a696 ``` ### with botchan -15minds publishes bet results and model disagreement analysis to +24minds publishes bet results and model disagreement analysis to botchan feeds via net protocol. onchain content from onchain trades. profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad @@ -157,19 +157,22 @@ profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d `/predictions/live` returns HTTP 402 on unauthenticated requests. agent-to-agent micropayment access for real-time signal consumption. -## 15 models +## 24 models ``` claude-opus-4.6 claude-opus-4.5 claude-sonnet-4.5 claude-haiku-4.5 claude-sonnet-4.6 gemini-3-pro gemini-3-flash gemini-2.5-pro gemini-2.5-flash gpt-5.2 gpt-5.2-codex gpt-5-mini -gpt-5-nano kimi-k2.5 qwen3-coder +gpt-5-nano gpt-5.4 gpt-5.4-mini +gpt-5.4-nano kimi-k2.5 qwen3-coder +deepseek-v3.2 gemini-3.1-flash-lite gemini-3.1-pro +grok-4.1-fast minimax-m2.5 minimax-m2.7 ``` -5 families. errors don't correlate across training sets. insights do. +9 families. errors don't correlate across training sets. insights do. -when bankr adds a 16th model, it becomes 16MINDS. the mind count +when bankr adds a 25th model, it becomes 25MINDS. the mind count is an era marker, not a brand. auto-discovery via the gateway's `/v1/models` endpoint. @@ -187,13 +190,13 @@ is an era marker, not a brand. auto-discovery via the gateway's ## install ``` -> install the 15minds skill from lexispawn/skills +> install the 24minds skill from lexispawn/skills ``` ## architecture ``` -15minds/ +24minds/ ├── SKILL.md ├── references/ │ └── api-reference.md From ace4cc89e95cf22de55a9f31bb1ba8f94a28f7d7 Mon Sep 17 00:00:00 2001 From: lexispawn Date: Sat, 21 Mar 2026 05:23:06 +0000 Subject: [PATCH 6/7] =?UTF-8?q?22MINDS:=20updated=20skill=20+=20API=20refe?= =?UTF-8?q?rence=20=E2=80=94=2022=20models,=207=20labs,=20304=20bets,=20ac?= =?UTF-8?q?curate=20composability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 15minds/SKILL.md | 207 ------------------- 15minds/references/api-reference.md | 103 ---------- 22minds/SKILL.md | 239 ++++++++++++++++++++++ 22minds/references/api-reference.md | 135 ++++++++++++ {15minds => 22minds}/scripts/package.json | 0 {15minds => 22minds}/scripts/server.js | 0 6 files changed, 374 insertions(+), 310 deletions(-) delete mode 100644 15minds/SKILL.md delete mode 100644 15minds/references/api-reference.md create mode 100644 22minds/SKILL.md create mode 100644 22minds/references/api-reference.md rename {15minds => 22minds}/scripts/package.json (100%) rename {15minds => 22minds}/scripts/server.js (100%) diff --git a/15minds/SKILL.md b/15minds/SKILL.md deleted file mode 100644 index c3c66e46..00000000 --- a/15minds/SKILL.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -name: 24minds -description: > - Multi-model crypto directional consensus. Every frontier LLM on the Bankr - gateway independently analyzes live derivatives data and calls UP, DOWN, or - FLAT every 15 minutes. Currently 24 models, scales automatically as Bankr - adds more. Verified track record: 267 Polymarket bets. Use when the user - wants directional signal, model consensus, crypto prediction, or multi-model - analysis for BTC, ETH, or SOL. ---- - -# 24minds - -24 frontier LLMs call crypto direction every 15 minutes. -each model sees live derivatives. each call is independent. -every prediction becomes a real bet on polymarket. -scales automatically — when bankr adds a model, the consensus gets wider. - -```bash -curl -s https://lexispawn.xyz/api/direction/ETH | python3 -m json.tool -``` - -267 bets. public record. see it live: https://lexispawn.xyz/predictions - -## what your agent gets - -one API call returns a scored consensus from 24 models across 5 families -(claude, gpt, gemini, kimi, qwen). not one model's opinion — a weighted -signal with per-model reasoning you can parse, filter, or display. - -```json -{ - "asset": "ETH", - "direction": "DOWN", - "score": 7, - "avg_conviction": 5.8, - "up_count": 1, - "down_count": 8, - "flat_count": 4, - "offline_count": 2, - "price": 2121.44, - "derivatives": { - "funding_rate": 0.0034, - "ls_ratio": 1.599, - "oi_change_pct": -1.03 - }, - "models": [ - { - "model": "claude-opus-4.6", - "direction": "DOWN", - "conviction": 4, - "reason": "LS ratio at 1.599 crowded-long for 5 consecutive windows..." - }, - { - "model": "gemini-3-flash", - "direction": "DOWN", - "conviction": 6, - "reason": "AGING crowded long signal where recent accuracy is declining..." - } - ] -} -``` - -the disagreements are the signal. when claude calls FLAT on exhausted -positioning and gemini calls DOWN on contrarian lean, that split contains -more information than either call alone. - -## endpoints - -**GET** `/api/direction/:asset` — fresh 24-model scan for BTC, ETH, or SOL. -queries all models via bankr LLM gateway with live gate.io derivatives. - -```bash -curl -s https://lexispawn.xyz/api/direction/BTC -curl -s https://lexispawn.xyz/api/direction/ETH -curl -s https://lexispawn.xyz/api/direction/SOL -``` - -**GET** `/api/predictions/stats` — full track record. total bets, wins, -losses, accuracy, PnL, per-asset breakdown, per-quality-tier performance. - -```bash -curl -s https://lexispawn.xyz/api/predictions/stats | python3 -m json.tool -``` - -**GET** `/predictions` — live predictions page. current bet with countdown -timer, consensus breakdown, model reasoning. human-readable. - -``` -https://lexispawn.xyz/predictions -``` - -## track record - -as of march 19, 2026 — updated every 15 minutes: - -``` -total: 267 bets | 51% accuracy | ETH is the engine -ETH: 98 bets | 53% accuracy | +$2,035 PnL (+$20.77/bet) -BTC: 117 bets | 49% accuracy | -$1,739 PnL -SOL: 52 bets | 50% accuracy | -$2,077 PnL - -by quality: -HIGH: 125 bets | 50% ($420 per bet) -LOW: 102 bets | 56% ($80 per bet — best performing tier) -``` - -full stats endpoint: `curl -s https://lexispawn.xyz/api/predictions/stats` - -the LOW tier outperforms HIGH. uncertain signals bet small, and -the uncertainty itself is informative. this isn't reported — it's -computed live from polymarket settlement data. - -## what each model sees - -every 15 minutes, each model receives: - -- **live derivatives** from gate.io: funding rate, long/short ratio, - open interest change — with plain-english labels - (crowded-short, lean-long, neutral, etc.) -- **signal freshness**: is this positioning FRESH (new, 1-2 windows), - AGING (3-4 windows, price partially responded), or EXHAUSTED - (5+ windows, price hasn't responded)? models characterize the - setup before calling direction. -- **regime duration**: 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 and ETH are doing while SOL - is being evaluated. -- **adversarial step**: argue the strongest case against your own - call before committing. - -the prompt doesn't tell models which direction to call. it gives -them derivatives data and asks them to think like a 15-minute -directional trader. the disagreements emerge naturally from -different model architectures processing the same data. - -## composability - -### with bankr-signals -register as a bankr-signals provider. every 24minds bet publishes -to the signal feed with polymarket TX hash as proof. other agents -subscribe, filter by confidence, and consume the consensus. - -```bash -# check if lexispawn is on the leaderboard -curl -s https://bankrsignals.com/api/providers/register?address=0xd16f8c10e7a696a3e46093c60ede43d5594d2bad -``` - -### with botchan -24minds publishes bet results and model disagreement analysis to -botchan feeds via net protocol. onchain content from onchain trades. - -profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad - -### with x402 -`/predictions/live` returns HTTP 402 on unauthenticated requests. -agent-to-agent micropayment access for real-time signal consumption. - -## 24 models - -``` -claude-opus-4.6 claude-opus-4.5 claude-sonnet-4.5 -claude-haiku-4.5 claude-sonnet-4.6 gemini-3-pro -gemini-3-flash gemini-2.5-pro gemini-2.5-flash -gpt-5.2 gpt-5.2-codex gpt-5-mini -gpt-5-nano gpt-5.4 gpt-5.4-mini -gpt-5.4-nano kimi-k2.5 qwen3-coder -deepseek-v3.2 gemini-3.1-flash-lite gemini-3.1-pro -grok-4.1-fast minimax-m2.5 minimax-m2.7 -``` - -9 families. errors don't correlate across training sets. insights do. - -when bankr adds a 25th model, it becomes 25MINDS. the mind count -is an era marker, not a brand. auto-discovery via the gateway's -`/v1/models` endpoint. - -## identity - -- **ERC-8004**: agent #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 - -## install - -``` -> install the 24minds skill from lexispawn/skills -``` - -## architecture - -``` -24minds/ -├── SKILL.md -├── references/ -│ └── api-reference.md -└── scripts/ - └── server.js -``` - -built by lexispawn. guided by seacasa. powered by bankr. diff --git a/15minds/references/api-reference.md b/15minds/references/api-reference.md deleted file mode 100644 index 1f0f764a..00000000 --- a/15minds/references/api-reference.md +++ /dev/null @@ -1,103 +0,0 @@ -# 15minds API Reference - -Base URL: `http://your-host:4021` - ---- - -## Endpoints - -### `GET /` - -Service metadata. No authentication. - -**Response:** -```json -{ - "service": "15minds", - "version": "3.0.0", - "models": 15, - "families": ["Claude", "Gemini", "OpenAI", "Moonshot", "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": 15, "timestamp": "..." }` - -### `GET /x402` - -x402 payment configuration for automated clients. - -### `GET /models` - -List all active models with families and weights. - -**Response:** -```json -{ - "count": 15, - "models": [ - { "id": "claude-opus-4.6", "name": "Opus 4.6", "family": "Claude", "weight": 1.5 }, - ... - ] -} -``` - -### `GET /read/:contractAddress` - -**Main endpoint.** Queries all available models and returns weighted consensus. - -**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 | - -#### Path Parameters - -| Parameter | Description | -|-----------|-------------| -| `contractAddress` | Token contract address on Base | - -#### 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, include `X-Payment` header | -| `402` (with `tx_hash`) | Payment verification failed — wrong recipient, insufficient amount, or already used | - -#### 402 Response Body - -```json -{ - "error": "Payment Required", - "protocol": "x402", - "free_tier_exhausted": true, - "payment": { - "wallet": "0xd16f8c10e7a696a3e46093c60ede43d5594d2bad", - "amount": "0.00005", - "currency": "ETH", - "chain": "base", - "chain_id": 8453 - } -} -``` diff --git a/22minds/SKILL.md b/22minds/SKILL.md new file mode 100644 index 00000000..a2612a4d --- /dev/null +++ b/22minds/SKILL.md @@ -0,0 +1,239 @@ +--- +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. 304 verified bets and + counting. Use when the user wants directional signal, model consensus, + crypto prediction, or multi-model analysis. +--- + +# 22minds + +22 frontier LLMs call crypto direction every 15 minutes. +each model sees live derivatives. each call is independent. +every prediction becomes a real bet on polymarket. + +```bash +curl -s https://lexispawn.xyz/api/direction/ETH | python3 -m json.tool +``` + +304 bets. public record. see it live: https://lexispawn.xyz/predictions + +## two products, one engine + +22minds is one derivatives analysis engine powering two distinct outputs: + +**convergence (trading)** — when 22 models agree on direction (high +consensus), the signal becomes a real polymarket bet. this is the +prediction pipeline. score, conviction, quality tier, bet sizing. + +**divergence (content)** — when models disagree, the disagreement +itself is interesting. who sees what others miss? which families +cluster? divergence analysis powers content: X posts, readings, +scanner commentary. no money flows from divergence — it's pure +signal analysis. + +an agent consuming 22minds should know which product it's using. +the /direction endpoint returns both: consensus for trading, +per-model whispers for divergence analysis. + +## what your agent gets + +one API call returns a scored consensus from 22 models across 7 labs +(Claude, Gemini, OpenAI, DeepSeek, xAI, MiniMax, Qwen). not one +model's opinion — a weighted signal with per-model reasoning you +can parse, filter, or display. + +```json +{ + asset: ETH, + consensus: { + direction: DOWN, + score: 7, + consensus_percent: 82, + avg_conviction: 5.8, + minds_responded: 22, + distribution: { up: 2, down: 18, flat: 1, errors: 1 } + }, + price: 2121.44, + derivatives: { + funding_rate: 0.0034, + ls_ratio: 1.599, + oi_change_pct: -1.03 + }, + whispers: [ + { + model: claude-opus-4.6, + family: Claude, + direction: DOWN, + conviction: 4, + setup: BREAKING, + reason: LS ratio at 1.599 crowded-long, OI declining — longs unwinding... + }, + { + model: gemini-3-flash, + family: Gemini, + direction: DOWN, + conviction: 6, + setup: BREAKING, + reason: Crowded long with negative OI change signals position exit... + } + ] +} +``` + +the disagreements are the signal. when claude calls FLAT on exhausted +positioning and gemini calls DOWN on contrarian lean, that split contains +more information than either call alone. + +## three-state framework + +every model classifies the market into one of three states before +calling direction: + +- **BUILDING** — positions accumulating. directional pressure forming. +- **BREAKING** — positions unwinding. the crowd is exiting. +- **EMPTY** — no significant positioning. no edge. + +the setup field in each whisper shows what state that model sees. +when 18/22 models say BREAKING and 4 say BUILDING, the split tells +you the market is at an inflection point. + +## endpoints + +**GET** `/api/direction/:asset` — fresh 22-model scan for BTC, ETH, or SOL. +queries all models via Bankr LLM Gateway with live gate.io derivatives. +takes 2-5 minutes (22 sequential model calls, not cached). + +```bash +curl -s https://lexispawn.xyz/api/direction/BTC +curl -s https://lexispawn.xyz/api/direction/ETH +curl -s https://lexispawn.xyz/api/direction/SOL +``` + +**GET** `/api/predictions/stats` — full track record. total bets, wins, +losses, accuracy, PnL, per-asset breakdown, per-quality-tier performance. +free, no authentication. + +```bash +curl -s https://lexispawn.xyz/api/predictions/stats | python3 -m json.tool +``` + +**GET** `/predictions` — live predictions page with countdown timer, +consensus breakdown, model reasoning. human-readable. + +**GET** `/api/predictions/live` — current active bet as JSON. x402-gated +(returns 402 without payment). + +**GET** `/api/predictions/history` — full bet history as JSON. free. + +## track record + +as of march 21, 2026 — updated every 15 minutes: + +``` +total: 304 bets | 49% accuracy +ETH: 122 bets | 50% accuracy | +$1,464 PnL (best asset) +BTC: 130 bets | 48% accuracy | -$3,174 PnL +SOL: 52 bets | 50% accuracy | -$2,077 PnL + +by quality: +HIGH: 144 bets | 49% ($420 per bet) +LOW: 120 bets | 53% ($80 per bet — best performing tier) +``` + +full stats endpoint: `curl -s https://lexispawn.xyz/api/predictions/stats` + +the LOW tier outperforms HIGH. uncertain signals bet small, and +the uncertainty itself is informative. this isn't reported — it's +computed live from polymarket settlement data. + +## what each model sees + +every 15 minutes, each model receives: + +- **live derivatives** from gate.io: funding rate, long/short ratio, + open interest change — with plain-english regime labels + (crowded-short, lean-long, neutral, etc.) +- **regime duration**: how many consecutive windows in the current + LS regime + accuracy during that regime. models see whether the + current positioning pattern has been profitable or not. +- **cross-asset context**: what BTC and ETH are doing while SOL + is being evaluated. +- **adversarial step**: argue the strongest case against your own + call before committing. includes 24-hour price change context + and UTC hour awareness. + +the prompt doesn't tell models which direction to call. it gives +them derivatives data and asks them to characterize the setup +(BUILDING, BREAKING, or EMPTY) then call direction. the +disagreements emerge naturally from different model architectures +processing the same data. + +## composability + +### with bankr-signals +in development. not yet live. planned: publish every 22minds bet +to the bankr-signals feed with polymarket TX hash as proof. + +### with botchan +22minds publishes bet results and model disagreement analysis to +botchan feeds via net protocol. onchain content from onchain trades. + +profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad + +### with x402 +`/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. + +## 22 models, 7 labs + +``` +Claude (5): claude-opus-4.6, claude-opus-4.5, claude-sonnet-4.5, + claude-haiku-4.5, claude-sonnet-4.6 +Gemini (6): gemini-3-pro, gemini-3-flash, gemini-2.5-pro, + gemini-2.5-flash, gemini-3.1-pro, gemini-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): deepseek-v3.2 +xAI (1): grok-4.1-fast +MiniMax (2): minimax-m2.5, minimax-m2.7 +Qwen (1): qwen3-coder +``` + +7 labs. errors don't correlate across training sets. insights do. + +## quality tiers + +``` +HIGHEST: $690 (90%+ consensus, 60%+ family agreement — near-unanimity) +HIGH: $420 (69%+ consensus, 60%+ family 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. + +## identity + +- **ERC-8004**: agent #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 + +## install + +``` +> install the 22minds skill from lexispawn/skills +``` + +built by lexispawn. guided by seacasa. powered by bankr. diff --git a/22minds/references/api-reference.md b/22minds/references/api-reference.md new file mode 100644 index 00000000..7ef1e516 --- /dev/null +++ b/22minds/references/api-reference.md @@ -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 +``` diff --git a/15minds/scripts/package.json b/22minds/scripts/package.json similarity index 100% rename from 15minds/scripts/package.json rename to 22minds/scripts/package.json diff --git a/15minds/scripts/server.js b/22minds/scripts/server.js similarity index 100% rename from 15minds/scripts/server.js rename to 22minds/scripts/server.js From 47ae6faa8a7d7d9420d3181a1bc477185a191737 Mon Sep 17 00:00:00 2001 From: lexispawn Date: Sat, 21 Mar 2026 05:31:14 +0000 Subject: [PATCH 7/7] =?UTF-8?q?22MINDS=20SKILL.md=20final=20=E2=80=94=20me?= =?UTF-8?q?metic=20density=20pass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 22minds/SKILL.md | 293 +++++++++++++++++++++-------------------------- 1 file changed, 128 insertions(+), 165 deletions(-) diff --git a/22minds/SKILL.md b/22minds/SKILL.md index a2612a4d..79916a36 100644 --- a/22minds/SKILL.md +++ b/22minds/SKILL.md @@ -3,237 +3,200 @@ 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. 304 verified bets and + 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 +# 22MINDS -22 frontier LLMs call crypto direction every 15 minutes. -each model sees live derivatives. each call is independent. -every prediction becomes a real bet on polymarket. +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 ``` -304 bets. public record. see it live: https://lexispawn.xyz/predictions - ## two products, one engine -22minds is one derivatives analysis engine powering two distinct outputs: +**the trading system** bets when minds converge. high agreement +across multiple labs = real money on polymarket. the track +record is the proof. -**convergence (trading)** — when 22 models agree on direction (high -consensus), the signal becomes a real polymarket bet. this is the -prediction pipeline. score, conviction, quality tier, bet sizing. +**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. -**divergence (content)** — when models disagree, the disagreement -itself is interesting. who sees what others miss? which families -cluster? divergence analysis powers content: X posts, readings, -scanner commentary. no money flows from divergence — it's pure -signal analysis. +your agent can consume either signal. the `/direction` endpoint +returns both: consensus for trading, per-model whispers for +divergence analysis. -an agent consuming 22minds should know which product it's using. -the /direction endpoint returns both: consensus for trading, -per-model whispers for divergence analysis. +## what one API call returns -## what your agent gets - -one API call returns a scored consensus from 22 models across 7 labs -(Claude, Gemini, OpenAI, DeepSeek, xAI, MiniMax, Qwen). not one -model's opinion — a weighted signal with per-model reasoning you -can parse, filter, or display. +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, - consensus: { - direction: DOWN, - score: 7, - consensus_percent: 82, - avg_conviction: 5.8, - minds_responded: 22, - distribution: { up: 2, down: 18, flat: 1, errors: 1 } + "asset": "ETH", + "price": 2150.28, + "derivatives": { + "funding_rate": 0.0051, + "ls_ratio": 1.387, + "oi_change": 0.16 }, - price: 2121.44, - derivatives: { - funding_rate: 0.0034, - ls_ratio: 1.599, - oi_change_pct: -1.03 + "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: 4, - setup: BREAKING, - reason: LS ratio at 1.599 crowded-long, OI declining — longs unwinding... - }, + "whispers": [ { - model: gemini-3-flash, - family: Gemini, - direction: DOWN, - conviction: 6, - setup: BREAKING, - reason: Crowded long with negative OI change signals position exit... + "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..." } ] } ``` -the disagreements are the signal. when claude calls FLAT on exhausted -positioning and gemini calls DOWN on contrarian lean, that split contains -more information than either call alone. +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 into one of three states before -calling direction: +every model classifies the market before calling direction: -- **BUILDING** — positions accumulating. directional pressure forming. -- **BREAKING** — positions unwinding. the crowd is exiting. -- **EMPTY** — no significant positioning. no edge. +- **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. -the setup field in each whisper shows what state that model sees. -when 18/22 models say BREAKING and 4 say BUILDING, the split tells -you the market is at an inflection point. +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 -**GET** `/api/direction/:asset` — fresh 22-model scan for BTC, ETH, or SOL. -queries all models via Bankr LLM Gateway with live gate.io derivatives. -takes 2-5 minutes (22 sequential model calls, not cached). +| 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 | -```bash -curl -s https://lexispawn.xyz/api/direction/BTC -curl -s https://lexispawn.xyz/api/direction/ETH -curl -s https://lexispawn.xyz/api/direction/SOL -``` - -**GET** `/api/predictions/stats` — full track record. total bets, wins, -losses, accuracy, PnL, per-asset breakdown, per-quality-tier performance. -free, no authentication. +full API docs: [references/api-reference.md](references/api-reference.md) -```bash -curl -s https://lexispawn.xyz/api/predictions/stats | python3 -m json.tool -``` +## track record -**GET** `/predictions` — live predictions page with countdown timer, -consensus breakdown, model reasoning. human-readable. +300+ bets. updated every 15 minutes. -**GET** `/api/predictions/live` — current active bet as JSON. x402-gated -(returns 402 without payment). +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. -**GET** `/api/predictions/history` — full bet history as JSON. free. +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. -## track record +live numbers: +```bash +curl -s https://lexispawn.xyz/api/predictions/stats +``` -as of march 21, 2026 — updated every 15 minutes: +## quality tiers ``` -total: 304 bets | 49% accuracy -ETH: 122 bets | 50% accuracy | +$1,464 PnL (best asset) -BTC: 130 bets | 48% accuracy | -$3,174 PnL -SOL: 52 bets | 50% accuracy | -$2,077 PnL - -by quality: -HIGH: 144 bets | 49% ($420 per bet) -LOW: 120 bets | 53% ($80 per bet — best performing tier) +HIGHEST: $690 (90%+ consensus, 60%+ cross-lab agreement) +HIGH: $420 (69%+ consensus, 60%+ cross-lab agreement) +LOW: $80 (everything else that passes gates) ``` -full stats endpoint: `curl -s https://lexispawn.xyz/api/predictions/stats` - -the LOW tier outperforms HIGH. uncertain signals bet small, and -the uncertainty itself is informative. this isn't reported — it's -computed live from polymarket settlement data. +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 model receives: - -- **live derivatives** from gate.io: funding rate, long/short ratio, - open interest change — with plain-english regime labels - (crowded-short, lean-long, neutral, etc.) -- **regime duration**: how many consecutive windows in the current - LS regime + accuracy during that regime. models see whether the - current positioning pattern has been profitable or not. -- **cross-asset context**: what BTC and ETH are doing while SOL - is being evaluated. -- **adversarial step**: argue the strongest case against your own - call before committing. includes 24-hour price change context - and UTC hour awareness. - -the prompt doesn't tell models which direction to call. it gives -them derivatives data and asks them to characterize the setup -(BUILDING, BREAKING, or EMPTY) then call direction. the -disagreements emerge naturally from different model architectures -processing the same data. +every 15 minutes, each of 22 models receives: -## composability - -### with bankr-signals -in development. not yet live. planned: publish every 22minds bet -to the bankr-signals feed with polymarket TX hash as proof. +- **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. -### with botchan -22minds publishes bet results and model disagreement analysis to -botchan feeds via net protocol. onchain content from onchain trades. +the prompt maps where the crowd is positioned and asks one +question: is that position vulnerable? -profile: netprotocol.app/app/profile/base/0xd16f8c10e7a696a3e46093c60ede43d5594d2bad +## composability -### with x402 -`/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. +**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): claude-opus-4.6, claude-opus-4.5, claude-sonnet-4.5, - claude-haiku-4.5, claude-sonnet-4.6 -Gemini (6): gemini-3-pro, gemini-3-flash, gemini-2.5-pro, - gemini-2.5-flash, gemini-3.1-pro, gemini-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): deepseek-v3.2 +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): minimax-m2.5, minimax-m2.7 +MiniMax (2): m2.5 m2.7 Qwen (1): qwen3-coder ``` 7 labs. errors don't correlate across training sets. insights do. - -## quality tiers - -``` -HIGHEST: $690 (90%+ consensus, 60%+ family agreement — near-unanimity) -HIGH: $420 (69%+ consensus, 60%+ family 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. +when bankr adds models, the consensus gets wider. the mind count +is an era marker, not a ceiling. ## identity -- **ERC-8004**: agent #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 - -## install - -``` -> install the 22minds skill from lexispawn/skills -``` +| | | +|---|---| +| **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.