SkillAgentSearch skills...

metengine-data-agent

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.

Install / Use

npx skills add internet-court/internet-court-skill --skill metengine

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

87/100

Supported Platforms

Universal

Our assessment of metengine-data-agent

metengine-data-agent scores 87/100 on our quality scale, 121st of 332 Data & Analytics skills we index (top 37%).

Its SKILL.md is 73 KB long, well organised into 124 sections with 83 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.

With 6,129 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
21/30
Structure
20/20
Description
15/15
Adoption
16/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 39 days ago, so metengine-data-agent is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.

Automated pattern scan on 2026-09-28. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

metengine-data-agent compared with similar skills

All 4 of these similar skills score higher than metengine-data-agent; compare them before choosing.

SkillScoreStarsUpdatedFormat
metengine-data-agent (this skill)by internet-court876.1k39d agoSKILL.md
Agent-Reachby Panniantong10085.9k12d agoCLAUDE.md
headroomby headroomlabs-ai10074.0k1d agoCLAUDE.md
crawl4aiby unclecode10084.4k3d agoMCP Server
Scraplingby D4Vinci10084.2ktodayMCP Server

Frequently asked questions

How do I install metengine-data-agent?
Run npx skills add internet-court/internet-court-skill --skill metengine-data-agent. The install tabs above show the steps for each supported agent.
Which AI agents does metengine-data-agent work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is metengine-data-agent safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is metengine-data-agent still maintained?
The repository was last updated 39 days ago, so metengine-data-agent is actively maintained.

name: metengine-data-agent version: "1.0.0" description: "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." base_url: "https://agent.metengine.xyz" payment_protocol: "x402" payment_network: "solana-mainnet" payment_currency: "USDC" auth: "none (payment IS auth)" free_endpoints:

  • "GET /health"
  • "GET /api/v1/pricing" health_check: "https://agent.metengine.xyz/health" pricing_endpoint: "https://agent.metengine.xyz/api/v1/pricing" total_endpoints: 63 platforms:
  • name: "Polymarket" url: "https://polymarket.com" endpoints: 27 domain: "prediction markets"
  • name: "Hyperliquid" url: "https://hyperliquid.xyz" endpoints: 18 domain: "perpetual futures"
  • name: "Meteora" url: "https://meteora.ag" endpoints: 18 domain: "Solana LP/AMM"

MetEngine Data Agent API

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.


Display Rules

  • NEVER truncate or trim wallet/contract addresses. Always show full addresses (e.g. 0x61276aba49117fd9299707d5d573652949d5c977, not 0x6127...c977).
  • This applies to all Polymarket (0x hex), Hyperliquid (0x hex), Meteora (base58), condition_ids, token_ids, pool addresses, position addresses, and transaction hashes.

Skill Auto-Update

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.md

Automate 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/null

Check 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.md

Agents SHOULD check for updates at the start of a new session if more than 7 days have passed since the last update.


Session Memory (CRITICAL -- Read This First)

Before making ANY API call, check for a memory file at:

~/.claude/agents/metengine-memory.md

This 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:

  1. Wallet configuration -- path to the Solana keypair, public address, whether SOL/USDC balances were verified
  2. Package status -- whether @x402/core, @x402/svm, @solana/kit are already installed and where
  3. Client bootstrap -- a working code snippet from the last successful query (copy-paste ready)
  4. Endpoint learnings -- which endpoints worked, which timed out, which fallbacks were used
  5. Pricing cache -- last-fetched pricing schedule (avoids re-reading the full pricing section)

Memory File Format

Create 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>

Endpoint History

<!-- Append after each session. Keep the last 10 entries. -->

| Date | Endpoint | Status | Latency | USDC Cost | Notes | |------|----------|--------|---------|-----------|-------|

Fallbacks Learned

<!-- Record which fallbacks were needed -->

| Endpoint | Issue | Fallback Used | |----------|-------|---------------|

Quirks Encountered

<!-- 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:

  1. Read memory file
  2. If wallet and packages are set up: a. Copy the Client Bootstrap code b. Check Fallbacks Learned for the endpoint you need c. Make the API call directly d. Update Endpoint History
  3. If wallet or packages NOT set up: a. Follow the Onboarding Path below b. Update memory file after setup

**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 };
}

Usage Examples

// 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: inte

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars6.1k
CategoryData
Updated1mo ago
Forks110

Languages

TypeScript

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium