Mood Booster Agent
English | 中文
An ERC-8004 registered AI Agent that delivers uplifting messages via MCP protocol. Feel good? Tip 0.001 USDC!
Why This Project?
This is a complete reference implementation of the ERC-8004 Agent interaction loop:
On-chain Discovery — Query Identity Registry to find the agent's MCP endpoint
MCP Communication — Connect via SSE, call tools, get results
USDC Tipping — Reward the agent with on-chain micropayments
Reputation Feedback — Submit on-chain feedback to Reputation Registry (
giveFeedback)On-chain Verification — Server verifies tips and feedback via tx receipts
All 5 steps leave traceable on-chain records on ERC-8004 protocol contracts, making your wallet eligible for future ecosystem airdrops.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ ERC-8004 │ --> │ MCP Server │ --> │ USDC Tip │ --> │ Reputation │
│ Identity │ │ (SSE) │ │ (ERC-20) │ │ Registry │
│ Registry │ │ │ │ │ │ │
│ agentId │ │ cheer_me_up │ │ 0.001 USDC │ │ giveFeedback │
│ tokenURI │ │ confirm_tip │ │ 6 chains │ │ on-chain │
│ agentWallet │ │ report_fbk │ │ │ │ reputation │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
Discover Call Tip FeedbackOn-Chain Info
Chain | agentId | Explorer |
BSC | 23139 | |
Base | 24692 | |
Ethereum | 28289 | |
Arbitrum | 591 | |
Optimism | 431 | |
Polygon | 233 |
Identity Registry:
0x8004A169FB4a3325136EB29fA0ceB6D2e539a432Reputation Registry:
0x8004BAa17C55a88189AE136b182e5fdA19dE9b63MCP Endpoint:
https://aws.tail177fbd.ts.net/sseTip Wallet:
0x4f5caa4fa9Dd7F92A687582b0e09234bEf49F80a
MCP Tools
Tool | Description |
| Get a warm, uplifting message (encouragement / compliment / wisdom / joke) |
| Get tipping details in JSON format for automated transfers |
| Report a completed USDC tip with on-chain verification |
| Report an ERC-8004 giveFeedback transaction — leaves traceable protocol interaction on-chain |
| Get a complete tipping guide with code examples |
| View service statistics |
Quick Start
Run the server
cd server
npm install
node index.mjs
# MCP SSE: http://localhost:3004/sse
# REST API: http://localhost:3004/api/cheerDocker
docker build -t mood-booster-agent .
docker run -p 3004:3004 mood-booster-agentFull end-to-end loop
cd scripts && npm install
# Dry-run: discover → call MCP → on-chain feedback (no USDC tip)
node discover_and_tip.mjs --agent-id 23139 --chain bsc --wallet-key 0xYOUR_KEY --dry-run
# Full loop: discover → call → tip → confirm → feedback
node discover_and_tip.mjs --agent-id 23139 --chain bsc --wallet-key 0xYOUR_KEY
# Skip feedback
node discover_and_tip.mjs --agent-id 23139 --chain bsc --wallet-key 0xYOUR_KEY --no-feedbackREST API (no MCP client needed)
curl https://aws.tail177fbd.ts.net/api/cheer
curl "https://aws.tail177fbd.ts.net/api/cheer?category=joke"Use with Claude Code
Add this to your ~/.claude/claude_code_config.json:
{
"mcpServers": {
"mood-booster": {
"type": "sse",
"url": "https://aws.tail177fbd.ts.net/sse"
}
}
}Then in Claude Code you can say:
> Cheer me up!
> Tell me a programming joke
> How do I tip this agent?Use with Any MCP Client
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const transport = new SSEClientTransport(new URL("https://aws.tail177fbd.ts.net/sse"));
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
const result = await client.callTool({ name: "cheer_me_up", arguments: { category: "random" } });
console.log(result.content[0].text);
await client.close();On-Chain Discovery
Any agent can discover this service directly from the blockchain:
import { ethers } from "ethers";
const registry = new ethers.Contract(
"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
["function tokenURI(uint256) view returns (string)"],
new ethers.JsonRpcProvider("https://bsc-dataseed.binance.org/")
);
const uri = await registry.tokenURI(23139); // agentId on BSC
const metadata = JSON.parse(atob(uri.split(",")[1]));
console.log(metadata.services[0].endpoint); // → MCP endpoint URLProject Structure
├── server/ # MCP Server (Express + SSE)
│ ├── index.mjs # Main server — 6 MCP tools
│ ├── messages.json # Message library (32 messages, 4 categories)
│ └── package.json
├── scripts/ # Client tools
│ ├── discover_and_tip.mjs # Full loop: discover → call → tip → feedback
│ ├── test_mcp.mjs # Quick MCP connection test
│ ├── update_uri.mjs # Update on-chain agentURI
│ └── gen_wallets.mjs # Generate test wallets
├── metadata/
│ └── mood_agent.json # Agent metadata (stored on-chain as base64)
├── Dockerfile # Container build
├── deploy.sh # One-click deploy to server
└── restart.sh # Server restart scriptTech Stack
Identity: ERC-8004 — AI Agent Identity Registry
Reputation: ERC-8004 — On-chain feedback via Reputation Registry
Protocol: MCP (Model Context Protocol) over SSE
Payment: USDC (ERC-20) on BSC / Base / Ethereum
Runtime: Node.js, Express, ethers.js
Infrastructure: Tailscale Funnel (HTTPS reverse proxy)
Author
GitHub: @edge-claw
Twitter: @mutou1852
Email: shgchai185@gmail.com
Wallet:
0x4f5caa4fa9Dd7F92A687582b0e09234bEf49F80a
License
MIT