← Back to Skills Marketplace
burnshall-ui

Openclaw Eve Skill

by cnc_x_ai · GitHub ↗ · v1.2.1 · MIT-0
cross-platform ✓ Security Clean
1540
Downloads
2
Stars
0
Active Installs
13
Versions
Install in OpenClaw
/install eve-esi
Description
Query and manage EVE Online characters via the ESI (EVE Swagger Interface) REST API. Use when the user asks about EVE Online character data, wallet balance,...
README (SKILL.md)

\r \r

Data Handling\r

\r This skill communicates with the following external services:\r \r

  • EVE Online ESI API (esi.evetech.net) — all character and universe data queries\r
  • EVE SSO (login.eveonline.com) — OAuth2 authentication and token refresh\r
  • zKillboard API (zkillboard.com/api/) — optional, for PVP threat assessment data (public, no auth required)\r
  • Telegram Bot API — optional, user-configured via TELEGRAM_BOT_TOKEN for alert notifications\r
  • Discord Webhooks — optional, user-configured via DISCORD_WEBHOOK_URL for alert notifications\r \r No character data is sent to third-party servers beyond the above. Telegram/Discord only transmit alerts defined by the user.\r \r

EVE Online ESI\r

\r The ESI (EVE Swagger Interface) is the official REST API for EVE Online third-party development.\r \r

  • Base URL: https://esi.evetech.net/latest\r
  • Spec: https://esi.evetech.net/latest/swagger.json\r
  • API Explorer: \x3Chttps://developers.eveonline.com/api-explorer>\r \r

Skill Location\r

\r All scripts live at: ~/.openclaw/workspace/skills/eve-esi/scripts/\r \r Always use full paths when calling scripts:\r

SKILL=~/.openclaw/workspace/skills/eve-esi\r
```\r
\r
## Authentication\r
\r
Tokens are stored in `~/.openclaw/eve-tokens.json` (created by auth_flow.py, chmod 600).\r
All scripts (`get_token.py`, `esi_query.py`) read from this file directly — **no env vars are required for normal operation.**\r
\r
**First-time setup** (once per character):\r
```bash\r
# 1. Set up SSH tunnel on your local PC:\r
#    ssh -L 8080:127.0.0.1:8080 user@your-server -N\r
# 2. Run auth flow on server (pass Client ID directly):\r
python3 ~/.openclaw/workspace/skills/eve-esi/scripts/auth_flow.py --client-id \x3CYOUR_CLIENT_ID> --char-name main\r
# 3. Open the shown URL in browser, log in with EVE account\r
```\r
\r
**Get a fresh access token** (tokens expire after ~20min, refresh is automatic):\r
```bash\r
TOKEN=$(python3 ~/.openclaw/workspace/skills/eve-esi/scripts/get_token.py --char main)\r
```\r
\r
**List authenticated characters:**\r
```bash\r
python3 ~/.openclaw/workspace/skills/eve-esi/scripts/get_token.py --list\r
```\r
\r
For full OAuth2/PKCE details: see `references/authentication.md`.\r
\r
## Public endpoints (no auth)\r
\r
```bash\r
# Character public info\r
curl -s "https://esi.evetech.net/latest/characters/2114794365/" | python -m json.tool\r
\r
# Portrait URLs\r
curl -s "https://esi.evetech.net/latest/characters/2114794365/portrait/"\r
\r
# Corporation history\r
curl -s "https://esi.evetech.net/latest/characters/2114794365/corporationhistory/"\r
\r
# Bulk affiliation lookup\r
curl -s -X POST "https://esi.evetech.net/latest/characters/affiliation/" \\r
  -H "Content-Type: application/json" \\r
  -d '[2114794365, 95538921]'\r
```\r
\r
## Character info (authenticated)\r
\r
```bash\r
TOKEN="\x3Cyour_access_token>"\r
CHAR_ID="\x3Cyour_character_id>"\r
\r
# Online status (scope: esi-location.read_online.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/online/"\r
```\r
\r
## Wallet\r
\r
```bash\r
# Balance (scope: esi-wallet.read_character_wallet.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/"\r
\r
# Journal (paginated)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/journal/?page=1"\r
\r
# Transactions\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/transactions/"\r
```\r
\r
## Assets\r
\r
```bash\r
# All assets (paginated; scope: esi-assets.read_assets.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/?page=1"\r
\r
# Resolve item locations\r
curl -s -X POST -H "Authorization: Bearer $TOKEN" \\r
  -H "Content-Type: application/json" \\r
  -d '[1234567890, 9876543210]' \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/locations/"\r
\r
# Resolve item names\r
curl -s -X POST -H "Authorization: Bearer $TOKEN" \\r
  -H "Content-Type: application/json" \\r
  -d '[1234567890]' \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/names/"\r
```\r
\r
## Skills\r
\r
```bash\r
# All trained skills + total SP (scope: esi-skills.read_skills.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/skills/"\r
\r
# Skill queue (scope: esi-skills.read_skillqueue.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/skillqueue/"\r
\r
# Attributes (intelligence, memory, etc.)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/attributes/"\r
```\r
\r
## Location and ship\r
\r
```bash\r
# Current location (scope: esi-location.read_location.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/location/"\r
\r
# Current ship (scope: esi-location.read_ship_type.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/ship/"\r
```\r
\r
## Clones and implants\r
\r
```bash\r
# Jump clones + home station (scope: esi-clones.read_clones.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/clones/"\r
\r
# Active implants (scope: esi-clones.read_implants.v1)\r
curl -s -H "Authorization: Bearer $TOKEN" \\r
  "https://esi.evetech.net/latest/characters/$CHAR_ID/implants/"\r
```\r
\r
## More endpoints\r
\r
For contracts, fittings, mail, industry, killmails, market orders, mining, planetary interaction, loyalty points, notifications, blueprints, standings, and all other character endpoints, see [references/endpoints.md](references/endpoints.md).\r
\r
## Dashboard Config\r
\r
The skill supports a modular dashboard config for alerts, reports, and market tracking. Each user defines what they need in a JSON config file.\r
\r
- **Schema**: [config/schema.json](config/schema.json) — full JSON Schema with all fields, types, and defaults\r
- **Example**: [config/example-config.json](config/example-config.json) — ready-to-use template\r
\r
### Features\r
\r
| Module | Description |\r
|--------|-------------|\r
| **Alerts** | Real-time polling for war decs, structure attacks, skill completions, wallet changes, industry jobs, PI extractors, killmails, contracts, clone jumps, mail |\r
| **Reports** | Cron-scheduled summaries: net worth, skill queue, industry, market orders, wallet, assets |\r
| **Market** | Price tracking with absolute thresholds and trend detection |\r
\r
### Security\r
\r
Tokens should **not** be stored in plain text. Use environment variable references:\r
\r
```json\r
{\r
  "token": "$ENV:EVE_TOKEN_MAIN",\r
  "refresh_token": "$ENV:EVE_REFRESH_MAIN"\r
}\r
```\r
\r
The config file should live outside the workspace (e.g. `~/.openclaw/eve-dashboard-config.json`).\r
\r
### Validate a config\r
\r
```bash\r
python scripts/validate_config.py path/to/config.json\r
\r
# Show example config\r
python scripts/validate_config.py --example\r
\r
# Show JSON schema\r
python scripts/validate_config.py --schema\r
```\r
\r
## Using the query script\r
\r
```bash\r
SKILL=~/.openclaw/workspace/skills/eve-esi\r
# Replace 'main' with your --char-name if you authenticated under a different name.\r
TOKEN=$(python3 $SKILL/scripts/get_token.py --char main)\r
# get_token.py --char-id prints just the character ID for the named character.\r
CHAR_ID=$(python3 $SKILL/scripts/get_token.py --char main --char-id 2>/dev/null) || \\r
CHAR_ID=$(python3 -c "import json, os, pathlib; p = pathlib.Path(os.environ.get('OPENCLAW_STATE_DIR', os.path.expanduser('~/.openclaw'))) / 'eve-tokens.json'; d = json.loads(p.read_text(encoding='utf-8')); chars = d.get('characters', {}); char = chars.get('main') or next(iter(chars.values()), None); print(char['character_id'] if char else '')")\r
\r
# Simple query\r
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/wallet/" --pretty\r
\r
# Fetch all pages of assets\r
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/assets/" --pages --pretty\r
\r
# POST request (e.g. asset names)\r
python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/assets/names/" \\r
  --method POST --body '[1234567890]' --pretty\r
```\r
\r
## Best practices\r
\r
- **Caching**: respect the `Expires` header; do not poll before it expires.\r
- **Error limits**: monitor `X-ESI-Error-Limit-Remain`; back off when low.\r
- **User-Agent**: always set a descriptive User-Agent with contact info.\r
- **Rate limits**: some endpoints (mail, contracts) have internal rate limits returning HTTP 520.\r
- **Pagination**: check the `X-Pages` response header; iterate with `?page=N`.\r
- **Versioning**: use `/latest/` for current stable routes. `/dev/` may change without notice.\r
\r
## Threat Assessment & Route Planning\r
\r
The skill provides threat intelligence for PI systems in low/null-sec space. Data sources: ESI (kills, jumps, FW, incursions) and zKillboard (PVP activity).\r
\r
### ESI Threat Endpoints\r
\r
```bash\r
SKILL=~/.openclaw/workspace/skills/eve-esi\r
\r
# System kills (last hour) — all or filtered\r
python3 $SKILL/scripts/esi_query.py --action system_kills --pretty\r
python3 $SKILL/scripts/esi_query.py --action system_kills --system-ids 30002537,30045337 --pretty\r
\r
# System jump traffic (last hour)\r
python3 $SKILL/scripts/esi_query.py --action system_jumps --system-ids 30045337 --pretty\r
\r
# System info (name, security status)\r
python3 $SKILL/scripts/esi_query.py --action system_info --system-id 30002537 --pretty\r
\r
# Route planning (flags: secure, shortest, insecure)\r
python3 $SKILL/scripts/esi_query.py --action route_plan --origin 30000142 --destination 30002537 --route-flag secure --pretty\r
\r
# Character location (requires auth)\r
TOKEN=$(python3 $SKILL/scripts/get_token.py --char main)\r
python3 $SKILL/scripts/esi_query.py --action character_location --token "$TOKEN" --character-id $CHAR_ID --pretty\r
\r
# Faction warfare systems\r
python3 $SKILL/scripts/esi_query.py --action fw_systems --pretty\r
\r
# Active incursions\r
python3 $SKILL/scripts/esi_query.py --action incursions --pretty\r
```\r
\r
### Threat Assessment Scripts (Workspace)\r
\r
> **Hinweis:** Die Workspace-Skripte (`threat_query.py`, `cache_threat_data.py`, `cache_market_prices.py`) sind Referenz-Beschreibungen und müssen erst im Agent-Workspace erstellt werden, bevor sie genutzt werden können.\r
\r
These scripts live in `~/.openclaw/workspace/scripts/` (not in the skill repo):\r
\r
```bash\r
# Threat level for specific systems\r
python3 ~/.openclaw/workspace/scripts/threat_query.py --action threat_assessment --system-ids 30002537,30045337\r
\r
# Threat for all PI systems across all characters\r
python3 ~/.openclaw/workspace/scripts/threat_query.py --action threat_assessment_pi\r
\r
# Route with per-system threat annotation\r
python3 ~/.openclaw/workspace/scripts/threat_query.py --action route_annotated --origin 30000142 --destination 30002537\r
\r
# Route from character's current location\r
python3 ~/.openclaw/workspace/scripts/threat_query.py --action route_annotated --character main --destination 30045337\r
\r
# Full PI + Threat morning briefing\r
python3 ~/.openclaw/workspace/scripts/threat_query.py --action pi_briefing\r
```\r
\r
### Threat Levels\r
\r
| Level | Score | Meaning |\r
|-------|-------|---------|\r
| `low` | 0-15 | Normaler PI-Betrieb |\r
| `medium` | 15-40 | Schnell rein, schnell raus |\r
| `high` | 40-80 | Nur mit Scout/Cloak |\r
| `critical` | 80+ | NICHT reinfliegen |\r
\r
### Threat Cache\r
\r
Threat data is cached in Redis (30min TTL for ESI, 1h for zKillboard). The cache is updated every 30 minutes via cron:\r
\r
```bash\r
# Update cache manually\r
python3 ~/.openclaw/workspace/scripts/cache_threat_data.py\r
\r
# Show cached threat data\r
python3 ~/.openclaw/workspace/scripts/cache_threat_data.py --check\r
```\r
\r
## Resolving type IDs\r
\r
ESI returns numeric type IDs (e.g. for ships, items, skills). Resolve names via:\r
\r
```bash\r
# Single type\r
curl -s "https://esi.evetech.net/latest/universe/types/587/"\r
\r
# Bulk names (up to 1000 IDs)\r
curl -s -X POST "https://esi.evetech.net/latest/universe/names/" \\r
  -H "Content-Type: application/json" \\r
  -d '[587, 638, 11393]'\r
```\r
Usage Guidance
This skill appears coherent with its stated purpose, but verify before use: 1) Confirm you trust the skill source (registry shows no homepage; README points to a GitHub repo — consider checking that repo and commit history). 2) OAuth refresh tokens will be stored in ~/.openclaw/eve-tokens.json — ensure the file is protected (chmod 600) and inspect token_store.py to understand storage behavior. 3) Telegram/Discord channels are optional; do not configure webhooks or bot tokens unless you want alerts sent there. 4) The auth flow requires running a local callback port (default 8080) or an SSH tunnel if remote — make sure you understand the SSH tunnel instructions. 5) If you need higher assurance, run the scripts locally and review the token storage/HTTP calls yourself; avoid pasting secrets into third-party dashboards unless you trust them.
Capability Analysis
Type: OpenClaw Skill Name: eve-esi Version: 1.2.1 The eve-esi skill bundle is a well-structured integration for the EVE Online ESI API, providing tools for character management, wallet tracking, and planetary interaction. It implements secure OAuth2 PKCE authentication via 'auth_flow.py' and 'get_token.py', storing tokens locally with appropriate file permissions (0600) and using file locking to prevent race conditions. The code uses only the Python standard library, handles ESI rate limits correctly, and aligns perfectly with its stated purpose without any evidence of data exfiltration or malicious intent.
Capability Assessment
Purpose & Capability
The name/description match the files and actions: OAuth PKCE auth, token storage, ESI queries, PI/market/threat features. The optional Telegram/Discord notification variables and example config align with the documented alert/report functionality.
Instruction Scope
SKILL.md and scripts instruct running a local auth server, storing tokens at ~/.openclaw/eve-tokens.json, and calling ESI/SSO/zKillboard endpoints. Instructions do not attempt to read unrelated system files or exfiltrate data to unexpected endpoints; Telegram/Discord are explicitly optional and user-configurable.
Install Mechanism
No install spec / no remote downloads in the registry entry; all code is provided in the package. README suggests a git clone from a GitHub repo (normal). No extract-from-URL or third-party binary installs were observed.
Credentials
Declared env vars (EVE client ID/tokens, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, DISCORD_WEBHOOK_URL) are relevant to OAuth and optional notification features. No unrelated secrets (cloud keys, SSH private keys, etc.) are requested.
Persistence & Privilege
The skill stores refresh tokens locally under the user's home (~/.openclaw/eve-tokens.json) and does not request platform-wide privileges or always:true. Autonomous invocation remains enabled (platform default) but is appropriate for a query/alert skill.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install eve-esi
  3. After installation, invoke the skill by name or use /eve-esi
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.2.1
Fix code review findings: Windows lock timeout now raises TokenError, non-dict JSON guard in load_tokens, auth timeout raises AuthFlowError, KeyError guard in get_token lock, remove duplicate validate_config errors, non-fatal get_universe_names, PEP8 fix, SKILL.md char key safety
v1.2.0
Replace sys.exit() with proper exceptions for library reusability, add HTTP server timeout, timestamp parse warnings, gitignore update
v1.1.0
fix: add file locking around token refresh cycle to prevent race condition when multiple processes refresh tokens concurrently. Uses fcntl (Unix) / msvcrt (Windows). Bumped minor version as this changes concurrency behavior.
v1.0.9
feat: support OPENCLAW_STATE_DIR env var for custom token storage path (default: ~/.openclaw/). Port 8080 was already configurable via --port flag.
v1.0.8
fix: correct Data Handling section to accurately list all external services (ESI, SSO, zKillboard, Telegram, Discord) — resolves ClawHub security scan 'Instruction Scope' inconsistency
v1.0.7
fix: security and reliability improvements - add missing urllib.error import (token refresh was crashing), add timeout=30 to all HTTP requests, add retry limit for rate limiting, fix avoid parameter encoding for route planning, fix PI storage type IDs, atomic token file writes, add error handling in auth flow, resolve README merge conflicts, fix SKILL.md examples
v1.0.6
eve-esi 1.0.6 - Added .gitignore for better repository hygiene. - Introduced config/esi_endpoints.json for improved endpoint organization. - add pi workflow - skill provides threat intelligence for PI operations in low/null-sec systems
v1.0.5
eve-esi 1.0.5 changelog - Updated documentation to use a generic placeholder for SSH tunnel instructions, changing the example user and host to "user@your-server" instead of a specific example. - No changes to code or environment variables; only documentation was revised for clarity and privacy.
v1.0.4
eve-esi 1.0.4 changelog - Environment variables for EVE credentials (EVE_CLIENT_ID, EVE_TOKEN_MAIN, EVE_REFRESH_MAIN) are now fully optional—normal operation uses ~/.openclaw/eve-tokens.json directly. - Updated SKILL.md documentation to clarify that scripts auto-manage tokens, and only require env vars if using $ENV: references in dashboard configs. - Revised authentication instructions: Client ID should be passed directly to auth_flow.py; environment variables are only necessary for specific config styles. - Adjusted required flags on EVE credentials env vars from true to false, reflecting their optional usage in most setups. - No code changes to the skill itself; documentation and environment requirements only.
v1.0.3
eve-esi 1.0.3 - Added scripts for OAuth2 authentication flow (`auth_flow.py`) and programmatic access token retrieval (`get_token.py`) - Added `README.md` with setup instructions and authentication usage - Updated docs to clarify script locations, token storage, and usage examples - First-time setup and token refresh workflow now documented for easier onboarding
v1.0.2
- Added Data Handling section documenting exclusive communication with official EVE Online ESI and SSO, and clarifying alert/report integration privacy. - Declared EVE_REFRESH_MAIN as the primary credential for the skill.
v1.0.1
- Added explicit environment variable definitions for EVE SSO and notification integrations (Telegram, Discord) in SKILL.md. - Removed the sample README.md file. - No functional code or API changes in this version; documentation and configuration only.
v1.0.0
eve-esi 1.0.0 – initial release - Provides EVE Online character management via the ESI (EVE Swagger Interface) REST API. - Supports queries for wallet, assets, skills, location, clones, implants, and more. - Includes public and authenticated endpoint documentation with example curl and Python script usage. - Features modular dashboard configuration for alerts, scheduled reports, and market tracking. - Documents best practices for authentication, pagination, caching, and API error handling.
Metadata
Slug eve-esi
Version 1.2.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 13
Frequently Asked Questions

What is Openclaw Eve Skill?

Query and manage EVE Online characters via the ESI (EVE Swagger Interface) REST API. Use when the user asks about EVE Online character data, wallet balance,... It is an AI Agent Skill for Claude Code / OpenClaw, with 1540 downloads so far.

How do I install Openclaw Eve Skill?

Run "/install eve-esi" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Openclaw Eve Skill free?

Yes, Openclaw Eve Skill is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Openclaw Eve Skill support?

Openclaw Eve Skill is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Openclaw Eve Skill?

It is built and maintained by cnc_x_ai (@burnshall-ui); the current version is v1.2.1.

💬 Comments