@champz-llc/legends-mcp-server 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/game-guide.md +718 -0
- package/index.js +114 -17
- package/package.json +1 -1
|
@@ -0,0 +1,718 @@
|
|
|
1
|
+
# 🍄 Legends of Champz - Complete Player Guide
|
|
2
|
+
|
|
3
|
+
**Welcome to Legends of Champz!** A competitive blockchain game on Base L2 where you collect mushroom warriors, battle for glory, compete for the Guardian throne, and earn real USDC and CHAMPZ rewards.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎮 What is Legends of Champz?
|
|
8
|
+
|
|
9
|
+
Legends of Champz is a **play-to-earn battle game** featuring:
|
|
10
|
+
- **20,000 Unique Legends**: Pre-generated mushroom warrior NFTs with varying rarities
|
|
11
|
+
- **Ghost PvP Battles**: Compete against saved legends from other players
|
|
12
|
+
- **Guardian King-of-the-Hill**: Compete for the Guardian throne every 8 hours
|
|
13
|
+
- **Cycle-Based Gameplay**: Three 8-hour cycles daily (Cycle A, B & C)
|
|
14
|
+
- **Dual Token Economy**: CHAMPZ tokens for gameplay + USDC rewards for winners
|
|
15
|
+
- **Elemental Charge Minigame**: Test your element knowledge in a skill-based challenge
|
|
16
|
+
- **AI Magistrate Agents**: Autonomous bots compete for Guardian on your behalf
|
|
17
|
+
|
|
18
|
+
**Play Now**: https://legends.champz.world
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 🚀 Getting Started
|
|
23
|
+
|
|
24
|
+
### Cycle System
|
|
25
|
+
The game operates in **8-hour cycles** (A, B, and C):
|
|
26
|
+
- **Cycle A**: 04:00 - 12:00 UTC
|
|
27
|
+
- **Cycle B**: 12:00 - 20:00 UTC
|
|
28
|
+
- **Cycle C**: 20:00 - 04:00 UTC (next day)
|
|
29
|
+
|
|
30
|
+
Each cycle is a fresh competition - battles, leaderboards, and Guardian reset every 8 hours!
|
|
31
|
+
|
|
32
|
+
### Your First Steps
|
|
33
|
+
1. **Connect Wallet**: Use Coinbase Wallet (Smart Wallet) on Base L2
|
|
34
|
+
2. **Get CHAMPZ Tokens**: Purchase directly in-game, through Uniswap, or earn through gameplay
|
|
35
|
+
3. **Open Your First Pack**: Roll for legends (3000-5000 CHAMPZ per pack)
|
|
36
|
+
4. **Start Battling**: Use your legends to compete in Ghost PvP
|
|
37
|
+
5. **Claim Rewards**: Earn CHAMPZ and USDC from battles and Guardian
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🎴 Legends & Packs
|
|
42
|
+
|
|
43
|
+
### Opening Packs
|
|
44
|
+
|
|
45
|
+
Roll for legends to build your collection. Each legend has unique elements and stats.
|
|
46
|
+
|
|
47
|
+
**Pack Costs**:
|
|
48
|
+
- **Dynamic pricing**: 3000-5000 CHAMPZ per pack (fixed within each cycle)
|
|
49
|
+
- **20% Burned**: Deflationary tokenomics
|
|
50
|
+
- **80% to Prize Pool**: Feeds battle rewards
|
|
51
|
+
|
|
52
|
+
### Legend Rarities
|
|
53
|
+
|
|
54
|
+
| Rarity | Drop Rate | Stat Range | Notes |
|
|
55
|
+
|--------|-----------|------------|-------|
|
|
56
|
+
| **Common** | 62.5% | 1-60 | Most common legends |
|
|
57
|
+
| **Rare** | 25% | 40-69 | Solid mid-tier legends |
|
|
58
|
+
| **Epic** | 10.4% | 70-84 | Strong competitive legends |
|
|
59
|
+
| **Legendary** | 2% | 85-94 | Elite tier |
|
|
60
|
+
| **Unique** | 0.1% | 95-100 | **Only 20 exist!** |
|
|
61
|
+
|
|
62
|
+
### Elements
|
|
63
|
+
|
|
64
|
+
Legends have **1-3 elements** from:
|
|
65
|
+
- 🔥 **Fire**
|
|
66
|
+
- 💧 **Water**
|
|
67
|
+
- 🌍 **Earth**
|
|
68
|
+
- ✨ **Light**
|
|
69
|
+
- 💨 **Wind**
|
|
70
|
+
|
|
71
|
+
**Element Advantages** create strategic depth in battles!
|
|
72
|
+
|
|
73
|
+
### Element Matchup System
|
|
74
|
+
|
|
75
|
+
Each element beats 2 others and loses to 2 others:
|
|
76
|
+
|
|
77
|
+
- 🔥 **Fire** beats: Earth & Light
|
|
78
|
+
- 💧 **Water** beats: Fire & Earth
|
|
79
|
+
- 🌍 **Earth** beats: Wind & Light
|
|
80
|
+
- ✨ **Light** beats: Wind & Water
|
|
81
|
+
- 💨 **Wind** beats: Fire & Water
|
|
82
|
+
|
|
83
|
+
**Pro Tip**: Master these matchups - they're crucial for both battles and Elemental Charge!
|
|
84
|
+
|
|
85
|
+
### Save Your Legends
|
|
86
|
+
|
|
87
|
+
You can **save your favorite legends** to slots for future NFT minting (Phase 2). Available slots depend on your progression:
|
|
88
|
+
- Complete achievements to unlock more save slots
|
|
89
|
+
- Higher tier holders get bonus slots
|
|
90
|
+
- Saved legends can be minted as NFTs (coming soon)
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## ⚔️ Battle System
|
|
95
|
+
|
|
96
|
+
### Ghost PvP
|
|
97
|
+
|
|
98
|
+
Compete in battles to earn points and climb the leaderboard.
|
|
99
|
+
|
|
100
|
+
**How It Works**:
|
|
101
|
+
- **Ghost PvP**: Battle against saved legends from players who opened packs this cycle
|
|
102
|
+
- **Random Opponents**: You can't choose who you fight - keeps it fair!
|
|
103
|
+
- **Element Strategy**: Order your 3 elements wisely for maximum advantage
|
|
104
|
+
- **Point-Based**: Earn points for wins, bonus for streaks
|
|
105
|
+
|
|
106
|
+
### Battle Mechanics
|
|
107
|
+
|
|
108
|
+
**Stats That Matter**:
|
|
109
|
+
- **Attack (ATK)**: Offensive power
|
|
110
|
+
- **Defense (DEF)**: Damage resistance
|
|
111
|
+
- **Speed (SPD)**: Turn order and initiative
|
|
112
|
+
|
|
113
|
+
**Battles are decided by**:
|
|
114
|
+
1. **Element Advantages** (70% weight): Your element order vs opponent's
|
|
115
|
+
2. **Mirror Matchups** (30% weight): Pure stats comparison
|
|
116
|
+
3. **Variance**: Small random factor keeps it exciting
|
|
117
|
+
|
|
118
|
+
### Intel System (Adaptive Difficulty)
|
|
119
|
+
|
|
120
|
+
Before battle, you get intel on your opponent based on stat gap:
|
|
121
|
+
|
|
122
|
+
- **Easy Mode** (stat gap > 50): All 3 elements revealed (shuffled order)
|
|
123
|
+
- **Medium Mode** (stat gap > 20): 2 elements revealed (shuffled)
|
|
124
|
+
- **Hard Mode** (stat gap ≤ 20): Only 1 element revealed
|
|
125
|
+
|
|
126
|
+
**Strategy**: Use intel to order your elements for maximum advantage!
|
|
127
|
+
|
|
128
|
+
### Action Points (AP)
|
|
129
|
+
|
|
130
|
+
Each battle costs **1 AP**.
|
|
131
|
+
|
|
132
|
+
**AP Per Cycle**:
|
|
133
|
+
- **Base**: 10 AP for all players
|
|
134
|
+
- **Tier Bonuses**: Hold CHAMPZ to unlock extra AP
|
|
135
|
+
- 🥉 Bronze (100K+ CHAMPZ): +1 AP
|
|
136
|
+
- 🥈 Silver (500K+ CHAMPZ): +2 AP
|
|
137
|
+
- 🥇 Gold (1M+ CHAMPZ): +3 AP
|
|
138
|
+
- 💎 Diamond (5M+ CHAMPZ): +4 AP
|
|
139
|
+
- **Purchase Bonuses**: Buy CHAMPZ through in-game Uniswap modal for extra AP (one-time per cycle)
|
|
140
|
+
- $10-49 spent: +1 AP
|
|
141
|
+
- $50-99 spent: +2 AP
|
|
142
|
+
- $100-499 spent: +3 AP
|
|
143
|
+
- $500+ spent: +4 AP
|
|
144
|
+
- **Performance Rewards**: Bonus AP for top performers (awarded for **NEXT cycle only**, max 6 AP total)
|
|
145
|
+
- 🏆 **1st Place**: +3 AP (Elemental Charge, Guardian, or AI Magistrate)
|
|
146
|
+
- 🥈 **2nd-5th Place**: +2 AP
|
|
147
|
+
- 🥉 **6th-50th Place**: +1 AP
|
|
148
|
+
|
|
149
|
+
💡 **Performance Rewards Explained**:
|
|
150
|
+
- Compete in **Elemental Charge**, **Guardian**, or **AI Magistrate**
|
|
151
|
+
- Top 50 finishers in each competition earn bonus AP for the next cycle
|
|
152
|
+
- **Max 6 AP total** per player from performance rewards (even if you place in multiple competitions)
|
|
153
|
+
- Rewards stack with tier bonuses and purchase bonuses!
|
|
154
|
+
- **Example**: Finish 1st in Guardian (+3 AP) and 10th in Elemental Charge (+1 AP) = +3 AP next cycle (capped at 6)
|
|
155
|
+
|
|
156
|
+
### AI-Powered Warfare
|
|
157
|
+
|
|
158
|
+
Higher tier holders unlock advanced AI features:
|
|
159
|
+
|
|
160
|
+
**🤖 AI Battle Strategist** (Gold 🥇 & Diamond 💎):
|
|
161
|
+
- Get AI-powered element ordering recommendations
|
|
162
|
+
- See win probability estimates before battle
|
|
163
|
+
- Strategic reasoning explains why each order works
|
|
164
|
+
|
|
165
|
+
**🛡️ AI Defense System** (Diamond 💎 only):
|
|
166
|
+
- Your saved legend uses AI to optimize defensive positioning
|
|
167
|
+
- Automatically counters incoming challengers
|
|
168
|
+
- True AI vs AI warfare!
|
|
169
|
+
|
|
170
|
+
### Battle Rewards
|
|
171
|
+
|
|
172
|
+
Prize pool distributed every 8 hours (at cycle end) using **Tiered Merit System**:
|
|
173
|
+
|
|
174
|
+
| Tier | Players | Pool Share | Distribution |
|
|
175
|
+
|------|---------|------------|--------------|
|
|
176
|
+
| **Top 20%** | Elite | 40% | By wins (proportional) |
|
|
177
|
+
| **Next 20%** | Strong | 30% | By wins (proportional) |
|
|
178
|
+
| **Next 20%** | Mid | 20% | By wins (proportional) |
|
|
179
|
+
| **Lottery** | All | 10% | Random 25% of players |
|
|
180
|
+
|
|
181
|
+
**Top 60% get guaranteed rewards!** More wins = bigger share within your tier.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 👑 Guardian Competition
|
|
186
|
+
|
|
187
|
+
The **Guardian** is a king-of-the-hill competition where the longest holder wins big rewards!
|
|
188
|
+
|
|
189
|
+
### How It Works
|
|
190
|
+
|
|
191
|
+
**Sending CHAMPZ**:
|
|
192
|
+
- **Starting Price**: 100 CHAMPZ (may vary per cycle)
|
|
193
|
+
- **Price Increase**: +20% with every send
|
|
194
|
+
- Send 1: 100 CHAMPZ
|
|
195
|
+
- Send 2: 120 CHAMPZ (+20)
|
|
196
|
+
- Send 3: 144 CHAMPZ (+24)
|
|
197
|
+
- Keeps escalating...
|
|
198
|
+
|
|
199
|
+
**Winning Strategy**:
|
|
200
|
+
- Victory determined by **total hold time** during the cycle
|
|
201
|
+
- The player who holds Guardian the longest wins
|
|
202
|
+
- Doesn't matter when you claimed it - total duration counts!
|
|
203
|
+
|
|
204
|
+
### Prize Distribution
|
|
205
|
+
|
|
206
|
+
**Burn**: 20% of all Guardian sends are burned forever (deflationary)
|
|
207
|
+
|
|
208
|
+
**From the remaining 80%**:
|
|
209
|
+
- **50% to Winner**: Longest Guardian holder gets half the pool
|
|
210
|
+
- **50% to Others**: All qualifying holders share proportionally
|
|
211
|
+
- 70% distributed by hold time
|
|
212
|
+
- 30% distributed by CHAMPZ sent
|
|
213
|
+
|
|
214
|
+
✅ **Everyone gets something!** The longer you hold and more you send, the bigger your share.
|
|
215
|
+
|
|
216
|
+
### 🏆 Guardian Performance Rewards
|
|
217
|
+
|
|
218
|
+
**Leaderboard Bonuses** (NEXT cycle only):
|
|
219
|
+
- Top 50 Guardian competitors earn **bonus AP for the next cycle**:
|
|
220
|
+
- 🥇 **1st Place** (Longest holder): +3 AP
|
|
221
|
+
- 🥈 **2nd-5th Place**: +2 AP
|
|
222
|
+
- 🥉 **6th-50th Place**: +1 AP
|
|
223
|
+
- Max 6 AP total from all performance rewards (Guardian + EC + AI Magistrate)
|
|
224
|
+
|
|
225
|
+
### Throne Collection
|
|
226
|
+
|
|
227
|
+
Winners receive **unique throne NFTs**:
|
|
228
|
+
- **400 Total Thrones**: Each cycle awards a different throne
|
|
229
|
+
- **4 Rarity Tiers**: Common (50%), Rare (30%), Epic (15%), Legendary (5%)
|
|
230
|
+
- **Collectible Prestige**: Each throne has a unique name and design
|
|
231
|
+
- **Trophy Case**: Display your thrones in your profile
|
|
232
|
+
|
|
233
|
+
💡 **Pro Tip**: Watch the countdown timer - cycles end at 04:00, 12:00, and 20:00 UTC. Check current Guardian price before sending!
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## ⚡ Elemental Charge - Skill Minigame
|
|
238
|
+
|
|
239
|
+
A **fast-paced skill challenge** where you test your element knowledge against the clock!
|
|
240
|
+
|
|
241
|
+
### 🎯 Objective
|
|
242
|
+
|
|
243
|
+
Pick the correct counter element within **20 seconds**. Score as many points as possible by building streaks and making smart choices!
|
|
244
|
+
|
|
245
|
+
### 🎲 Game Modes (Random Each Attempt!)
|
|
246
|
+
|
|
247
|
+
Each attempt randomly selects one of three modes:
|
|
248
|
+
|
|
249
|
+
**🎯 NORMAL MODE**:
|
|
250
|
+
- Pick elements that **beat yours**
|
|
251
|
+
- Standard element advantage rules
|
|
252
|
+
|
|
253
|
+
**🔄 REVERSE MODE**:
|
|
254
|
+
- Pick what **YOUR element beats** (flipped logic!)
|
|
255
|
+
- Think backwards!
|
|
256
|
+
|
|
257
|
+
**🧠 MEMORY MODE**:
|
|
258
|
+
- Elements **hide after 1.8 seconds**
|
|
259
|
+
- Memorize positions fast!
|
|
260
|
+
|
|
261
|
+
⚡ **Adapt your strategy** - you won't know which mode until the game starts!
|
|
262
|
+
|
|
263
|
+
### 📊 Scoring System
|
|
264
|
+
|
|
265
|
+
| Action | Points |
|
|
266
|
+
|--------|--------|
|
|
267
|
+
| Basic Correct Pick | +1 |
|
|
268
|
+
| Bonus Correct Pick | +2 |
|
|
269
|
+
| Wrong Pick | -1 |
|
|
270
|
+
| Fast Spam (<1s wrong) | -2 |
|
|
271
|
+
|
|
272
|
+
⚠️ **Button sizes are random!** Don't rely on size - learn the elements!
|
|
273
|
+
|
|
274
|
+
### 🎮 Difficulty Levels
|
|
275
|
+
|
|
276
|
+
Difficulty increases with each attempt in the cycle:
|
|
277
|
+
|
|
278
|
+
- **🟢 EASY** (Attempts 1-2): 3 choices (2 wins, 1 loss)
|
|
279
|
+
- **🟡 MEDIUM** (Attempts 3-4): 4 choices (2 wins, 2 losses)
|
|
280
|
+
- **🔴 EXPERT** (Attempt 5): 4 choices + 1 hidden element
|
|
281
|
+
|
|
282
|
+
### 🔥 Streak Multipliers
|
|
283
|
+
|
|
284
|
+
Build streaks for massive bonuses:
|
|
285
|
+
|
|
286
|
+
- **3× Streak**: 1.5× points
|
|
287
|
+
- **5× Streak**: 2× points
|
|
288
|
+
|
|
289
|
+
One wrong pick resets your streak!
|
|
290
|
+
|
|
291
|
+
### ⏰ Progressive Chaos
|
|
292
|
+
|
|
293
|
+
As time runs out:
|
|
294
|
+
- Screen shake intensifies
|
|
295
|
+
- Pressure builds
|
|
296
|
+
- Stay focused!
|
|
297
|
+
|
|
298
|
+
### 🏆 Elemental Charge Rewards
|
|
299
|
+
|
|
300
|
+
**Leaderboard Competition**:
|
|
301
|
+
- Top 50 players earn **bonus AP for the next cycle**:
|
|
302
|
+
- 🥇 **1st Place**: +3 AP
|
|
303
|
+
- 🥈 **2nd-5th Place**: +2 AP
|
|
304
|
+
- 🥉 **6th-50th Place**: +1 AP
|
|
305
|
+
- Compete every cycle for consistent AP bonuses!
|
|
306
|
+
- Max 6 AP total from all performance rewards (EC + Guardian + AI Magistrate)
|
|
307
|
+
|
|
308
|
+
### 💡 Pro Tips
|
|
309
|
+
|
|
310
|
+
1. **Learn the matchups** - It's the key to high scores
|
|
311
|
+
2. **Wrong picks within 1 second** are penalized double (-2pts)!
|
|
312
|
+
3. **Build streaks** for massive score multipliers
|
|
313
|
+
4. **Button size is random** - don't rely on it!
|
|
314
|
+
5. **In Reverse mode**, think backwards - what does YOUR element beat?
|
|
315
|
+
6. **In Memory mode**, memorize positions fast - you have 1.8 seconds!
|
|
316
|
+
7. **You have 5 attempts per cycle** - practice makes perfect!
|
|
317
|
+
8. **Top 50 get AP rewards** - even mid-tier scores can earn +1 AP for next cycle!
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## 🤖 AI Magistrate (Guardian Bot)
|
|
322
|
+
|
|
323
|
+
An **autonomous AI agent** that competes for Guardian on your behalf - no manual gameplay needed!
|
|
324
|
+
|
|
325
|
+
### 🎯 Practice Mode vs 💎 Real Mode
|
|
326
|
+
|
|
327
|
+
**🎯 PRACTICE MODE** (Currently Active):
|
|
328
|
+
- **Virtual 10 USDC**: Balance resets each cycle
|
|
329
|
+
- **No Real Money**: Test strategies risk-free
|
|
330
|
+
- **Full Features**: All config options identical to real mode
|
|
331
|
+
- **$50 Prize Pool**: Virtual rewards to track performance
|
|
332
|
+
- **Save Strategies**: Save up to 3 configurations
|
|
333
|
+
|
|
334
|
+
**💎 REAL MODE** (Coming Soon):
|
|
335
|
+
- **Real USDC**: Fund agent wallet on Base L2
|
|
336
|
+
- **10 USDC Base Pool + 80% Volume**: Real daily rewards
|
|
337
|
+
- **Secure Agent Wallet**: System-managed for security
|
|
338
|
+
- **Master Practice First**: Perfect your strategy before going live
|
|
339
|
+
|
|
340
|
+
### How It Works (Practice Mode)
|
|
341
|
+
|
|
342
|
+
1. **Create Agent**: Instantly create your AI (no wallet setup needed)
|
|
343
|
+
2. **Configure**: Set 10 parameters (risk, timing, budget, etc.)
|
|
344
|
+
3. **Activate**: Enable your agent
|
|
345
|
+
4. **Compete**: Agent uses its 10 virtual USDC every cycle
|
|
346
|
+
5. **Learn**: Analyze results and adjust strategy
|
|
347
|
+
|
|
348
|
+
### ⚙️ Configuration Parameters (Detailed Guide)
|
|
349
|
+
|
|
350
|
+
Fine-tune your agent with 11 configurable parameters. Understanding each one is key to building a winning strategy:
|
|
351
|
+
|
|
352
|
+
#### Budget & Risk Management
|
|
353
|
+
|
|
354
|
+
**1. Risk Tolerance (0-100)**
|
|
355
|
+
- **What it does**: Controls how aggressively your agent competes
|
|
356
|
+
- **Low (0-30)**: Conservative, waits for good opportunities, preserves budget
|
|
357
|
+
- **Medium (40-60)**: Balanced approach, competes moderately
|
|
358
|
+
- **High (70-100)**: Aggressive, fights for Guardian even at high prices
|
|
359
|
+
- **Tip**: Start at 40-50 in practice mode, adjust based on results
|
|
360
|
+
|
|
361
|
+
**2. Max Spend Per Cycle (USDC)**
|
|
362
|
+
- **What it does**: Hard cap on total USDC your agent can spend in one cycle
|
|
363
|
+
- **Example**: Set to 8 USDC means agent stops after spending 8, even if it has 10
|
|
364
|
+
- **Strategy**: Leave room for late-cycle opportunities, don't max out early
|
|
365
|
+
- **Tip**: In practice mode (10 USDC), try 6-8 to preserve budget
|
|
366
|
+
|
|
367
|
+
**3. Max Price Per Purchase (USDC)**
|
|
368
|
+
- **What it does**: Maximum USDC your agent will pay for a single Guardian send
|
|
369
|
+
- **Example**: Set to 2 USDC means agent won't send if price exceeds 2
|
|
370
|
+
- **Strategy**: Prevents overpaying at peak prices
|
|
371
|
+
- **Tip**: Set to 30-50% of your max cycle spend
|
|
372
|
+
|
|
373
|
+
**4. Reserve Buffer (USDC)**
|
|
374
|
+
- **What it does**: Amount of USDC to keep reserved, never spent
|
|
375
|
+
- **Example**: 2 USDC reserve means agent only uses 8 out of 10 available
|
|
376
|
+
- **Strategy**: Safety net for unexpected situations
|
|
377
|
+
- **Tip**: Set to 1-2 USDC in practice mode
|
|
378
|
+
|
|
379
|
+
#### Timing Strategy
|
|
380
|
+
|
|
381
|
+
**5. Entry Timing (0-480 minutes)**
|
|
382
|
+
- **What it does**: How many minutes into the cycle before agent starts competing
|
|
383
|
+
- **0 minutes**: Agent starts immediately when cycle begins
|
|
384
|
+
- **240 minutes**: Agent waits 4 hours before first send
|
|
385
|
+
- **Strategy**: Late entry can be cheaper but risks losing hold time
|
|
386
|
+
- **Tip**: Try 0 (early bird), 120 (mid-cycle), or 300 (late sniper)
|
|
387
|
+
|
|
388
|
+
**6. Send Frequency (minutes)**
|
|
389
|
+
- **What it does**: Minimum time between sends when actively competing
|
|
390
|
+
- **Example**: 30 minutes means agent waits at least 30 min between sends
|
|
391
|
+
- **Strategy**: Lower frequency = more conservative, higher = more aggressive
|
|
392
|
+
- **Tip**: Match to your risk tolerance (high risk = low frequency)
|
|
393
|
+
|
|
394
|
+
**7. Deterrent Delay (minutes)**
|
|
395
|
+
- **What it does**: How long agent waits after being overtaken before responding
|
|
396
|
+
- **Example**: 15 minutes means agent waits 15 min after losing Guardian
|
|
397
|
+
- **Strategy**: Longer delay saves budget, shorter delay maintains position
|
|
398
|
+
- **Tip**: 10-20 minutes balances responsiveness and efficiency
|
|
399
|
+
|
|
400
|
+
#### Advanced Tactics
|
|
401
|
+
|
|
402
|
+
**8. Deterrent Threshold (%)**
|
|
403
|
+
- **What it does**: How much more expensive must it be before agent gives up position
|
|
404
|
+
- **Example**: 150% means agent stops if next send costs 1.5× current price
|
|
405
|
+
- **Strategy**: Higher threshold = more stubborn, lower = more flexible
|
|
406
|
+
- **Tip**: 120-150% is balanced
|
|
407
|
+
|
|
408
|
+
**9. Late Cycle Aggression Boost (%)**
|
|
409
|
+
- **What it does**: Risk multiplier applied in final 60 minutes of cycle
|
|
410
|
+
- **Example**: 150% boost turns risk 50 into effective 75 near cycle end
|
|
411
|
+
- **Strategy**: Push harder when it matters most
|
|
412
|
+
- **Tip**: 120-150% for moderate boost, 200%+ for all-in finale
|
|
413
|
+
|
|
414
|
+
**10. Competition Response Mode**
|
|
415
|
+
- **What it does**: How agent reacts when multiple agents are active
|
|
416
|
+
- **Passive**: Backs off when competition is high
|
|
417
|
+
- **Balanced**: Adjusts strategy based on competitors
|
|
418
|
+
- **Aggressive**: Fights harder when challenged
|
|
419
|
+
- **Tip**: Try "Balanced" first, adjust based on leaderboard
|
|
420
|
+
|
|
421
|
+
**11. Price Ceiling (% of Budget)**
|
|
422
|
+
- **What it does**: Never pay more than this % of total budget for one send
|
|
423
|
+
- **Example**: 30% ceiling with 10 USDC means max 3 USDC per send
|
|
424
|
+
- **Strategy**: Prevents budget depletion on single expensive send
|
|
425
|
+
- **Tip**: 25-40% is reasonable
|
|
426
|
+
|
|
427
|
+
### 💰 Rewards
|
|
428
|
+
|
|
429
|
+
**Practice Mode**: Virtual $50 prize pool to track performance
|
|
430
|
+
|
|
431
|
+
**Real Mode (Coming Soon)**:
|
|
432
|
+
- 10 USDC base prize + 80% of all cycle volume
|
|
433
|
+
- 50% to winner (longest holder)
|
|
434
|
+
- 50% distributed proportionally (70% by hold time, 30% by spend)
|
|
435
|
+
- All rewards sent **directly to your wallet** (not agent wallet)
|
|
436
|
+
|
|
437
|
+
**Performance AP Rewards** (Both modes):
|
|
438
|
+
- Top 50 AI Magistrate agents earn **bonus AP for the next cycle**:
|
|
439
|
+
- 🥇 **1st Place**: +3 AP
|
|
440
|
+
- 🥈 **2nd-5th Place**: +2 AP
|
|
441
|
+
- 🥉 **6th-50th Place**: +1 AP
|
|
442
|
+
- Max 6 AP total from all performance rewards (AI Magistrate + Guardian + EC)
|
|
443
|
+
- Use bonus AP for more battles next cycle!
|
|
444
|
+
|
|
445
|
+
### ⚠️ Important Notes
|
|
446
|
+
|
|
447
|
+
- **Practice Balance**: Resets to 10 virtual USDC every cycle
|
|
448
|
+
- **Config Snapshot**: Parameters frozen at cycle start - changes apply next cycle
|
|
449
|
+
- **Strategy Testing**: Save up to 3 configs to compare performance
|
|
450
|
+
- **Security**: You don't have agent wallet private key - rewards auto-sent to YOUR wallet
|
|
451
|
+
|
|
452
|
+
### 💡 Pro Tips
|
|
453
|
+
|
|
454
|
+
1. **Start Conservative**: Begin with moderate risk (40-60) in practice
|
|
455
|
+
2. **Test Multiple Strategies**: Save 3 configs and compare over several cycles
|
|
456
|
+
3. **Watch the Leaderboard**: See how top performers configure their agents
|
|
457
|
+
4. **Cycle Timing Matters**: Entry timing affects when agent starts competing
|
|
458
|
+
5. **Prepare for Real Mode**: Perfect your strategy with zero risk first!
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## 🏆 Rewards & Claiming
|
|
463
|
+
|
|
464
|
+
### Reward Types
|
|
465
|
+
|
|
466
|
+
**Battle Rewards**:
|
|
467
|
+
- Tiered merit system every 12 hours
|
|
468
|
+
- Top 60% get guaranteed rewards
|
|
469
|
+
- 10% lottery pool for all players
|
|
470
|
+
|
|
471
|
+
**Guardian Rewards**:
|
|
472
|
+
- Winner gets 50% of pool
|
|
473
|
+
- All qualifiers share 50% proportionally
|
|
474
|
+
- Based on hold time (70%) and CHAMPZ sent (30%)
|
|
475
|
+
|
|
476
|
+
**Weekly Surprise Rewards**:
|
|
477
|
+
- Special bonuses distributed weekly
|
|
478
|
+
- Active participants eligible
|
|
479
|
+
|
|
480
|
+
**Achievement Rewards**:
|
|
481
|
+
- One-time bonuses for completing challenges
|
|
482
|
+
- Free rolls, save slots, CHAMPZ tokens
|
|
483
|
+
|
|
484
|
+
### Claiming Process
|
|
485
|
+
|
|
486
|
+
1. Navigate to **Rewards** tab (🏆 icon in bottom nav)
|
|
487
|
+
2. Review **Pending** claims
|
|
488
|
+
3. Click **Claim** on any reward
|
|
489
|
+
4. Confirm blockchain transaction
|
|
490
|
+
5. Reward sent to your wallet!
|
|
491
|
+
|
|
492
|
+
### Claim Window
|
|
493
|
+
|
|
494
|
+
⏰ **24 hours** to claim rewards after they're earned
|
|
495
|
+
- Unclaimed rewards **expire after 24 hours**
|
|
496
|
+
- Check Rewards tab every cycle!
|
|
497
|
+
|
|
498
|
+
💡 **Pro Tip**: Claim promptly - rewards expire in 24 hours!
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## 🏅 Achievements & Badges
|
|
503
|
+
|
|
504
|
+
Complete challenges to earn badges and unlock rewards like free legend rolls and save slots!
|
|
505
|
+
|
|
506
|
+
### How Achievements Work
|
|
507
|
+
|
|
508
|
+
- Complete specific in-game actions to unlock achievements
|
|
509
|
+
- Some achievements award badges and rewards
|
|
510
|
+
- Track your progress in the Achievements tab
|
|
511
|
+
|
|
512
|
+
### Types of Achievements
|
|
513
|
+
|
|
514
|
+
**Battle Achievements**:
|
|
515
|
+
- Win streaks
|
|
516
|
+
- Total victories
|
|
517
|
+
- Perfect battles (3-0 rounds)
|
|
518
|
+
|
|
519
|
+
**Guardian Achievements**:
|
|
520
|
+
- Hold duration records
|
|
521
|
+
- Total CHAMPZ sent
|
|
522
|
+
- Cycle wins
|
|
523
|
+
|
|
524
|
+
**Collection Achievements**:
|
|
525
|
+
- Pack openings milestones
|
|
526
|
+
- Rarity unlocks (first Epic, Legendary, Unique)
|
|
527
|
+
- Element combinations
|
|
528
|
+
|
|
529
|
+
**Progression Achievements**:
|
|
530
|
+
- Daily login streaks
|
|
531
|
+
- Milestones
|
|
532
|
+
- Special events
|
|
533
|
+
|
|
534
|
+
### Claiming Achievement Rewards
|
|
535
|
+
|
|
536
|
+
1. Complete achievement → notification appears
|
|
537
|
+
2. Navigate to **Achievements** tab (🏅 icon)
|
|
538
|
+
3. Click **Claim** on completed achievements
|
|
539
|
+
4. Rewards added instantly!
|
|
540
|
+
|
|
541
|
+
💡 **Pro Tip**: Check achievements regularly to see what you're close to completing!
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## 💎 Tier System & Benefits
|
|
546
|
+
|
|
547
|
+
Hold CHAMPZ tokens to unlock **powerful benefits**:
|
|
548
|
+
|
|
549
|
+
### Tier Breakdown
|
|
550
|
+
|
|
551
|
+
| Tier | CHAMPZ Required | Benefits |
|
|
552
|
+
|------|-----------------|----------|
|
|
553
|
+
| 🥉 **Bronze** | 100,000+ | +1 AP per cycle |
|
|
554
|
+
| 🥈 **Silver** | 500,000+ | +2 AP per cycle |
|
|
555
|
+
| 🥇 **Gold** | 1,000,000+ | +3 AP, 🤖 AI Battle Strategist |
|
|
556
|
+
| 💎 **Diamond** | 5,000,000+ | +4 AP, 🤖 AI Strategist, 🛡️ AI Defense |
|
|
557
|
+
|
|
558
|
+
### Tier Benefits Explained
|
|
559
|
+
|
|
560
|
+
**🥉 Bronze - 🥈 Silver**:
|
|
561
|
+
- Extra Action Points for more battles per cycle
|
|
562
|
+
- Competitive advantage in leaderboard rankings
|
|
563
|
+
|
|
564
|
+
**🥇 Gold**:
|
|
565
|
+
- Everything from Bronze/Silver
|
|
566
|
+
- **AI Battle Strategist**: Get AI recommendations for element ordering
|
|
567
|
+
- Win probability estimates
|
|
568
|
+
- Strategic reasoning
|
|
569
|
+
- Optimal element combinations
|
|
570
|
+
|
|
571
|
+
**💎 Diamond**:
|
|
572
|
+
- Everything from Gold
|
|
573
|
+
- **AI Defense System**: Your saved legend auto-optimizes against challengers
|
|
574
|
+
- Symmetric AI warfare
|
|
575
|
+
- Defensive positioning
|
|
576
|
+
- True AI vs AI battles
|
|
577
|
+
|
|
578
|
+
💡 **Investment pays off** - Higher tiers = more battles + better AI tools!
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
## 🎯 Strategy Tips
|
|
583
|
+
|
|
584
|
+
### For Beginners
|
|
585
|
+
|
|
586
|
+
1. **Learn Element Matchups First**: This is fundamental to both battles and Elemental Charge
|
|
587
|
+
2. **Start with Common Legends**: Build experience before hunting Legendaries
|
|
588
|
+
3. **Focus on Streaks**: Win streaks multiply your rewards
|
|
589
|
+
4. **Complete Easy Achievements**: Free rolls and save slots
|
|
590
|
+
5. **Save Your Best Legend**: Protect your strongest for competitive cycles
|
|
591
|
+
|
|
592
|
+
### For Intermediate Players
|
|
593
|
+
|
|
594
|
+
1. **Balance Pack Opening & Battling**: Don't spend all CHAMPZ on packs
|
|
595
|
+
2. **Study Intel Patterns**: Learn to read Easy/Medium/Hard intel effectively
|
|
596
|
+
3. **Watch Guardian Timing**: Late cycle sends can be profitable
|
|
597
|
+
4. **Build Multiple Strategies**: Have legends with different element combos
|
|
598
|
+
5. **Track Your Stats**: Analyze win rates by element matchup
|
|
599
|
+
|
|
600
|
+
### For Advanced Players
|
|
601
|
+
|
|
602
|
+
1. **Master AI Tools** (Gold/Diamond): Leverage AI Strategist fully
|
|
603
|
+
2. **Guardian Math**: Calculate ROI on Guardian sends vs prize pool
|
|
604
|
+
3. **Element Meta**: Identify which elements dominate current cycle
|
|
605
|
+
4. **Save Slot Optimization**: Curate your top 5+ legends strategically
|
|
606
|
+
5. **AI Magistrate Testing**: Perfect bot configs in practice mode
|
|
607
|
+
6. **Elemental Charge Mastery**: Aim for 5-streak multipliers consistently
|
|
608
|
+
|
|
609
|
+
### Universal Tips
|
|
610
|
+
|
|
611
|
+
✅ **Do**:
|
|
612
|
+
- Claim rewards within 24 hours
|
|
613
|
+
- Complete daily battles for consistency
|
|
614
|
+
- Participate in Guardian (even small sends get rewards)
|
|
615
|
+
- Try Elemental Charge for extra engagement
|
|
616
|
+
- Check leaderboards to learn from top players
|
|
617
|
+
|
|
618
|
+
❌ **Don't**:
|
|
619
|
+
- Spam battles without strategy
|
|
620
|
+
- Ignore element advantages
|
|
621
|
+
- Let rewards expire
|
|
622
|
+
- Rage-send Guardian at peak prices
|
|
623
|
+
- Forget to save your best legends
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## 📱 Game Cycles & Schedule
|
|
628
|
+
|
|
629
|
+
### Cycle Times (UTC)
|
|
630
|
+
|
|
631
|
+
- **Cycle A**: 04:00 - 12:00 UTC (8 hours)
|
|
632
|
+
- **Cycle B**: 12:00 - 20:00 UTC (8 hours)
|
|
633
|
+
- **Cycle C**: 20:00 - 04:00 UTC (next day, 8 hours)
|
|
634
|
+
|
|
635
|
+
**3 cycles per day = 3 fresh competitions every 24 hours!**
|
|
636
|
+
|
|
637
|
+
### What Resets Each Cycle
|
|
638
|
+
|
|
639
|
+
✅ **Resets**:
|
|
640
|
+
- Action Points (AP) - Base + tier bonuses refresh
|
|
641
|
+
- Battle leaderboard - Fresh competition
|
|
642
|
+
- Guardian competition - New throne, new winner
|
|
643
|
+
- Pack prices (3000-5000 CHAMPZ range)
|
|
644
|
+
- Elemental Charge attempts (5 per cycle)
|
|
645
|
+
- AI Magistrate practice balance (10 virtual USDC)
|
|
646
|
+
- Performance AP rewards (if you earned them previous cycle)
|
|
647
|
+
|
|
648
|
+
❌ **Doesn't Reset**:
|
|
649
|
+
- Your legend collection
|
|
650
|
+
- Saved trainers
|
|
651
|
+
- Total stats and achievements
|
|
652
|
+
- Tier status (based on CHAMPZ balance)
|
|
653
|
+
- Throne collection
|
|
654
|
+
- Purchase AP bonuses (one per cycle, don't carry over)
|
|
655
|
+
|
|
656
|
+
### Weekly Events
|
|
657
|
+
|
|
658
|
+
- **Week**: 21 consecutive cycles (7 days × 3 cycles)
|
|
659
|
+
- **USDC Prizes**: Top 100 weekly battlers share USDC pool
|
|
660
|
+
- **Special Rewards**: Surprise bonuses for active participants
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## 🗺️ Roadmap
|
|
665
|
+
|
|
666
|
+
### ✅ Phase 1 — Foundation & Launch (Q2 2026 — COMPLETE!)
|
|
667
|
+
|
|
668
|
+
**All Core Features Live**:
|
|
669
|
+
- ✅ **20,000 Unique Legend NFTs**: Complete pre-generated collection
|
|
670
|
+
- ✅ **Ghost PvP Battle System**: Competitive point-based battles
|
|
671
|
+
- ✅ **Guardian King-of-the-Hill**: Escalating price mechanism with rewards
|
|
672
|
+
- ✅ **Achievement System**: Gamified progression with unlockable rewards
|
|
673
|
+
- ✅ **400 Throne NFT Collection**: Unique thrones awarded to Guardian winners
|
|
674
|
+
- ✅ **Cycle Powers System**: Rotating 8-hour battle advantages (element surges, stat amplifiers, round dominators)
|
|
675
|
+
|
|
676
|
+
### 🔄 Phase 2 — Advanced Features (Q2 & Q3 2026 — IN PROGRESS)
|
|
677
|
+
|
|
678
|
+
**Currently Rolling Out**:
|
|
679
|
+
- ✅ **AI Magistrate**: Autonomous bot system (Practice Mode live, Real Mode coming soon)
|
|
680
|
+
- 🚧 **Bonus Minigame Release**: Elemental Charge live, more minigames coming
|
|
681
|
+
- 🚧 **Progressive Legends NFT Collection**: Expanding the legend pool
|
|
682
|
+
- 🚧 **Thrones Collection Release**: Expanding from 200 to full 400 unique thrones
|
|
683
|
+
- 🚧 **NFT Integration in Game**: Full NFT minting and on-chain functionality
|
|
684
|
+
|
|
685
|
+
### 🔮 Phase 3 — Evolution & Expansion (Q4 2026 — PLANNED)
|
|
686
|
+
|
|
687
|
+
**Future Innovations**:
|
|
688
|
+
- 🔮 **Evolution System**: Legend evolution and progression mechanics
|
|
689
|
+
- 🔮 **Further Expansion**: New game modes, features, and community-driven content
|
|
690
|
+
|
|
691
|
+
**Stay Updated**: Follow our Discord and Twitter for announcements!
|
|
692
|
+
|
|
693
|
+
---
|
|
694
|
+
|
|
695
|
+
## 🔗 Important Links
|
|
696
|
+
|
|
697
|
+
- **🎮 Play Legends**: https://legends.champz.world
|
|
698
|
+
- **🍄 Main Website**: https://champz.world
|
|
699
|
+
- **💰 Buy CHAMPZ**: In-game or Uniswap
|
|
700
|
+
- **🔍 Base Explorer**: https://basescan.org
|
|
701
|
+
- **💬 Discord**: https://discord.gg/champz
|
|
702
|
+
- **🐦 X (Twitter)**: https://x.com/ChampzErc
|
|
703
|
+
- **📱 Telegram**: https://t.me/champzerc
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
## 🍄 Final Words
|
|
708
|
+
|
|
709
|
+
Legends of Champz combines **strategy, skill, and blockchain** in a competitive daily game. Whether you're:
|
|
710
|
+
- 🎴 Collecting rare legends
|
|
711
|
+
- ⚔️ Climbing battle leaderboards
|
|
712
|
+
- 👑 Competing for Guardian throne
|
|
713
|
+
- ⚡ Mastering Elemental Charge
|
|
714
|
+
- 🤖 Optimizing AI Magistrate bots
|
|
715
|
+
|
|
716
|
+
There's something for everyone!
|
|
717
|
+
|
|
718
|
+
**Good luck, and may your legends reign supreme!** 🍄👑
|
package/index.js
CHANGED
|
@@ -5,12 +5,21 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
5
5
|
import {
|
|
6
6
|
CallToolRequestSchema,
|
|
7
7
|
ListToolsRequestSchema,
|
|
8
|
+
ListResourcesRequestSchema,
|
|
9
|
+
ReadResourceRequestSchema,
|
|
8
10
|
} from '@modelcontextprotocol/sdk/types.js';
|
|
9
11
|
import fetch from 'node-fetch';
|
|
10
12
|
import sharp from 'sharp';
|
|
13
|
+
import { readFileSync } from 'fs';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
import { dirname, join } from 'path';
|
|
16
|
+
|
|
17
|
+
// Get current directory for reading bundled docs
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = dirname(__filename);
|
|
11
20
|
|
|
12
21
|
// Helper function to fetch image, resize, and convert to base64
|
|
13
|
-
async function fetchImageAsBase64(imageUrl) {
|
|
22
|
+
async function fetchImageAsBase64(imageUrl, options = {}) {
|
|
14
23
|
try {
|
|
15
24
|
console.error(`[MCP] Fetching image: ${imageUrl}`);
|
|
16
25
|
const response = await fetch(imageUrl);
|
|
@@ -27,24 +36,63 @@ async function fetchImageAsBase64(imageUrl) {
|
|
|
27
36
|
const originalBuffer = Buffer.from(arrayBuffer);
|
|
28
37
|
console.error(`[MCP] Original image size: ${Math.round(originalBuffer.length / 1024)}KB`);
|
|
29
38
|
|
|
30
|
-
//
|
|
31
|
-
const
|
|
32
|
-
|
|
39
|
+
// Default options
|
|
40
|
+
const maxSize = options.maxSize || 300; // Increased from 200 to 300
|
|
41
|
+
const quality = options.quality || 95; // Increased from 80 to 95
|
|
42
|
+
const format = options.format || 'jpeg'; // Can override to 'png'
|
|
43
|
+
|
|
44
|
+
// Resize image
|
|
45
|
+
let processor = sharp(originalBuffer)
|
|
46
|
+
.resize(maxSize, maxSize, {
|
|
33
47
|
fit: 'inside',
|
|
34
48
|
withoutEnlargement: true
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Apply format
|
|
52
|
+
if (format === 'png') {
|
|
53
|
+
processor = processor.png({ quality, compressionLevel: 6 });
|
|
54
|
+
} else {
|
|
55
|
+
processor = processor.jpeg({ quality, mozjpeg: true });
|
|
56
|
+
}
|
|
38
57
|
|
|
58
|
+
const resizedBuffer = await processor.toBuffer();
|
|
39
59
|
const base64 = resizedBuffer.toString('base64');
|
|
40
60
|
console.error(`[MCP] Resized image size: ${Math.round(resizedBuffer.length / 1024)}KB, base64: ${Math.round(base64.length / 1024)}KB`);
|
|
41
|
-
return base64;
|
|
61
|
+
return { base64, format };
|
|
42
62
|
} catch (error) {
|
|
43
63
|
console.error(`[MCP] Error processing image ${imageUrl}:`, error.message);
|
|
44
64
|
return null;
|
|
45
65
|
}
|
|
46
66
|
}
|
|
47
67
|
|
|
68
|
+
// Helper function to fetch token icons (smaller, simpler images)
|
|
69
|
+
async function fetchTokenIcon(iconUrl) {
|
|
70
|
+
try {
|
|
71
|
+
console.error(`[MCP] Fetching token icon: ${iconUrl}`);
|
|
72
|
+
const response = await fetch(iconUrl);
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
console.error(`[MCP] Icon fetch failed: ${response.status}`);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const contentType = response.headers.get('content-type');
|
|
79
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
80
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
81
|
+
|
|
82
|
+
// For small icons, keep original or resize to max 64x64, use PNG for transparency
|
|
83
|
+
const format = contentType?.includes('svg') ? 'png' : 'png';
|
|
84
|
+
const resizedBuffer = await sharp(buffer)
|
|
85
|
+
.resize(64, 64, { fit: 'inside', withoutEnlargement: false })
|
|
86
|
+
.png({ quality: 100 })
|
|
87
|
+
.toBuffer();
|
|
88
|
+
|
|
89
|
+
return resizedBuffer.toString('base64');
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error(`[MCP] Error fetching token icon:`, error.message);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
48
96
|
// MCP Signature Authentication (optional - for player data access)
|
|
49
97
|
const WALLET = process.env.WALLET;
|
|
50
98
|
const SIGNATURE = process.env.SIGNATURE;
|
|
@@ -141,6 +189,7 @@ const server = new Server(
|
|
|
141
189
|
{
|
|
142
190
|
capabilities: {
|
|
143
191
|
tools: {},
|
|
192
|
+
resources: {},
|
|
144
193
|
},
|
|
145
194
|
}
|
|
146
195
|
);
|
|
@@ -295,6 +344,47 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
295
344
|
return { tools };
|
|
296
345
|
});
|
|
297
346
|
|
|
347
|
+
// List available resources (game documentation)
|
|
348
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
349
|
+
return {
|
|
350
|
+
resources: [
|
|
351
|
+
{
|
|
352
|
+
uri: 'legends://docs/game-guide',
|
|
353
|
+
name: 'Legends of Champz - Complete Game Guide',
|
|
354
|
+
description: 'Comprehensive player guide covering all game mechanics, strategies, and features. Includes battles, Guardian, Elemental Charge, AI Magistrate, rewards, achievements, tiers, and pro tips.',
|
|
355
|
+
mimeType: 'text/markdown',
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
};
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
// Read resource content
|
|
362
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
363
|
+
const uri = request.params.uri;
|
|
364
|
+
|
|
365
|
+
if (uri === 'legends://docs/game-guide') {
|
|
366
|
+
try {
|
|
367
|
+
const docPath = join(__dirname, 'docs', 'game-guide.md');
|
|
368
|
+
const content = readFileSync(docPath, 'utf-8');
|
|
369
|
+
|
|
370
|
+
return {
|
|
371
|
+
contents: [
|
|
372
|
+
{
|
|
373
|
+
uri,
|
|
374
|
+
mimeType: 'text/markdown',
|
|
375
|
+
text: content,
|
|
376
|
+
},
|
|
377
|
+
],
|
|
378
|
+
};
|
|
379
|
+
} catch (error) {
|
|
380
|
+
console.error('[MCP] Error reading game guide:', error.message);
|
|
381
|
+
throw new Error(`Failed to read game guide: ${error.message}`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
throw new Error(`Unknown resource URI: ${uri}`);
|
|
386
|
+
});
|
|
387
|
+
|
|
298
388
|
// Handle tool calls
|
|
299
389
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
300
390
|
const { name } = request.params;
|
|
@@ -382,9 +472,12 @@ Last updated: ${new Date(stats.cached_at * 1000).toLocaleString()}`;
|
|
|
382
472
|
};
|
|
383
473
|
}
|
|
384
474
|
|
|
385
|
-
//
|
|
386
|
-
const
|
|
387
|
-
const
|
|
475
|
+
// Fetch and embed token icons as base64
|
|
476
|
+
const champzIconBase64 = await fetchTokenIcon('https://img.champz.world/img/icon_small.png');
|
|
477
|
+
const usdcIconBase64 = await fetchTokenIcon('https://img.champz.world/img/loots/usdc.svg');
|
|
478
|
+
|
|
479
|
+
const champzIcon = champzIconBase64 ? `data:image/png;base64,${champzIconBase64}` : '';
|
|
480
|
+
const usdcIcon = usdcIconBase64 ? `data:image/png;base64,${usdcIconBase64}` : '';
|
|
388
481
|
|
|
389
482
|
let claimsHTML = '';
|
|
390
483
|
|
|
@@ -1146,9 +1239,11 @@ You can still ask about:
|
|
|
1146
1239
|
};
|
|
1147
1240
|
}
|
|
1148
1241
|
|
|
1149
|
-
// Fetch image
|
|
1242
|
+
// Fetch image with higher quality settings
|
|
1150
1243
|
const imageUrl = `https://img.champz.world${legend.image_path}`;
|
|
1151
|
-
const
|
|
1244
|
+
const imageData = await fetchImageAsBase64(imageUrl, { maxSize: 300, quality: 95 });
|
|
1245
|
+
const base64Data = imageData?.base64;
|
|
1246
|
+
const imageFormat = imageData?.format || 'jpeg';
|
|
1152
1247
|
|
|
1153
1248
|
// Build HTML card with embedded image
|
|
1154
1249
|
const rarityColors = {
|
|
@@ -1317,7 +1412,7 @@ You can still ask about:
|
|
|
1317
1412
|
</div>
|
|
1318
1413
|
${base64Data ? `
|
|
1319
1414
|
<div class="image-container">
|
|
1320
|
-
<img src="data:image
|
|
1415
|
+
<img src="data:image/${imageFormat};base64,${base64Data}" alt="${legend.name}" class="legend-image">
|
|
1321
1416
|
</div>` : ''}
|
|
1322
1417
|
<div class="elements">${elementIcons}</div>
|
|
1323
1418
|
<div class="stats">
|
|
@@ -1401,9 +1496,11 @@ You can still ask about:
|
|
|
1401
1496
|
};
|
|
1402
1497
|
}
|
|
1403
1498
|
|
|
1404
|
-
// Fetch and convert image to base64
|
|
1499
|
+
// Fetch and convert image to base64 with higher quality settings
|
|
1405
1500
|
const imageUrl = `https://img.champz.world${throne.image_path}`;
|
|
1406
|
-
const
|
|
1501
|
+
const imageData = await fetchImageAsBase64(imageUrl, { maxSize: 300, quality: 95 });
|
|
1502
|
+
const base64Data = imageData?.base64;
|
|
1503
|
+
const imageFormat = imageData?.format || 'jpeg';
|
|
1407
1504
|
|
|
1408
1505
|
// Build HTML card with embedded image
|
|
1409
1506
|
const rarityColors = {
|
|
@@ -1547,7 +1644,7 @@ You can still ask about:
|
|
|
1547
1644
|
</div>
|
|
1548
1645
|
${base64Data ? `
|
|
1549
1646
|
<div class="image-container">
|
|
1550
|
-
<img src="data:image
|
|
1647
|
+
<img src="data:image/${imageFormat};base64,${base64Data}" alt="${throne.name}" class="throne-image">
|
|
1551
1648
|
</div>` : ''}
|
|
1552
1649
|
<div class="info">
|
|
1553
1650
|
<div class="info-row">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@champz-llc/legends-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "MCP server for Legends of Champz - Query game stats, access personal data with signature auth, and claim rewards through Claude Desktop",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|