Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "bazaar_pay_and_call"
⟨2 unchanged words⟩ "description":"Networks to accept (default ['base', 'eip155:8453'])","items":{"type":"string" ⟨80 unchanged words⟩
Added "list_fee_obligations" and "list_mints"; removed "cancel_stale_offers" and "get_platform_stats"; changed the definition of "activate_loyalty_program", "bazaar_discover_mcp_servers", "bazaar_discover_resources" and 37 more
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}Changed the definition of "mint_loyalty_tokens"
⟨55 unchanged words⟩ tx hash. Unconfirmed fee obligations block future mints. Prefer recipient_address (same as REST POST /agent-api/mint); `recipient` is a legacy alias.
⟨7 unchanged words⟩ :"number"},"recipient":{"description":"RecipientLegacy alias for recipient_address","type":"string"},"recipient_address":{"description":"Customer wallet receiving minted tokens (0x...). Preferred — matches REST.","type":"string"},"token_address":{ ⟨4 unchanged words⟩ type":"string"}},"required":["token_address","recipient","amount"],"type":"object"}
Certificate changed, valid to 2027-01-13
Added "list_store_discount_codes", "set_store_sales_channel" and "update_store_discount_code" (39 tools before, 42 now)
List discount codes for this merchant's Shopify store, plus how customers spend points (online code, register voucher, or both).
Set how this store's customers spend loyalty points: online (checkout code), offline (voucher at the register), or both (the shopper chooses).
Mark a Shopify discount code used, or cancel it and return the loyalty points. Same actions as the merchant discount-code journal.
Changed the definition of "bazaar_pay_and_call"
PayandacallLoyalanySparkx402-paidx402HTTPSURLendpointonusingapi.loyalspark.online with the merchant agent's CDP MPC wallet (EIP-3009 exact schemeon, Base USDC).Probes the URL for HTTP 402, picks a compatible requirement, signs TransferWithAuthorization via CDP, retries with X-PAYMENT
Changed the definition of "check_voucher_status" and "create_gift_certificate"
Check voucher status by code or ID.PublicRequiresendpointa—merchantnoagentAPIkey; only vouchers issued by the keyorowner'sauthenticationstorerequired.are returned.
Certificate recorded, valid to 2026-11-15
Authorization not required
First tool surface recorded: 39 tools (server version 1.0.0)
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":true}Check voucher statusbyfor this merchant. Send one of code, voucher_code, orID.voucher_idRequires(anyOf).aIfmerchantnoneagentiskey;sentonlythevoucherstoolissuedreturnsbyerror_codethemissing_identifier,keyanowner'sexample,storeandarenext_action.returned.Anonymous public lookup is GET /agent-api/vouchers/status.
{"anyOf":[{"required":["code"]},{"required":["voucher_id"]},{"required":["voucher_code"]}],"properties":{"code":{"description":"Voucher code (e.g.LOYAL-XXXX-XXXX-XXXX-XXXX). One of code, voucher_code, or voucher_id is required.","type":"string"},"voucher_code":{"description":"Alias of code. One of code, voucher_code, or voucher_id is required.","type":"string"},"voucher_id":{"description":"VoucherUUIDUUID.(alternativeOnetoof code), voucher_code, or voucher_id is required.","type":"string"}},"type":"object"}
before
—after
{"destructiveHint":false,"readOnlyHint":true}ConfirmthatathepreparedprotocolmintfeeontransactionBase.forVerifiesathepreviousprotocol-feemint/earnmintwasand,broadcastwhenonrecipient_tx_hashBase.isVerifiesset (or the fee receipt already contains the recipient mint),on-chainwritesandcustomer_tier_statusclearsso get_token_balance leaves 0. Same hash for both fields when EIP-5792 batched theobligation.calls.UnconfirmedAfeesecondobligationscallblockwithfuturerecipient_tx_hashmints.still credits the customer after the fee is already settled.
⟨21 unchanged words⟩ :"string"},"recipient_tx_hash":{"description":"Optional transactionTransaction hash of therecipientmint to the recipient. Same as fee_tx_hash when both mints are in one transaction. Required to update GET /balance.","type":"string"}},"required": ⟨4 unchanged words⟩
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}⟨131 unchanged words⟩ follow-up)","type":"string"}},"required":["name","symbol"],"type":"object"}
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}Internal. Delete a reportthat is no longer relevant. Use to clean up outdated or irrelevantyoureports.submitted.
before
—after
{"destructiveHint":true,"readOnlyHint":false}⟨35 unchanged words⟩ supported, then call confirm_mint_fee (or POST /agent-api/mint/confirm).with obligation_id, fee_tx_hash, and recipient_tx_hash. Unconfirmed fee obligations block future mints.
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}Get analytics for one of your loyalty programs
{"properties":{"token_address":{"description":"Token contract address (0x...)","type":"string"}},"required":["token_address"],"type":"object"}
before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}⟨10 unchanged words⟩ :"Filter: active/completed/cancelled","type":"string"},"token_address":{"description":"Optional. When set, only offers that give or ask for this token.","type":"string"}},"type":"object"}
before
—after
{"destructiveHint":false,"readOnlyHint":true}List your previously submitted reports.Internal.AllowsListreviewingreportspastthisreports,agentcheckingsubmitted (status(new/reviewed/done)new,and identifying what stillreviewed,needsorattention.done).
before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}before
—after
{"destructiveHint":false,"readOnlyHint":true}⟨15 unchanged words⟩ to mark it as minted (status pending_mint→-> redeemed) and store the mint tx hash.
before
—after
{"destructiveHint":false,"readOnlyHint":false}⟨46 unchanged words⟩ then call confirm_mint_fee (or POST /agent-api/mint/confirm) withtheobligation_id,feefee_tx_hash,txandhash.recipient_tx_hash. Unconfirmed fee obligations block future mints. Prefer recipient_address ⟨11 unchanged words⟩
{"anyOf":[{"required":["recipient_address"]},{"required":["recipient"]}],"properties":{"amount":{"description":"Tokens ⟨39 unchanged words⟩
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}Revoke an active gift certificate (status active→-> revoked). Only the issuing merchant can revoke. ⟨5 unchanged words⟩
before
—after
{"destructiveHint":true,"readOnlyHint":false}Internal. Send a report to thedeveloper/owner. Usemerchant'sthisAgenttoReportssubmitdashboard (SEO audits, growth ideas,data reports,anomalies,recommendations, orweeklysummaries. The report will appear in thesummaries).merchant'sNotAgentaReportsloyaltydashboard.action.
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}{"anyOf":[{"required":["cashback_rate"]},{"required":["points_per_dollar"]}],"properties":{"cashback_rate":{"description":"New ⟨41 unchanged words⟩
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}Update report status to 'reviewed' or 'done'. Use 'done' when the action itemsInternal.haveSetbeenacompleted.reportUseyou'reviewed'submitted toacknowledgereviewedaorreport.done.
before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":false,"readOnlyHint":false}before
—after
{"destructiveHint":true,"readOnlyHint":false}Mark a voucher as used(redeemedatbythecustomermerchant.atSendmerchantone of voucher_code or voucher_id (anyOf).Merchant-onlyIfoperation.neither is sent the tool returns error_code missing_identifier and an example.
{"anyOf":[{"required":["voucher_code"]},{"required":["voucher_id"]}],"properties":{"voucher_code":{"description":"Voucher code (e.g.LOYAL-XXXX-XXXX-XXXX-XXXX). Use this OR voucher_id.","type":"string"},"voucher_id":{"description":"VoucherUUIDUUID.(alternativeUsetothiscode)OR voucher_code.","type":"string"}},"type":"object"}
before
—after
{"destructiveHint":true,"readOnlyHint":false}List protocol-fee obligations for this API key. status=unpaid is an alias for pending. Each unpaid row includes next_action describing POST /mint/confirm.
List mint intents for this merchant. status=pending means transaction_hash is still null (confirm has not credited the recipient). status=completed means the recipient mint was recorded. GET /balance stays 0 until confirm.
Cancel marketplace offers that have been active for more than N days with no completions. Admin-only action tool.
Get global platform statistics across all merchants. Admin-only: requires agent owned by an admin wallet.
Create a gift / welcome certificate (UDS-style) with a unique6-characterrandom redemption code (LOYAL-XXXXXXLOYAL-XXXX-XXXX-XXXX). Customer redeems via QR or by entering ⟨15 unchanged words⟩