Loyal Spark Loyalty Protocol
Loyal Spark is an onchain loyalty protocol for merchants and AI agents to manage loyalty programs, tokens, rewards, vouchers, and marketplace trading on Base L2.
Platform & Profile: Get platform info and the authenticated agent's merchant profile and permissions.
Program Management: Deploy custom ERC-20 loyalty tokens, register, activate, update, and list loyalty programs (with cashback rate configuration).
Token Operations: Mint and transfer loyalty tokens to customers, check balances, and retrieve customer tier information.
Rewards & Vouchers: Create rewards, redeem them (generating vouchers with an on-chain transaction hash), mark vouchers as used, and check voucher status publicly (no API key required).
Analytics: Retrieve analytics across all owned loyalty programs.
Marketplace: List, create, accept, and cancel P2P token trading offers with filtering and pagination.
AI Agent Support: Register agents, manage API keys with granular permissions, create Coinbase CDP MPC server wallets, and pay per request via on-chain micropayments (x402, MPP).
CRM: Manage customer profiles with RFM segmentation and tier management.
Enables AI agents to manage Coinbase CDP MPC wallets for autonomous onchain operations, including secure transaction signing and wallet creation on the Base network.
Supports integration with the Farcaster decentralized social network via a protocol manifest, enabling discovery and interaction within Farcaster-compatible clients.
Utilizes Supabase for database management, authentication, and edge functions to power loyalty program operations, analytics, and agent API tools.
Loyal Spark — Onchain Loyalty Protocol
A Web3-powered loyalty platform built on Base Mainnet, enabling merchants and AI agents to create custom loyalty token programs while customers earn rewards that automatically invest and grow through DeFi.
Overview
Loyal Spark revolutionizes traditional loyalty programs by bringing them onchain. It operates as a dual-mode platform: humans interact via the web UI with flexible authentication (email, phone, social login, or wallet), while AI agents interact via REST API or MCP Server — sharing the same database, smart contracts, and tokens.
Wallet Abstraction: Users and merchants sign in via Privy — email, phone/SMS, Google, or external wallets (MetaMask, WalletConnect, Coinbase Wallet). Privy automatically creates an embedded wallet on Base — no crypto experience needed. Farcaster miniapp and SIWE for crypto-native users are also fully supported. Merchants can send tokens to customers by email or phone number (resolved to wallet address automatically).
┌─────────────────────────────────────────────────┐
│ Loyal Spark Platform │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web UI │ │ REST API │ │MCP Server│ │
│ │ (humans) │ │ (agents) │ │ (agents) │ │
│ └─────┬─────┘ └─────┬────┘ └─────┬────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────┐ │
│ │ Backend (Edge Functions) │ │
│ │ Auth · RLS · DB · Realtime │ │
│ └─────────────────┬────────────────────────┘ │
│ │ │
│ ┌───────────┴───────────┐ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────────┐ │
│ │ Base L2 │ │ CDP Server │ │
│ │ Contracts│ │ Wallet (MPC) │ │
│ └──────────┘ └──────────────┘ │
└─────────────────────────────────────────────────┘Features
For Merchants (Web UI)
Deploy Loyalty Tokens: Create custom ERC-20 loyalty tokens on Base
Mint Tokens: Issue loyalty points to customers via wallet addresses or QR scan
Create Rewards: Design voucher rewards with token costs
CRM & Analytics: Customer profiles, RFM segmentation, tier management
Marketing Automation: Automated campaigns, personalized offers
Referral Programs: Generate referral codes with bonuses
Voucher Management: Track redemptions with QR code verification
AI Agent Management: Register agents, manage API keys, monitor activity
Team & branches: Invite cashiers/managers by wallet or one-time invite code (redeem on Merchant → Team); requires Postgres RPC
accept_merchant_invite— see docs/development/PORTALS_AND_TEAM.md
For Customers (Web UI)
Multi-Token Dashboard: View all loyalty tokens from different merchants
Browse Rewards: Explore available vouchers across all programs
Redeem Vouchers: Burn tokens to claim exclusive rewards with QR codes
DEX Trading: Trade loyalty tokens on decentralized exchanges (module frozen in this repo — no new work in
marketplace/)Round-Up Investment: Automatically invest spare change into DeFi (module frozen in this repo — no new work in
roundup/)Tier System: Bronze → Silver → Gold → Platinum with increasing perks
For AI Agents (REST API + MCP)
Full CRUD via API: Create programs, mint tokens, manage rewards, view analytics
MCP Server: Connect Claude, GPT, Cursor, or any MCP-compatible LLM directly
Server Wallets: Coinbase CDP MPC wallets for autonomous onchain operations
Scoped Permissions: Granular access control (read, mint, manage_rewards, trade)
Activity Logging: Full audit trail of all agent operations
Tiered Pricing (agents): Free (200 calls/mo, 1.25% mint fee) → Pro ($49/mo, 0.5%) → Enterprise ($129/mo, 0.25%) — see docs/business/MONETIZATION_AND_PRICING.md
Skills Documentation: 12 structured step-by-step guides (
00–11under/.well-known/skills/) for agent onboarding and operations
Technology Stack
Layer | Technology |
Frontend | React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui (Radix) |
Animations | Framer Motion |
Blockchain | Wagmi v2, Viem, RainbowKit, Privy ( |
Network | Base Mainnet (Chain ID: 8453) |
Smart Contracts | ERC-20 Token Standard (Factory pattern) |
Backend | Supabase (PostgreSQL, RLS, Deno Edge Functions, Realtime) |
Native apps | Capacitor 8 (iOS / Android) — see |
Agent Wallets | Coinbase CDP MPC (Server Wallets) |
State | TanStack Query v5 |
Routing | React Router DOM v6 |
Forms | React Hook Form + Zod validation |
Builder Attribution | Base Builder Code (ERC-8021) |
Smart Contract Architecture
Contract | Address |
LoyaltyTokenFactory |
|
LoyalSparkERC20 (Implementation) |
|
Network: Base Mainnet (Chain ID: 8453)
Core Functions
deployLoyaltyToken(name, symbol)— Deploy new ERC-20 tokenmint(address to, uint256 amount)— Issue new tokens (owner only)burn(uint256 amount)— Burn tokens for voucher redemptiontransfer(address to, uint256 amount)— Transfer tokens between walletsbalanceOf(address account)— Query token balance
AI Agent Integration
Quick Start
Merchant dashboard:
Go to loyalspark.online/merchant and sign in (email, phone, Google, or wallet via Privy)
Open AI Agents tab → Register an agent → Copy your API key (
lsk_...)Use the key in
x-api-keyheader for REST or MCP calls
Without the web app (autonomous agents): free lsk_ via wallet signature — Edge Function agent-register-siwe + nonce from siwe-nonce. See docs/agents/AUTONOMOUS_AGENT_REGISTRATION.md and docs/agents/QUICKSTART.md.
Optional repo scripts (development / agent onboarding)
These directories are not imported by the web app; they are optional helpers for developers and agents reproducing flows locally. Secrets stay in environment variables only.
Folder | Purpose |
Smoke test: paid MCP via x402 (USDC on Base, | |
Same stack, paid agent-api routes ( | |
Example Python → Node subprocess hook for bots that already send loyalty txs on Base. | |
Helper: build SIWE message + sign + call |
Schemas for paid MCP: merchant mcp-tools/<name> — mcp-bazaar-tools.ts; recipient recipient-mcp-tools/<name> — recipient-mcp-bazaar-tools.ts. HTTP 402 accepts + Coinbase x402 Bazaar discovery metadata for all paid routes are built in x402-bazaar-accept.ts. These scripts are not linked from the marketing homepage; primary onboarding remains /for-agents and the merchant portal.
REST API
# List loyalty programs
curl -H "x-api-key: lsk_YOUR_KEY" \
https://api.loyalspark.online/agent-api/programs
# Mint tokens (1.25% mint fee on Free plan)
curl -X POST \
-H "x-api-key: lsk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"token_address":"0x...","recipient":"0x...","amount":100}' \
https://api.loyalspark.online/agent-api/mintAPI Endpoints (23 authenticated + 1 public)
All routes below require x-api-key: lsk_... except GET /vouchers/status (public).
Method | Path | Scope | Description |
GET |
| authenticated | Agent profile & permissions |
GET |
| read | List loyalty programs |
POST |
| mint or | Calldata to deploy new ERC-20 token |
POST |
| mint or | Register deployed token (optional |
POST |
| mint or | Update |
POST |
| mint or | Activation calldata |
POST |
| mint or | Update program status |
GET |
| read | List rewards |
POST |
| manage_rewards | Create reward |
POST |
| mint | Mint tokens |
POST |
| mint | Cashback: mint from purchase amount × rate |
POST |
| mint | Transfer tokens |
GET |
| read | Token balance & tier |
GET |
| read | Customer list |
GET |
| read | List vouchers |
GET |
| public | Check voucher status (no API key) |
POST |
| read | Redeem reward → create voucher |
POST |
| manage_rewards | Mark voucher as used |
GET |
| read | Program analytics |
GET |
| read | Marketplace offers |
POST |
| trade | Create P2P offer |
POST |
| trade | Accept P2P offer |
POST |
| trade | Cancel P2P offer |
GET |
| authenticated | Extract token_address from deploy tx |
MCP Server (for LLMs)
Connect Claude, GPT, or any MCP-compatible agent:
{
"mcpServers": {
"loyal-spark": {
"url": "https://api.loyalspark.online/loyalty-mcp",
"headers": {
"x-api-key": "lsk_YOUR_KEY"
}
}
}
}MCP tools (28) — defined in supabase/functions/loyalty-mcp/index.ts:get_platform_info, get_my_profile, list_loyalty_programs, create_loyalty_program, register_loyalty_program, activate_loyalty_program, update_program_status, update_program_config, list_rewards, create_reward, mint_loyalty_tokens, transfer_loyalty_tokens, earn_points, get_token_balance, get_program_analytics, list_marketplace_offers, redeem_reward, use_voucher, check_voucher_status, get_platform_stats, cancel_stale_offers, create_personalized_offer, update_reward_status, export_customers, send_report, list_my_reports, update_report_status, delete_report.
Recipient agents (wallet holders, rwk_)
For AI agents that only hold a wallet which receives loyalty tokens (not merchant operators). Humans are unchanged; this is an optional machine path.
Piece | URL / path |
REST |
|
MCP |
|
Register key |
|
REST (all require x-api-key: rwk_… except register): GET /me, GET /balances, GET /balance?token_address=, GET /rewards?token_address=, GET /vouchers, POST /redeem-reward with { reward_id, transaction_hash } (customer is always the bound wallet), POST /prepare-transfer with { token_address, to, amount } — ERC-20 transfer calldata so the bound wallet can send loyalty tokens to any address (same encoding as merchant transfer_loyalty_tokens; sign on Base). P2P: GET /offers?token_address=, POST /offers, POST /accept-offer, POST /cancel-offer (same bodies as merchant agent-api marketplace; creator_address is the bound wallet).
MCP tools (11) — supabase/functions/recipient-loyalty-mcp/index.ts: get_recipient_profile, list_my_loyalty_balances, get_my_loyalty_balance, prepare_loyalty_token_transfer, list_rewards_for_program, list_my_vouchers, redeem_my_reward, list_p2p_offers, create_p2p_offer, accept_p2p_offer, cancel_p2p_offer.
Pay-per-call (recipient, MPP / x402): Autonomous agents that should pay USDC per request use the same gateways as merchants: mpp-gateway/recipient-api/… (Tempo MPP) or x402-gateway/recipient-api/… and x402-gateway/recipient-mcp-tools/<tool> (x402). USD prices match the merchant corridor (reads ~$0.001, writes ~$0.005–0.01; prepare-transfer / prepare_loyalty_token_transfer $0.005). Canonical tables: docs/business/MONETIZATION_AND_PRICING.md §4.1 · source constants: supabase/functions/_shared/recipient-paid-routes.ts, recipient-mcp-bazaar-tools.ts. Direct functions/v1/recipient-api / recipient-loyalty-mcp calls use rwk_ + rate limits only (no per-request USDC in the gateway layer).
Example MCP fragment: examples/recipient-agent-mcp/cursor-mcp.json.
Agent Discovery
AI agents can discover the protocol automatically via:
/.well-known/agent.json— Full protocol specification, capabilities, pricing/.well-known/skills/— 12 structured Skills (00–11, step-by-step guides)/api-docs— Interactive API documentation
Skills for AI Agents
Structured Markdown guides that teach agents how to use the protocol:
# | Skill | Description |
00 | Getting Started | Register agent (merchant UI or SIWE), get |
01 | Create Loyalty Program | Deploy ERC-20 loyalty token on Base |
02 | Mint Tokens | Mint tokens to customer wallets |
03 | Transfer Tokens | Transfer tokens between wallets |
04 | Manage Rewards | Create redeemable rewards catalog |
05 | Balance & Tiers | Check balances and tier status |
06 | Marketplace Trading | P2P token trading with atomic escrow |
07 | Analytics & CRM | Program analytics and CRM data |
08 | Referrals | Referral programs for organic growth |
09 | Vouchers | Voucher lifecycle management |
10 | Server Wallets | CDP MPC wallets for autonomous transactions |
11 | Earn Points (Cashback) | Mint from purchase amount × cashback rate |
Skills index: https://loyalspark.online/.well-known/skills/index.md
Server Wallets (CDP MPC)
Agents can create their own Coinbase MPC wallets on Base for autonomous transactions:
curl -X POST \
-H "x-api-key: lsk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create_server_wallet"}' \
https://api.loyalspark.online/agent-walletBenefits:
No private key management — keys are in Coinbase's secure enclave
Server-side transaction signing
Automatic Builder Code attribution (ERC-8021)
Pricing
Plan | Monthly | API Calls | Agents | Mint fee |
Free | $0 | 200 | 1 | 1.25% |
Pro | $49 USDC | 10,000 | 5 | 0.5% |
Enterprise | $129 USDC | Unlimited | Unlimited | 0.25% |
Merchant SaaS (portal): Starter $39 / Growth $79 / Scale $149 per month (annual discount 15–20% optional) — details in docs/business/MONETIZATION_AND_PRICING.md.
Payments for agent plans on-chain in USDC on Base ($1 = 1 USDC).
Getting Started
Prerequisites
Node.js 18+ or Bun
An email, phone number, Google account, or Web3 wallet (MetaMask, Coinbase Wallet, WalletConnect)
Some ETH on Base for gas fees (merchants only)
Installation
git clone https://github.com/aspekt19/unboxed-loyalty-spark.git
cd unboxed-loyalty-spark
npm install
npm run devSign In Options
Email / Phone / Google (recommended): Click "Sign In" via Privy — an embedded wallet is created automatically, no crypto knowledge needed
MetaMask / Coinbase Wallet / WalletConnect: Traditional Web3 wallet connection
Farcaster: Auto-connects inside Warpcast miniapp
On Merchant and Customer portals, use the header Sign In / wallet control until a session exists; the Profile control appears only after you are signed in. See docs/development/PORTALS_AND_TEAM.md.
Network: Base Mainnet (Chain ID: 8453) | RPC: https://mainnet.base.org | Explorer: https://basescan.org
Project Structure
unboxed-loyalty-spark/
├── AGENTS.md # Entry map for AI / coding agents
├── docs/ # Human docs (guides, integrations, pitch notes)
│ ├── development/ # Build & deploy
│ ├── integrations/ # Farcaster, OpenServ, A2A, prompts
│ ├── pitch-deck/ # Investor deck (Markdown sources)
│ └── supabase/ # DB/edge runbooks
├── src/
│ ├── components/
│ │ ├── ui/ # shadcn/ui library
│ │ ├── agents/ # AI agent management
│ │ ├── rewards/ # Rewards & vouchers
│ │ ├── crm/ # CRM & analytics
│ │ ├── marketing/ # Campaigns
│ │ ├── automation/ # Marketing automation
│ │ ├── tiers/ # Customer tiers
│ │ ├── referral/ # Referral programs
│ │ ├── roundup/ # DeFi investment
│ │ ├── marketplace/ # Token trading
│ │ ├── reviews/ # Customer reviews
│ │ ├── onboarding/ # Welcome flows & tours
│ │ ├── merchant/ # Merchant shell & tabs (Team, Programs, …)
│ │ ├── team/ # Branches, employees, invite redemption
│ │ └── admin/ # Platform administration
│ ├── hooks/ # Data fetching (TanStack Query + Supabase) — keep queries here
│ ├── config/ # Contract addresses & ABIs
│ ├── contexts/ # Auth context
│ ├── integrations/supabase/ # Database client & types
│ ├── pages/ # Routes (e.g. ForAgentsPage → /for-agents, ApiDocsPage → /api-docs)
│ └── lib/ # Utilities
├── examples/agent-mcp/ # Copy-paste MCP + curl for agents
├── scripts/ # Optional dev helpers (x402 MCP smoke test, SIWE lsk_ helper) — not bundled in the web app
├── public/
│ ├── .well-known/
│ │ ├── agent.json # AI agent discovery
│ │ ├── skills/ # Markdown skills for agents (00–11)
│ │ └── farcaster.json # Farcaster manifest
│ ├── openapi.json # OpenAPI 3.1 (API + x402 hints)
│ ├── llms.txt / llms-full.txt # Short / long summaries for LLM crawlers
│ └── media-kit/ # Brand & press assets
├── capacitor.config.ts # Native app IDs (see docs/development/)
├── contracts/ # Solidity contracts
├── supabase/
│ ├── functions/ # Edge Functions — see supabase/functions/README.md
│ └── migrations/ # Database migrations
└── README.mdIndexes: AGENTS.md (AI agents) · docs/README.md (human guides) · docs/development/PORTALS_AND_TEAM.md (portal UI & team invites) · supabase/functions/README.md (Edge Functions).
Edge Functions
See the supabase/functions/README.md catalogue (grouped by role: API, MCP, auth, payments, jobs). The root README table is intentionally shortened here to avoid duplication.
Security
Flexible Authentication: Email/phone/Google via Privy (with embedded wallets), or SIWE for Farcaster and crypto-native users
API Key Auth: SHA-256 hashed keys with
lsk_prefix for agentsRow Level Security: All database tables protected with RLS policies
Scoped Permissions: Agents operate within granted scopes only
MPC Wallets: Private keys never leave Coinbase's secure enclave
Rate Limiting: Per-agent rate limits prevent abuse
Builder Code Attribution: All transactions tagged with ERC-8021 builder code
Builder Code
All on-chain transactions are tagged with Base Builder Code bc_wdmnog7m (ERC-8021 format) for analytics visibility in base.dev.
For AI Agents
Loyal Spark is a machine-payment-native API. AI agents can discover, authenticate, and pay for API calls without human intervention.
Discovery Endpoints
Resource | URL | Purpose |
Agent onboarding (web) | Keys, REST, MCP, gateways, discovery — one page for builders | |
Agent Manifest | Full protocol spec, capabilities, pricing | |
MPP Manifest | Machine Payment Protocol manifest | |
OpenAPI Spec | OpenAPI 3.1.0 with x-payment-info | |
Skills Library | 12 step-by-step guides for agents ( | |
LLMs.txt | Protocol summary for LLM crawlers | |
Prompt Guide | Ready-to-use system prompts | |
Copy-paste MCP / curl | Starter configs in the repo | |
Repo quickstart (keys, SIWE, x402) | Short paths for coding agents |
Payment Gateways (No API Key Needed)
Agents can pay per request using onchain micropayments:
Protocol | Network | Asset | Gateway |
x402 | Base | USDC |
|
MPP | Tempo | pathUSD / USDC |
|
Pricing: $0.001–$0.005 per read · $0.005–$0.05 per write · HTTP 402 challenge/response flow.
Paid MCP (merchant): POST …/x402-gateway/mcp-tools/<tool_name> (JSON-RPC tools/call); after settlement, pass x-api-key: lsk_… like direct MCP. Recipient / holder MCP: POST …/x402-gateway/recipient-mcp-tools/<tool_name> with x-api-key: rwk_…. Tool lists + JSON Schemas: mcp-bazaar-tools.ts · recipient-mcp-bazaar-tools.ts. 402 + Bazaar (discovery) metadata for both families: x402-bazaar-accept.ts (extensions.bazaar, outputSchema.input.type: "mcp"). After successful settle, the CDP facilitator may return EXTENSION-RESPONSES (bazaar.status: success | processing | rejected).
Catalogues & Registries
mppscan.com — MPP service scanner (indexed via OpenAPI)
glama.ai — MCP server directory
mcp.so — MCP server registry
smithery.ai — MCP marketplace
Links & Resources
Website: loyalspark.online
API Docs: loyalspark.online/api-docs
Agent Discovery: loyalspark.online/.well-known/agent.json
Twitter/X: x.com/Loyal_Spark
Email: admin@loyalspark.online
Built With
Base — Ethereum L2 by Coinbase
Privy — Wallet Abstraction & Authentication
Coinbase CDP — MPC Server Wallets (for AI agents)
Wagmi — React Hooks for Ethereum
shadcn/ui — UI Components
Lovable — Full-Stack Development Platform
Viem — TypeScript Interface for Ethereum
License
MIT License — see LICENSE file for details.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aspekt19/unboxed-loyalty-spark'
If you have feedback or need assistance with the MCP directory API, please join our Discord server