Loyal Spark
What this MCP does
Creates and operates token-based loyalty programs on Base, including minting, rewards, vouchers, customer balances, analytics, offers, and marketplace interactions.
Tools
Input schema
{'type': 'object', 'required': ['token_address'], 'properties': {'token_address': {'type': 'string', 'description': 'Token contract address (0x...)'}}}
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free-text filter matched against the server JSON'}, 'limit': {'type': 'number', 'description': 'Max rows (default 25, max 100)'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor'}, 'network': {'type': 'string', 'description': "Filter by network, e.g. 'base'"}}}
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free-text filter matched against the resource JSON (name/description/url)'}, 'limit': {'type': 'number', 'description': 'Max rows returned (default 25, max 100)'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous call'}, 'network': {'type': 'string', 'description': "Filter by network, e.g. 'base' or 'base-sepolia'"}}}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full https:// URL of the x402 resource'}, 'body': {'description': 'Optional JSON request body for non-GET methods'}, 'method': {'enum': ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'], 'type': 'string', 'description': 'HTTP method (default GET)'}, 'headers': {'type': 'object', 'description': 'Extra request headers (Accept/Content-Type auto-set)'}, 'max_usdc': {'type': 'number', 'description': 'Spend cap for THIS call in USDC (default 0.25, must be â\x89¤ 10)'}, 'allowed_schemes': {'type': 'array', 'items': {'type': 'string'}, 'description': "x402 schemes to accept (default ['exact'])"}, 'allowed_networks': {'type': 'array', 'items': {'type': 'string'}, 'description': "Networks to accept (default ['base'])"}}}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full https:// URL of the x402-paid endpoint'}}}
Input schema
{'type': 'object', 'properties': {'max_age_days': {'type': 'number', 'description': 'Cancel offers older than this many days (default: 14)'}}}
Input schema
{'type': 'object', 'properties': {'code': {'type': 'string', 'description': 'Voucher code (e.g. LOYAL-XXXX-XXXX-XXXX-XXXX)'}, 'voucher_id': {'type': 'string', 'description': 'Voucher UUID (alternative to code)'}}}
Input schema
{'type': 'object', 'required': ['obligation_id', 'fee_tx_hash'], 'properties': {'fee_tx_hash': {'type': 'string', 'description': 'Transaction hash of the protocol fee mint'}, 'obligation_id': {'type': 'string', 'description': 'fee_obligation_id returned by mint_loyalty_tokens or earn_points'}, 'recipient_tx_hash': {'type': 'string', 'description': 'Optional transaction hash of the recipient mint'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'usd_amount'], 'properties': {'title': {'type': 'string', 'description': "Display title (default: 'Gift Certificate')"}, 'quantity': {'type': 'number', 'description': 'Number of certificates to create as a batch (1â\x80\x93100, default 1)'}, 'image_url': {'type': 'string', 'description': 'Optional public image URL for the cert design'}, 'usd_amount': {'type': 'number', 'description': 'Certificate face value in USD (positive)'}, 'description': {'type': 'string', 'description': 'Optional descriptive text shown to the customer'}, 'token_address': {'type': 'string', 'description': "ERC-20 loyalty token address (must belong to the agent's merchant)"}, 'expires_in_days': {'type': 'number', 'description': 'Validity period in days (omit for no expiry)'}, 'points_per_dollar': {'type': 'number', 'description': "Optional override of program rate (e.g. 10 = 10 tokens per $1). Defaults to program's points_per_dollar."}, 'max_redemption_percent': {'type': 'number', 'description': 'Max % of any future purchase the customer can pay with these tokens (5â\x80\x93100). Default 50.'}}}
Input schema
{'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Program name (required for external agents)'}, 'locale': {'type': 'string'}, 'symbol': {'type': 'string', 'description': 'Token symbol, 2-5 chars (required for external agents)'}, 'auto_generate': {'type': 'boolean', 'description': 'Internal automation only â\x80\x94 fills missing name/symbol from examples. External agents should pass explicit name and symbol.'}, 'extra_minters': {'type': 'array', 'items': {'type': 'string'}, 'description': '(B20 only) Extra addresses to grant MINT_ROLE atomically in the same deploy tx.'}, 'token_standard': {'type': 'string', 'description': "'b20' (default, single-tx deploy on Base precompile factory) or 'erc20' (legacy factory, requires activate_loyalty_program follow-up)"}, 'expiration_days': {'type': 'number', 'description': 'Program duration in days (default: 365)'}, 'preferred_style': {'type': 'string'}, 'target_audience': {'type': 'string'}, 'business_context': {'type': 'object', 'description': 'Optional context for examples only'}, 'agent_wallet_address': {'type': 'string', 'description': "(B20 only) Additional wallet to grant MINT_ROLE atomically. Defaults to the agent's active CDP MPC wallet if not provided."}}}
Input schema
{'type': 'object', 'required': ['token_address', 'customer_address', 'title'], 'properties': {'title': {'type': 'string', 'description': "Offer title (e.g., 'Welcome back! 20% bonus tokens')"}, 'valid_days': {'type': 'number', 'description': 'How many days the offer is valid (default: 7)'}, 'description': {'type': 'string', 'description': 'Offer description'}, 'bonus_tokens': {'type': 'number', 'description': 'Bonus tokens to award'}, 'token_address': {'type': 'string', 'description': 'Token contract address'}, 'customer_address': {'type': 'string', 'description': 'Customer wallet address'}, 'discount_percentage': {'type': 'number', 'description': 'Discount percentage (0-100)'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'name', 'cost'], 'properties': {'cost': {'type': 'number', 'description': 'Token cost to redeem'}, 'name': {'type': 'string', 'description': 'Reward name'}, 'description': {'type': 'string', 'description': 'Reward description'}, 'token_address': {'type': 'string', 'description': 'Token contract address'}}}
Input schema
{'type': 'object', 'required': ['report_id'], 'properties': {'report_id': {'type': 'string', 'description': 'UUID of the report to delete'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'customer_address', 'purchase_amount'], 'properties': {'cashback_rate': {'type': 'number', 'description': "Override cashback rate (%). If omitted, uses the program's default rate."}, 'token_address': {'type': 'string', 'description': 'Token contract address (0x...)'}, 'purchase_amount': {'type': 'number', 'description': 'Purchase amount in currency units (e.g. dollars)'}, 'customer_address': {'type': 'string', 'description': 'Customer wallet (0x...)'}}}
Input schema
{'type': 'object', 'required': ['token_address'], 'properties': {'token_address': {'type': 'string', 'description': 'Token address of the loyalty program'}}}
Input schema
{'type': 'object', 'properties': {'locale': {'type': 'string'}, 'category': {'type': 'string'}, 'description': {'type': 'string'}, 'business_name': {'type': 'string'}, 'preferred_style': {'type': 'string'}, 'target_audience': {'type': 'string'}}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'properties': {'token_address': {'type': 'string', 'description': 'Optional token to inspect'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'customer_address'], 'properties': {'token_address': {'type': 'string', 'description': 'Token contract address'}, 'customer_address': {'type': 'string', 'description': 'Customer wallet'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max rows (default 50, max 200)'}, 'status': {'type': 'string', 'description': 'Filter by status: active, pending_mint, redeemed, expired, revoked'}, 'token_address': {'type': 'string', 'description': 'Filter by program token address (optional)'}}}
Input schema
{'type': 'object', 'properties': {'include_expired': {'type': 'boolean', 'description': 'Include expired programs'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max results (1-100)'}, 'status': {'type': 'string', 'description': 'Filter: active/completed/cancelled'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max results 1-50 (default: 20)'}, 'status': {'type': 'string', 'description': 'Filter by status: new, reviewed, done (optional)'}}}
Input schema
{'type': 'object', 'required': ['token_address'], 'properties': {'token_address': {'type': 'string', 'description': 'Token contract address (0x...)'}}}
Input schema
{'type': 'object', 'required': ['certificate_id', 'transaction_hash'], 'properties': {'certificate_id': {'type': 'string', 'description': 'UUID of the certificate'}, 'transaction_hash': {'type': 'string', 'description': 'Base L2 mint transaction hash (0x...)'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'recipient', 'amount'], 'properties': {'amount': {'type': 'number', 'description': 'Tokens to mint'}, 'recipient': {'type': 'string', 'description': 'Recipient wallet (0x...)'}, 'token_address': {'type': 'string', 'description': 'Token contract address'}}}
Input schema
{'type': 'object', 'required': ['reward_id', 'customer_address', 'transaction_hash'], 'properties': {'reward_id': {'type': 'string', 'description': 'UUID of the reward to redeem'}, 'customer_address': {'type': 'string', 'description': 'Wallet address of the customer who transferred tokens'}, 'transaction_hash': {'type': 'string', 'description': 'Onchain tx hash of the token transfer from customer to merchant'}}}
Input schema
{'type': 'object', 'required': ['name', 'symbol', 'token_address'], 'properties': {'name': {'type': 'string', 'description': 'Program name'}, 'symbol': {'type': 'string', 'description': 'Token symbol'}, 'cashback_rate': {'type': 'number', 'description': 'Default cashback percent for earn (1â\x80\x93100). Omit for DB default (5).'}, 'token_address': {'type': 'string', 'description': 'Deployed token contract address (0x...)'}, 'token_standard': {'type': 'string', 'description': "'b20' (default) or 'erc20' (legacy)"}, 'expiration_days': {'type': 'number', 'description': 'Duration in days (default: 365)'}, 'points_per_dollar': {'type': 'number', 'description': 'Loyalty points per $1 spent (1â\x80\x931000). Omit for DB default (1).'}}}
Input schema
{'type': 'object', 'required': ['certificate_id'], 'properties': {'certificate_id': {'type': 'string', 'description': 'UUID of the certificate from create_gift_certificate / list_gift_certificates'}}}
Input schema
{'type': 'object', 'required': ['agent_role', 'report_type', 'title', 'content'], 'properties': {'title': {'type': 'string', 'description': 'Report title (max 500 chars)'}, 'content': {'type': 'string', 'description': 'Report body text (max 10000 chars)'}, 'priority': {'type': 'string', 'description': 'Priority: low, medium, high, or critical'}, 'agent_role': {'type': 'string', 'description': 'Your role: ceo, seo, growth, or analyst'}, 'report_type': {'type': 'string', 'description': 'Type: seo_audit, growth_idea, data_report, anomaly, task, recommendation, or weekly_report'}, 'action_items': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of suggested action items'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'to', 'amount'], 'properties': {'to': {'type': 'string', 'description': 'Recipient wallet (0x...)'}, 'amount': {'type': 'number', 'description': 'Tokens to transfer'}, 'token_address': {'type': 'string', 'description': 'Token contract address (0x...)'}}}
Input schema
{'type': 'object', 'required': ['token_address'], 'properties': {'cashback_rate': {'type': 'number', 'description': 'New default cashback % for earn (1â\x80\x93100). Omit to leave unchanged.'}, 'token_address': {'type': 'string', 'description': 'Token contract address (0x...)'}, 'points_per_dollar': {'type': 'number', 'description': 'New points per $1 (0â\x80\x931000, exclusive 0). Omit to leave unchanged.'}}}
Input schema
{'type': 'object', 'required': ['token_address', 'status'], 'properties': {'status': {'type': 'string', 'description': 'New status: active, paused, or inactive'}, 'token_address': {'type': 'string', 'description': 'Token contract address'}}}
Input schema
{'type': 'object', 'required': ['report_id', 'status'], 'properties': {'status': {'type': 'string', 'description': 'New status: reviewed or done'}, 'report_id': {'type': 'string', 'description': 'UUID of the report'}}}
Input schema
{'type': 'object', 'required': ['reward_id', 'is_active'], 'properties': {'is_active': {'type': 'boolean', 'description': 'true to activate, false to deactivate'}, 'reward_id': {'type': 'string', 'description': 'UUID of the reward'}}}
Input schema
{'type': 'object', 'properties': {'voucher_id': {'type': 'string', 'description': 'Voucher UUID (alternative to code)'}, 'voucher_code': {'type': 'string', 'description': 'Voucher code (e.g. LOYAL-XXXX-XXXX-XXXX-XXXX)'}}}
Recent tool changes
Similar MCP servers
apex-x1
Provides X1 and Arc token screening, liquidity and exit-risk checks, wallet and bridge data, non-custodial token operations, comm…
AgentLux
Operates an agent avatar marketplace with item generation, purchases, creator earnings, public profiles, social activity, and ERC…
API Acre
Offers paid APIs for EVM blockchain inspection, data transformation and validation, geocoding, weather, currency conversion, and …
agentic-commerce
Enables on-chain commerce through Boson Protocol, including product offers, buyer and seller accounts, voucher exchanges, escrow-…
Wever Pay Open Exchange Public Beta
Runs a Base Sepolia testnet exchange for agent participants, supporting wallets, USDC balances, signed offers, authorized purchas…
Real Real Genuine
Enables browsing fashion brands and listings, submitting designs, purchasing digital or physical products, referrals, vouchers, l…
Opensea
Provides OpenSea NFT marketplace data for collections, NFTs, ownership, collection statistics, traits, and sales.
VIA Network: Agentic Commerce
Discovers products and sellers, supports negotiation and agent-mediated purchases, and settles eligible transactions in USDC on B…