Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
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,...
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,...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
This skill communicates exclusively with the official EVE Online ESI API (esi.evetech.net) and EVE SSO (login.eveonline.com). No character data is exfiltrated to third-party servers. Optional integrations (Telegram, Discord) are user-configured via environment variables and only transmit alerts defined by the user.
The ESI (EVE Swagger Interface) is the official REST API for EVE Online third-party development. Base URL: https://esi.evetech.net/latest Spec: https://esi.evetech.net/latest/swagger.json API Explorer: https://developers.eveonline.com/api-explorer
All scripts live at: ~/.openclaw/workspace/skills/eve-esi/scripts/ Always use full paths when calling scripts: SKILL=~/.openclaw/workspace/skills/eve-esi
Tokens are stored in ~/.openclaw/eve-tokens.json (created by auth_flow.py, chmod 600). All scripts (get_token.py, esi_query.py) read from this file directly โ no env vars are required for normal operation. First-time setup (once per character): # 1. Set up SSH tunnel on your local PC: # ssh -L 8080:127.0.0.1:8080 user@your-server -N # 2. Run auth flow on server (pass Client ID directly): python3 ~/.openclaw/workspace/skills/eve-esi/scripts/auth_flow.py --client-id <YOUR_CLIENT_ID> --char-name main # 3. Open the shown URL in browser, log in with EVE account Get a fresh access token (tokens expire after ~20min, refresh is automatic): TOKEN=$(python3 ~/.openclaw/workspace/skills/eve-esi/scripts/get_token.py --char main) List authenticated characters: python3 ~/.openclaw/workspace/skills/eve-esi/scripts/get_token.py --list For full OAuth2/PKCE details: see references/authentication.md.
# Character public info curl -s "https://esi.evetech.net/latest/characters/2114794365/" | python -m json.tool # Portrait URLs curl -s "https://esi.evetech.net/latest/characters/2114794365/portrait/" # Corporation history curl -s "https://esi.evetech.net/latest/characters/2114794365/corporationhistory/" # Bulk affiliation lookup curl -s -X POST "https://esi.evetech.net/latest/characters/affiliation/" \ -H "Content-Type: application/json" \ -d '[2114794365, 95538921]'
TOKEN="<your_access_token>" CHAR_ID="<your_character_id>" # Online status (scope: esi-location.read_online.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/online/"
# Balance (scope: esi-wallet.read_character_wallet.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/" # Journal (paginated) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/journal/?page=1" # Transactions curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/wallet/transactions/"
# All assets (paginated; scope: esi-assets.read_assets.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/?page=1" # Resolve item locations curl -s -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '[1234567890, 9876543210]' \ "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/locations/" # Resolve item names curl -s -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '[1234567890]' \ "https://esi.evetech.net/latest/characters/$CHAR_ID/assets/names/"
# All trained skills + total SP (scope: esi-skills.read_skills.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/skills/" # Skill queue (scope: esi-skills.read_skillqueue.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/skillqueue/" # Attributes (intelligence, memory, etc.) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/attributes/"
# Current location (scope: esi-location.read_location.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/location/" # Current ship (scope: esi-location.read_ship_type.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/ship/"
# Jump clones + home station (scope: esi-clones.read_clones.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/clones/" # Active implants (scope: esi-clones.read_implants.v1) curl -s -H "Authorization: Bearer $TOKEN" \ "https://esi.evetech.net/latest/characters/$CHAR_ID/implants/"
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.
The skill supports a modular dashboard config for alerts, reports, and market tracking. Each user defines what they need in a JSON config file. Schema: config/schema.json โ full JSON Schema with all fields, types, and defaults Example: config/example-config.json โ ready-to-use template
ModuleDescriptionAlertsReal-time polling for war decs, structure attacks, skill completions, wallet changes, industry jobs, PI extractors, killmails, contracts, clone jumps, mailReportsCron-scheduled summaries: net worth, skill queue, industry, market orders, wallet, assetsMarketPrice tracking with absolute thresholds and trend detection
Tokens should not be stored in plain text. Use environment variable references: { "token": "$ENV:EVE_TOKEN_MAIN", "refresh_token": "$ENV:EVE_REFRESH_MAIN" } The config file should live outside the workspace (e.g. ~/.openclaw/eve-dashboard-config.json).
python scripts/validate_config.py path/to/config.json # Show example config python scripts/validate_config.py --example # Show JSON schema python scripts/validate_config.py --schema
SKILL=~/.openclaw/workspace/skills/eve-esi TOKEN=$(python3 $SKILL/scripts/get_token.py --char main) CHAR_ID=$(python3 $SKILL/scripts/get_token.py --char main --json | python3 -c "import sys,json; print(json.load(sys.stdin))" 2>/dev/null) # Simple query python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/wallet/" --pretty # Fetch all pages of assets python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/assets/" --pages --pretty # POST request (e.g. asset names) python3 $SKILL/scripts/esi_query.py --token "$TOKEN" --endpoint "/characters/$CHAR_ID/assets/names/" \ --method POST --body '[1234567890]' --pretty
Caching: respect the Expires header; do not poll before it expires. Error limits: monitor X-ESI-Error-Limit-Remain; back off when low. User-Agent: always set a descriptive User-Agent with contact info. Rate limits: some endpoints (mail, contracts) have internal rate limits returning HTTP 520. Pagination: check the X-Pages response header; iterate with ?page=N. Versioning: use /latest/ for current stable routes. /dev/ may change without notice.
ESI returns numeric type IDs (e.g. for ships, items, skills). Resolve names via: # Single type curl -s "https://esi.evetech.net/latest/universe/types/587/" # Bulk names (up to 1000 IDs) curl -s -X POST "https://esi.evetech.net/latest/universe/names/" \ -H "Content-Type: application/json" \ -d '[587, 638, 11393]'
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.