{
  "version": 2,
  "x402Version": 2,
  "name": "Loyal Spark — Onchain Loyalty Protocol on Base",
  "description": "Loyal Spark is an onchain loyalty-as-a-service protocol on Base L2. AI agents and merchants can create B20 loyalty programs, mint tokens to customer wallets, manage rewards catalogs, trade tokens on a P2P escrow marketplace, redeem rewards for vouchers, and run analytics — all via paid x402 endpoints (USDC on Base). Includes 90 paid x402 resources: merchant REST (agent-api), recipient REST (recipient-api), 34 merchant MCP tools and 16 recipient MCP tools via paid x402 corridor (direct MCP exposes 44 merchant + 20 recipient tools; get_platform_info answers without a key or a payment; confirm_mint_fee is lsk_-only settlement, not x402-priced). Builder Code bc_wdmnog7m. There is no free agent quota and no Pro trial. Independent agents pay in USDC via x402 (a paid plan or per call). A Shopify store plan sets the ceiling; its 45-day trial uses Growth limits. Mint fee is loyalty tokens: 1.25% with no paid agent plan, 0.5% Pro, 0.25% Enterprise. Keyed calls are scoped to the wallet behind the lsk_/rwk_ key. On x402 and MPP, every recipient-api route, the merchant GET reads (programs, rewards, balance, customers, vouchers, analytics, merchant-profile, workflow/program-status), the merchant read MCP tools (list_loyalty_programs, list_rewards, get_token_balance, get_program_analytics, export_customers, and similar) and the holder MCP tools accept the payment alone: the paying wallet is the caller (holder on recipient routes, merchant owner on merchant reads). Other routes (mint, create program, create rewards, trade, bazaar tools) need a live lsk_ (merchant) or rwk_ (holder) key on the same request as the payment; a payment without that live key is not charged. These routes accept the payment alone; do not send an API key: GET /offers and GET /recipient-api/offers on both gateways, GET /public-programs ($0.001, active programs, same price as GET /programs), POST /x402-gateway/register-agent ($0.01 USDC on Base; lsk_ scope read only — list your programs, rewards, balances, and analytics; it cannot mint, deploy a program, create rewards, or trade; write scopes need a paid plan or a Shopify store plan; the $0.01 is the call price, not a subscription and not a free quota; a Shopify store plan or a paid Pro or Enterprise plan sets the monthly ceiling; the Shopify 45-day store trial uses Growth limits; there is no free agent trial; a wallet with neither returns error_code payment_required and next_action pay_x402), POST /x402-gateway/mcp-tools/get_platform_info, POST /x402-gateway/mcp-tools/list_marketplace_offers, and POST /x402-gateway/recipient-mcp-tools/list_p2p_offers. 16 agent skill guides (00-15): https://loyalspark.online/.well-known/skills/index.md",
  "provider": "Loyal Spark",
  "website": "https://loyalspark.online",
  "documentation": "https://loyalspark.online/for-agents",
  "openapi": "https://loyalspark.online/openapi.json",
  "network": "eip155:8453",
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "builderCode": "bc_wdmnog7m",
  "resources": [
    "GET https://api.loyalspark.online/x402-gateway/analytics",
    "GET https://api.loyalspark.online/x402-gateway/balance",
    "GET https://api.loyalspark.online/x402-gateway/customers",
    "GET https://api.loyalspark.online/x402-gateway/merchant-profile",
    "GET https://api.loyalspark.online/x402-gateway/offers",
    "GET https://api.loyalspark.online/x402-gateway/programs",
    "GET https://api.loyalspark.online/x402-gateway/public-programs",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/balance",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/balances",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/offers",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/rewards",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/vouchers",
    "GET https://api.loyalspark.online/x402-gateway/recipient-api/workflow/reward-status",
    "GET https://api.loyalspark.online/x402-gateway/rewards",
    "GET https://api.loyalspark.online/x402-gateway/vouchers",
    "GET https://api.loyalspark.online/x402-gateway/workflow/program-status",
    "POST https://api.loyalspark.online/x402-gateway/accept-offer",
    "POST https://api.loyalspark.online/x402-gateway/activate-program",
    "POST https://api.loyalspark.online/x402-gateway/cancel-offer",
    "POST https://api.loyalspark.online/x402-gateway/earn",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/activate_loyalty_program",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/cancel_stale_offers",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/check_voucher_status",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/create_gift_certificate",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/create_loyalty_program",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/create_personalized_offer",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/create_reward",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/delete_report",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/earn_points",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/export_customers",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/generate_program_defaults",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_my_profile",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_platform_info",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_platform_stats",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_program_analytics",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_program_workflow_status",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/get_token_balance",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/list_gift_certificates",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/list_loyalty_programs",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/list_marketplace_offers",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/list_my_reports",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/list_rewards",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/mark_gift_certificate_minted",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/mint_loyalty_tokens",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/redeem_reward",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/register_loyalty_program",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/revoke_gift_certificate",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/send_report",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/transfer_loyalty_tokens",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/update_program_config",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/update_program_status",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/update_report_status",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/update_reward_status",
    "POST https://api.loyalspark.online/x402-gateway/mcp-tools/use_voucher",
    "POST https://api.loyalspark.online/x402-gateway/merchant-profile",
    "POST https://api.loyalspark.online/x402-gateway/mint",
    "POST https://api.loyalspark.online/x402-gateway/offers",
    "POST https://api.loyalspark.online/x402-gateway/program-status",
    "POST https://api.loyalspark.online/x402-gateway/programs",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/accept-offer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/cancel-offer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/offers",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/prepare-transfer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/redeem-reward",
    "POST https://api.loyalspark.online/x402-gateway/recipient-api/workflow/prepare-reward-redemption",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/accept_p2p_offer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/cancel_p2p_offer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/claim_gift_certificate",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/create_p2p_offer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/get_my_loyalty_balance",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/get_recipient_profile",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/get_reward_workflow_status",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/list_my_gift_certificates",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/list_my_loyalty_balances",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/list_my_vouchers",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/list_p2p_offers",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/list_rewards_for_program",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/lookup_gift_certificate",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/prepare_loyalty_token_transfer",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/prepare_reward_redemption",
    "POST https://api.loyalspark.online/x402-gateway/recipient-mcp-tools/redeem_my_reward",
    "POST https://api.loyalspark.online/x402-gateway/redeem-reward",
    "POST https://api.loyalspark.online/x402-gateway/register-agent",
    "POST https://api.loyalspark.online/x402-gateway/register-program",
    "POST https://api.loyalspark.online/x402-gateway/rewards",
    "POST https://api.loyalspark.online/x402-gateway/transfer",
    "POST https://api.loyalspark.online/x402-gateway/update-program-config",
    "POST https://api.loyalspark.online/x402-gateway/vouchers/use",
    "POST https://api.loyalspark.online/x402-gateway/workflow/generate-program-defaults",
    "PUT https://api.loyalspark.online/x402-gateway/merchant-profile"
  ],
  "skills": {
    "url": "https://loyalspark.online/.well-known/skills/index.md",
    "guide_count": 16,
    "range": "00-15"
  },
  "planLimits": {
    "free": {
      "api_calls_monthly": 0,
      "max_mint_amount_monthly": 0,
      "max_agents": 0,
      "transaction_fee_percent": 1.25
    },
    "note": "No free monthly quota. A paid Pro or Enterprise plan, a Shopify store plan, or per-call x402 is required. A call with none of those returns HTTP 402 error_code payment_required. A store plan caps that merchant: Starter 1 agent and 1,000 calls/month read only, Growth and the 45-day store trial 3 agents and 10,000 calls/month read and write, Scale 10 agents and 100,000 calls/month, every permission, 300 requests a minute. An agent plan does not raise that ceiling. A wallet with no store plan and no paid Pro or Enterprise plan has no monthly quota and no Pro trial."
  },
  "accessControl": {
    "model": "row-level-security",
    "description": "Keyed REST and MCP calls are scoped by Postgres row-level security to the owner wallet behind the lsk_/rwk_ key. On x402 and MPP, every recipient-api route, the merchant GET reads (programs, rewards, balance, customers, vouchers, analytics, merchant-profile, workflow/program-status), the merchant read MCP tools (list_loyalty_programs, list_rewards, get_token_balance, get_program_analytics, export_customers, and similar) and the holder MCP tools accept the payment alone: the paying wallet is the caller (holder on recipient routes, merchant owner on merchant reads). Other routes (mint, create program, create rewards, trade, bazaar tools) need a live lsk_ (merchant) or rwk_ (holder) key on the same request as the payment; a payment without that live key is not charged. These routes accept the payment alone; do not send an API key: GET /offers and GET /recipient-api/offers on both gateways, GET /public-programs ($0.001, active programs, same price as GET /programs), POST /x402-gateway/register-agent ($0.01 USDC on Base; lsk_ scope read only — list your programs, rewards, balances, and analytics; it cannot mint, deploy a program, create rewards, or trade; write scopes need a paid plan or a Shopify store plan; the $0.01 is the call price, not a subscription and not a free quota; a Shopify store plan or a paid Pro or Enterprise plan sets the monthly ceiling; the Shopify 45-day store trial uses Growth limits; there is no free agent trial; a wallet with neither returns error_code payment_required and next_action pay_x402), POST /x402-gateway/mcp-tools/get_platform_info, POST /x402-gateway/mcp-tools/list_marketplace_offers, and POST /x402-gateway/recipient-mcp-tools/list_p2p_offers."
  }
}
