x402 Merchant Check
Pre-payment merchant trust checks for x402 agents on Base and Solana.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"merchant-check": {
"url": "https://mcp.gradientdecisions.com/mcp"
}
}
}Remote endpoints
https://mcp.gradientdecisions.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (1)
🟡check_merchant(merchant_wallet_address, price, network, asset, amount, ...)
Before paying an unfamiliar merchant via x402, including one just discovered through a marketplace like Coinbase's x402 Bazaar, call this for a machine-readable assessment of their observable on-chain payment behavior, on Base or Solana. Returns a `recommendation` (PROCEED / CAUTION / INSUFFICIENT_SIGNAL) a payment policy can branch on directly, plus supporting evidence: trust tier, confidence, payer diversity, transaction history, category (data_api/compute/content_generation/financial_data/storage/other), known platform URL(s), and the merchant's own advertised price(s) compared against category peers, with no caller-supplied price required for that. This is decision support drawn from observed behavior, not a certification. PROCEED means the available evidence doesn't show cause for concern, not a guarantee of safety. INSUFFICIENT_SIGNAL means there isn't enough history to say either way, distinct from an actual concern. Add a specific quoted price to also check that exact figure against comparable sellers. $0.01 USDC per check, paid via x402.
Input Schema
{
"type": "object",
"properties": {
"merchant_wallet_address": {
"type": "string",
"description": "Merchant's receiving wallet address: a Base (0x...) or Solana (base58) address. Usually extractable directly from a 402 Payment Required response's accepts[].payTo."
},
"price": {
"type": "number",
"description": "Quoted price in USD-equivalent, if checking fairness"
},
"network": {
"type": "string",
"description": "Optional. CAIP-2 network id from the 402 response's accepts[].network (e.g. \"eip155:8453\"), if already on hand. Not required to score."
},
"asset": {
"type": "string",
"description": "Optional. Payment asset/token from the 402 response's accepts[].asset. Not required to score."
},
"amount": {
"type": "string",
"description": "Optional. Atomic payment amount from the 402 response's accepts[].amount, if preferred over `price`. Not required to score."
},
"service_url": {
"type": "string",
"description": "Optional. The resource/service URL the agent was trying to reach. Not required to score."
},
"resource_type": {
"type": "string",
"description": "Deprecated, accepted but unused. Price-fairness now compares against the merchant's own on-chain-derived category automatically, no need to supply this."
}
},
"required": [
"merchant_wallet_address"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence