internal/embed/skills/distributed-validators/SKILL.md
Monitor distributed validator clusters via the Obol API. Use when asked about DVT cluster health, validator performance, operator status, exit coordination, or anything related to Obol, Charon, or distributed validators. Read-only — cannot create clusters or submit exits.
npx skillsauth add obolnetwork/obol-stack distributed-validatorsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Monitor distributed validator (DV) clusters using the Obol API. Check cluster health, validator performance, operator status, and exit progress.
A distributed validator splits signing across multiple operators so no single party holds the full key. Obol's middleware (Charon) coordinates this. A cluster has N operators with a threshold (e.g. 3-of-4) needed to sign.
ethereum-networksobol-stackAll endpoints are public, no authentication needed:
https://api.obol.tech
0x + 64 hex chars.0x + 40 hex chars.# Cluster config
curl -s "https://api.obol.tech/v1/lock/0x..."
# Validator performance (0-1 scale, >0.95 is healthy)
curl -s "https://api.obol.tech/v1/effectiveness/0x..."
# Validator beacon chain states
curl -s "https://api.obol.tech/v1/state/0x..."
# Exit status summary
curl -s "https://api.obol.tech/v1/exp/exit/status/summary/0x..."
# Detailed exit status
curl -s "https://api.obol.tech/v1/exp/exit/status/0x..."
# Pre-DKG cluster definition
curl -s "https://api.obol.tech/v1/definition/0x..."
# Get lock (if DKG completed)
curl -s "https://api.obol.tech/v1/lock/configHash/0x..."
# All clusters for this operator
curl -s "https://api.obol.tech/v1/lock/operator/0x..."
# Reputation level (base < bronze < silver)
curl -s "https://api.obol.tech/v1/address/techne/0x..."
# Protocol badges (Lido, EtherFi, etc.)
curl -s "https://api.obol.tech/v1/address/badges/0x..."
# Terms & conditions signed?
curl -s "https://api.obol.tech/v1/termsAndConditions/0x..."
# Network summary stats
curl -s "https://api.obol.tech/v1/lock/network/summary/mainnet"
# Search clusters
curl -s "https://api.obol.tech/v1/lock/search/mainnet?q=..."
# All operators on a network
curl -s "https://api.obol.tech/v1/address/network/mainnet"
Networks: mainnet, hoodi, holesky, sepolia
# 1. Get cluster info
curl -s "https://api.obol.tech/v1/lock/0x..." | python3 -c "
import sys, json
d = json.load(sys.stdin)
if 'error' in d or 'name' not in d:
print('Error or cluster not found:', json.dumps(d, indent=2))
else:
ops = d.get('operators', [])
print(f'Cluster: {d.get(\"name\",\"?\")} | {d.get(\"threshold\",\"?\")}-of-{len(ops)} | {d.get(\"network\",\"?\")}')
"
# 2. Check validator effectiveness
curl -s "https://api.obol.tech/v1/effectiveness/0x..." | python3 -c "
import sys, json
d = json.load(sys.stdin)
for v in d.get('effectiveness', []):
eff = v.get('effectiveness', 0)
status = 'healthy' if eff > 0.95 else 'degraded' if eff > 0.8 else 'CRITICAL'
print(f'{v.get(\"public_key\", \"?\")[:16]}... {eff:.3f} [{status}]')
if not d.get('effectiveness'):
print('No effectiveness data found')
"
curl -s "https://api.obol.tech/v1/exp/exit/status/summary/0x..." | python3 -c "
import sys, json
d = json.load(sys.stdin)
if not isinstance(d, dict) or 'total_validators' not in d:
print('No exit data or cluster not found:', json.dumps(d, indent=2))
else:
print(f'Ready to exit: {d.get(\"validators_ready_to_exit\", 0)}/{d.get(\"total_validators\", 0)}')
for op in d.get('operators', []):
print(f' {op.get(\"address\", \"?\")[:12]}... signed: {op.get(\"signed_exits\", 0)}')
"
Exit broadcasts automatically once enough operators have signed (threshold reached).
/v1/exp/) are experimental — pagination is 1-indexedGET /v1/_health firstsh, not bash — do not use bashismsSee references/api-examples.md for response shapes and field reference.
ethereum-networks — blockchain RPC queries (validator balances, beacon chain data)obol-stack — Kubernetes cluster monitoring (pod status, logs)data-ai
Spawn durable child Hermes agents from inside Obol Stack. Creates child namespaces, optional profile/env Secrets, Agent CRDs, and optional ServiceOffers for x402-paid child services.
data-ai
Buy from any x402-gated endpoint. Two flows: `pay` for one-shot HTTP services (single authorization, no sidecar), and `buy` for long-running paid inference (pre-authorized batch via PurchaseRequest, exposed as `paid/<remote-model>`). Supports USDC (EIP-3009) and OBOL (Permit2). Zero signer access at runtime — spending is capped by design and nothing moves on-chain until a voucher is spent.
testing
Sell access to services via x402 payment gating. Create ServiceOffer CRDs that automatically health-check upstreams, create payment-gated routes, and optionally pull models and register on ERC-8004. Supports inference, HTTP, and fine-tuning service types.
testing
End-to-end guide for monetizing GPU resources or HTTP services through obol-stack. Covers pre-flight checks, model detection, pricing research, selling via x402, ERC-8004 registration, and verification. Use this skill when the user wants to monetize their machine.