AGENTS / GITHUB / openclaw-eve-skill
githubinferredactive

openclaw-eve-skill

provenance:github:burnshall-ui/openclaw-eve-skill

OpenClaw skill for EVE Online ESI account management

View Source ↗First seen 2mo agoNot yet hireable
README
# EVE ESI Skill for OpenClaw

An [OpenClaw](https://openclaw.ai) skill for interacting with the [EVE Online ESI API](https://developers.eveonline.com/api-explorer) (EVE Swagger Interface).

## Features

- **PKCE Authentication** — Secure OAuth2 flow via EVE SSO, auto-refreshing tokens
- **Multi-Character** — Store and manage tokens for unlimited characters
- **PI Monitoring** — Planetary Interaction status, extractor timers, storage fill levels
- **Market Prices** — Global average prices and Jita buy/sell lookups
- **ESI Queries** — Reusable Python helper with pagination, rate-limit handling, and error recovery
- **Threat Assessment** — System threat scoring using ESI kills/jumps + zKillboard PVP data
- **Route Planning** — Annotated routes with per-system threat levels
- **Dashboard Config** — Modular alert/report/market-tracking config with JSON Schema
- **Reference Docs** — Full scope list, endpoint index, auth flow details

## Structure

```
eve-esi/
├── SKILL.md                        # OpenClaw skill instructions (loaded by agent)
├── README.md                       # This file
├── .gitignore                      # Prevents token/secret commits
├── scripts/
│   ├── auth_flow.py                # One-time EVE SSO OAuth2 PKCE authentication
│   ├── get_token.py                # Token refresh helper (auto-rotates on every use)
│   ├── esi_query.py                # ESI query helper + high-level PI/market actions
│   └── validate_config.py          # Dashboard config validator
├── config/
│   ├── schema.json                 # JSON Schema for dashboard config
│   ├── example-config.json         # Ready-to-use template
│   └── esi_endpoints.json          # PI and market endpoint definitions
└── references/
    ├── authentication.md           # EVE SSO OAuth2 + PKCE details
    └── endpoints.md                # All character endpoints + scopes
```

## Installation

```bash
cd ~/.openclaw/workspace/skills
git clone https://github.com/burnshall-ui/openclaw-eve-skill eve-esi
```

No pip dependencies — uses Python 3.8+ stdlib only.

## Authentication Setup

### Prerequisites

1. Register an app at [developers.eveonline.com](https://developers.eveonline.com/applications)
2. Set callback URL to `http://127.0.0.1:8080/callback`
3. Select the scopes you need (PI requires `esi-planets.manage_planets.v1`)
4. Note your **Client ID**

### One-time auth per character

```bash
# If on a remote server, set up an SSH tunnel first:
ssh -L 8080:127.0.0.1:8080 user@your-server -N

# Run the auth flow:
python3 scripts/auth_flow.py --client-id <YOUR_CLIENT_ID> --char-name main

# Open the shown URL in your browser and log in with your EVE account
```

Tokens are stored in `~/.openclaw/eve-tokens.json` (chmod 600, auto-rotated).

### Multiple characters

```bash
python3 scripts/auth_flow.py --client-id <CLIENT_ID> --char-name alt1
python3 scripts/auth_flow.py --client-id <CLIENT_ID> --char-name alt2

# List all authenticated characters:
python3 scripts/get_token.py --list
```

## Quick Start

```bash
SKILL=~/.openclaw/workspace/skills/eve-esi

# Get a fresh access token (auto-refreshes on every call)
TOKEN=$(python3 $SKILL/scripts/get_token.py --char main)

# Wallet balance
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" \
  --endpoint "/characters/<CHAR_ID>/wallet/" --pretty

# Skill queue
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" \
  --endpoint "/characters/<CHAR_ID>/skillqueue/" --pretty

# All assets (paginated)
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" \
  --endpoint "/characters/<CHAR_ID>/assets/" --pages --pretty

# PI: list all planets for a character
python3 $SKILL/scripts/esi_query.py --action pi_planets \
  --token "$TOKEN" --character-id <CHAR_ID> --pretty

# PI: parsed "needs attention" status per planet
python3 $SKILL/scripts/esi_query.py --action pi_status \
  --token "$TOKEN" --character-id <CHAR_ID> --pretty

# Market (public): Jita buy/sell snapshot for one type
python3 $SKILL/scripts/esi_query.py --action jita_price \
  --type-id 2393 --pretty

# Market (public): adjusted/average prices for all types
python3 $SKILL/scripts/esi_query.py --action market_price_bulk --pretty
```

## Planetary Interaction (PI)

The skill includes high-level PI actions that parse raw ESI data into actionable status reports.

### PI Actions

```bash
SKILL=~/.openclaw/workspace/skills/eve-esi
TOKEN=$(python3 $SKILL/scripts/get_token.py --char main)
CHAR_ID=<your_character_id>

# List all PI planets for a character
python3 $SKILL/scripts/esi_query.py --action pi_planets \
  --token "$TOKEN" --character-id $CHAR_ID --pretty

# Full PI status with extractor timers, storage fill, attention flags
python3 $SKILL/scripts/esi_query.py --action pi_status \
  --token "$TOKEN" --character-id $CHAR_ID --pretty

# Detailed info for a specific planet
python3 $SKILL/scripts/esi_query.py --action pi_planet_detail \
  --token "$TOKEN" --character-id $CHAR_ID --planet-id <PLANET_ID> --pretty
```

### Action Mode Parameters

- `--action` supports: `pi_planets`, `pi_planet_detail`, `pi_status`, `market_price_bulk`, `jita_price`, `system_kills`, `system_jumps`, `system_info`, `route_plan`, `character_location`, `fw_systems`, `incursions`
- `--character-id` is required for PI actions and `character_location`
- `--planet-id` is required for `pi_planet_detail`
- `--type-id` is required for `jita_price`
- `--system-id` / `--system-ids` for threat-related actions
- `--origin`, `--destination`, `--route-flag` for `route_plan`

### PI Status Output

The `pi_status` action returns parsed data per planet:

| Field | Description |
|-------|-------------|
| `planet_name` | Resolved planet name (e.g. "Ikoskio VII") |
| `extractors` | List with product, expiry time, hours remaining, status |
| `storage_fill_pct` | Estimated launchpad/storage fill percentage |
| `factories` | Input/output product routing |
| `needs_attention` | `true` if extractor < 6h or storage > 80% |
| `action_required` | Human-readable description of what needs to be done |

### What PI can and cannot do

ESI provides **read-only** access to PI. The skill can:
- Monitor extractor timers and warn before expiry
- Track launchpad/storage fill levels
- Show factory routing and production chains
- Compare market prices for PI products

It **cannot** restart extractors, reroute products, or modify planet setups — that must be done in-game.

## Market Prices

```bash
SKILL=~/.openclaw/workspace/skills/eve-esi

# Global average/adjusted prices for all items
python3 $SKILL/scripts/esi_query.py --action market_price_bulk --pretty

# Current Jita buy/sell for a specific item (e.g. Coolant = type_id 9832)
python3 $SKILL/scripts/esi_query.py --action jita_price --type-id 9832 --pretty
```

The `jita_price` action returns lowest sell, highest buy, spread, and order counts for The Forge region.

## Dashboard Config

Set up automated alerts, scheduled reports, and market price tracking:

```bash
# Copy example config
cp config/example-config.json ~/.openclaw/eve-dashboard-config.json

# Edit with your preferences
# Use $ENV:VARIABLE_NAME for tokens — never store secrets in plain text

# Validate
python3 scripts/validate_config.py ~/.openclaw/eve-dashboard-config.json
```

See [config/schema.json](config/schema.json) for the full schema.

Endpoint presets for PI and market requests are documented in [config/esi_endpoints.json](config/esi_endpoints.json).

### Alert Types

| Alert | Description |
|-------|-------------|
| `war_declared` | New war declaration against your corp |
| `structure_under_attack` | Structure attacked |
| `skill_complete` | Skill training finished |
| `wallet_large_deposit` | ISK deposit above threshold |
| `industry_job_complete` | Manufacturing/research job done |
| `pi_extractor_expired` | Planetary extraction head expired |
| `killmail` | New killmail received |
| `contract_expired` | Contract expired |

### Report Templates

| Report | Description |
|--------|-------------|
| `net_worth` | Total ISK acro

[truncated…]

PUBLIC HISTORY

First discoveredMar 29, 2026

IDENTITY

inferred

Identity inferred from code signals. No PROVENANCE.yml found.

Is this yours? Claim it →

METADATA

platformgithub
first seenFeb 8, 2026
last updatedMar 28, 2026
last crawled17 days ago
version

README BADGE

Add to your README:

![Provenance](https://getprovenance.dev/api/badge?id=provenance:github:burnshall-ui/openclaw-eve-skill)