Loyal Spark
REMOTE · API.LOYALSPARK.ONLINE · SCANNED AUG 9
Onchain loyalty MCP on Base: programs, mint, rewards, vouchers for AI agents.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security51
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 39 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS not yet verified: we couldn't determine whether a plaintext access path exists. View diagnostics → Unverified
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability64
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3429 tokens (~87/item across 39 items; 39 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 92% of tool parameters carry a description.Partial
Capabilities40
- Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · api.loyalspark.online
claude mcp add --transport http aspekt19-loyal-spark https://api.loyalspark.online/loyalty-mcp
[mcp_servers.aspekt19-loyal-spark] url = "https://api.loyalspark.online/loyalty-mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"aspekt19-loyal-spark": {
"type": "remote",
"url": "https://api.loyalspark.online/loyalty-mcp",
"enabled": true
}
}
} openclaw mcp add aspekt19-loyal-spark --url https://api.loyalspark.online/loyalty-mcp --transport streamable-http
mcp_servers:
aspekt19-loyal-spark:
url: "https://api.loyalspark.online/loyalty-mcp" {
"mcpServers": {
"aspekt19-loyal-spark": {
"type": "http",
"url": "https://api.loyalspark.online/loyalty-mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 8 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Aug 26 0
- Stability: unverified → 0.03 ▲ functional
- 6 Aug 26 55
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 9 Aug 2026 · Probed https://api.loyalspark.online/loyalty-mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=loyalspark.online | CN=WE1,O=Google Trust Services,C=US | 19 Jun 2026 | 17 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | 8153302467113a280ed31ada97949f77 |
| SANs: loyalspark.online, api.loyalspark.online, *.api.loyalspark.online | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC insecure
Validation of api.loyalspark.online. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| online. | present | 30961 | 13 | Verified |
| loyalspark.online. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.loyalspark.online/loyalty-mcp | Verified | 200 | |
| http (plaintext) | http://api.loyalspark.online/loyalty-mcp | Inconclusive | 400 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
activate_loyalty_program ~53
For legacy ERC-20 programs: returns unpauseUtility + enableMinting calldata. For B20 programs: no-op (already active).
| Name | Type | Req | Description |
|---|---|---|---|
| token_address | string | yes | Token contract address (0x...) |
No output schema declared.
No examples provided.
bazaar_discover_mcp_servers ~95
Discover third-party MCP servers published in Coinbase CDP's Bazaar. Read-only. Filter by free-text q and/or network.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor |
| limit | number | – | Max rows (default 25, max 100) |
| network | string | – | Filter by network, e.g. 'base' |
| q | string | – | Free-text filter matched against the server JSON |
No output schema declared.
No examples provided.
bazaar_discover_resources ~128
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').
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor from a previous call |
| limit | number | – | Max rows returned (default 25, max 100) |
| network | string | – | Filter by network, e.g. 'base' or 'base-sepolia' |
| q | string | – | Free-text filter matched against the resource JSON (name/description/url) |
No output schema declared.
No examples provided.
bazaar_pay_and_call ~232
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).
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_networks | array | – | Networks to accept (default ['base']) |
| allowed_schemes | array | – | x402 schemes to accept (default ['exact']) |
| body | – | – | Optional JSON request body for non-GET methods |
| headers | object | – | Extra request headers (Accept/Content-Type auto-set) |
| max_usdc | number | – | Spend cap for THIS call in USDC (default 0.25, must be ≤ 10) |
| method | string | – | HTTP method (default GET) |
| url | string | yes | Full https:// URL of the x402 resource |
No output schema declared.
No examples provided.
bazaar_probe_x402 ~68
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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Full https:// URL of the x402-paid endpoint |
No output schema declared.
No examples provided.
cancel_stale_offers ~54
Cancel marketplace offers that have been active for more than N days with no completions. Admin-only action tool.
| Name | Type | Req | Description |
|---|---|---|---|
| max_age_days | number | – | Cancel offers older than this many days (default: 14) |
No output schema declared.
No examples provided.
check_voucher_status ~66
Check voucher status by code or ID. Public endpoint — no API key or authentication required.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | Voucher code (e.g. LOYAL-XXXX-XXXX-XXXX-XXXX) |
| voucher_id | string | – | Voucher UUID (alternative to code) |
No output schema declared.
No examples provided.
confirm_mint_fee ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| fee_tx_hash | string | yes | Transaction hash of the protocol fee mint |
| obligation_id | string | yes | fee_obligation_id returned by mint_loyalty_tokens or earn_points |
| recipient_tx_hash | string | – | Optional transaction hash of the recipient mint |
No output schema declared.
No examples provided.
create_gift_certificate ~258
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional descriptive text shown to the customer |
| expires_in_days | number | – | Validity period in days (omit for no expiry) |
| image_url | string | – | Optional public image URL for the cert design |
| max_redemption_percent | number | – | Max % of any future purchase the customer can pay with these tokens (5–100). Default 50. |
| points_per_dollar | number | – | Optional override of program rate (e.g. 10 = 10 tokens per $1). Defaults to program's points_per_dollar. |
| quantity | number | – | Number of certificates to create as a batch (1–100, default 1) |
| title | string | – | Display title (default: 'Gift Certificate') |
| token_address | string | yes | ERC-20 loyalty token address (must belong to the agent's merchant) |
| usd_amount | number | yes | Certificate face value in USD (positive) |
No output schema declared.
No examples provided.
create_loyalty_program ~318
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_wallet_address | string | – | (B20 only) Additional wallet to grant MINT_ROLE atomically. Defaults to the agent's active CDP MPC wallet if not provided. |
| auto_generate | boolean | – | Internal automation only — fills missing name/symbol from examples. External agents should pass explicit name and symbol. |
| business_context | object | – | Optional context for examples only |
| expiration_days | number | – | Program duration in days (default: 365) |
| extra_minters | array | – | (B20 only) Extra addresses to grant MINT_ROLE atomically in the same deploy tx. |
| locale | string | – | – |
| name | string | – | Program name (required for external agents) |
| preferred_style | string | – | – |
| symbol | string | – | Token symbol, 2-5 chars (required for external agents) |
| target_audience | string | – | – |
| token_standard | string | – | 'b20' (default, single-tx deploy on Base precompile factory) or 'erc20' (legacy factory, requires activate_loyalty_program follow-up) |
No output schema declared.
No examples provided.
create_personalized_offer ~136
Create a personalized offer for a specific customer. Use when analytics reveal engagement patterns (e.g., inactive customers, high-value segments).
| Name | Type | Req | Description |
|---|---|---|---|
| bonus_tokens | number | – | Bonus tokens to award |
| customer_address | string | yes | Customer wallet address |
| description | string | – | Offer description |
| discount_percentage | number | – | Discount percentage (0-100) |
| title | string | yes | Offer title (e.g., 'Welcome back! 20% bonus tokens') |
| token_address | string | yes | Token contract address |
| valid_days | number | – | How many days the offer is valid (default: 7) |
No output schema declared.
No examples provided.
create_reward ~58
Create a new reward redeemable with loyalty tokens
| Name | Type | Req | Description |
|---|---|---|---|
| cost | number | yes | Token cost to redeem |
| description | string | – | Reward description |
| name | string | yes | Reward name |
| token_address | string | yes | Token contract address |
No output schema declared.
No examples provided.
delete_report ~40
Delete a report that is no longer relevant. Use to clean up outdated or irrelevant reports.
| Name | Type | Req | Description |
|---|---|---|---|
| report_id | string | yes | UUID of the report to delete |
No output schema declared.
No examples provided.
earn_points ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cashback_rate | number | – | Override cashback rate (%). If omitted, uses the program's default rate. |
| customer_address | string | yes | Customer wallet (0x...) |
| purchase_amount | number | yes | Purchase amount in currency units (e.g. dollars) |
| token_address | string | yes | Token contract address (0x...) |
No output schema declared.
No examples provided.
export_customers ~55
Export customer data for a specific loyalty program. Returns wallet addresses, voucher stats, balances, and tier info. Use for analytics, segmentation, and personalized offers.
| Name | Type | Req | Description |
|---|---|---|---|
| token_address | string | yes | Token address of the loyalty program |
No output schema declared.
No examples provided.
generate_program_defaults ~85
Workflow planner: field catalog, required parameters, next_actions, and non-binding examples. External agents must choose their own name, symbol, and economics.
| Name | Type | Req | Description |
|---|---|---|---|
| business_name | string | – | – |
| category | string | – | – |
| description | string | – | – |
| locale | string | – | – |
| preferred_style | string | – | – |
| target_audience | string | – | – |
No output schema declared.
No examples provided.
get_my_profile ~15
Get authenticated agent's profile
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_platform_info ~20
Get info about Loyal Spark protocol on Base L2
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_platform_stats ~28
Get global platform statistics across all merchants. Admin-only: requires agent owned by an admin wallet.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_program_analytics ~17
Get analytics for your loyalty programs
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_program_workflow_status ~46
Explain the next merchant action: current_step, required fields, and ordered next_actions (you provide all parameter values)
| Name | Type | Req | Description |
|---|---|---|---|
| token_address | string | – | Optional token to inspect |
No output schema declared.
No examples provided.
get_token_balance ~41
Get loyalty token balance and tier info for a customer
| Name | Type | Req | Description |
|---|---|---|---|
| customer_address | string | yes | Customer wallet |
| token_address | string | yes | Token contract address |
No output schema declared.
No examples provided.
list_gift_certificates ~81
List gift certificates issued by the agent's merchant (with status and redemption info).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max rows (default 50, max 200) |
| status | string | – | Filter by status: active, pending_mint, redeemed, expired, revoked |
| token_address | string | – | Filter by program token address (optional) |
No output schema declared.
No examples provided.
list_loyalty_programs ~34
List loyalty programs owned by the agent's merchant
| Name | Type | Req | Description |
|---|---|---|---|
| include_expired | boolean | – | Include expired programs |
No output schema declared.
No examples provided.
list_marketplace_offers ~48
List active token trading offers on the marketplace
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max results (1-100) |
| status | string | – | Filter: active/completed/cancelled |
No output schema declared.
No examples provided.
list_my_reports ~73
List your previously submitted reports. Allows reviewing past reports, checking status (new/reviewed/done), and identifying what still needs attention.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max results 1-50 (default: 20) |
| status | string | – | Filter by status: new, reviewed, done (optional) |
No output schema declared.
No examples provided.
list_rewards ~53
List rewards for a loyalty program by token_address. Includes redemption metrics (total vouchers issued, redeemed, and last-30-day counts) for each reward.
| Name | Type | Req | Description |
|---|---|---|---|
| token_address | string | yes | Token contract address (0x...) |
No output schema declared.
No examples provided.
mark_gift_certificate_minted ~78
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.
| Name | Type | Req | Description |
|---|---|---|---|
| certificate_id | string | yes | UUID of the certificate |
| transaction_hash | string | yes | Base L2 mint transaction hash (0x...) |
No output schema declared.
No examples provided.
mint_loyalty_tokens ~139
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Tokens to mint |
| recipient | string | yes | Recipient wallet (0x...) |
| token_address | string | yes | Token contract address |
No output schema declared.
No examples provided.
redeem_reward ~78
Redeem a reward by providing a verified token transfer transaction hash. Creates a voucher for the customer.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_address | string | yes | Wallet address of the customer who transferred tokens |
| reward_id | string | yes | UUID of the reward to redeem |
| transaction_hash | string | yes | Onchain tx hash of the token transfer from customer to merchant |
No output schema declared.
No examples provided.
register_loyalty_program ~167
Register a deployed token as a loyalty program in the database. B20 tokens are registered as active; legacy ERC-20 as inactive (activate next).
| Name | Type | Req | Description |
|---|---|---|---|
| cashback_rate | number | – | Default cashback percent for earn (1–100). Omit for DB default (5). |
| expiration_days | number | – | Duration in days (default: 365) |
| name | string | yes | Program name |
| points_per_dollar | number | – | Loyalty points per $1 spent (1–1000). Omit for DB default (1). |
| symbol | string | yes | Token symbol |
| token_address | string | yes | Deployed token contract address (0x...) |
| token_standard | string | – | 'b20' (default) or 'erc20' (legacy) |
No output schema declared.
No examples provided.
revoke_gift_certificate ~63
Revoke an active gift certificate (status active → revoked). Only the issuing merchant can revoke. Already-redeemed/minted certificates cannot be revoked.
| Name | Type | Req | Description |
|---|---|---|---|
| certificate_id | string | yes | UUID of the certificate from create_gift_certificate / list_gift_certificates |
No output schema declared.
No examples provided.
send_report ~160
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action_items | array | – | List of suggested action items |
| agent_role | string | yes | Your role: ceo, seo, growth, or analyst |
| content | string | yes | Report body text (max 10000 chars) |
| priority | string | – | Priority: low, medium, high, or critical |
| report_type | string | yes | Type: seo_audit, growth_idea, data_report, anomaly, task, recommendation, or weekly_report |
| title | string | yes | Report title (max 500 chars) |
No output schema declared.
No examples provided.
transfer_loyalty_tokens ~56
Get calldata to transfer loyalty tokens between wallets
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Tokens to transfer |
| to | string | yes | Recipient wallet (0x...) |
| token_address | string | yes | Token contract address (0x...) |
No output schema declared.
No examples provided.
update_program_config ~97
Update default cashback_rate and/or points_per_dollar for a program (same as merchant dashboard sliders)
| Name | Type | Req | Description |
|---|---|---|---|
| cashback_rate | number | – | New default cashback % for earn (1–100). Omit to leave unchanged. |
| points_per_dollar | number | – | New points per $1 (0–1000, exclusive 0). Omit to leave unchanged. |
| token_address | string | yes | Token contract address (0x...) |
No output schema declared.
No examples provided.
update_program_status ~48
Update program status in database after onchain activation/pause
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | New status: active, paused, or inactive |
| token_address | string | yes | Token contract address |
No output schema declared.
No examples provided.
update_report_status ~68
Update report status to 'reviewed' or 'done'. Use 'done' when the action items have been completed. Use 'reviewed' to acknowledge a report.
| Name | Type | Req | Description |
|---|---|---|---|
| report_id | string | yes | UUID of the report |
| status | string | yes | New status: reviewed or done |
No output schema declared.
No examples provided.
update_reward_status ~54
Activate or deactivate a reward in the catalog. Use to manage reward availability based on analytics.
| Name | Type | Req | Description |
|---|---|---|---|
| is_active | boolean | yes | true to activate, false to deactivate |
| reward_id | string | yes | UUID of the reward |
No output schema declared.
No examples provided.
use_voucher ~65
Mark a voucher as used (redeemed by customer at merchant). Merchant-only operation.
| Name | Type | Req | Description |
|---|---|---|---|
| voucher_code | string | – | Voucher code (e.g. LOYAL-XXXX-XXXX-XXXX-XXXX) |
| voucher_id | string | – | Voucher UUID (alternative to code) |
No output schema declared.
No examples provided.