Skill: risheea/fairscale-solana (version 1.0.6)

# FairScale Reputation Skill Real-time wallet reputation scoring for Solana. Use this skill to check if a wallet is trustworthy before transacting. ## What This Skill Does - **Check wallet reputation** before any transaction - **Assess risk level** for a given transaction amount - **Apply custom rules** for your specific use case - **Batch check** multiple wallets at once ## When To Use This Skill Use FairScale when: - An agent needs to decide whether to transact with a wallet - Filtering wallets for airdrops, whitelists, or access control - Assessing risk before accepting a trade or swap - Verifying counterparty reputation in agent-to-agent transactions ## Endpoints ### GET /score Get the FairScore (0-100) for any Solana wallet. **Free tier:** 100 calls/day **Pro tier:** 10,000 calls/day ``` GET https://api.fairscale.xyz/score?wallet=ADDRESS ``` **Response:** ```json { "wallet": "7xK9...", "fairscore": 72, "tier": "gold", "vouch_boost": 1.5 } ``` ### GET /check Pre-transaction risk assessment. Returns risk level and recommended max transaction amount. **Free tier:** 100 calls/day ``` GET https://api.fairscale.xyz/check?wallet=ADDRESS&amount=500 ``` **Response:** ```json { "wallet": "7xK9...", "fairscore": 72, "risk_level": "medium", "recommendation": "proceed_with_caution", "max_suggested_amount_usd": 1000, "amount_check": { "requested": 500, "max_suggested": 1000, "proceed": true } } ``` ### POST /score/custom Apply custom scoring rules. Pro tier required. ``` POST https://api.fairscale.xyz/score/custom Content-Type: application/json { "wallet": "7xK9...", "rules": { "min_score": 60, "min_age_days": 180, "no_rug_history": true, "min_transaction_count": 100, "min_volume_usd": 10000, "max_burst_ratio": 0.5, "min_tier": "silver" } } ``` **Response:** ```json { "wallet": "7xK9...", "passes": true, "fairscore": 72, "rule_results": { "min_score": { "pass": true, "required": 60, "actual": 72 }, "min_age_days": { "pass": true, "required": 180, "actual": 340 }, "no_rug_history": { "pass": true, "actual": false }, "min_transaction_count": { "pass": true, "required": 100, "actual": 523 } }, "recommendation": "proceed" } ``` ### POST /batch Score multiple wallets at once. Pro tier required. ``` POST https://api.fairscale.xyz/batch Content-Type: application/json { "wallets": ["address1", "address2", "address3"] } ``` **Response:** ```json { "count": 3, "results": [ { "wallet": "address1", "fairscore": 72, "tier": "gold" }, { "wallet": "address2", "fairscore": 45, "tier": "silver" }, { "wallet": "address3", "fairscore": 23, "tier": "bronze" } ] } ``` ## Score Interpretation | Score | Tier | Risk Level | Recommendation | |-------|------|------------|----------------| | 80-100 | Platinum | Low | Proceed | | 60-79 | Gold | Medium | Proceed with caution | | 40-59 | Silver | High | Small amounts only | | 0-39 | Bronze | Very High | Avoid | ## Example Usage ### Basic Trust Check ``` User: "Should I accept a 500 USDC trade from wallet 7xK9...?" Agent steps: 1. Call GET /check?wallet=7xK9...&amount=500 2. Response: score 34, risk "very_high", recommendation "avoid" 3. Respond: "This wallet has a very low reputation score (34/100). I recommend not proceeding with this trade." ``` ### Filtering for Airdrop ``` User: "Filter this list of wallets for my airdrop - only 60+ score" Agent steps: 1. Call POST /batch with wallet list 2. Filter results where fairscore >= 60 3. Return qualifying wallets ``` ### Custom Agent Rules ``` Agent config: "Only trade with wallets that have score 70+, age 6+ months, no rug history" Before each trade: 1. Call POST /score/custom with rules 2. Check if passes: true 3. Proceed only if passes ``` ## Rate Limits | Tier | Daily Limit | Rate Limit | |------|-------------|------------| | Free | 100 calls | 10/minute | | Pro | 10,000 calls | 100/minute | | Enterprise | Unlimited | 1000/minute | ## Authentication **Free tier:** No authentication required. Rate limited by IP. **Pro/Enterprise:** Include API key in header: ``` x-[REDACTED_SECRET] ``` Get an API key: ``` POST https://api.fairscale.xyz/register { "wallet": "your_solana_wallet" } ``` ## Upgrade to Pro For higher limits and custom scoring: ``` POST https://api.fairscale.xyz/upgrade { "api_key": "fs_your_key", "tier": "pro", "signature": "payment_tx_signature" } ``` Cost: $50 USDC/month ## Available Custom Rules | Rule | Type | Description | |------|------|-------------| | min_score | number | Minimum FairScore (0-100) | | min_age_days | number | Minimum wallet age in days | | no_rug_history | boolean | Reject if wallet has rug history | | min_transaction_count | number | Minimum number of transactions | | min_volume_usd | number | Minimum total volume in USD | | max_burst_ratio | number | Maximum burst ratio (0-1) | | min_tier | string | Minimum tier (bronze/silver/gold/platinum) | ## Support - Docs: https://docs.fairscale.xyz - API Status: https://status.fairscale.xyz - Contact: [REDACTED_SECRET]

path: README.md
content: # FairScale Solana Skill

Reputation intelligence for Solana wallets. Ask anything in plain English — "is this a bot?", "whale?", "diamond hands?" — and get instant, data-backed answers.

## Two Access Methods

| Method | Best For | Setup |
|--------|----------|-------|
| **API Key** | Most users | Get key from sales.fairscale.xyz |
| **x402 Payments** | Agents with wallets | No setup, pay $0.05/call |

## Features

- **FairScore (0-100)** — Overall wallet reputation
- **Tiers** — Bronze / Silver / Gold / Platinum
- **Natural Language** — Ask questions like "is this a whale?"
- **Custom Criteria** — Define your own rules
- **Sybil Detection** — Bot and fake account detection

## Install

### ClawHub

```bash
npx clawhub@latest install fairscale-solana
```

### GitHub

```bash
npx skills add RisheeA/fairscale-solana-skill
```

## Setup

### Option A: API Key (Recommended)

1. Get your API key at https://sales.fairscale.xyz

2. Configure:
```bash
openclaw config set skills.entries.fairscale-solana.env.FAIRSCALE_API_KEY "your_key"
```

3. Restart:
```bash
openclaw gateway restart
```

### Option B: x402 Payments

No setup needed! If your agent has a Solana wallet with USDC, it can pay per request automatically.

- Single wallet: $0.05 USDC
- Batch (10 wallets): $0.40 USDC

## Usage

Ask your agent:

- "Check wallet GFTVQdZumAnBRbmaRgN9n3Z5qH5nXvjMZXJ3EyqP32Tn"
- "Is this wallet trustworthy?"
- "Is this a bot?"
- "Is this a whale?"
- "Diamond hands?"
- "Airdrop eligible?"
- "Only allow wallets with conviction > 70"

## Example Responses

**Quick check:**
```
📊 FairScore: 90/100 | Tier: platinum

✅ TRUSTED

🏅 Badges: LST Staker, Diamond Hands, Veteran
```

**"Is this a whale?"**
```
🐋 Whale Check: GFTVQd...P32Tn

💰 LST Holdings: 97.7% — Top 3% 
💵 Stablecoins: 27.5% — Low

Verdict: 🟡 PARTIAL WHALE — Heavy DeFi, not cash-rich.
```

**"Is this a bot?"**
```
🤖 Bot Check: GFTVQd...P32Tn

⚡ Burst Ratio: 16.8% — Organic ✅
🌐 Platforms: 96.6% — Diverse ✅

Verdict: ✅ HUMAN — Not a bot.
```

## Links

- **Docs:** https://docs.fairscale.xyz
- **API Key:** https://sales.fairscale.xyz
- **Twitter:** [@FairScaleXYZ](https://twitter.com/FairScaleXYZ)

## License

MIT


path: scripts/check_wallet.sh
content: #!/bin/bash
# FairScale Wallet Check Script
# Usage: ./check_wallet.sh <WALLET_ADDRESS> <API_KEY>

WALLET=$1
API_KEY=$2

if [ -z "$WALLET" ] || [ -z "$API_KEY" ]; then
  echo "Usage: ./check_wallet.sh <WALLET_ADDRESS> <API_KEY>"
  exit 1
fi

curl -s "https://api2.fairscale.xyz/score?wallet=$WALLET" \
  -H "accept: application/json" \
  -H "fairkey: $API_KEY" | jq .


path: references/API.md
content: # FairScale API Reference

## Base URL

```
https://api2.fairscale.xyz
```

## Authentication

All requests require a `fairkey` header:

```
fairkey: your_api_key_here
```

Get your API key at: https://sales.fairscale.xyz

---

## Endpoints

### GET /score

Full wallet reputation score with badges, features, and improvement actions.

**Request:**
```bash
curl "https://api2.fairscale.xyz/score?wallet=WALLET_ADDRESS" \
  -H "accept: application/json" \
  -H "fairkey: YOUR_API_KEY"
```

**Response:**
```json
{
  "fairscore": 43.2,
  "fairscore_base": 43.2,
  "social_score": 0.0,
  "tier": "silver",
  "badges": [
    {"id": "lst_staker", "label": "LST Staker", "description": "Holds Liquid Staking Tokens"},
    {"id": "diamond_hands", "label": "Diamond Hands", "description": "Long-term holder"}
  ],
  "actions": [
    {"id": "increase_lst", "label": "Increase LST Holdings", "description": "Top scorers hold 50%+ in LST"}
  ],
  "features": {
    "tx_count": 74.8,
    "active_days": 81.1,
    "platform_diversity": 97.4,
    "conviction_ratio": 45.5,
    "burst_ratio": 10.2,
    "no_instant_dumps": 25,
    "stable_percentile_score": 76.5,
    "wallet_age_percentile": 99.2
  }
}
```

### GET /fairScore

Just the score number.

**Request:**
```bash
curl "https://api2.fairscale.xyz/fairScore?wallet=WALLET_ADDRESS" \
  -H "fairkey: YOUR_API_KEY"
```

**Response:**
```json
{"fairscore": 43.2}
```

### GET /walletScore

Wallet behavior score only (excludes social).

**Request:**
```bash
curl "https://api2.fairscale.xyz/walletScore?wallet=WALLET_ADDRESS" \
  -H "fairkey: YOUR_API_KEY"
```

---

## Tiers

| Score Range | Tier |
|-------------|------|
| 0-19 | Bronze |
| 20-39 | Bronze |
| 40-59 | Silver |
| 60-79 | Gold |
| 80-100 | Diamond |

---

## Feature Definitions

| Feature | Description |
|---------|-------------|
| `tx_count` | Percentile of transaction count |
| `active_days` | Percentile of days with on-chain activity |
| `platform_diversity` | Percentile of unique DeFi protocols used |
| `conviction_ratio` | % of holdings held through volatility |
| `burst_ratio` | Bot detection: high = suspicious |
| `no_instant_dumps` | % of positions NOT sold within 24h |
| `stable_percentile_score` | Stablecoin holdings percentile |
| `wallet_age_percentile` | Account age percentile |

---

## Rate Limits

- 100 requests per minute per API key
- Contact [REDACTED_SECRET] for higher limits

---

## Links

- API Docs: https://api2.fairscale.xyz/docs
- Get API Key: https://sales.fairscale.xyz
- Twitter: @FairScaleXYZ


Security scan verdicts — ClawScan: suspicious | static analysis:  | VirusTotal:  | SkillSpector:  ()