solinkify-mcp
@solinkify/mcp
MCP (Model Context Protocol) server that lets any AI agent — Claude Desktop, Claude Code, Cursor, or your own MCP host — pay for things on Solana through Solinkify, with hard spending caps. Agentic payments on the x402 standard, as a set of tools your agent already knows how to call:
Gate (x402 paywalls): preview prices, auto-pay HTTP 402 content, manage a pre-paid balance, buy subscriptions.
DataHub: search the dataset marketplace and buy datasets (99% goes to the seller, download link returned).
Pay: inspect and settle store checkout sessions (WooCommerce, OpenCart, PrestaShop, hosted checkout).
Social Commerce: inspect and buy products from Blink links exactly as they circulate on X (share link, Actions URL, or raw id).
Quick start
Add to your MCP host config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"solinkify": {
"command": "npx",
"args": ["-y", "@solinkify/mcp"],
"env": {
"SOLINKIFY_WALLET_PATH": "/path/to/agent-keypair.json",
"SOLINKIFY_MAX_PAYMENT_USD": "1",
"SOLINKIFY_DAILY_CAP_USD": "10"
}
}
}
}The wallet is a standard Solana JSON keypair (solana-keygen new -o agent-keypair.json),
funded with a little SOL for fees and the stablecoin you want to spend
(USDC/USDT/PYUSD).
It is optional at startup: the server connects and lists its tools with no wallet configured, and the read-only tools (price preview, dataset search, checkout quotes) work as they are. Only the tools that spend ask for a keypair, and they say so in the tool result rather than failing at launch.
Docker
docker build -t solinkify-mcp .
docker run -i --rm solinkify-mcp # starts, tools listed
docker run -i --rm -v "$PWD/agent-keypair.json:/wallet.json:ro" \
-e SOLINKIFY_WALLET_PATH=/wallet.json solinkify-mcp # able to pay-i is required: stdin and stdout carry the MCP protocol.
Related MCP server: BotWallet MCP Server
Tools
Tool | What it does |
| Address, SOL, stablecoin balances, prepaid balance, remaining budget |
| Preview an x402 paywall without paying |
| Fetch gated content, auto-paying (prepaid preferred, escrow otherwise) |
| Manage the pre-paid balance (no per-request signing) |
| Buy a creator's subscription plan (price read on-chain first) |
| Search the DataHub marketplace (results carry |
| Buy a dataset and get the download link |
| Rate a dataset you bought (verified-purchase gated server-side) |
| Time-based access to a recurring dataset (on-chain plan; renew extends expiry) |
| Fresh download link via purchase receipt or active subscription (no payment) |
| Inspect a checkout session (accepts the full checkout URL) |
| Pay a pending checkout session; the merchant's order is marked paid |
| Inspect a Blink product link (title, price, seller) without paying |
| Buy from a Blink link; returns the receipt + download link |
Authorization model
Moving money was never the hard part; scoped, revocable authority is. The agent never holds your main wallet: it runs on a dedicated keypair funded only with what it is allowed to spend (the outer bound), and the server enforces two hard caps before any funds move, on every tool:
SOLINKIFY_MAX_PAYMENT_USD— max for a single payment (default1)SOLINKIFY_DAILY_CAP_USD— max total per UTC day (default10, persisted in~/.solinkify/mcp-spend.json, fail-closed)
For Gate paywalls there is an on-chain scoped budget too: a prepaid balance is
deposited once into a program-owned account and debited per request at
on-chain prices; withdraw_prepaid pulls the remainder back at any time — the
kill switch. Delegated on-chain spend authority (allowance + revoke enforced
by the program itself) is on the pre-mainnet contract roadmap.
Refusals come back as readable messages the agent can relay to the user. The
server also self-identifies as an AI agent via User-Agent (override with
SOLINKIFY_USER_AGENT), so Gate-protected sites answer with a clean 402
instead of being scraped.
Environment
Var | Default | Purpose |
| — (required) | Agent wallet |
| devnet public RPC | Solana RPC |
|
|
|
|
| Solinkify backend |
|
| Per-payment cap |
|
| Daily budget |
QA
scripts/qa-battery.mjs drives every tool through a real MCP stdio client
against live devnet; scripts/qa-guard-probe.mjs proves both caps refuse.
Maintenance
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zenidp/solinkify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server