* docs: deep audit — fix stale config keys, missing commands, and registry drift Cross-checked ~80 high-impact docs pages (getting-started, reference, top-level user-guide, user-guide/features) against the live registries: hermes_cli/commands.py COMMAND_REGISTRY (slash commands) hermes_cli/auth.py PROVIDER_REGISTRY (providers) hermes_cli/config.py DEFAULT_CONFIG (config keys) toolsets.py TOOLSETS (toolsets) tools/registry.py get_all_tool_names() (tools) python -m hermes_cli.main <subcmd> --help (CLI args) reference/ - cli-commands.md: drop duplicate hermes fallback row + duplicate section, add stepfun/lmstudio to --provider enum, expand auth/mcp/curator subcommand lists to match --help output (status/logout/spotify, login, archive/prune/ list-archived). - slash-commands.md: add missing /sessions and /reload-skills entries + correct the cross-platform Notes line. - tools-reference.md: drop bogus '68 tools' headline, drop fictional 'browser-cdp toolset' (these tools live in 'browser' and are runtime-gated), add missing 'kanban' and 'video' toolset sections, fix MCP example to use the real mcp_<server>_<tool> prefix. - toolsets-reference.md: list browser_cdp/browser_dialog inside the 'browser' row, add missing 'kanban' and 'video' toolset rows, drop the stale '38 tools' count for hermes-cli. - profile-commands.md: add missing install/update/info subcommands, document fish completion. - environment-variables.md: dedupe GMI_API_KEY/GMI_BASE_URL rows (kept the one with the correct gmi-serving.com default). - faq.md: Anthropic/Google/OpenAI examples — direct providers exist (not just via OpenRouter), refresh the OpenAI model list. getting-started/ - installation.md: PortableGit (not MinGit) is what the Windows installer fetches; document the 32-bit MinGit fallback. - installation.md / termux.md: installer prefers .[termux-all] then falls back to .[termux]. - nix-setup.md: Python 3.12 (not 3.11), Node.js 22 (not 20); fix invalid 'nix flake update --flake' invocation. - updating.md: 'hermes backup restore --state pre-update' doesn't exist — point at the snapshot/quick-snapshot flow; correct config key 'updates.pre_update_backup' (was 'update.backup'). user-guide/ - configuration.md: api_max_retries default 3 (not 2); display.runtime_footer is the real key (not display.runtime_metadata_footer); checkpoints defaults enabled=false / max_snapshots=20 (not true / 50). - configuring-models.md: 'hermes model list' / 'hermes model set ...' don't exist — hermes model is interactive only. - tui.md: busy_indicator -> tui_status_indicator with values kaomoji|emoji|unicode|ascii (not kawaii|minimal|dots|wings|none). - security.md: SSH backend keys (TERMINAL_SSH_HOST/USER/KEY) live in .env, not config.yaml. - windows-wsl-quickstart.md: there is no 'hermes api' subcommand — the OpenAI-compatible API server runs inside hermes gateway. user-guide/features/ - computer-use.md: approvals.mode (not security.approval_level); fix broken ./browser-use.md link to ./browser.md. - fallback-providers.md: top-level fallback_providers (not model.fallback_providers); the picker is subcommand-based, not modal. - api-server.md: API_SERVER_* are env vars — write to per-profile .env, not 'hermes config set' which targets YAML. - web-search.md: drop web_crawl as a registered tool (it isn't); deep-crawl modes are exposed through web_extract. - kanban.md: failure_limit default is 2, not '~5'. - plugins.md: drop hard-coded '33 providers' count. - honcho.md: fix unclosed quote in echo HONCHO_API_KEY snippet; document that 'hermes honcho' subcommand is gated on memory.provider=honcho; reconcile subcommand list with actual --help output. - memory-providers.md: legacy 'hermes honcho setup' redirect documented. Verified via 'npm run build' — site builds cleanly; broken-link count went from 149 to 146 (no regressions, fixed a few in passing). * docs: round 2 audit fixes + regenerate skill catalogs Follow-up to the previous commit on this branch: Round 2 manual fixes: - quickstart.md: KIMI_CODING_API_KEY mentioned alongside KIMI_API_KEY; voice-mode and ACP install commands rewritten — bare 'pip install ...' doesn't work for curl-installed setups (no pip on PATH, not in repo dir); replaced with 'cd ~/.hermes/hermes-agent && uv pip install -e ".[voice]"'. ACP already ships in [all] so the curl install includes it. - cli.md / configuration.md: 'auxiliary.compression.model' shown as 'google/gemini-3-flash-preview' (the doc's own claimed default); actual default is empty (= use main model). Reworded as 'leave empty (default) or pin a cheap model'. - built-in-plugins.md: added the bundled 'kanban/dashboard' plugin row that was missing from the table. Regenerated skill catalogs: - ran website/scripts/generate-skill-docs.py to refresh all 163 per-skill pages and both reference catalogs (skills-catalog.md, optional-skills-catalog.md). This adds the entries that were genuinely missing — productivity/teams-meeting-pipeline (bundled), optional/finance/* (entire category — 7 skills: 3-statement-model, comps-analysis, dcf-model, excel-author, lbo-model, merger-model, pptx-author), creative/hyperframes, creative/kanban-video-orchestrator, devops/watchers, productivity/shop-app, research/searxng-search, apple/macos-computer-use — and rewrites every other per-skill page from the current SKILL.md. Most diffs are tiny (one line of refreshed metadata). Validation: - 'npm run build' succeeded. - Broken-link count moved 146 -> 155 — the +9 are zh-Hans translation shells that lag every newly-added skill page (pre-existing pattern). No regressions on any en/ page.
250 lines
8.4 KiB
Markdown
250 lines
8.4 KiB
Markdown
---
|
|
title: "Base"
|
|
sidebar_label: "Base"
|
|
description: "Query Base (Ethereum L2) blockchain data with USD pricing — wallet balances, token info, transaction details, gas analysis, contract inspection, whale detect..."
|
|
---
|
|
|
|
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
|
|
|
# Base
|
|
|
|
Query Base (Ethereum L2) blockchain data with USD pricing — wallet balances, token info, transaction details, gas analysis, contract inspection, whale detection, and live network stats. Uses Base RPC + CoinGecko. No API key required.
|
|
|
|
## Skill metadata
|
|
|
|
| | |
|
|
|---|---|
|
|
| Source | Optional — install with `hermes skills install official/blockchain/base` |
|
|
| Path | `optional-skills/blockchain/base` |
|
|
| Version | `0.1.0` |
|
|
| Author | youssefea |
|
|
| License | MIT |
|
|
| Platforms | linux, macos, windows |
|
|
| Tags | `Base`, `Blockchain`, `Crypto`, `Web3`, `RPC`, `DeFi`, `EVM`, `L2`, `Ethereum` |
|
|
|
|
## Reference: full SKILL.md
|
|
|
|
:::info
|
|
The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
|
|
:::
|
|
|
|
# Base Blockchain Skill
|
|
|
|
Query Base (Ethereum L2) on-chain data enriched with USD pricing via CoinGecko.
|
|
8 commands: wallet portfolio, token info, transactions, gas analysis,
|
|
contract inspection, whale detection, network stats, and price lookup.
|
|
|
|
No API key needed. Uses only Python standard library (urllib, json, argparse).
|
|
|
|
---
|
|
|
|
## When to Use
|
|
|
|
- User asks for a Base wallet balance, token holdings, or portfolio value
|
|
- User wants to inspect a specific transaction by hash
|
|
- User wants ERC-20 token metadata, price, supply, or market cap
|
|
- User wants to understand Base gas costs and L1 data fees
|
|
- User wants to inspect a contract (ERC type detection, proxy resolution)
|
|
- User wants to find large ETH transfers (whale detection)
|
|
- User wants Base network health, gas price, or ETH price
|
|
- User asks "what's the price of USDC/AERO/DEGEN/ETH?"
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
The helper script uses only Python standard library (urllib, json, argparse).
|
|
No external packages required.
|
|
|
|
Pricing data comes from CoinGecko's free API (no key needed, rate-limited
|
|
to ~10-30 requests/minute). For faster lookups, use `--no-prices` flag.
|
|
|
|
---
|
|
|
|
## Quick Reference
|
|
|
|
RPC endpoint (default): https://mainnet.base.org
|
|
Override: export BASE_RPC_URL=https://your-private-rpc.com
|
|
|
|
Helper script path: ~/.hermes/skills/blockchain/base/scripts/base_client.py
|
|
|
|
```
|
|
python3 base_client.py wallet <address> [--limit N] [--all] [--no-prices]
|
|
python3 base_client.py tx <hash>
|
|
python3 base_client.py token <contract_address>
|
|
python3 base_client.py gas
|
|
python3 base_client.py contract <address>
|
|
python3 base_client.py whales [--min-eth N]
|
|
python3 base_client.py stats
|
|
python3 base_client.py price <contract_address_or_symbol>
|
|
```
|
|
|
|
---
|
|
|
|
## Procedure
|
|
|
|
### 0. Setup Check
|
|
|
|
```bash
|
|
python3 --version
|
|
|
|
# Optional: set a private RPC for better rate limits
|
|
export BASE_RPC_URL="https://mainnet.base.org"
|
|
|
|
# Confirm connectivity
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py stats
|
|
```
|
|
|
|
### 1. Wallet Portfolio
|
|
|
|
Get ETH balance and ERC-20 token holdings with USD values.
|
|
Checks ~15 well-known Base tokens (USDC, WETH, AERO, DEGEN, etc.)
|
|
via on-chain `balanceOf` calls. Tokens sorted by value, dust filtered.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py \
|
|
wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
|
|
```
|
|
|
|
Flags:
|
|
- `--limit N` — show top N tokens (default: 20)
|
|
- `--all` — show all tokens, no dust filter, no limit
|
|
- `--no-prices` — skip CoinGecko price lookups (faster, RPC-only)
|
|
|
|
Output includes: ETH balance + USD value, token list with prices sorted
|
|
by value, dust count, total portfolio value in USD.
|
|
|
|
Note: Only checks known tokens. Unknown ERC-20s are not discovered.
|
|
Use the `token` command with a specific contract address for any token.
|
|
|
|
### 2. Transaction Details
|
|
|
|
Inspect a full transaction by its hash. Shows ETH value transferred,
|
|
gas used, fee in ETH/USD, status, and decoded ERC-20/ERC-721 transfers.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py \
|
|
tx 0xabc123...your_tx_hash_here
|
|
```
|
|
|
|
Output: hash, block, from, to, value (ETH + USD), gas price, gas used,
|
|
fee, status, contract creation address (if any), token transfers.
|
|
|
|
### 3. Token Info
|
|
|
|
Get ERC-20 token metadata: name, symbol, decimals, total supply, price,
|
|
market cap, and contract code size.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py \
|
|
token 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
|
|
```
|
|
|
|
Output: name, symbol, decimals, total supply, price, market cap.
|
|
Reads name/symbol/decimals directly from the contract via eth_call.
|
|
|
|
### 4. Gas Analysis
|
|
|
|
Detailed gas analysis with cost estimates for common operations.
|
|
Shows current gas price, base fee trends over 10 blocks, block
|
|
utilization, and estimated costs for ETH transfers, ERC-20 transfers,
|
|
and swaps.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py gas
|
|
```
|
|
|
|
Output: current gas price, base fee, block utilization, 10-block trend,
|
|
cost estimates in ETH and USD.
|
|
|
|
Note: Base is an L2 — actual transaction costs include an L1 data
|
|
posting fee that depends on calldata size and L1 gas prices. The
|
|
estimates shown are for L2 execution only.
|
|
|
|
### 5. Contract Inspection
|
|
|
|
Inspect an address: determine if it's an EOA or contract, detect
|
|
ERC-20/ERC-721/ERC-1155 interfaces, resolve EIP-1967 proxy
|
|
implementation addresses.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py \
|
|
contract 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
|
|
```
|
|
|
|
Output: is_contract, code size, ETH balance, detected interfaces
|
|
(ERC-20, ERC-721, ERC-1155), ERC-20 metadata, proxy implementation
|
|
address.
|
|
|
|
### 6. Whale Detector
|
|
|
|
Scan the most recent block for large ETH transfers with USD values.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py \
|
|
whales --min-eth 1.0
|
|
```
|
|
|
|
Note: scans the latest block only — point-in-time snapshot, not historical.
|
|
Default threshold is 1.0 ETH (lower than Solana's default since ETH
|
|
values are higher).
|
|
|
|
### 7. Network Stats
|
|
|
|
Live Base network health: latest block, chain ID, gas price, base fee,
|
|
block utilization, transaction count, and ETH price.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py stats
|
|
```
|
|
|
|
### 8. Price Lookup
|
|
|
|
Quick price check for any token by contract address or known symbol.
|
|
|
|
```bash
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py price ETH
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py price USDC
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py price AERO
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py price DEGEN
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py price 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
|
|
```
|
|
|
|
Known symbols: ETH, WETH, USDC, cbETH, AERO, DEGEN, TOSHI, BRETT,
|
|
WELL, wstETH, rETH, cbBTC.
|
|
|
|
---
|
|
|
|
## Pitfalls
|
|
|
|
- **CoinGecko rate-limits** — free tier allows ~10-30 requests/minute.
|
|
Price lookups use 1 request per token. Use `--no-prices` for speed.
|
|
- **Public RPC rate-limits** — Base's public RPC limits requests.
|
|
For production use, set BASE_RPC_URL to a private endpoint
|
|
(Alchemy, QuickNode, Infura).
|
|
- **Wallet shows known tokens only** — unlike Solana, EVM chains have no
|
|
built-in "get all tokens" RPC. The wallet command checks ~15 popular
|
|
Base tokens via `balanceOf`. Unknown ERC-20s won't appear. Use the
|
|
`token` command for any specific contract.
|
|
- **Token names read from contract** — if a contract doesn't implement
|
|
`name()` or `symbol()`, these fields may be empty. Known tokens have
|
|
hardcoded labels as fallback.
|
|
- **Gas estimates are L2 only** — Base transaction costs include an L1
|
|
data posting fee (depends on calldata size and L1 gas prices). The gas
|
|
command estimates L2 execution cost only.
|
|
- **Whale detector scans latest block only** — not historical. Results
|
|
vary by the moment you query. Default threshold is 1.0 ETH.
|
|
- **Proxy detection** — only EIP-1967 proxies are detected. Other proxy
|
|
patterns (EIP-1167 minimal proxy, custom storage slots) are not checked.
|
|
- **Retry on 429** — both RPC and CoinGecko calls retry up to 2 times
|
|
with exponential backoff on rate-limit errors.
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
```bash
|
|
# Should print Base chain ID (8453), latest block, gas price, and ETH price
|
|
python3 ~/.hermes/skills/blockchain/base/scripts/base_client.py stats
|
|
```
|