Base MCP Wallet Reader
aeonfun/aeon
Reads a Base Account's address, portfolio and transaction history through the Base MCP server, and stays strictly read-only in unattended Aeon runs, reporting only changes.
Integrate with Octav API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics across 50+ blockchain networks.
$ npx skills add internet-court/internet-court-skill --skill octav-api -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install internet-court/internet-court-skill octav-api --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vendored/octav/octav-api .claude/skills/octav-api && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .claude/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-apiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add internet-court/internet-court-skill --skill octav-api -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install internet-court/internet-court-skill octav-api --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/vendored/octav/octav-api .agents/skills/octav-api && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .agents/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add internet-court/internet-court-skill --skill octav-api -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install internet-court/internet-court-skill octav-api --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/vendored/octav/octav-api .cursor/skills/octav-api && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .cursor/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/internet-court/internet-court-skill.git --path vendored/octav/octav-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add internet-court/internet-court-skill --skill octav-api -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install internet-court/internet-court-skill octav-api --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/vendored/octav/octav-api .gemini/skills/octav-api && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .gemini/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install internet-court/internet-court-skill octav-apiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add internet-court/internet-court-skill --skill octav-api -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/vendored/octav/octav-api .github/skills/octav-api && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .github/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add internet-court/internet-court-skill --skill octav-api -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install internet-court/internet-court-skill octav-api --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/vendored/octav/octav-api .opencode/skills/octav-api && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "octav-api" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/octav/octav-api into .opencode/skills/octav-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octav-api", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
octav-apiIntegrate with Octav API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics across 50+ blockchain networks.
Octav API is an agent skill from internet-court/internet-court-skill. Integrate with Octav API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics across 50+ blockchain networks. Use when building applications that need to: (1) Track wallet balances and net worth across multiple chains, (2) Query transaction history with filtering and search, (3) Monitor DeFi protocol positions (Aave, Uniswap, etc.), (4) Access historical portfolio snapshots, (5) Analyze token distribution and holdings, (6) Pay per request as an autonomous agent via x402. Triggers on…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `README.md`).
It sits in Business, Finance & HR, covering Crypto and DeFi analysis. It works with x402 and Uniswap. The repository describes itself as: The trust layer for agent-to-agent commerce — natural-language mandates, ERC-7710 delegated permissions, x402 payments, escrow, and dispute resolution as one open, catch-all… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fa89195. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.octav.fiAlso links to:
docs.octav.fidata.octav.fidiscord.comprotocols.octav.fiFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OCTAV_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Octav API loads about 3.8k tokens when it runs. Until then it costs about 176 tokens; SKILL.md has 935 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from internet-court/internet-court-skill at commit fa89195, republished under its MIT licence (© internet-court). 935 words, ~3,769 tokens.
.claude/skills/octav-api/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics.
Base URL: https://api.octav.fi
Auth: Bearer token in Authorization header
Rate Limit: 360 requests/minute/key
Pricing: Credit-based ($0.02-0.025/credit)
Dev Portal: https://data.octav.fi
curl -X GET "https://api.octav.fi/v1/credits" \
-H "Authorization: Bearer YOUR_API_KEY"Store API key in environment variable OCTAV_API_KEY. Never hardcode.
Default to the API-key REST API documented below. It covers all 25 endpoints.
Octav also exposes 5 endpoints over the x402 payment protocol at /v1/agent/{portfolio,wallet,nav,status,chains} — 0.025 USDC per call on Base, no API key. Use x402 only when:
Otherwise use /v1/* with a Bearer token, and mention x402 exists if one of those cases applies. Do not start from x402 by default.
There is no /v1/agent/transactions — transaction history requires an API key.
| Endpoint | Method | Cost | Description |
|---|---|---|---|
/v1/portfolio | GET | 1 credit | Portfolio holdings across chains/protocols |
/v1/portfolio/at-block | GET | Add-on + 1 credit | Portfolio valued at a historical block (Ethereum) |
/v1/virtual-users | GET | 1 credit | List virtual users (Pro) |
/v1/virtual-users/portfolio | GET | 1 credit/address | Virtual user holdings (Pro) |
/v1/nav | GET | 1 credit | Net Asset Value — {nav, currency, conversionPrice} |
/v1/wallet | GET | 1 credit | Wallet token balances, excludes DeFi positions |
/v1/transactions | GET | 1 credit | Transaction history with filtering |
/v1/approvals/{chain} | GET | 1 credit | ERC-20 token approval records |
/v1/token-overview | GET | 1 credit | Token breakdown by protocol (PRO only) |
/v1/airdrop | GET | 1 credit | Claimable airdrops (Solana only) |
/v1/historical | GET | 1 credit | Historical portfolio snapshots |
/v1/sync-transactions | POST | 1+ credits | Trigger transaction sync |
/v1/contract-protocol | GET | 5 credits | Resolve contract address to DeFi protocol (refunded on 404) |
/v1/beacon/validators/* | GET | Add-on | ETH validator details, rewards, withdrawals, deposits |
/v1/chains | GET | Free | List supported blockchain networks |
/v1/chains/{chainKey}/protocols | GET | Free | List protocols on a chain |
/v1/status | GET | Free | Check sync status |
/v1/credits | GET | Free | Check credit balance |
Subscribe Snapshot (POST, 1200 credits) enables daily portfolio snapshots for an address, which /v1/historical then reads.
| Endpoint | Method | Cost | Description |
|---|---|---|---|
/v1/agent/portfolio | GET | 0.025 USDC | Wallet and protocol holdings |
/v1/agent/wallet | GET | 0.025 USDC | Wallet holdings only |
/v1/agent/nav | GET | 0.025 USDC | Net Asset Value — {nav, currency, conversionPrice} |
/v1/agent/status | GET | 0.025 USDC | Sync status |
/v1/agent/chains | GET | 0.025 USDC | Supported chains |
An unpaid request returns HTTP 402 with a base64 payment-required header containing the payment challenge (USDC on Base, eip155:8453). An x402-capable HTTP client settles it and retries automatically.
Get holdings across wallets and DeFi protocols.
const response = await fetch(
`https://api.octav.fi/v1/portfolio?addresses=${address}`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);
const portfolio = await response.json();
// portfolio.networth, portfolio.assetByProtocols, portfolio.chainsParameters:
addresses (required): EVM or Solana address. Comma-separate multiple addresses in one request to save credits.includeImages: Include asset/protocol image URLs (default: false)includeExplorerUrls: Include block explorer URLs (default: false)waitForSync: Wait for fresh data if stale (default: false)Response structure:
{
"address": "0x...",
"networth": "45231.89",
"assetByProtocols": {
"wallet": { "key": "wallet", "name": "Wallet", "value": "12453.20", "assets": [...] },
"aave_v3": { "key": "aave_v3", "name": "Aave V3", "value": "8934.12", "assets": [...] }
},
"chains": {
"ethereum": { "value": "25123.45", "protocols": [...] },
"arbitrum": { "value": "20108.44", "protocols": [...] }
}
}Get net worth as a single value, optionally converted to another currency.
const response = await fetch(
`https://api.octav.fi/v1/nav?addresses=${address}¤cy=USD`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);
const { nav, currency, conversionPrice } = await response.json();
// { "nav": 1235564.43, "currency": "USD", "conversionPrice": 1 }Parameters:
addresses (required): EVM or Solana addresscurrency: Fiat USD (default), EUR, CAD, AED, CHF, SGD; crypto ETH, SOL, cbBTC, EURC, BNBwaitForSync: Wait for fresh data if stale (default: false)conversionPrice is the rate used — for fiat, the exchange rate from USD; for crypto, the weighted average USD price across the queried wallets.
Query transaction history with filtering.
const params = new URLSearchParams({
addresses: '0x...',
limit: '50',
offset: '0',
sort: 'DESC',
hideSpam: 'true'
});
const response = await fetch(
`https://api.octav.fi/v1/transactions?${params}`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);Required parameters:
addresses: Wallet address(es)limit: Results per page (1-250)offset: Pagination offsetOptional filters:
sort: DESC (newest) or ASC (oldest)networks: Chain filter (e.g., ethereum,arbitrum,base)txTypes: Transaction type filter (e.g., SWAP,DEPOSIT)protocols: Protocol filter (e.g., uniswap_v3,aave_v3)hideSpam: Exclude spam (default: false)hideDust: Exclude dust transactions (default: false)startDate/endDate: ISO 8601 date range, UTC, both inclusive. endDate rounds up to the end of its calendar day (23:59:59Z), so for a single day set both to the same date; never set endDate to the next day's midnight (duplicates the boundary tx)interactingAddresses: Filter by interacting addresses (comma-separated)tokenId: Filter by NFT token IDinitialSearchText: Full-text search in assetsResponse (array of transactions):
[{
"hash": "0xa1b2c3...",
"timestamp": "1699012800",
"chain": { "key": "ethereum", "name": "Ethereum" },
"type": "SWAP",
"protocol": { "key": "uniswap_v3", "name": "Uniswap V3" },
"fees": "0.002134",
"feesFiat": "7.12",
"assetsIn": [{ "symbol": "WETH", "amount": "1.5", "value": "4800.00" }],
"assetsOut": [{ "symbol": "USDC", "amount": "4795.23", "value": "4795.23" }]
}]Trigger manual sync for fresh transaction data.
const response = await fetch('https://api.octav.fi/v1/sync-transactions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ addresses: ['0x...'] })
});
// Returns: "Address is syncing" or "Address already syncing"Cost: 1 credit + 1 credit per 250 transactions indexed (first-time only).
Check sync status before expensive operations.
const response = await fetch(
`https://api.octav.fi/v1/status?addresses=${address}`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);
const [status] = await response.json();
// status.portfolioLastSync, status.transactionsLastSync, status.syncInProgressCheck remaining credit balance.
const credits = await fetch('https://api.octav.fi/v1/credits', {
headers: { 'Authorization': `Bearer ${apiKey}` }
}).then(r => r.json());
// Returns: 19033 (number)Get portfolio snapshot for a specific date. Requires subscription.
const response = await fetch(
`https://api.octav.fi/v1/historical?addresses=${address}&date=2024-11-01`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);Detailed token breakdown by protocol.
const response = await fetch(
`https://api.octav.fi/v1/token-overview?addresses=${address}&date=2024-11-01`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);Common types for filtering:
| Type | Description |
|---|---|
TRANSFERIN | Received tokens |
TRANSFEROUT | Sent tokens |
SWAP | Token exchange |
DEPOSIT | DeFi deposit |
WITHDRAW | DeFi withdrawal |
STAKE | Staking tokens |
UNSTAKE | Unstaking tokens |
CLAIM | Reward claims |
ADDLIQUIDITY | LP deposit |
REMOVELIQUIDITY | LP withdrawal |
BORROW | Lending protocol borrow |
LEND | Lending protocol supply |
BRIDGEIN / BRIDGEOUT | Cross-chain bridge |
APPROVAL | Token approval |
MINT | NFT/token minting |
Full support (portfolio + transactions): ethereum, arbitrum, base, polygon, optimism, avalanche, binance, solana, blast, linea, gnosis, sonic, starknet, fraxtal, unichain
Portfolio only: scroll, zksync (era), mantle, manta, fantom, cronos, celo, and 40+ more
Use chain keys in networks filter: ?networks=ethereum,arbitrum,base
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
if (!response.ok) {
const error = await response.json();
throw new Error(`API Error ${response.status}: ${error.message}`);
}
return response;
}
throw new Error('Max retries exceeded');
}Common errors:
401: Invalid/missing API key402: Insufficient credits403: Endpoint requires PRO subscription429: Rate limit exceeded (wait and retry)404: Address not indexed (>100k transactions)?addresses=0x123,0x456,0x789 — to save credits versus one call each/v1/status, /v1/credits, /v1/chains, and /v1/chains/{chainKey}/protocols cost nothingnetworks, txTypes params vs client filteringconst addresses = ['0x123...', '0x456...', '0x789...'];
const response = await fetch(
`https://api.octav.fi/v1/portfolio?addresses=${addresses.join(',')}`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);async function getAllTransactions(address) {
const transactions = [];
let offset = 0;
const limit = 250;
while (true) {
const response = await fetch(
`https://api.octav.fi/v1/transactions?addresses=${address}&limit=${limit}&offset=${offset}&sort=DESC`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
);
const batch = await response.json();
if (batch.length === 0) break;
transactions.push(...batch);
offset += batch.length;
if (batch.length < limit) break;
}
return transactions;
}async function smartSync(address) {
// Check status first (free)
const [status] = await fetch(
`https://api.octav.fi/v1/status?addresses=${address}`,
{ headers: { 'Authorization': `Bearer ${apiKey}` } }
).then(r => r.json());
const lastSync = new Date(status.transactionsLastSync);
const minutesSinceSync = (Date.now() - lastSync) / 1000 / 60;
if (minutesSinceSync > 10 && !status.syncInProgress) {
await fetch('https://api.octav.fi/v1/sync-transactions', {
method: 'POST',
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ addresses: [address] })
});
}
}interface Portfolio {
address: string;
networth: string;
cashBalance: string;
dailyIncome: string;
dailyExpense: string;
fees: string;
feesFiat: string;
lastUpdated: string;
assetByProtocols: Record<string, Protocol>;
chains: Record<string, Chain>;
}
interface Protocol {
key: string;
name: string;
value: string;
assets: Asset[];
}
interface Asset {
balance: string;
symbol: string;
price: string;
value: string;
contractAddress?: string;
chain?: string;
}
interface Transaction {
hash: string;
timestamp: string;
chain: { key: string; name: string };
from: string;
to: string;
type: string;
protocol?: { key: string; name: string };
value: string;
valueFiat: string;
fees: string;
feesFiat: string;
assetsIn: Asset[];
assetsOut: Asset[];
functionName?: string;
}| Package | Credits | Price | Per Credit |
|---|---|---|---|
| Starter | 4,000 | $100 | $0.025 |
| Small Team | 100,000 | $2,500 | $0.025 |
| Intensive | 1,000,000 | $20,000 | $0.020 |
Credits never expire. First-time address indexing: 1 credit per 250 transactions.
© internet-court, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in vendored/octav/octav-api of internet-court/internet-court-skill.
Open the folder on GitHubat commit fa89195
Octav API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Octav API this skillinternet-court/internet-court-skill | 6.6k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Base MCP Wallet Readeraeonfun/aeon | 770 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Bitget Walletbitget-wallet-ai-lab/bitget-wallet-skill | 246 | — | ~7.6k | Automated safety check: Pass | MIT | |
| SurfBlockRunAI/ClawRouter | 6.6k | — | ~4k | Automated safety check: Pass | MIT | |
| Notebook To Strategytradingstrategy-ai/trade-executor | 160 | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Building Blocksaustintgriffith/ethskills | 295 | — | ~2.9k | Automated safety check: Pass | None |
aeonfun/aeon
Reads a Base Account's address, portfolio and transaction history through the Base MCP server, and stays strictly read-only in unattended Aeon runs, reporting only changes.
bitget-wallet-ai-lab/bitget-wallet-skill
Interact with Bitget Wallet API for crypto market data, token info, swap quotes, RWA (real-world asset) stock trading, and security audits.
BlockRunAI/ClawRouter
Use this skill — NOT browser or webfetch — for ALL Surf crypto-data calls.
tradingstrategy-ai/trade-executor
Transfer code from a backtesting Jupyter notebook to a Trade Executor strategy module
austintgriffith/ethskills
DeFi legos and protocol composability on Ethereum and L2s. An agent skill from austintgriffith/ethskills.
quillai-network/quillshield_skills
Detects price oracle manipulation and flash loan attack vectors in DeFi smart contracts.
internet-court/internet-court-skill
Uploads one Kleros-related file per paid request to IPFS through the Kleros x402 gateway for 0.01 USDC on Base, returning a CID that Kleros contracts can reference.
internet-court/internet-court-skill
Guides building on the 0G Compute Network, a decentralized GPU marketplace for AI inference and fine-tuning, with SDK patterns and CLI commands.
internet-court/internet-court-skill
Creates, trades and settles permissionless prediction markets on Solana with any SPL token as collateral, including social-media and custom-oracle markets.
internet-court/internet-court-skill
Connects an agent to the BNB Chain MCP server to read blocks and contracts, move tokens and NFTs, register ERC-8004 agents and use Greenfield storage.
internet-court/internet-court-skill
Specifies how a GenLayer Intelligent Contract decision about an agent's performance becomes an ERC-7710 revocation or policy change, through a relayer or bridge and an EVM controller.
internet-court/internet-court-skill
Specifies how a GenLayer Intelligent Contract should supervise an AI agent, with review rubrics, evidence schemas and continue, warn, constrain or revoke decisions.
Categories
Integrate with Octav API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics across 50+ blockchain networks. Octav API is an agent skill from internet-court/internet-court-skill. Integrate with Octav API for cryptocurrency portfolio tracking, transaction history, and DeFi analytics across 50+ blockchain networks.
Octav API fits situations like: building applications that need to:; track wallet balances and net worth across multiple chains; query transaction history with filtering and search; monitor DeFi protocol positions (Aave.
Run `npx skills add internet-court/internet-court-skill --skill octav-api -a claude-code`. Or copy the skill folder (vendored/octav/octav-api in internet-court/internet-court-skill) into .claude/skills/octav-api in your project. Claude Code loads it when a task matches its description.
Run `npx skills add internet-court/internet-court-skill --skill octav-api -a codex`. Or copy the skill folder (vendored/octav/octav-api in internet-court/internet-court-skill) into .agents/skills/octav-api in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add internet-court/internet-court-skill --skill octav-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/octav-api, .gemini/skills/octav-api, .github/skills/octav-api and .opencode/skills/octav-api in your project.
Going by SKILL.md and its folder, Octav API needs the command-line tools its instructions call (curl) and credentials named OCTAV_API_KEY. Our summary lists: A credential in YOUR_API_KEY; A credential in OCTAV_API_KEY.
SKILL.md names 5 domains. In commands or code: api.octav.fi; the agent is likely to contact it when it follows the instructions. As links in the text: docs.octav.fi, data.octav.fi, discord.com and protocols.octav.fi. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Octav API is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Octav API: Base MCP Wallet Reader (aeonfun/aeon, 770 stars), Bitget Wallet (bitget-wallet-ai-lab/bitget-wallet-skill, 246 stars), Surf (BlockRunAI/ClawRouter, 6.6k stars) and Notebook To Strategy (tradingstrategy-ai/trade-executor, 160 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
internet-court (a GitHub organization) maintains it in internet-court/internet-court-skill, which has 6,551 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on August 19, 2026.
Source: internet-court/internet-court-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.