Install
openclaw skills install claude-ai-trading-skillInteract with the Elfa API — a crypto social intelligence platform that provides real-time sentiment, trending tokens, narrative tracking, and AI-powered market analysis from Twitter/X and Telegram. Use this skill whenever the user wants to query crypto social data, check trending tokens or narratives, look up mentions for a ticker or keyword, get smart stats for a Twitter account, retrieve token news, find trending contract addresses, or chat with Elfa's AI for market analysis. Also trigger when the user asks how to integrate the Elfa API, wants example code or curl commands for Elfa endpoints, or mentions "elfa" in the context of crypto data. This skill covers both making live API calls (via API key or x402 keyless payments) and generating correct code snippets for developers integrating the Elfa API into their own products. Supports two access modes: traditional API key authentication and x402 pay-per-request via USDC on Base (no registration required).
openclaw skills install claude-ai-trading-skillThis skill enables Claude to work with the Elfa API — a social listening and market context layer for crypto traders. Elfa ingests real-time data from Twitter/X, Telegram, and other sources, then structures sentiment, narratives, and attention shifts into actionable trading insights.
Base URL: https://api.elfa.ai
Version: v2 (current)
Elfa supports two independent ways to authenticate requests:
| Mode | Endpoint prefix | Auth header | Best for |
|---|---|---|---|
| API key | /v2/ | x-elfa-api-key: YOUR_KEY | Humans & apps with a registered key |
| x402 (keyless) | /x402/v2/ | X-PAYMENT: <signed-payload> | Agents & wallets — no signup needed |
Both modes access the same data. The only difference is how you authenticate:
All endpoints below work with both /v2/ (API key) and /x402/v2/ (keyless) prefixes,
except key-status which is API key mode only.
| Endpoint | Method | Description |
|---|---|---|
/v2/key-status | GET | API key usage & limits (API key mode only) |
/v2/aggregations/trending-tokens | GET | Trending tokens by mention count |
/v2/account/smart-stats | GET | Smart follower & engagement stats for a Twitter account |
/v2/data/top-mentions | GET | Top mentions for a ticker symbol |
/v2/data/keyword-mentions | GET | Search mentions by keywords or account name |
/v2/data/event-summary | GET | AI event summaries from keyword mentions (5 credits) |
/v2/data/trending-narratives | GET | Trending narrative clusters (5 credits) |
/v2/data/token-news | GET | Token-related news mentions |
/v2/aggregations/trending-cas/twitter | GET | Trending contract addresses on Twitter |
/v2/aggregations/trending-cas/telegram | GET | Trending contract addresses on Telegram |
/v2/chat | POST | AI chat with multiple analysis modes |
For full parameter details, read references/api-reference.md.
Check whether the user wants to make a live call or get code/integration help.
Use the bash_tool to call the Elfa API via curl.
Getting the API key:
Check if the ELFA_API_KEY environment variable is set. This is the preferred method.
If the env var is not set, stop and prompt the user. Offer both options:
To make live calls, you have two options:
Option A — API key (free tier): Get a free key with 1,000 credits at https://go.elfa.ai/claude-skills — then set it as the
ELFA_API_KEYenvironment variable (do not paste it directly into the chat).Option B — x402 keyless payments: Pay per request with USDC on Base — no signup needed. See the x402 docs for setup.
Do not attempt any authenticated API calls without a key or x402 setup. Wait for the user.
Credential safety:
ELFA_API_KEY environment variable, never ask the
user to paste it into the conversation.Free tier limitations: The free tier provides 1,000 credits that work on most endpoints. However, the following endpoints require a Pay-As-You-Go or Grow plan:
If a user hits an authorization error on one of these endpoints, let them know they can upgrade their plan or use x402 payments instead. Full details at https://go.elfa.ai/claude-skills.
Making the call:
curl -s -H "x-elfa-api-key: $ELFA_API_KEY" "https://api.elfa.ai/v2/aggregations/trending-tokens?timeWindow=24h&pageSize=10"
x402 lets any wallet pay per request using USDC on Base — no API key, no registration. This is ideal for agents, bots, and programmatic access.
How x402 works:
/x402/v2/ version of any endpoint (no auth header).X-PAYMENT header.x402 signing and security:
@x402/fetch or @x402/axios
libraries. The agent never handles, stores, or transmits private keys."0xYOUR_PRIVATE_KEY" as a placeholder and
advise the user to load it from an environment variable (e.g., process.env.PRIVATE_KEY).x402 details:
eip155:8453)0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)x402 pricing:
| Tier | Cost | Endpoints |
|---|---|---|
| Standard (1 credit) | $0.009 | trending-tokens, smart-stats, keyword-mentions, token-news, top-mentions, trending-cas |
| Extended (5 credits) | $0.045 | event-summary, trending-narratives |
| Chat — fast | $0.225 | chat (speed: "fast") |
| Chat — expert | $1.00 | chat (speed: "expert", default) |
Making an x402 call with curl (manual flow):
# Step 1: Send request without payment — get 402 with payment requirements
curl -s https://api.elfa.ai/x402/v2/aggregations/trending-tokens?timeWindow=24h
# Step 2: After signing the payment payload with your wallet, resend with X-PAYMENT header
curl -s -H "X-PAYMENT: <base64-encoded-payment-payload>" \
"https://api.elfa.ai/x402/v2/aggregations/trending-tokens?timeWindow=24h"
Recommended: use the @x402/fetch library which handles payment automatically:
import { wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm";
import { x402Client } from "@x402/core/client";
import { createPublicClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount("0xYOUR_PRIVATE_KEY");
const publicClient = createPublicClient({ chain: base, transport: http() });
const signer = toClientEvmSigner(account, publicClient);
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(signer));
const x402Fetch = wrapFetchWithPayment(fetch, client);
// Use x402Fetch exactly like regular fetch — payment is handled automatically on 402 responses
const response = await x402Fetch(
"https://api.elfa.ai/x402/v2/aggregations/trending-tokens?timeWindow=24h");
const data = await response.json();
x402 with the Chat endpoint (POST):
const response = await x402Fetch(
"https://api.elfa.ai/x402/v2/chat",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
message: "What is the current sentiment on BTC?",
analysisType: "chat",
speed: "fast", // "fast" = $0.225, "expert" = $1.00
}),
});
const data = await response.json();
console.log(data.data.message);
Presenting results:
When the user wants integration help, generate correct, production-ready code.
Read references/api-reference.md for the full parameter specs.
Principles for code generation:
https://go.elfa.ai/claude-skills as a comment near the
API key placeholder, and link to https://docs.elfa.ai/x402-payments for x402x-elfa-api-key header (use a placeholder like YOUR_API_KEY)/x402/v2/ prefix and recommend @x402/fetch or @x402/axiostimeWindow vs from/to patternLanguage priorities (use unless the user specifies otherwise):
The Chat endpoint deserves special attention — it's the most complex:
analysisType values: chat, macro, summary, tokenIntro,
tokenAnalysis, accountAnalysissessionId for multi-turn conversationsassetMetadata requirements per analysis typefast and expertTime window parameters:
Many endpoints accept either timeWindow (e.g., "30m", "1h", "4h", "24h", "7d", "30d")
OR from/to unix timestamps. If both are provided, from/to takes priority.
Pagination:
Most list endpoints support page and pageSize. The keyword-mentions endpoint uses
cursor-based pagination instead (cursor parameter).
Ticker format:
For top-mentions, the ticker param can be prefixed with $ to match only cashtags
(e.g., $SOL vs SOL).
Credit costs (both modes):
api.elfa.ai) must be accessible from the network. If blocked,
inform the user and provide the code snippet instead./v2/ or /x402/v2/).CORS or network errors in the Claude desktop app: If the user is running this skill in the Claude desktop app and API calls are failing due to CORS or network issues, guide them through this fix:
*.elfa.ai to the allowed domains listThis grants the app permission to make outbound requests to the Elfa API.