@crush-rewards/mcp-server
v0.4.5
Published
MCP server for Crush Pricing Intelligence API — pay-per-query via x402
Readme
Syntalic Pricing Intelligence MCP Server
MCP server that gives AI agents access to real-time competitive pricing data across Amazon, Walmart, Costco, and more. Pay-per-query via x402 + MPP micropayments with automatic smart routing across Solana, Base, and Tempo.
Quick Start
Option A — Let the MCP manage a wallet (recommended for most users)
npx @crush-rewards/mcp-server --setupThis walks you through:
- Creating a new multi-chain wallet (or skipping if you prefer BYO — see Option B)
- Wiring the MCP into Claude Code
After setup:
# Back up your private keys — mandatory before funding
npx @crush-rewards/mcp-server --export-keys
# Fund any of the printed addresses with USDC (or USDC.e on Tempo) and you're readyOption B — Bring your own wallet keys
Skip the generated wallet and supply keys yourself. Recommended if you already use a dedicated agent wallet, you're deploying to CI/CD, or you want to manage keys with an HSM/secret manager.
# Both env vars are required — setting only one will cause the MCP to exit with an error.
export CRUSH_EVM_PRIVATE_KEY=0x<your_evm_private_key>
export CRUSH_SOLANA_PRIVATE_KEY=<your_solana_base58_private_key>
# Still run --setup to wire Claude Code (it won't touch the wallet file when both env vars are set)
npx @crush-rewards/mcp-server --setupWhen both env vars are set, ~/.crush/wallet.json is ignored entirely.
⚠️ Do not use your primary wallet here. Use a dedicated low-balance "agent wallet" — per-query amounts are tiny (0.01–0.02 USDC), so a few dollars buys hundreds of queries.
Manual MCP config
{
"mcpServers": {
"crush-pricing": {
"command": "npx",
"args": ["-y", "@crush-rewards/mcp-server"]
}
}
}CLI Commands
| Command | Purpose |
|---------|---------|
| npx @crush-rewards/mcp-server | Start the MCP server (default behavior) |
| ... --setup | Interactive setup: choose wallet path, wire Claude Code |
| ... --export-keys | Print private keys for backup or importing into Phantom/MetaMask |
| ... --info | Show wallet addresses, paths, endpoints, and backup status |
| ... --help | Usage overview |
Supported Payment Networks
| Protocol | Network | Token | Wallet Type |
|----------|---------|-------|-------------|
| x402 | Solana | USDC | Solana (base58) |
| x402 | Base | USDC | EVM (0x...) |
| MPP | Tempo | USDC.e | EVM (0x...) |
Base and Tempo share the same EVM address. Solana uses a separate keypair. The client tries chains in that order (Solana first — lowest fees) and falls through when a chain doesn't have enough balance.
Smart Routing
On every query, the client:
- Derives your Solana USDC ATA and checks balance via public RPC. Enough → pay on Solana. Not enough → skip.
- Attempts payment on Base. Falls through on insufficient-balance errors only.
- Checks USDC.e balance on Tempo, signs an MPP receipt, retries.
- All chains exhausted → throws a clear
PaymentErrorlisting what happened per chain.
Balance pre-checks are optimizations. If an RPC is rate-limited or down, the client attempts payment anyway — requests never hang on RPC health.
Tools
Shopper ($0.01/query)
| Tool | Description |
|------|-------------|
| best_price | Find the cheapest price for a product across retailers |
| price_history | Price trends over time |
| deal_finder | Current deals in a category |
| price_drop_alert | Recent price drops |
Marketing ($0.01/query)
| Tool | Description |
|------|-------------|
| competitive_landscape | Competitive pricing overview for a category |
| brand_tracker | Track a brand's pricing and positioning |
| promo_intelligence | Promotional activity intelligence |
| share_of_shelf | Brand share of shelf analysis |
| price_positioning | Brand price positioning vs competitors |
Analyst ($0.02/query)
| Tool | Description |
|------|-------------|
| inflation_tracker | Category price inflation trends |
| price_dispersion | Price variance across retailers |
| retailer_index | Pricing index for a retailer |
| category_summary | Comprehensive category pricing summary |
Utility
| Tool | Description |
|------|-------------|
| wallet_info | Show your wallet addresses and funding instructions |
Parameters
All tools accept optional parameters:
| Parameter | Description |
|-----------|-------------|
| country | us or ca (defaults to us) |
| retailer | Filter to a specific retailer (e.g. amazon, walmart, costco) |
| days | Number of days to look back (where applicable) |
Configuration
All env vars are optional — a wallet is auto-generated on first run.
| Environment Variable | Description |
|---------------------|-------------|
| CRUSH_EVM_PRIVATE_KEY | Override the EVM key (Base + Tempo) from the wallet file |
| CRUSH_SOLANA_PRIVATE_KEY | Override the Solana key from the wallet file |
| CRUSH_API_KEY | Optional API key (payment is the primary auth) |
| CRUSH_API_BASE | API base URL (default https://api.syntalic.com, HTTPS enforced) |
| CRUSH_SOLANA_RPC_URL | Custom Solana RPC for balance checks (default https://api.mainnet-beta.solana.com, HTTPS enforced) |
| CRUSH_TEMPO_RPC_URL | Custom Tempo RPC for balance checks (default https://rpc.tempo.xyz, HTTPS enforced) |
If both CRUSH_EVM_PRIVATE_KEY and CRUSH_SOLANA_PRIVATE_KEY are set, ~/.crush/wallet.json is untouched.
Security
- Private keys are never exposed through MCP tools. Export only via the
--export-keysCLI command, which prints to stderr in your own terminal. - Wallet file uses mode
0o600and refuses to follow symlinks. - RPC URL overrides must be HTTPS (except
localhost/127.0.0.1). - Balance caps prevent a hostile RPC from spoofing an implausible balance to keep you on a chain you can't pay on.
- Error messages are sanitized to strip anything resembling a private key before being surfaced.
How It Works
- You call an MCP tool (e.g.
best_price(q: "wireless earbuds")). - The server makes an HTTP request to the Syntalic Pricing API.
- The API returns
402 Payment Requiredwith requirements for Solana, Base, and Tempo. - The client runs balance pre-checks, signs a payment on the first eligible chain, and retries.
- You get the pricing data back.
All payment handling is automatic and transparent via the x402 and MPP protocols.
Direct API Access
Skip the MCP and hit the API directly:
curl https://api.syntalic.com/openapi.json
curl https://api.syntalic.com/v1/shopper/best-price?q=wireless+earbuds # returns 402Payments accepted:
- x402 — USDC on Solana or Base
- MPP — USDC.e on Tempo
License
MIT
