mcp server
Loyal Spark
Onchain loyalty MCP on Base: programs, mint, rewards, vouchers for AI agents.
Description as published by the maintainer. Source
- version 1.0.0
- active
active — Most recent push to the repository was 2026-08-06.
What this server can do
39 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
activate_loyalty_program(token_address)- For legacy ERC-20 programs: returns unpauseUtility + enableMinting calldata. For B20 programs: no-op (already active). Required: token_address.
bazaar_discover_mcp_servers(q, limit, cursor, network)- Discover third-party MCP servers published in Coinbase CDP's Bazaar. Read-only. Filter by free-text q and/or network.
bazaar_discover_resources(q, limit, cursor, network)- Discover third-party x402-paid resources published in Coinbase CDP's Bazaar (docs, data feeds, AI inference, etc). Read-only. Filter by free-text q and/or network (e.g. 'base').
bazaar_pay_and_call(url, body, method, headers, max_usdc, allowed_schemes, allowed_networks)- Pay and call any x402-paid HTTPS endpoint using the merchant agent's CDP MPC wallet (EIP-3009 exact scheme on Base USDC). Probes the URL for HTTP 402, picks a compatible requirement, signs TransferWithAuthorization via CDP, retries with X-PAYMENT header, and returns the paid response. Requires scope 'mint' and a pre-created CDP wallet. Safety cap: max_usdc (default 0.25, hard limit 10). Required: url.
bazaar_probe_x402(url)- GET a candidate x402 URL and, if it responds HTTP 402, return the parsed payment requirements (accepts[]) so the caller can decide whether to pay. HTTPS only. No signing performed. Required: url.
cancel_stale_offers(max_age_days)- Cancel marketplace offers that have been active for more than N days with no completions. Admin-only action tool.
check_voucher_status(code, voucher_id)- Check voucher status by code or ID. Public endpoint — no API key or authentication required.
confirm_mint_fee(fee_tx_hash, obligation_id, recipient_tx_hash)- Confirm that the protocol fee transaction for a previous mint/earn was broadcast on Base. Verifies the fee mint on-chain and clears the obligation. Unconfirmed fee obligations block future mints. Required: obligation_id, fee_tx_hash.
create_gift_certificate(title, quantity, image_url, usd_amount, description, token_address, expires_in_days, points_per_dollar, max_redemption_percent)- Create a gift / welcome certificate (UDS-style) with a unique 6-character redemption code (LOYAL-XXXXXX). Customer redeems via QR or by entering the code; merchant then mints tokens on-chain. Use for welcome bonuses, promo campaigns, partnership gifts. Required: token_address, usd_amount.
create_loyalty_program(name, locale, symbol, auto_generate, extra_minters, token_standard, expiration_days, preferred_style, target_audience, business_context, agent_wallet_address)- Get factory calldata to deploy a new loyalty token on Base. Defaults to B20 (Base native ERC-20 superset, single tx, active immediately). Pass token_standard='erc20' for the legacy factory. For B20, MINT_ROLE is granted atomically to the merchant admin AND to the agent's CDP wallet (or explicit extra_minters) so autonomous agents can mint with no follow-up transaction.
create_personalized_offer(title, valid_days, description, bonus_tokens, token_address, customer_address, discount_percentage)- Create a personalized offer for a specific customer. Use when analytics reveal engagement patterns (e.g., inactive customers, high-value segments). Required: token_address, customer_address, title.
create_reward(cost, name, description, token_address)- Create a new reward redeemable with loyalty tokens Required: token_address, name, cost.
delete_report(report_id)- Delete a report that is no longer relevant. Use to clean up outdated or irrelevant reports. Required: report_id.
earn_points(cashback_rate, token_address, purchase_amount, customer_address)- Calculate and mint loyalty tokens based on purchase amount and program's cashback rate. Returns a fee-first `calls[]` bundle (protocol fee mint first, then the customer mint) — submit in order, atomically via EIP-5792 if supported, then call confirm_mint_fee (or POST /agent-api/mint/confirm). Unconfirmed fee obligations block future mints. Required: token_address, customer_address, purchase_amount.
export_customers(token_address)- Export customer data for a specific loyalty program. Returns wallet addresses, voucher stats, balances, and tier info. Use for analytics, segmentation, and personalized offers. Required: token_address.
generate_program_defaults(locale, category, description, business_name, preferred_style, target_audience)- Workflow planner: field catalog, required parameters, next_actions, and non-binding examples. External agents must choose their own name, symbol, and economics.
get_my_profile- Get authenticated agent's profile
get_platform_info- Get info about Loyal Spark protocol on Base L2
get_platform_stats- Get global platform statistics across all merchants. Admin-only: requires agent owned by an admin wallet.
get_program_analytics- Get analytics for your loyalty programs
get_program_workflow_status(token_address)- Explain the next merchant action: current_step, required fields, and ordered next_actions (you provide all parameter values)
get_token_balance(token_address, customer_address)- Get loyalty token balance and tier info for a customer Required: token_address, customer_address.
list_gift_certificates(limit, status, token_address)- List gift certificates issued by the agent's merchant (with status and redemption info).
list_loyalty_programs(include_expired)- List loyalty programs owned by the agent's merchant
list_marketplace_offers(limit, status)- List active token trading offers on the marketplace
list_my_reports(limit, status)- List your previously submitted reports. Allows reviewing past reports, checking status (new/reviewed/done), and identifying what still needs attention.
list_rewards(token_address)- List rewards for a loyalty program by token_address. Includes redemption metrics (total vouchers issued, redeemed, and last-30-day counts) for each reward. Required: token_address.
mark_gift_certificate_minted(certificate_id, transaction_hash)- After the merchant submits the on-chain mint transaction for a claimed gift certificate, call this to mark it as minted (status pending_mint → redeemed) and store the mint tx hash. Required: certificate_id, transaction_hash.
mint_loyalty_tokens(amount, recipient, token_address)- Record mint intent and get a fee-first `calls[]` bundle: protocol fee mint FIRST, then the recipient mint. The protocol fee is charged in the merchant's own loyalty tokens (not USDC). Submit both calls in order (atomically via EIP-5792 send_calls if your wallet supports it), then call confirm_mint_fee (or POST /agent-api/mint/confirm) with the fee tx hash. Unconfirmed fee obligations block future mints. Required: token_address, recipient, amount.
redeem_reward(reward_id, customer_address, transaction_hash)- Redeem a reward by providing a verified token transfer transaction hash. Creates a voucher for the customer. Required: reward_id, customer_address, transaction_hash.
register_loyalty_program(name, symbol, cashback_rate, token_address, token_standard, expiration_days, points_per_dollar)- Register a deployed token as a loyalty program in the database. B20 tokens are registered as active; legacy ERC-20 as inactive (activate next). Required: name, symbol, token_address.
revoke_gift_certificate(certificate_id)- Revoke an active gift certificate (status active → revoked). Only the issuing merchant can revoke. Already-redeemed/minted certificates cannot be revoked. Required: certificate_id.
send_report(title, content, priority, agent_role, report_type, action_items)- Send a report to the developer/owner. Use this to submit SEO audits, growth ideas, data reports, anomalies, recommendations, or weekly summaries. The report will appear in the merchant's Agent Reports dashboard. Required: agent_role, report_type, title, content.
transfer_loyalty_tokens(to, amount, token_address)- Get calldata to transfer loyalty tokens between wallets Required: token_address, to, amount.
update_program_config(cashback_rate, token_address, points_per_dollar)- Update default cashback_rate and/or points_per_dollar for a program (same as merchant dashboard sliders) Required: token_address.
update_program_status(status, token_address)- Update program status in database after onchain activation/pause Required: token_address, status.
update_report_status(status, report_id)- Update report status to 'reviewed' or 'done'. Use 'done' when the action items have been completed. Use 'reviewed' to acknowledge a report. Required: report_id, status.
update_reward_status(is_active, reward_id)- Activate or deactivate a reward in the catalog. Use to manage reward availability based on analytics. Required: reward_id, is_active.
use_voucher(voucher_id, voucher_code)- Mark a voucher as used (redeemed by customer at merchant). Merchant-only operation.
Last successful function declaration observed on . Source: https://api.loyalspark.online/loyalty-mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://api.loyalspark.online/loyalty-mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| GitHub stars | 12 | Number of GitHub accounts that bookmarked this repository since it was created. It is a bookmark count, not installs, not active users and not quality. | cumulative, all time | GitHub | |
| Last commit | 2026-08-06 | Date of the most recent push to any branch. This is the strongest cheap indicator of whether the project is still maintained. | point in time | GitHub | |
| Open issues | 0 | Open issues plus open pull requests, as GitHub counts them together. A high number can mean an active project or an abandoned one. | as of fetch | GitHub | |
| Latest published version | 1.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-08-06 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| License | MIT | Licence GitHub detected in the repository. Detection can be wrong; the LICENSE file is authoritative. | as of fetch | GitHub | |
| First listed in the MCP Registry | 2026-08-06 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| repository status | active | The repository exists on GitHub and is not archived. This says nothing about how recently it was worked on. | as of fetch | GitHub | |
| mcp tools declared | 39 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | api.loyalspark.online | |
| mcp endpoint status | ok | The server listed 39 functions when asked. | as of probe | api.loyalspark.online |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json