Solinkify MCP server — let AI agents pay for gated content (x402), buy and rate datasets, and settle store checkouts on Solana, with hard spending caps.
Solinkify MCP demonstrates strong tool organization and naming conventions with consistent verb-noun patterns (datahub_search, gate_fetch, pay_checkout, social_buy_blink, wallet_status). All 18 tools are explicitly registered with descriptions and input schemas visible in src/tools/*.ts files. Tool descriptions are substantive (150-300 chars typically) and explain what the tool does, when to use it, and consequences (especially important for irreversible payment operations). Parameter descriptions are complete and detailed. However, there are gaps in output schema documentation (responses are not formally specified in the input schema definitions), and error handling guidance is implicit rather than explicit in tool descriptions. Tool risk classifications (READ_ONLY, WRITE, IRREVERSIBLE) are present and helpful for reasoning about side effects.
Buy a DataHub dataset (x402 settlement on Solana, 99% goes to the seller) and return the download link. Pays in USDC by default; set token to USDT to settle in USDT instead. Spending caps apply.
Fetch a DataHub dataset you own (bought or subscribed). Returns the download link. No payment involved — the purchase or subscription already paid for access.
Rate a DataHub dataset you have purchased (1-5 stars, optional comment). Verified-purchase only: the marketplace rejects wallets without a receipt for the dataset. No payment involved.
Search the Solinkify DataHub marketplace. Returns id, title, price (USD stablecoin), seller, category, and sales count. Datasets: buy with datahub_buy. API listings (kind "api"): the price is per request — access them by calling gate_fetch on their api_base_url.
Subscribe to a recurring DataHub dataset (time-based access, on-chain payment with the plan's USDC price). While active, every update of the dataset can be fetched with datahub_download — no per-download payment. Renewing extends from the current expiry. Spending caps apply.
Output schemas are not formally documented in the MCP tool definitions. Tool descriptions mention what is returned (e.g., 'Returns id, title, price (USD stablecoin), seller, category, and sales count' for datahub_search) but these are informal descriptions, not structured JSON Schema definitions in the inputSchema or a separate outputSchema field. LLMs cannot reliably parse what fields to extract from responses.
Error handling guidance is minimal. Tool descriptions do not explain what errors might be raised, how to recover from them, or what actions to take next. For example, datahub_buy says 'Spending caps apply' but does not explain what error is returned if a cap is exceeded, or how to check remaining balance before attempting purchase.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 73 | <=2025-11-25 | v2 |
Check what each side says was delivered for a payment: the hash the gate filed for what it served, and the hash the agent filed for what it received. Use it to confirm a purchase arrived intact, or to show a discrepancy. Read-only and free. Note it records WHICH bytes were delivered, not whether their contents were correct.
Fetch a Gate-protected URL, automatically paying the x402 paywall from the agent wallet (prepaid balance preferred, escrow payment otherwise). Returns the page content plus what was paid. Refuses and explains if the price exceeds the per-payment or daily cap. Ungated URLs are fetched normally and cost nothing.
Browse the public Solinkify registry of x402-priced endpoints: paid APIs and content an agent can buy per request. Returns url, price per request, currency, network and access modes for each one, plus whether it fits the configured spending caps. Use it to find a paid data source without being handed the URL, then call gate_get_price or gate_fetch on the url. Read-only and free. Every entry was verified by machine: it answers a real HTTP 402 with a valid x402 manifest that pays the wallet which listed it.
Preview a Solinkify Gate paywall (HTTP 402 / x402) without paying: price, currency, and available access modes (pay-per-request, prepaid, subscription). Call this before gate_fetch to learn the price. Costs nothing and never moves money.
Show the agent's Solinkify pre-paid balance for a stablecoin (deposited once, then debited per request without signing a transaction each time). Read-only.
Deposit stablecoin to the Solinkify prepaid account for x402 pay-per-request access. Once deposited, every gate_fetch call that hits a paywall draws from the balance (no per-request transaction), and any leftover can be withdrawn. Spending caps still apply per request, but daily cap is not enforced for prepaid (it would block recurring subscriptions). The deposit is held in escrow; it is never transferred to anyone and is always retrievable.
Withdraw leftover stablecoin from the Solinkify prepaid account back to the agent wallet. The balance is what remains after all gate_fetch requests have drawn their fees. Withdrawals are instant on-chain; use gate_prepaid_balance to see how much is available.
Pay a pending Solinkify Pay checkout session. Settles on Solana, the merchant receives 99% instantly, and the order is marked paid. Spends from the agent wallet — or, when SOLINKIFY_OWNER_WALLET is configured, from the owner wallet under its on-chain SpendAuthority caps (ADR-008); check spend_authority_status first in that mode. Moves money and is not reversible, so confirm the amount with pay_get_session first. Sessions that are already paid or expired are refused.
Inspect a Solinkify Pay checkout session (from a merchant store such as WooCommerce, OpenCart or PrestaShop) before paying: amount, merchant, order id, and status. Read-only, so call it first to confirm what pay_checkout would spend.
Buy a product from a Solinkify Blink link as shared on X. Moves money: settles on Solana through the same escrow rails as DataHub and returns the receipt plus the download link. The price is read from the catalog and checked against the spending caps first.
Inspect a Solinkify Blink (a product shared on X as a Solana Action) before buying: title, description, price, and seller. Read-only, so use it to confirm the price before social_buy_blink.
Show the on-chain SpendAuthority (ADR-008) that lets this agent pay merchants from an owner's wallet: per-payment cap, daily ceiling, what is spent/left today, and whether it has been revoked. All of it is enforced by the Solana program, not by this server. Read-only. Defaults to the SOLINKIFY_OWNER_WALLET the server is configured with.
Show the agent wallet: address, SOL for fees, stablecoin balances, Solinkify pre-paid balance, and today's remaining spending budget under the caps. Takes no arguments and never moves money. Call it first when a payment fails, to tell an empty wallet apart from a cap that has been reached.
No explicit dry-run or confirmation mechanism for irreversible operations (datahub_buy, datahub_subscribe, gate_fetch, pay_checkout, social_buy_blink). Agents cannot preview cost or confirm intent before spending. The tool descriptions suggest checking price first (e.g., 'confirm the amount with pay_get_session first'), but this is guidance, not a protocol feature that prevents accidental execution.
Parameter validation constraints are not exhaustively formalized. For example, datahub_buy accepts a 'token' enum (USDC, USDT) but the description says 'The agent wallet must hold this token', there is no pre-flight validation tool that checks wallet balances before purchase, forcing the agent to call wallet_status explicitly or risk a transaction failure.