Capacitr
majiayu000/claude-skill-registry
Paste a URL or free text and get matched Polymarket / Hyperliquid / Deribit markets with Quotient edge scores.
Real-time smart money analytics API for Polymarket prediction markets, Hyperliquid perpetual futures, and Meteora Solana LP/AMM pools.
$ npx skills add internet-court/internet-court-skill --skill metengine-data-agent -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install internet-court/internet-court-skill metengine-data-agent --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/sendaifun/metengine .claude/skills/metengine-data-agent && 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 "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .claude/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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/sendaifun/metengineType 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 metengine-data-agent -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install internet-court/internet-court-skill metengine-data-agent --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/sendaifun/metengine .agents/skills/metengine-data-agent && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .agents/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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 metengine-data-agent -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install internet-court/internet-court-skill metengine-data-agent --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/sendaifun/metengine .cursor/skills/metengine-data-agent && 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 "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .cursor/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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/sendaifun/metengine--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 metengine-data-agent -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install internet-court/internet-court-skill metengine-data-agent --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/sendaifun/metengine .gemini/skills/metengine-data-agent && 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 "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .gemini/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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 metengine-data-agentInstalls 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 metengine-data-agent -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/sendaifun/metengine .github/skills/metengine-data-agent && 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 "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .github/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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 metengine-data-agent -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 metengine-data-agent --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/sendaifun/metengine .opencode/skills/metengine-data-agent && 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 "metengine-data-agent" agent skill from https://github.com/internet-court/internet-court-skill/tree/main/vendored/sendaifun/metengine into .opencode/skills/metengine-data-agent/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "metengine-data-agent", 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.
metengine-data-agentReal-time smart money analytics API for Polymarket prediction markets, Hyperliquid perpetual futures, and Meteora Solana LP/AMM pools.
Metengine Data Agent is an agent skill from internet-court/internet-court-skill. Real-time smart money analytics API for Polymarket prediction markets, Hyperliquid perpetual futures, and Meteora Solana LP/AMM pools. 63 endpoints. Pay-per-request via x402 on Solana Mainnet USDC. No API keys.
Its SKILL.md is about 19k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.
It sits in Backend & APIs. It works with Solana, x402, Circle USDC and Hyperliquid. 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 Apache-2.0.
12 steps, taken from the step headings 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:
curlbunFrom 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:
agent.metengine.xyzmetengine.xyzFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SOLANA_PRIVATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Metengine Data Agent loads about 19k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 4,702 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 Apache-2.0 licence (© internet-court). 4,702 words, ~18,588 tokens.
.claude/skills/metengine-data-agent/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Real-time smart money analytics across Polymarket, Hyperliquid, and Meteora. 63 endpoints covering wallet scoring, insider detection, capital flow tracking, and position analysis. Pay per request with USDC on Solana -- no API keys, no accounts, no onboarding friction.
0x61276aba49117fd9299707d5d573652949d5c977, not 0x6127...c977).This skill file may change as new endpoints are added or pricing updates. Keep it fresh by downloading the latest version weekly.
Download the latest skill file:
curl -sL https://www.metengine.xyz/skill.md -o ~/.claude/agents/metengine-data-agent.mdAutomate weekly updates (cron):
# Add to crontab: crontab -e
0 0 * * 0 curl -sL https://www.metengine.xyz/skill.md -o ~/.claude/agents/metengine-data-agent.md 2>/dev/nullCheck skill version before querying (optional):
# Compare local vs remote version
LOCAL_VER=$(grep '^version:' ~/.claude/agents/metengine-data-agent.md | head -1 | tr -d '"' | awk '{print $2}')
REMOTE_VER=$(curl -sL https://www.metengine.xyz/skill.md | grep '^version:' | head -1 | tr -d '"' | awk '{print $2}')
[ "$LOCAL_VER" != "$REMOTE_VER" ] && curl -sL https://www.metengine.xyz/skill.md -o ~/.claude/agents/metengine-data-agent.mdAgents SHOULD check for updates at the start of a new session if more than 7 days have passed since the last update.
Before making ANY API call, check for a memory file at:
~/.claude/agents/metengine-memory.mdThis file persists across sessions and stores everything needed to skip setup and make faster queries. If the memory file exists, read it first. It will tell you:
@x402/core, @x402/svm, @solana/kit are already installed and whereCreate or update ~/.claude/agents/metengine-memory.md using this template:
# MetEngine Session Memory
<!-- Auto-maintained by agents. Do not delete. -->
## Last Updated
YYYY-MM-DD HH:MM UTC
## Skill Version
<version from frontmatter>
## Wallet
- keypair_path: ~/.config/solana/id.json
- public_address: <base58 pubkey -- NEVER store the private key>
- sol_balance_ok: true/false
- usdc_balance_ok: true/false
- last_balance_check: YYYY-MM-DD
## Packages
- installed: true/false
- install_dir: <path where bun add was run>
- packages: @x402/core, @x402/svm, @solana/kit
- bun_version: <version>
## Client Bootstrap
<!-- Paste the minimal working paidFetch setup here after first successful call -->
```typescript
// <paste the one-time setup + paidFetch function that worked><!-- Append after each session. Keep the last 10 entries. -->
| Date | Endpoint | Status | Latency | USDC Cost | Notes |
|---|
<!-- Record which fallbacks were needed -->
| Endpoint | Issue | Fallback Used |
|---|
<!-- Record runtime surprises so future sessions avoid them -->
### Memory Update Rules
Agents MUST update the memory file:
1. **After first successful setup** -- Record wallet path, public address, installed packages, working bootstrap code
2. **After every API call** -- Append to Endpoint History (keep last 10 rows, prune older)
3. **When a fallback is used** -- Record in Fallbacks Learned
4. **When a new quirk is discovered** -- Record in Quirks Encountered
5. **At session end** -- Update `Last Updated` timestamp
### How Memory Saves Tokens
| Without Memory | With Memory | Token Savings |
|---------------|-------------|---------------|
| Read full skill file (2400 lines) to find setup instructions | Skip to Client Bootstrap section | ~80% fewer setup tokens |
| Trial-and-error wallet detection | Read wallet path from memory | ~500 tokens saved |
| Install packages every session | Check `installed: true`, skip | ~200 tokens saved |
| Hit known-broken endpoint, get 504, try fallback | Check Fallbacks Learned, use fallback directly | ~1000 tokens saved per avoided failure |
| Re-discover quirks through errors | Check Quirks Encountered | ~300 tokens saved per quirk |
### Quick Start for Returning Agents
If `~/.claude/agents/metengine-memory.md` exists:
**First-time agents:** Follow the Onboarding Path below, then create the memory file.
### Wallet Security Rules
- **NEVER** read, log, print, or display the contents of any keypair file
- **NEVER** store private keys in the memory file
- **ONLY** store the file path and the public address
- Load the keypair at runtime using `Bun.file(path).text()` or `fs.readFileSync(path)` -- pipe directly into the signer, never into a variable that gets logged
---
## Onboarding Path
Two steps from zero to data:
**Step 1: Verify service is live (free)**GET https://agent.metengine.xyz/health
**Step 2: Make a paid request**GET https://agent.metengine.xyz/api/v1/markets/trending?timeframe=24h&limit=5
First call returns `402` with price. Sign payment. Re-send with `PAYMENT-SIGNATURE` header. Receive `200` with data + settlement proof.
Prerequisites: A Solana wallet with SOL (for tx fees) and USDC (for payments). Install `@x402/core`, `@x402/svm`, `@solana/kit`.
---
## Payment Protocol: x402 on Solana Mainnet
Every paid endpoint uses a two-step handshake. No API keys. No accounts. Payment IS authentication.
### Flow
Agent MetEngine Solana | | | |-- GET /api/v1/endpoint ------>| | |<-- 402 + PaymentRequired -----| | | | | | [sign payment locally] | | | | | |-- GET + PAYMENT-SIGNATURE --->| | | |-- verify ------------------>| | |<-- valid -------------------| | | | | | [execute query] | | | | | |-- settle ------------------>| | |<-- tx hash -----------------| |<-- 200 + data + PAYMENT- -----| | | RESPONSE (settlement) | |
### Important: Settle-After-Execute
If the query fails (timeout, server error), no payment is settled. The agent keeps their funds. This is enforced server-side. Only successful `2xx` responses trigger settlement.
### Headers
| Header | Direction | Description |
|--------|-----------|-------------|
| `PAYMENT-REQUIRED` | Response (402) | Encoded payment requirements |
| `X-PAYMENT-REQUIRED` | Response (402) | Duplicate of above for compatibility |
| `PAYMENT-SIGNATURE` | Request | Signed payment payload |
| `X-PAYMENT` | Request | Alternate payment header name |
| `PAYMENT-RESPONSE` | Response (200) | Settlement proof with tx hash |
| `X-PAYMENT-RESPONSE` | Response (200) | Duplicate of above for compatibility |
### Client Implementation (TypeScript/Bun)
```typescript
import { x402Client, x402HTTPClient } from "@x402/core/client";
import { registerExactSvmScheme } from "@x402/svm/exact/client";
import { toClientSvmSigner } from "@x402/svm";
import { getBase58Encoder, createKeyPairSignerFromBytes } from "@solana/kit";
import type { PaymentRequired, SettleResponse } from "@x402/core/types";
// --- One-time setup ---
const bytes = getBase58Encoder().encode(process.env.SOLANA_PRIVATE_KEY!);
const signer = await createKeyPairSignerFromBytes(bytes);
const client = new x402Client();
registerExactSvmScheme(client, { signer: toClientSvmSigner(signer) });
const httpClient = new x402HTTPClient(client);
// --- Reusable paid fetch ---
const BASE_URL = "https://agent.metengine.xyz";
async function paidFetch(
path: string,
options?: { method?: string; body?: Record<string, unknown> },
): Promise<{ data: unknown; settlement: SettleResponse; price: number }> {
const method = options?.method ?? "GET";
const url = `${BASE_URL}${path}`;
const fetchOpts: RequestInit = { method };
if (options?.body) {
fetchOpts.headers = { "Content-Type": "application/json" };
fetchOpts.body = JSON.stringify(options.body);
}
// Step 1: Get 402 with price
const initial = await fetch(url, fetchOpts);
if (initial.status !== 402) throw new Error(`Expected 402, got ${initial.status}`);
const body = await initial.json();
// Step 2: Parse payment requirements
const paymentRequired: PaymentRequired = httpClient.getPaymentRequiredResponse(
(name) => initial.headers.get(name), body,
);
const price = Number(paymentRequired.accepts[0]!.amount);
// Step 3: Sign payment
const paymentPayload = await httpClient.createPaymentPayload(paymentRequired);
const paymentHeaders = httpClient.encodePaymentSignatureHeader(paymentPayload);
// Step 4: Re-send with payment
const paid = await fetch(url, {
...fetchOpts,
headers: { ...fetchOpts.headers as Record<string, string>, ...paymentHeaders },
});
if (paid.status !== 200) {
const err = await paid.json();
throw new Error(`Payment failed (${paid.status}): ${JSON.stringify(err)}`);
}
const paidBody = (await paid.json()) as { data: unknown };
// Step 5: Extract settlement proof
const settlement = httpClient.getPaymentSettleResponse(
(name) => paid.headers.get(name),
);
return { data: paidBody.data, settlement, price };
}// GET endpoint
const { data, price } = await paidFetch("/api/v1/markets/trending?timeframe=24h&limit=5");
console.log(`Paid $${price} USDC. Got ${(data as any[]).length} markets.`);
// POST endpoint
const { data: intel } = await paidFetch("/api/v1/markets/intelligence", {
method: "POST",
body: { condition_id: "0xabc123...", top_n_wallets: 10 },
});bun add @x402/core @x402/svm @solana/kitAll prices are in USDC on Solana Mainnet. Pricing is dynamic based on endpoint tier, timeframe, limit, and filter usage.
| Tier | Base Cost (USDC) | Description |
|---|---|---|
| light | $0.01 | Simple lookups, searches, feeds |
| medium | $0.02 | Aggregated analytics, trending data |
| heavy | $0.05 | Computed intelligence, leaderboards, scoring |
| whale | $0.08 | Multi-entity comparisons, complex scans |
Timeframe multiplier (applied to base cost):
| Timeframe | Multiplier |
|---|---|
| 1h | 0.5x |
| 4h | 0.7x |
| 12h | 0.9x |
| 24h / today | 1.0x |
| 7d | 2.0x |
| 30d | 3.0x |
| 90d | 4.0x |
| 365d / all | 5.0x |
Limit multiplier: price *= max(1, requested_limit / default_limit)
Filter discounts (reduce scan cost):
| Filter | Discount | Applicable Endpoints |
|---|---|---|
| category | 0.7x | trending, top-performers, whales, capital-flow, high-conviction, opportunities |
| condition_id | 0.5x | whales, sentiment, participants, wallet activity |
| smart_money_only=true | 0.7x | whales, capital-flow, volume-heatmap (Polymarket + HL) |
| coin/coins | 0.7x | HL whales, long-short-ratio, pressure/pairs |
| pool_type (not "all") | 0.7x | All Meteora endpoints with pool_type param |
| pool_address | 0.5x | pool detail, volume-history, events, fee-analysis, positions/active |
Special rules:
wallets/compare: price *= wallets.length / 2hl/traders/compare: price *= traders.length / 2meteora/lps/compare: price *= owners.length / 2wallets/profile: both includes=1.0x, one include=0.7x, neither=0.4xwallets/top-performers without category: 2.0x penaltyHard caps:
/api/v1/markets/opportunities: max $0.15/api/v1/wallets/copy-traders: max $0.12Global bounds: Floor $0.01, Ceiling $0.20 per request.
GET https://agent.metengine.xyz/api/v1/pricingReturns the full pricing schedule as JSON including all tiers, routes, multipliers, discounts, and special rules. Free endpoint. No payment required.
| # | Method | Path | Tier | Description |
|---|---|---|---|---|
| 1 | GET | /api/v1/markets/trending | medium | Trending markets with volume spikes |
| 2 | GET | /api/v1/markets/search | light | Search markets by keyword, category, status, or Polymarket URL |
| 3 | GET | /api/v1/markets/categories | light | All categories with activity stats |
| 4 | GET | /api/v1/platform/stats | light | Platform-wide aggregate stats |
| 5 | POST | /api/v1/markets/intelligence | heavy | Full smart money intelligence report for a market |
| 6 | GET | /api/v1/markets/price-history | light | OHLCV price/probability time series |
| 7 | POST | /api/v1/markets/sentiment | medium | Sentiment time series with smart money overlay |
| 8 | POST | /api/v1/markets/participants | medium | Participant summary by scoring tier |
| 9 | POST | /api/v1/markets/insiders | heavy | Insider pattern detection (7-signal behavioral scoring) |
| 10 | GET | /api/v1/markets/trades | light | Chronological trade feed for a market |
| 11 | GET | /api/v1/markets/similar | whale | Related markets by wallet overlap |
| 12 | GET | /api/v1/markets/opportunities | whale | Markets where smart money disagrees with price |
| 13 | GET | /api/v1/markets/high-conviction | heavy | High-conviction smart money bets |
| 14 | GET | /api/v1/markets/capital-flow | medium | Capital flow by category (sector rotation) |
| 15 | GET | /api/v1/trades/whales | medium | Large whale trades |
| 16 | GET | /api/v1/markets/volume-heatmap | medium | Volume distribution across categories/hours/days |
| 17 | POST | /api/v1/wallets/profile | heavy | Full wallet dossier with score, positions, trades |
| 18 | POST | /api/v1/wallets/activity | medium | Recent trading activity for a wallet |
| 19 | POST | /api/v1/wallets/pnl-breakdown | medium | Per-market PnL breakdown |
| 20 | POST | /api/v1/wallets/compare | whale | Compare 2-5 wallets side-by-side |
| 21 | POST | /api/v1/wallets/copy-traders | whale | Detect wallets copying a target wallet |
| 22 | GET | /api/v1/wallets/top-performers | heavy | Leaderboard by PnL, ROI, Sharpe, win rate, volume |
| 23 | GET | /api/v1/wallets/niche-experts | heavy | Top wallets in a specific category |
| 24 | GET | /api/v1/markets/resolutions | light | Resolved markets with smart money accuracy |
| 25 | GET | /api/v1/wallets/alpha-callers | heavy | Wallets that trade early on later-trending markets |
| 26 | GET | /api/v1/markets/dumb-money | medium | Low-score trader positions (contrarian indicator) |
| 27 | GET | /api/v1/wallets/insiders | heavy | Global insider candidates by behavioral score |
| # | Method | Path | Tier | Description |
|---|---|---|---|---|
| 28 | GET | /api/v1/hl/platform/stats | light | Platform aggregate stats |
| 29 | GET | /api/v1/hl/coins/trending | medium | Trending coins by activity |
| 30 | GET | /api/v1/hl/coins/list | light | All traded coins with 7d stats |
| 31 | GET | /api/v1/hl/coins/volume-heatmap | medium | Volume by coin and hour |
| 32 | GET | /api/v1/hl/traders/leaderboard | heavy | Ranked trader leaderboard |
| 33 | POST | /api/v1/hl/traders/profile | heavy | Full trader dossier |
| 34 | POST | /api/v1/hl/traders/compare | whale | Compare 2-5 traders |
| 35 | GET | /api/v1/hl/traders/daily-pnl | medium | Daily PnL time series with streaks |
| 36 | POST | /api/v1/hl/traders/pnl-by-coin | medium | Per-coin PnL breakdown (closed PnL only) |
| 37 | GET | /api/v1/hl/traders/fresh-whales | heavy | New high-volume wallets |
| 38 | GET | /api/v1/hl/trades/whales | medium | Large trades |
| 39 | GET | /api/v1/hl/trades/feed | light | Chronological trade feed for a coin |
| 40 | GET | /api/v1/hl/trades/long-short-ratio | medium | Long/short volume ratio time series |
| 41 | GET | /api/v1/hl/smart-wallets/list | light | Smart wallet list with scores |
| 42 | GET | /api/v1/hl/smart-wallets/activity | medium | Smart wallet recent trades |
| 43 | GET | /api/v1/hl/smart-wallets/signals | heavy | Aggregated directional signals by coin |
| 44 | GET | /api/v1/hl/pressure/pairs | heavy | Long/short pressure with smart positions |
| 45 | GET | /api/v1/hl/pressure/summary | medium | Pressure summary across all coins |
| # | Method | Path | Tier | Description |
|---|---|---|---|---|
| 46 | GET | /api/v1/meteora/pools/trending | medium | Trending pools by volume spike |
| 47 | GET | /api/v1/meteora/pools/top | medium | Top pools by volume, fees, or LP count |
| 48 | GET | /api/v1/meteora/pools/search | light | Search pools by address or token name |
| 49 | GET | /api/v1/meteora/pools/detail | medium | Full pool detail |
| 50 | GET | /api/v1/meteora/pools/volume-history | light | Volume time series |
| 51 | GET | /api/v1/meteora/pools/events | light | Chronological event feed |
| 52 | GET | /api/v1/meteora/pools/fee-analysis | medium | Fee claiming analysis |
| 53 | GET | /api/v1/meteora/lps/top | heavy | Top LPs leaderboard |
| 54 | POST | /api/v1/meteora/lps/profile | heavy | Full LP dossier |
| 55 | GET | /api/v1/meteora/lps/whales | medium | Large LP events |
| 56 | POST | /api/v1/meteora/lps/compare | whale | Compare 2-5 LPs |
| 57 | GET | /api/v1/meteora/positions/active | medium | Active LP positions |
| 58 | GET | /api/v1/meteora/positions/history | light | Position event history (DLMM only) |
| 59 | GET | /api/v1/meteora/platform/stats | light | Platform-wide stats |
| 60 | GET | /api/v1/meteora/platform/volume-heatmap | medium | Volume by action/hour |
| 61 | GET | /api/v1/meteora/platform/metengine-share | light | MetEngine routing share |
| 62 | GET | /api/v1/meteora/dca/pressure | medium | DCA accumulation pressure by token |
| 63 | GET | /api/v1/meteora/pools/smart-wallet | heavy | Pools with highest smart wallet LP activity |
All 200 responses use the format: { "data": <payload> }
All error responses use: { "error": "<message>" } with optional "reason" field.
Trending markets with volume spikes.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d | no |
| category | string | - | any valid category | no |
| sort_by | string | volume_spike | volume_spike, trade_count, smart_money_inflow | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"period_volume_usdc": "number",
"period_trade_count": "number",
"volume_spike_multiplier": "number",
"smart_money_wallets_active": "number",
"smart_money_net_direction": "string",
"buy_sell_ratio": "number",
"leader_price": "number"
}
]
}Search markets by keyword, category, status. Accepts Polymarket URLs as the query param.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| query | string | - | keyword or Polymarket URL | no |
| category | string | - | any valid category | no |
| status | string | active | active, closing_soon, resolved | no |
| has_smart_money_signal | boolean | - | true, false | no |
| sort_by | string | relevance | end_date, volume, relevance | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"end_date": "string (ISO 8601)",
"status": "string",
"total_volume_usdc": "number",
"smart_money_outcome": "string | null",
"smart_money_wallets": "number",
"has_contrarian_signal": "boolean",
"leader_price": "number"
}
]
}List all categories with activity stats.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| include_stats | boolean | true | true, false | no |
| timeframe | string | 24h | 24h, 7d | no |
Response schema:
{
"data": [
{
"name": "string",
"active_markets": "number",
"period_volume": "number",
"period_trades": "number",
"unique_traders": "number"
}
]
}Platform-wide aggregate stats.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 24h, 7d, 30d | no |
Response schema:
{
"data": {
"timeframe": "string",
"total_volume_usdc": "number",
"total_trades": "number",
"active_traders": "number",
"active_markets": "number",
"resolved_markets": "number",
"smart_wallet_count": "number",
"avg_trade_size_usdc": "number"
}
}Full smart money intelligence report on a specific market.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| top_n_wallets | integer | 10 | 1-50 | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"category": "string",
"end_date": "string",
"outcomes": "object",
"smart_money": {
"consensus_outcome": "string",
"consensus_strength": "number",
"by_outcome": {
"<outcome_name>": {
"wallet_count": "number",
"total_usdc": "number",
"percentage": "number",
"top_wallets": [
{
"wallet": "string",
"score": "number",
"tags": ["string"],
"usdc_invested": "number",
"net_position": "number",
"avg_buy_price": "number"
}
]
}
}
},
"dumb_money": {
"consensus_outcome": "string",
"contrarian_to_smart": "boolean",
"by_outcome": "object"
},
"signal_analysis": {
"smart_vs_price_aligned": "boolean",
"contrarian_signal": "boolean",
"signal_summary": "string"
},
"recent_activity": {
"volume_24h": "number",
"trade_count_24h": "number",
"buy_sell_ratio": "number",
"volume_trend": "string"
}
}
}OHLCV price/probability time series.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| timeframe | string | 7d | 1h, 4h, 12h, 24h, 7d, 30d | no |
| bucket_size | string | 1h | 5m, 15m, 1h, 4h, 12h, 1d | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"category": "string",
"candles_by_outcome": {
"<outcome_name>": [
{
"bucket": "string (ISO 8601)",
"token_id": "string",
"outcome": "string",
"open": "number",
"high": "number",
"low": "number",
"close": "number",
"volume": "number",
"trade_count": "number",
"vwap": "number"
}
]
}
}
}Sentiment time series with smart money overlay.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| timeframe | string | 7d | 24h, 7d, 30d | no |
| bucket_size | string | 4h | 1h, 4h, 12h, 1d | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"overall_sentiment": "object",
"by_outcome": "object",
"time_series": "array",
"momentum": "object"
}
}Participant summary by scoring tier.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"total_wallets": "number",
"total_usdc": "number",
"by_outcome": "object",
"tier_distribution": "object"
}
}Insider pattern detection using 7-signal behavioral scoring.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| limit | integer | 25 | 1-100 | no |
| min_score | integer | 20 | 0-100 | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"category": "string",
"insiders": [
{
"wallet": "string",
"insider_score": "number",
"signals": "object",
"outcome": "string",
"net_shares": "number",
"buy_usdc": "number",
"wallet_age_days": "number",
"first_trade_timestamp": "string"
}
],
"summary": "object"
}
}Chronological trade feed for a market.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d, 30d | no |
| side | string | - | BUY, SELL | no |
| min_usdc | number | 0 | >= 0 | no |
| smart_money_only | boolean | false | true, false | no |
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"category": "string",
"trade_count": "number",
"total_volume": "number",
"trades": [
{
"tx_hash": "string",
"wallet": "string",
"token_id": "string",
"outcome": "string",
"side": "string",
"price": "number",
"size": "number",
"usdc_size": "number",
"timestamp": "string",
"wallet_score": "number",
"wallet_tags": ["string"]
}
]
}
}Related markets by wallet overlap.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| limit | integer | 10 | 1-50 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"shared_wallet_count": "number",
"wallet_overlap_pct": "number",
"total_volume_usdc": "number"
}
]
}Markets where smart money disagrees with price.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| min_signal_strength | string | moderate | weak, moderate, strong | no |
| category | string | - | any valid category | no |
| closing_within_hours | integer | - | max 720 | no |
| min_smart_wallets | integer | 3 | >= 1 | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"smart_money_favors": "string",
"smart_money_percentage": "number",
"smart_wallet_count": "number",
"avg_smart_score": "number",
"price_signal_gap": "number",
"signal_direction": "string",
"signal_strength": "string",
"leader_price": "number",
"time_until_close": "string"
}
]
}High-conviction smart money bets.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| category | string | - | any valid category | no |
| min_smart_wallets | integer | 5 | >= 1 | no |
| min_avg_score | integer | 65 | 0-100 | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"smart_wallet_count": "number",
"avg_smart_score": "number",
"total_smart_usdc": "number",
"conviction_score": "number",
"favored_outcome": "string",
"favored_outcome_percentage": "number",
"entry_vs_current_gap": "number"
}
]
}Capital flow by category (sector rotation).
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 7d | 24h, 7d, 30d | no |
| smart_money_only | boolean | false | true, false | no |
| top_n_categories | integer | 20 | 1-50 | no |
Response schema:
{
"data": {
"timeframe": "string",
"total_net_flow": "number",
"categories": [
{
"category": "string",
"current_buy_volume": "number",
"current_sell_volume": "number",
"current_net_flow": "number",
"previous_buy_volume": "number",
"previous_sell_volume": "number",
"previous_net_flow": "number",
"net_flow_change": "number",
"flow_trend": "string"
}
],
"biggest_inflow": "string",
"biggest_outflow": "string"
}
}Large whale trades.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| min_usdc | number | 10000 | >= 1 | no |
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d, 30d | no |
| condition_id | string | - | - | no |
| category | string | - | any valid category | no |
| side | string | - | BUY, SELL | no |
| smart_money_only | boolean | false | true, false | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": [
{
"tx_hash": "string",
"wallet": "string",
"condition_id": "string",
"token_id": "string",
"question": "string",
"outcome": "string",
"category": "string",
"side": "string",
"price": "number",
"size": "number",
"usdc_size": "number",
"timestamp": "string",
"wallet_score": "number",
"win_rate": "number",
"wallet_tags": ["string"]
}
]
}Note: This endpoint returns REDEEM trades (resolved market payouts) alongside real trades. Filter by side=BUY or side=SELL to exclude them. REDEEMs have price=1.00 and side=REDEEM.
Volume distribution across categories, hours, or days.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 24h, 7d, 30d | no |
| group_by | string | category | category, hour_of_day, day_of_week | no |
| smart_money_only | boolean | false | true, false | no |
Response schema:
{
"data": {
"total_volume": "number",
"total_trades": "number",
"breakdown": [
{
"label": "string",
"volume": "number",
"trade_count": "number",
"pct_of_total": "number",
"volume_change_pct": "number",
"trend": "string"
}
],
"biggest_gainer": "string",
"biggest_loser": "string"
}
}Full wallet dossier.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| wallet | string | - | lowercase address | yes |
| include_positions | boolean | true | true, false | no |
| include_trades | boolean | true | true, false | no |
| trades_limit | integer | 50 | 1-500 | no |
Response schema:
{
"data": {
"wallet": "string",
"profile": {
"score": "number",
"sharpe": "number",
"win_rate": "number",
"total_pnl": "number",
"total_volume": "number",
"resolved_positions": "number",
"tags": ["string"],
"tier": "string",
"primary_category": "string",
"is_specialist": "boolean"
},
"category_breakdown": "array",
"active_positions": "array",
"recent_trades": "array"
}
}Note: Wallet addresses MUST be lowercase.
Recent trading activity for a wallet.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| wallet | string | - | lowercase address | yes |
| timeframe | string | 24h | 1h, 4h, 24h, 7d, 30d | no |
| category | string | - | any valid category | no |
| min_usdc | number | 0 | >= 0 | no |
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": {
"wallet": "string",
"wallet_score": "number",
"wallet_tags": ["string"],
"period_summary": "object",
"trades": "array"
}
}Per-market PnL breakdown.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| wallet | string | - | lowercase address | yes |
| timeframe | string | 90d | 7d, 30d, 90d, all | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": {
"wallet": "string",
"total_realized_pnl": "number",
"total_positions": "number",
"winning_positions": "number",
"losing_positions": "number",
"best_trade": "object",
"worst_trade": "object",
"positions": "array"
}
}Compare 2-5 wallets side-by-side.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| wallets | string[] | - | 2-5 lowercase addresses | yes |
| include_shared_positions | boolean | true | true, false | no |
Response schema:
{
"data": {
"wallets": "array of wallet profiles",
"comparison_winners": "object",
"category_overlap": "object",
"shared_positions": "array"
}
}Pricing note: Cost scales with wallet count: base * wallets.length / 2.
Detect wallets copying a target wallet.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| wallet | string | - | lowercase address | yes |
| max_lag_minutes | integer | 60 | 1-1440 | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
| min_overlap_trades | integer | 3 | >= 1 | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"wallet": "string",
"overlap_trades": "number",
"avg_lag_seconds": "number",
"copied_tokens": "array",
"wallet_score": "number"
}
]
}Leaderboard.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 7d | today, 24h, 7d, 30d, 90d, 365d | no |
| category | string | - | any valid category | no |
| metric | string | pnl | pnl, roi, sharpe, win_rate, volume | no |
| min_trades | integer | 5 | >= 1 | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"rank": "number",
"wallet": "string",
"period_pnl_usdc": "number",
"period_roi_percent": "number",
"period_trades": "number",
"period_win_rate": "number",
"overall_score": "number",
"sharpe_ratio": "number",
"primary_category": "string",
"tags": ["string"],
"active_positions_count": "number"
}
]
}Pricing note: Queries without a category filter cost 2x due to full-table scan.
Top wallets in a specific category.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| category | string | - | any valid category | yes |
| min_category_trades | integer | 10 | >= 1 | no |
| sort_by | string | category_sharpe | category_sharpe, category_pnl, category_volume | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"wallet": "string",
"category_sharpe": "number",
"category_win_rate": "number",
"category_volume": "number",
"category_pnl": "number",
"category_positions": "number",
"is_specialist": "boolean",
"volume_concentration": "number",
"overall_score": "number",
"tags": ["string"]
}
]
}Resolved markets with smart money accuracy.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| category | string | - | any valid category | no |
| query | string | - | keyword | no |
| sort_by | string | resolved_recently | resolved_recently, volume, smart_money_accuracy | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"condition_id": "string",
"question": "string",
"category": "string",
"winning_outcome": "string",
"end_date": "string",
"total_volume_usdc": "number",
"smart_money_correct": "number",
"smart_money_wrong": "number",
"smart_money_accuracy": "number"
}
]
}Wallets that trade early on later-trending markets.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| days_back | integer | 30 | 1-90 | no |
| min_days_early | integer | 7 | 1-60 | no |
| min_bet_usdc | number | 100 | >= 0 | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"wallet": "string",
"market_question": "string",
"condition_id": "string",
"entry_date": "string",
"days_before_resolution": "number",
"bet_size_usdc": "number",
"winning_outcome": "string",
"wallet_score": "number",
"win_rate": "number"
}
]
}Low-score trader positions on a market (contrarian indicator).
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| condition_id | string | - | - | yes |
| max_score | integer | 30 | 0-100 | no |
| min_trades | integer | 5 | >= 1 | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": {
"condition_id": "string",
"question": "string",
"category": "string",
"summary": {
"total_wallets": "number",
"total_usdc": "number",
"avg_score": "number",
"consensus_outcome": "string"
},
"positions": "array"
}
}Global insider candidates by behavioral score.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| limit | integer | 50 | 1-200 | no |
| min_score | integer | 50 | 0-100 | no |
| max_wallet_age_days | integer | 60 | 1-90 | no |
Response schema:
{
"data": {
"candidates": [
{
"wallet": "string",
"insider_score": "number",
"wallet_age_days": "number",
"first_trade": "string",
"markets_traded": "number",
"total_buy_usdc": "number",
"category_count": "number",
"categories": ["string"],
"win_count": "number",
"total_resolved": "number",
"win_rate": "number",
"signals": "object"
}
],
"total_candidates": "number"
}
}Platform aggregate stats. No parameters.
Response schema:
{
"data": {
"total_volume_usd": "number",
"total_trades": "number",
"active_traders": "number",
"smart_wallet_count": "number",
"unique_coins": "number"
}
}Trending coins by activity.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"coin": "string",
"volume_usd": "number",
"trade_count": "number",
"unique_traders": "number",
"long_short_ratio": "number",
"smart_wallet_count": "number",
"volume_change_pct": "number"
}
]
}Known issue: timeframe=24h often returns empty. Use timeframe=7d as fallback.
All traded coins with 7d stats.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": [
{
"coin": "string",
"volume_usd": "number",
"trade_count": "number",
"unique_traders": "number"
}
]
}Volume by coin and hour.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 24h, 7d | no |
| limit | integer | 20 | 1-50 | no |
Response schema:
{
"data": [
{
"coin": "string",
"bucket": "string",
"volume_usd": "number",
"trade_count": "number",
"smart_volume_usd": "number"
}
]
}Ranked trader leaderboard.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | all | 1d, 7d, 30d, all | no |
| sort_by | string | pnl | pnl, roi, win_rate, volume | no |
| sort_order | string | desc | desc, asc | no |
| min_trades | integer | 10 | >= 1 | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"trader": "string",
"total_pnl": "number",
"total_volume": "number",
"total_trades": "number",
"winning_trades": "number",
"win_rate": "number",
"roi_pct": "number",
"smart_score": "number"
}
]
}Full trader dossier.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| trader | string | - | 0x address | yes |
| days | integer | 30 | 1-365 | no |
| trades_limit | integer | 50 | 1-500 | no |
Response schema:
{
"data": {
"trader": "string",
"stats": "object",
"coin_breakdown": "array",
"daily_pnl": "array",
"recent_trades": "array"
}
}Known issue: Intermittent 500 errors. Fallback: use leaderboard + pnl-by-coin.
Compare 2-5 traders.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| traders | string[] | - | 2-5 0x addresses | yes |
Response schema:
{
"data": {
"traders": "array of trader profiles",
"shared_coins": "array",
"comparison_winners": "object"
}
}Pricing note: Cost scales with trader count: base * traders.length / 2.
Daily PnL time series with streaks.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| trader | string | - | 0x address | yes |
| days | integer | 30 | 1-365 | no |
Response schema:
{
"data": [
{
"date": "string",
"pnl": "number",
"volume": "number",
"trades": "number",
"cumulative_pnl": "number",
"streak": "number"
}
]
}Per-coin PnL breakdown. Shows realized (closed) PnL only.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| trader | string | - | 0x address | yes |
| days | integer | 90 | 1-365 | no |
Response schema:
{
"data": [
{
"coin": "string",
"pnl": "number",
"volume": "number",
"trades": "number",
"winning_trades": "number",
"win_rate": "number"
}
]
}Note: Only realized (closed) PnL. Unrealized PnL from open positions is not available.
New high-volume wallets (experienced traders creating new accounts, institutional desks, or insiders).
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| max_wallet_age_days | integer | 14 | 1-90 | no |
| min_volume | number | 100000 | >= 0 | no |
| min_pnl | number | 0 | any | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"trader": "string",
"first_trade": "string",
"wallet_age_days": "number",
"total_pnl": "number",
"total_volume": "number",
"total_trades": "number",
"winning_trades": "number"
}
]
}Large trades.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| min_usd | number | 50000 | >= 1 | no |
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d | no |
| coin | string | - | uppercase symbol (e.g. BTC) | no |
| side | string | - | Open Long, Open Short, Close Long, Close Short | no |
| direction | string | - | Long, Short | no |
| smart_money_only | boolean | false | true, false | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": [
{
"trader": "string",
"coin": "string",
"side": "string",
"direction": "string",
"price": "number",
"size": "number",
"usd_value": "number",
"closed_pnl": "number",
"timestamp": "string",
"smart_score": "number"
}
]
}Chronological trade feed for a coin.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| coin | string | - | uppercase symbol | yes |
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": [
{
"trader": "string",
"coin": "string",
"side": "string",
"direction": "string",
"price": "number",
"size": "number",
"usd_value": "number",
"closed_pnl": "number",
"timestamp": "string"
}
]
}Long/short volume ratio time series.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| coin | string | - | uppercase symbol | yes |
| timeframe | string | 7d | 24h, 7d, 30d | no |
| bucket_size | string | 4h | 1h, 4h, 12h, 1d | no |
Response schema:
{
"data": [
{
"bucket": "string",
"long_volume": "number",
"short_volume": "number",
"long_short_ratio": "number",
"smart_long_volume": "number",
"smart_short_volume": "number",
"smart_long_short_ratio": "number"
}
]
}Known issue: May return all zeros. Fallback: reconstruct from /hl/trades/whales by counting long vs short volume.
Smart wallet list.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| sort_by | string | score | score, pnl, volume | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": [
{
"trader": "string",
"score": "number",
"total_pnl": "number",
"total_volume": "number",
"total_trades": "number",
"win_rate": "number"
}
]
}Smart wallet recent trades.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 1h, 4h, 12h, 24h, 7d | no |
| min_score | integer | 60 | 0-100 | no |
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": {
"period_summary": "object",
"trades": "array"
}
}Aggregated directional signals by coin.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| timeframe | string | 24h | 6h, 12h, 24h, 7d | no |
| min_score | integer | 60 | 0-100 | no |
| limit | integer | 20 | 1-50 | no |
Response schema:
{
"data": [
{
"coin": "string",
"direction": "string",
"smart_wallet_count": "number",
"total_volume": "number",
"avg_score": "number",
"top_traders": "array"
}
]
}Known issue: timeframe=24h often returns empty. Use timeframe=7d as fallback.
Long/short pressure with smart positions.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| coins | string | - | comma-separated (defaults to top 10) | no |
| trades_limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": {
"coins": [
{
"coin": "string",
"long_pressure": "number",
"short_pressure": "number",
"long_avg_entry": "number",
"short_avg_entry": "number",
"long_smart_count": "number",
"short_smart_count": "number",
"smart_positions": "array"
}
]
}
}Pressure summary across all coins. No parameters.
Response schema:
{
"data": {
"coins": [
{
"coin": "string",
"long_pressure": "number",
"short_pressure": "number",
"long_percent": "number",
"short_percent": "number",
"long_avg_entry": "number",
"short_avg_entry": "number"
}
]
}
}Trending pools by volume spike.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| timeframe | string | 24h | 24h, 7d | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"pool_address": "string",
"pool_type": "string",
"token_x": "string",
"token_y": "string",
"volume_usd": "number",
"event_count": "number",
"unique_lps": "number",
"volume_change_pct": "number"
}
]
}Known issue: May contain duplicate entries. Deduplicate by pool_address.
Top pools by volume, fees, or LP count.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| sort_by | string | volume | volume, lp_count, events, fees | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
| limit | integer | 20 | 1-100 | no |
Response schema:
{
"data": [
{
"pool_address": "string",
"pool_type": "string",
"token_x": "string",
"token_y": "string",
"volume_usd": "number",
"event_count": "number",
"unique_lps": "number",
"total_fees_usd": "number"
}
]
}Search pools by address or token name.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| query | string | - | pool address or token name | yes |
| pool_type | string | all | dlmm, damm_v2, all | no |
| limit | integer | 10 | 1-50 | no |
Response schema:
{
"data": [
{
"pool_address": "string",
"pool_type": "string",
"token_x": "string",
"token_y": "string",
"volume_usd": "number",
"event_count": "number",
"unique_lps": "number"
}
]
}Full pool detail.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_address | string | - | Solana pubkey | yes |
| pool_type | string | - | dlmm, damm_v2 (auto-detected if omitted) | no |
Response schema:
{
"data": {
"pool_address": "string",
"pool_type": "string",
"token_x": "string",
"token_y": "string",
"total_volume_usd": "number",
"total_events": "number",
"unique_lps": "number",
"volume_by_action": "object",
"net_liquidity_usd": "number"
}
}Volume time series.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_address | string | - | Solana pubkey | yes |
| pool_type | string | - | dlmm, damm_v2 (auto-detected if omitted) | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
| bucket_size | string | 4h | 1h, 4h, 1d | no |
Response schema:
{
"data": [
{
"bucket": "string",
"volume_usd": "number",
"event_count": "number",
"action_breakdown": "object"
}
]
}Chronological event feed.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_address | string | - | Solana pubkey | yes |
| pool_type | string | - | dlmm, damm_v2 (auto-detected if omitted) | no |
| limit | integer | 100 | 1-500 | no |
Response schema:
{
"data": [
{
"owner": "string",
"pool_address": "string",
"event_type": "string",
"usd_total": "number",
"timestamp": "string",
"tx_id": "string"
}
]
}Fee claiming analysis.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_address | string | - | Solana pubkey | yes |
| pool_type | string | - | dlmm, damm_v2 (auto-detected if omitted) | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
Response schema:
{
"data": {
"pool_address": "string",
"total_fees_claimed": "number",
"unique_claimers": "number",
"time_series": "array",
"top_claimers": "array"
}
}Top LPs leaderboard.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| sort_by | string | volume | volume, pool_count, events | no |
| timeframe | string | 30d | 7d, 30d | no |
| limit | integer | 25 | 1-100 | no |
Response schema:
{
"data": [
{
"owner": "string",
"total_volume_usd": "number",
"pool_count": "number",
"event_count": "number",
"pool_types": ["string"]
}
]
}Known issue: sort_by=fees may return 500. Use sort_by=volume as fallback.
Full LP dossier.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| owner | string | - | Solana pubkey | yes |
| pool_type | string | all | dlmm, damm_v2, all | no |
| events_limit | integer | 50 | 1-500 | no |
Response schema:
{
"data": {
"owner": "string",
"summary": "object",
"pool_breakdown": "array",
"recent_events": "array"
}
}Large LP events.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| min_usd | number | 10000 | >= 1 | no |
| timeframe | string | 24h | 24h, 7d, 30d | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": [
{
"owner": "string",
"pool_address": "string",
"pool_type": "string",
"event_type": "string",
"usd_total": "number",
"timestamp": "string"
}
]
}Compare 2-5 LPs.
Request body (JSON):
| Field | Type | Default | Values | Required |
|---|---|---|---|---|
| owners | string[] | - | 2-5 Solana pubkeys | yes |
| pool_type | string | all | dlmm, damm_v2, all | no |
Response schema:
{
"data": {
"lps": "array of LP profiles",
"shared_pools": "array",
"comparison_winners": "object"
}
}Pricing note: Cost scales with LP count: base * owners.length / 2.
Active LP positions.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_address | string | - | Solana pubkey | no |
| owner | string | - | Solana pubkey | no |
| pool_type | string | all | dlmm, damm_v2, all | no |
| limit | integer | 50 | 1-200 | no |
Response schema:
{
"data": [
{
"owner": "string",
"pool_address": "string",
"pool_type": "string",
"position_address": "string",
"deposited_usd": "number",
"withdrawn_usd": "number",
"net_value_usd": "number",
"event_count": "number"
}
]
}Position event history (DLMM only).
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| position_address | string | - | - | yes |
Response schema:
{
"data": {
"position_address": "string",
"events": [
{
"event_type": "string",
"usd_total": "number",
"timestamp": "string",
"tx_id": "string"
}
]
}
}Platform-wide stats.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
Response schema:
{
"data": {
"total_volume_usd": "number",
"total_events": "number",
"active_lps": "number",
"active_pools": "number",
"by_pool_type": "object"
}
}Volume by action/hour.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| timeframe | string | 24h | 24h, 7d | no |
Response schema:
{
"data": [
{
"action": "string",
"bucket": "string",
"pool_type": "string",
"volume_usd": "number",
"event_count": "number"
}
]
}MetEngine routing share.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
Response schema:
{
"data": {
"total_events": "number",
"metengine_events": "number",
"metengine_share_pct": "number",
"total_volume_usd": "number",
"metengine_volume_usd": "number"
}
}DCA accumulation pressure by token.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| token | string | - | specific mint address | no |
| timeframe | string | 1h | 1m, 5m, 30m, 1h, 6h, 24h | no |
Response schema (single token):
{
"data": {
"tokenMint": "string",
"timeframe": "string",
"buyVolume": "number",
"sellVolume": "number",
"netPressure": "number",
"score": "number"
}
}Response schema (all tokens, when token omitted):
{
"data": {
"timeframe": "string",
"tokens": "array",
"lastUpdated": "string"
}
}Pools with highest smart wallet LP activity.
Parameters (query string):
| Param | Type | Default | Values | Required |
|---|---|---|---|---|
| pool_type | string | all | dlmm, damm_v2, all | no |
| limit | integer | 20 | 1-100 | no |
| timeframe | string | 7d | 24h, 7d, 30d | no |
Response schema:
{
"data": {
"pools": [
{
"pool_address": "string",
"pool_type": "string",
"token_a": "string",
"token_b": "string",
"smart_lp_count": "number",
"total_volume_usd": "number",
"smart_volume_usd": "number",
"smart_share_pct": "number"
}
]
}
}1. Proprietary scored dataset. MetEngine maintains wallet scoring models across all three platforms (Polymarket 0-100 composite score, Hyperliquid 0-100 smart score, Meteora LP smart score). These scores are computed from billions of historical trades, resolved positions, and behavioral patterns. An agent would need to: (a) index 574M+ Polymarket trades, (b) build and maintain a scoring pipeline, (c) store and update scores for millions of wallets. Self-computation cost: weeks of engineering + ongoing infrastructure.
2. Pre-aggregated materialized views. Queries that would require scanning 574M+ trade rows (capital flow by category, top performers, insider detection) run against pre-aggregated SummingMergeTree tables. A raw ClickHouse scan of the trades table would take 30-60 seconds and cost $0.50-2.00 in compute. The API returns results in 1-5 seconds for $0.01-0.08.
3. Cross-platform intelligence. Insider detection uses a 7-signal behavioral scoring system. Smart money consensus compares scored wallets against market prices. Capital flow tracks sector rotation across all categories. Building this from raw on-chain data requires indexing multiple chains, maintaining market metadata, and running continuous scoring pipelines.
4. Real-time on-chain data. The API indexes Polymarket (Polygon), Hyperliquid (L1), and Meteora (Solana) trade data with sub-minute latency. An agent would need RPC nodes on 3 chains, event parsing, and database infrastructure.
Cost comparison for a typical workflow (analyze a Polymarket market):
| Step | Self-Computation | MetEngine API |
|---|---|---|
| Find market | Scrape Polymarket frontend | GET /markets/search ($0.01) |
| Get smart money consensus | Index all trades, score wallets, aggregate | POST /markets/intelligence ($0.05) |
| Get price history | Parse on-chain events, build OHLCV | GET /markets/price-history ($0.01) |
| Find insider patterns | Build 7-signal detection pipeline | POST /markets/insiders ($0.05) |
| Total | Hours of compute + infra | $0.12, ~10 seconds |
| Metric | Value |
|---|---|
| p50 latency | 800ms |
| p95 latency | 3s |
| p99 latency | 8s |
| Handler timeout | 60s (no payment charged on timeout) |
| Max concurrent paid requests | 50 |
| Payment verification timeout | 5s |
| Rate limit (unpaid 402 requests) | IP-based, generous |
| Platform | Freshness |
|---|---|
| Polymarket trades | Sub-minute (continuous indexing) |
| Polymarket wallet scores | Daily recompute |
| Hyperliquid trades | Sub-minute |
| Hyperliquid smart scores | Continuous (formula-based) |
| Meteora events | Sub-minute |
| Meteora LP scores | Daily recompute |
| Code | Meaning | Agent Action |
|---|---|---|
| 200 | Success. Data in { "data": ... }. Settlement proof in PAYMENT-RESPONSE header. | Process data |
| 400 | Bad request (invalid params, malformed payment header) | Fix request params |
| 402 | Payment required (first request) or payment verification failed | Sign and re-send with payment, or check payment validity |
| 404 | Endpoint not found | Verify endpoint path against this document |
| 429 | Rate limit exceeded | Back off and retry |
| 500 | Internal server error | Retry once, then try fallback endpoint |
| 502 | Payment verification failed (facilitator error) | Retry |
| 503 | Server at capacity or payment service unavailable | Check Retry-After header, retry after delay |
| 504 | Query execution timeout. No payment charged. | Retry with narrower params or use fallback endpoint |
{
"error": "Human-readable error message",
"reason": "Optional machine-readable reason (on 402 verification failures)"
}| Header | Meaning |
|---|---|
X-Payment-Settlement: failed | Query succeeded but settlement failed. Data returned, no charge. Rare edge case. |
No PAYMENT-RESPONSE header on 200 | Settlement was not attempted (should not happen in normal flow). |
When an endpoint fails, use these alternatives:
| Failed Endpoint | Fallback |
|---|---|
| /markets/opportunities (504) | /markets/high-conviction |
| /wallets/top-performers (503 on 7d) | Try timeframe=24h |
| /markets/insiders (timeout) | /markets/trades with market filter |
| /hl/coins/trending (empty on 24h) | Use timeframe=7d |
| /hl/smart-wallets/signals (empty on 24h) | Use timeframe=7d |
| /hl/trades/long-short-ratio (all zeros) | Reconstruct from /hl/trades/whales by side |
| /hl/traders/profile (500) | /hl/traders/leaderboard + /hl/traders/pnl-by-coin |
| /meteora/lps/top?sort_by=fees (500) | Use sort_by=volume |
| /meteora/lps/profile (500) | /meteora/pools/fee-analysis for claimer data |
GET https://agent.metengine.xyz/healthFree. No payment required. Returns:
{
"status": "ok | degraded",
"service": "data-agent",
"auth_mode": "x402",
"clickhouse": { "status": "ok | down" },
"postgres": { "status": "ok | down" },
"redis": { "status": "ok | down" },
"semaphore": {
"active": "number",
"waiting": "number",
"max": 250,
"timeouts_1m": "number"
},
"queries_1m": "object",
"cache_1m": "object",
"top_errors": "object",
"facilitator": "boolean",
"network": "mainnet"
}status: "ok" means all backends are healthy.status: "degraded" means at least one backend is down. Check individual component statuses.facilitator: true means x402 payment processing is operational.semaphore.active near semaphore.max means server is under heavy load (expect 503s).What this API does NOT do:
/markets/opportunities frequently times out (504) under load. Use /markets/high-conviction as fallback./wallets/top-performers?timeframe=7d may 503. Try timeframe=24h but note the narrower window./trades/whales returns REDEEM trades (resolved market payouts) alongside real trades. Filter by side=BUY or side=SELL to exclude. REDEEMs have price=1.00, side=REDEEM./markets/insiders sometimes times out. Use /markets/trades filtered to the market as fallback.condition_id identifies a market. One condition_id maps to multiple token_id values (one per outcome)./hl/coins/trending?timeframe=24h and /hl/smart-wallets/signals?timeframe=24h often return empty arrays. Default to timeframe=7d./hl/trades/long-short-ratio may return all zeros. Reconstruct directional bias from /hl/trades/whales./hl/traders/profile intermittently 500s. Use leaderboard + pnl-by-coin as fallback./hl/traders/pnl-by-coin shows realized (closed) PnL only. Unrealized PnL is not available.BTC, not BTC-USDC.closed_pnl is only non-zero on closing trades. Opening trades always have closed_pnl = 0./meteora/pools/trending may have duplicate entries. Deduplicate by pool_address./meteora/lps/top?sort_by=fees may 500. Use sort_by=volume as fallback.token_x/token_y and PascalCase event types (AddLiquidity, RemoveLiquidity, Swap, ClaimFee).token_a/token_b and snake_case event types (add_liquidity, remove_liquidity, swap, claim_fee).| Platform | Format | Case Sensitivity |
|---|---|---|
| Polymarket | 0x hex (Polygon) | Must be lowercase |
| Hyperliquid | 0x hex | Case-insensitive |
| Meteora | Base58 (Solana pubkey) | Case-sensitive |
| Tier | Score | Meaning |
|---|---|---|
| Elite | >= 80 | Top-tier historically profitable |
| Smart | 60-79 | Consistently profitable, signal-worthy |
| Average | 40-59 | Mixed track record |
| Novice | < 40 | New or losing traders |
Smart money threshold: score >= 60. Dumb money threshold: score < 30.
score = min(log2(trade_count + 1) * 4, 40) // Activity (max 40)
+ (winning_trades / max(closing_trades, 1)) * 40 // Win rate (max 40)
+ min(if(pnl > 0, log10(pnl + 1) * 4, 0), 20) // Profitability (max 20)Smart threshold: score >= 85.
win_ratio (0-35 pts) + volume (0-25 pts, log10-scaled) + avg_pnl% (0-30 pts) + experience (0-10 pts)Minimum 3 closed positions required.
© internet-court, Apache-2.0. 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 1 other file in vendored/sendaifun/metengine of internet-court/internet-court-skill.
Open the folder on GitHubat commit fa89195
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in internet-court/internet-court-skill, which our catalogue first saw on October 7, 2026.
Metengine Data Agent 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 |
|---|---|---|---|---|---|---|
| Metengine Data Agent this skillinternet-court/internet-court-skill | 6.4k | 2 repos | ~19k | Automated safety check: Pass | Apache-2.0 | |
| Capacitrmajiayu000/claude-skill-registry | 666 | 1 repos | ~3k | Automated safety check: Pass | MIT | |
| BlockrunBlockRunAI/blockrun-mcp | 392 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Minara Crypto Trading and WalletMinara-AI/minara-skills | 358 | 1 repos | ~5.7k | Automated safety check: Pass | None | |
| Deposit QrSuperior-Trade/superior-skills | 214 | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Alchemy Agentic Gatewaymoonpay/skills | 113 | — | ~2.1k | Automated safety check: Notes | MIT |
majiayu000/claude-skill-registry
Paste a URL or free text and get matched Polymarket / Hyperliquid / Deribit markets with Quotient edge scores.
BlockRunAI/blockrun-mcp
Pay-per-call access to AI models, real-time data, media generation and multi-chain RPC over x402 micropayments (USDC on Base or Solana), or a BlockRun account API key.
Minara-AI/minara-skills
Drives the Minara CLI for crypto swaps, perps, limit orders, wallet transfers, deposits and withdrawals, plus AI market analysis.
Superior-Trade/superior-skills
A skill your agent uses when a user needs a QR code or wallet payment URI to fund a Superior-managed EVM wallet on a specific chain before using Lighter, Polymarket, Hyperliquid, or other Superior…
moonpay/skills
A skill your agent uses when accessing Alchemy APIs for RPC calls, token balances, NFT metadata, asset transfers, transaction simulation, or Alchemy-specific features.
BankrBot/skills
Blockchain API access via Alchemy. An agent skill from BankrBot/skills.
internet-court/internet-court-skill
Shows how to call NEAR AI Cloud through an OpenAI-compatible API and verify that inference ran in a TEE, using attestation checks and signed chat responses.
internet-court/internet-court-skill
Builds cross-chain token swaps and bridge flows with the NEAR Intents 1Click API: quotes, deposit addresses, per-chain deposits and status polling.
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
Finds DeFi yield products through OKX, runs deposits, withdrawals and reward claims, and shows existing DeFi positions across chains, for requests that name no specific dApp.
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
Guides building on the 0G Compute Network, a decentralized GPU marketplace for AI inference and fine-tuning, with SDK patterns and CLI commands.
Categories
Real-time smart money analytics API for Polymarket prediction markets, Hyperliquid perpetual futures, and Meteora Solana LP/AMM pools. Metengine Data Agent is an agent skill from internet-court/internet-court-skill. Real-time smart money analytics API for Polymarket prediction markets, Hyperliquid perpetual futures, and Meteora Solana LP/AMM pools.
Metengine Data Agent fits situations like: backend & APIs work in your project.
Run `npx skills add internet-court/internet-court-skill --skill metengine-data-agent -a claude-code`. Or copy the skill folder (vendored/sendaifun/metengine in internet-court/internet-court-skill) into .claude/skills/metengine-data-agent in your project. Claude Code loads it when a task matches its description.
Run `npx skills add internet-court/internet-court-skill --skill metengine-data-agent -a codex`. Or copy the skill folder (vendored/sendaifun/metengine in internet-court/internet-court-skill) into .agents/skills/metengine-data-agent 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 metengine-data-agent -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/metengine-data-agent, .gemini/skills/metengine-data-agent, .github/skills/metengine-data-agent and .opencode/skills/metengine-data-agent in your project.
Going by SKILL.md and its folder, Metengine Data Agent needs the command-line tools its instructions call (curl and bun) and credentials named SOLANA_PRIVATE_KEY. Our summary lists: A credential in SOLANA_PRIVATE_KEY.
SKILL.md names 2 domains. In commands or code: agent.metengine.xyz and metengine.xyz; the agent is likely to contact these when it follows the instructions. 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.
Metengine Data Agent is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 19k tokens (SKILL.md is roughly 74k 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 Metengine Data Agent: Capacitr (majiayu000/claude-skill-registry, 666 stars), Blockrun (BlockRunAI/blockrun-mcp, 392 stars), Minara Crypto Trading and Wallet (Minara-AI/minara-skills, 358 stars) and Deposit Qr (Superior-Trade/superior-skills, 214 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,404 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.