Skip to content

Loyal Spark

by aspekt19 · remote · no sign-in to list tools · v1.0.4 · published by GitHub user aspekt19

Base MCP (39 tools) on Base: programs, mint, rewards. lsk_ key; plan limits enforced. /for-agents

Deletes · 3Final · 4Changes · 22

42 tools: 3 can delete or cancel things, 4 do something that can't be undone, 22 change things and 13 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http loyal-spark https://api.loyalspark.online/loyalty-mcp --header 'x-api-key: <your-x-api-key>'

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

42 tools

Deletes or cancels 3Claude Code: deny
  • cancel_stale_offersCancel marketplace offers that have been active for more than N days with no completions.No findings

    Why it is in this group

    • The name "cancel_stale_offers" says "cancel": a word for removing or ending something.
    Description, as the server wrote it
    Cancel marketplace offers that have been active for more than N days with no completions. Admin-only action tool.
  • delete_reportDelete a report that is no longer relevant.No findings

    Why it is in this group

    • The name "delete_report" says "delete": a word for removing or ending something.
    Description, as the server wrote it
    Delete a report that is no longer relevant. Use to clean up outdated or irrelevant reports.
  • revoke_gift_certificateRevoke an active gift certificate (status active → revoked).No findings

    Why it is in this group

    • The name "revoke_gift_certificate" says "revoke": a word for removing or ending something.
    Description, as the server wrote it
    Revoke an active gift certificate (status active → revoked). Only the issuing merchant can revoke. Already-redeemed/minted certificates cannot be revoked.
Can't be undone 4Claude Code: ask
  • bazaar_pay_and_callPay a Loyal Spark x402 URL on api.loyalspark.online with the merchant agent's CDP MPC wallet (EIP-3009 exact scheme, Base USDC).No findings

    Why it is in this group

    • The name "bazaar_pay_and_call" says "pay": a word that usually means money moves, which cannot be taken back.
    • The name "bazaar_pay_and_call" also says "call": a word for a change.
    Description, as the server wrote it
    Pay a Loyal Spark x402 URL on api.loyalspark.online with the merchant agent's CDP MPC wallet (EIP-3009 exact scheme, Base USDC). Other hosts are refused before any signature. Requires scope 'mint' and an active CDP wallet. max_usdc default 0.25, hard limit 10.
  • mint_loyalty_tokensRecord mint intent and get a fee-first `calls[]` bundle: protocol fee mint FIRST, then the recipient mint.No findings

    Why it is in this group

    • The input addresses people (input.recipient): what it sends cannot be taken back.
    Description, as the server wrote it
    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. Prefer recipient_address (same as REST POST /agent-api/mint); `recipient` is a legacy alias.
  • send_reportSend a report to the developer/owner.No findings

    Why it is in this group

    • The name "send_report" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    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.
  • transfer_loyalty_tokensGet calldata to transfer loyalty tokens between walletsNo findings

    Why it is in this group

    • The name "transfer_loyalty_tokens" says "transfer": a word for a change that another call does not undo.
    • The input addresses people (input.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Get calldata to transfer loyalty tokens between wallets
Changes things 22Claude Code: ask
  • activate_loyalty_programFor legacy ERC-20 programs: returns unpauseUtility + enableMinting calldata.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    For legacy ERC-20 programs: returns unpauseUtility + enableMinting calldata. For B20 programs: no-op (already active).
  • bazaar_discover_mcp_serversDiscover third-party MCP servers published in Coinbase CDP's Bazaar.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Discover third-party MCP servers published in Coinbase CDP's Bazaar. Read-only. Filter by free-text q and/or network.
  • bazaar_discover_resourcesDiscover third-party x402-paid resources published in Coinbase CDP's Bazaar (docs, data feeds, AI inference, etc).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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').
  • check_voucher_statusCheck voucher status by code or ID.No findings

    Why it is in this group

    • The name "check_voucher_status" says "status": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Check voucher status by code or ID. Requires a merchant agent key; only vouchers issued by the key owner's store are returned.
  • confirm_mint_feeConfirm that the protocol fee transaction for a previous mint/earn was broadcast on Base.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • create_gift_certificateCreate a gift / welcome certificate (UDS-style) with a unique random redemption code (LOYAL-XXXX-XXXX-XXXX).No findings

    Why it is in this group

    • The name "create_gift_certificate" says "create": a word for a change.
    Description, as the server wrote it
    Create a gift / welcome certificate (UDS-style) with a unique random redemption code (LOYAL-XXXX-XXXX-XXXX). Customer redeems via QR or by entering the code; merchant then mints tokens on-chain. Use for welcome bonuses, promo campaigns, partnership gifts.
  • create_loyalty_programGet factory calldata to deploy a new loyalty token on Base.No findings

    Why it is in this group

    • The name "create_loyalty_program" says "create": a word for a change.
    Description, as the server wrote it
    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_offerCreate a personalized offer for a specific customer.No findings

    Why it is in this group

    • The name "create_personalized_offer" says "create": a word for a change.
    Description, as the server wrote it
    Create a personalized offer for a specific customer. Use when analytics reveal engagement patterns (e.g., inactive customers, high-value segments).
  • create_rewardCreate a new reward redeemable with loyalty tokensNo findings

    Why it is in this group

    • The name "create_reward" says "create": a word for a change.
    Description, as the server wrote it
    Create a new reward redeemable with loyalty tokens
  • earn_pointsCalculate and mint loyalty tokens based on purchase amount and program's cashback rate.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • export_customersExport customer data for a specific loyalty program.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Export customer data for a specific loyalty program. Returns wallet addresses, voucher stats, balances, and tier info. Use for analytics, segmentation, and personalized offers.
  • generate_program_defaultsWorkflow planner: field catalog, required parameters, next_actions, and non-binding examples.No findings

    Why it is in this group

    • The name "generate_program_defaults" says "generate": a word for a change.
    Description, as the server wrote it
    Workflow planner: field catalog, required parameters, next_actions, and non-binding examples. External agents must choose their own name, symbol, and economics.
  • mark_gift_certificate_mintedAfter 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.No findings

    Why it is in this group

    • The name "mark_gift_certificate_minted" says "mark": a word for a change.
    Description, as the server wrote it
    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.
  • redeem_rewardRedeem a reward by providing a verified token transfer transaction hash.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Redeem a reward by providing a verified token transfer transaction hash. Creates a voucher for the customer.
  • register_loyalty_programRegister a deployed token as a loyalty program in the database.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Register a deployed token as a loyalty program in the database. B20 tokens are registered as active; legacy ERC-20 as inactive (activate next).
  • set_store_sales_channelSet how this store's customers spend loyalty points: online (checkout code), offline (voucher at the register), or both (the shopper chooses).No findings

    Why it is in this group

    • The name "set_store_sales_channel" says "set": a word for a change.
    Description, as the server wrote it
    Set how this store's customers spend loyalty points: online (checkout code), offline (voucher at the register), or both (the shopper chooses).
  • update_program_configUpdate default cashback_rate and/or points_per_dollar for a program (same as merchant dashboard sliders)No findings

    Why it is in this group

    • The name "update_program_config" says "update": a word for a change.
    Description, as the server wrote it
    Update default cashback_rate and/or points_per_dollar for a program (same as merchant dashboard sliders)
  • update_program_statusUpdate program status in database after onchain activation/pauseNo findings

    Why it is in this group

    • The name "update_program_status" says "update": a word for a change.
    Description, as the server wrote it
    Update program status in database after onchain activation/pause
  • update_report_statusUpdate report status to 'reviewed' or 'done'.No findings

    Why it is in this group

    • The name "update_report_status" says "update": a word for a change.
    Description, as the server wrote it
    Update report status to 'reviewed' or 'done'. Use 'done' when the action items have been completed. Use 'reviewed' to acknowledge a report.
  • update_reward_statusActivate or deactivate a reward in the catalog.No findings

    Why it is in this group

    • The name "update_reward_status" says "update": a word for a change.
    Description, as the server wrote it
    Activate or deactivate a reward in the catalog. Use to manage reward availability based on analytics.
  • update_store_discount_codeMark a Shopify discount code used, or cancel it and return the loyalty points.No findings

    Why it is in this group

    • The name "update_store_discount_code" says "update": a word for a change.
    Description, as the server wrote it
    Mark a Shopify discount code used, or cancel it and return the loyalty points. Same actions as the merchant discount-code journal.
  • use_voucherMark a voucher as used (redeemed by customer at merchant).No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a voucher as used (redeemed by customer at merchant). Merchant-only operation.
Only reads 13Claude Code: allow
  • bazaar_probe_x402GET a candidate x402 URL and, if it responds HTTP 402, return the parsed payment requirements (accepts[]) so the caller can decide whether to pay.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_my_profileGet authenticated agent's profileNo findings

    Why it is in this group

    • The name "get_my_profile" says "get": a word for reading.
    Description, as the server wrote it
    Get authenticated agent's profile
  • get_platform_infoGet info about Loyal Spark protocol on Base L2No findings

    Why it is in this group

    • The name "get_platform_info" says "get": a word for reading.
    Description, as the server wrote it
    Get info about Loyal Spark protocol on Base L2
  • get_platform_statsGet global platform statistics across all merchants.No findings

    Why it is in this group

    • The name "get_platform_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get global platform statistics across all merchants. Admin-only: requires agent owned by an admin wallet.
  • get_program_analyticsGet analytics for your loyalty programsNo findings

    Why it is in this group

    • The name "get_program_analytics" says "get": a word for reading.
    Description, as the server wrote it
    Get analytics for your loyalty programs
  • get_program_workflow_statusExplain the next merchant action: current_step, required fields, and ordered next_actions (you provide all parameter values)No findings

    Why it is in this group

    • The name "get_program_workflow_status" says "get": a word for reading.
    Description, as the server wrote it
    Explain the next merchant action: current_step, required fields, and ordered next_actions (you provide all parameter values)
  • get_token_balanceGet loyalty token balance and tier info for a customerNo findings

    Why it is in this group

    • The name "get_token_balance" says "get": a word for reading.
    Description, as the server wrote it
    Get loyalty token balance and tier info for a customer
  • list_gift_certificatesList gift certificates issued by the agent's merchant (with status and redemption info).No findings

    Why it is in this group

    • The name "list_gift_certificates" says "list": a word for reading.
    Description, as the server wrote it
    List gift certificates issued by the agent's merchant (with status and redemption info).
  • list_loyalty_programsList loyalty programs owned by the agent's merchantNo findings

    Why it is in this group

    • The name "list_loyalty_programs" says "list": a word for reading.
    Description, as the server wrote it
    List loyalty programs owned by the agent's merchant
  • list_marketplace_offersList active token trading offers on the marketplaceNo findings

    Why it is in this group

    • The name "list_marketplace_offers" says "list": a word for reading.
    Description, as the server wrote it
    List active token trading offers on the marketplace
  • list_my_reportsList your previously submitted reports.No findings

    Why it is in this group

    • The name "list_my_reports" says "list": a word for reading.
    Description, as the server wrote it
    List your previously submitted reports. Allows reviewing past reports, checking status (new/reviewed/done), and identifying what still needs attention.
  • list_rewardsList rewards for a loyalty program by token_address.No findings

    Why it is in this group

    • The name "list_rewards" says "list": a word for reading.
    Description, as the server wrote it
    List rewards for a loyalty program by token_address. Includes redemption metrics (total vouchers issued, redeemed, and last-30-day counts) for each reward.
  • list_store_discount_codesList discount codes for this merchant's Shopify store, plus how customers spend points (online code, register voucher, or both).No findings

    Why it is in this group

    • The name "list_store_discount_codes" says "list": a word for reading.
    Description, as the server wrote it
    List discount codes for this merchant's Shopify store, plus how customers spend points (online code, register voucher, or both).

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http loyal-spark https://api.loyalspark.online/loyalty-mcp --header 'x-api-key: <your-x-api-key>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__loyal-spark__get_platform_info",
      "mcp__loyal-spark__get_my_profile",
      "mcp__loyal-spark__get_program_workflow_status",
      "mcp__loyal-spark__list_loyalty_programs",
      "mcp__loyal-spark__list_rewards",
      "mcp__loyal-spark__get_token_balance",
      "mcp__loyal-spark__get_program_analytics",
      "mcp__loyal-spark__list_marketplace_offers",
      "mcp__loyal-spark__get_platform_stats",
      "mcp__loyal-spark__list_my_reports",
      "mcp__loyal-spark__list_store_discount_codes",
      "mcp__loyal-spark__list_gift_certificates",
      "mcp__loyal-spark__bazaar_probe_x402"
    ],
    "ask": [
      "mcp__loyal-spark__generate_program_defaults",
      "mcp__loyal-spark__create_loyalty_program",
      "mcp__loyal-spark__register_loyalty_program",
      "mcp__loyal-spark__activate_loyalty_program",
      "mcp__loyal-spark__update_program_status",
      "mcp__loyal-spark__update_program_config",
      "mcp__loyal-spark__create_reward",
      "mcp__loyal-spark__mint_loyalty_tokens",
      "mcp__loyal-spark__transfer_loyalty_tokens",
      "mcp__loyal-spark__earn_points",
      "mcp__loyal-spark__confirm_mint_fee",
      "mcp__loyal-spark__redeem_reward",
      "mcp__loyal-spark__use_voucher",
      "mcp__loyal-spark__check_voucher_status",
      "mcp__loyal-spark__create_personalized_offer",
      "mcp__loyal-spark__update_reward_status",
      "mcp__loyal-spark__send_report",
      "mcp__loyal-spark__update_report_status",
      "mcp__loyal-spark__export_customers",
      "mcp__loyal-spark__update_store_discount_code",
      "mcp__loyal-spark__set_store_sales_channel",
      "mcp__loyal-spark__create_gift_certificate",
      "mcp__loyal-spark__mark_gift_certificate_minted",
      "mcp__loyal-spark__bazaar_discover_resources",
      "mcp__loyal-spark__bazaar_discover_mcp_servers",
      "mcp__loyal-spark__bazaar_pay_and_call"
    ],
    "deny": [
      "mcp__loyal-spark__cancel_stale_offers",
      "mcp__loyal-spark__delete_report",
      "mcp__loyal-spark__revoke_gift_certificate"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as loyal-spark. Review it before you use it.