MadeOnSolMade on Sol
Pricing
Try freeGet real-time feedsSign in
MadeOnSolMade on Sol

Solana and Robinhood Chain intelligence — KOL wallet tracking, deployer intelligence, all-DEX trade streams, and a developer API. Discover, compare, and build.

Product

  • Solana Data API
  • Robinhood Chain API
  • Robinhood Chain x402
  • MCP Servers & SDKs
  • x402 for AI Agents
  • Pricing
  • Enterprise / For Businesses

Solutions

  • Trading Bots
  • Wallet Tracking
  • Copy Trading
  • Token Scanners
  • Trading Terminals
  • DEX Data
  • Smart Money
  • Token Risk
  • AI Agents
  • View all solutions

Developers

  • API Docs
  • WebSocket Streaming
  • Changelog
  • API Status
  • Latency Benchmarks
  • Data Integrity
  • Data Dictionary
  • Methodology

Resources

  • All Tools
  • Compare Tools
  • Best Trading Bots
  • Best DEXs
  • Best Wallets
  • Best Analytics
  • Best DeFi
  • Best Snipers
  • Blog
  • Blog Archive
  • Signal Scorecard
  • Tool Uptime
  • Community
  • Submit a Tool
  • Advertise

Company

  • About
  • Contact
  • Security
  • Privacy
  • Terms
  • DPA
  • Disclaimer

© 2026 MadeOnSol

MadeOnSol — eenmanszaak, Hulshout, Belgium · KBO/BTW BE 1039.535.538 (art. 56bis, no VAT charged)

Runs on our own dedicated EU servers — self-hosted data stack, own Robinhood Chain node · security

Follow us on XPowered by:constant·k — Private Solana RPC Services
SolutionsAI Agents

Solutions · AI agents

Onchain tools for AI agents on Solana

MadeOnSol gives AI agents Solana onchain data through three routes: an MCP server that exposes MadeOnSol API endpoints as typed tools, x402 endpoints an agent pays per call in USDC without an account, and the REST API for agent backends; none of them signs or sends trades.

Connect the MCP server Pay per call with x402
MCP tools in mcp-server-madeonsol
104
Solana endpoints payable per call over x402
25
Calls a day on a Free key
200

An agent becomes useful when a question turns into a deterministic call with a structured answer. MadeOnSol supplies the call and the answer; the reasoning and any action stay with your agent.

Free API key · plans from €43

A Free key runs the MCP server on the free routes, live feeds 5 minutes delayed; token risk and wallet tools from Pro. x402 needs no plan: each call is paid in USDC.

Three ways an agent gets in

  • MCP server

    mcp-server-madeonsol 3.1.1: API endpoints as typed tools for Claude Desktop, Cursor, Claude Code and other MCP clients.

    Auth: With an msk_ API key: all 104 tools. With a Solana wallet (x402 mode): 12 KOL, deployer and sniper tools, paid per call.

    stdiotools/callmadeonsol_token_risk

  • x402 pay per call

    Priced endpoints answer an unpaid request with HTTP 402 and a price; the agent pays in USDC and retries. The madeonsol-x402 client or any x402 HTTP client reaches every priced route, token risk and wallet PnL included.

    Auth: No account, no key: the payment is the credential

    HTTP 402PAYMENT-SIGNATUREUSDC

  • REST API from your backend

    Your agent framework defines its own tools and calls /api/v1 through an SDK.

    Auth: msk_ API key, kept server-side

    /api/v1MadeOnSolREST

The problem

A language model cannot read Solana. Handed raw transactions or a scraped page, it guesses. It needs tools with fixed arguments that return named fields, say what could not be observed, and never move funds, plus a way to pay or authenticate that works without a person in the loop.

Show me

From agent question to onchain tool call

The API-key path: the MCP server started with MADEONSOL_API_KEY. One question, two tool calls, real tool names and schemas. Values are illustrative and match the token risk example.

  1. 1 · API-key path: the agent picks a tool

    Asked "check 9kQuW3...pump and who made it", the model finds madeonsol_token_risk in the tool list: one required argument, marked read-only.

    tools/list entry the agent sees (abridged)
    {
      "name": "madeonsol_token_risk",
      "description": "Transparent 0–100 token risk score (higher = riskier): risk evidence for your own policy, not a verdict. …",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mint": { "type": "string", "description": "Token mint address (base58)" }
        },
        "required": ["mint"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  2. 2 · The server calls MadeOnSol

    The client sends tools/call and the server calls the /api/v1 route with your key. madeonsol_token_risk is not registered in keyless x402 mode; keyless, the same route is reached through the madeonsol-x402 client (see the x402 section).

    The call, and the request the server makes
    // MCP client → mcp-server-madeonsol (JSON-RPC over stdio)
    {
      "jsonrpc": "2.0",
      "id": 7,
      "method": "tools/call",
      "params": {
        "name": "madeonsol_token_risk",
        "arguments": { "mint": "9kQuW3...pump" }
      }
    }
    // mcp-server-madeonsol → MadeOnSol, with MADEONSOL_API_KEY set:
    // GET https://madeonsol.com/api/v1/tokens/9kQuW3...pump/risk
    // Authorization: Bearer msk_...
  3. 3 · The agent reads fields, not prose

    6 factors added points, and LP custody is listed as not assessed. The agent can quote the evidence and see that the creator sold most of its self-buy.

    result.content[0].text, parsed (abridged)
    // The tool returns one text block: the endpoint's JSON, as a string.
    {
      "mint": "9kQuW3...pump",
      "risk_score": 47,
      "band": "caution",
      "factors": [
        {
          "key": "liquidity",
          "status": "warn",
          "points": 8,
          "detail": "Low liquidity ($6,400)."
        },
        {
          "key": "liquidity_ratio",
          "status": "warn",
          "points": 5,
          "detail": "Liquidity is 3.1% of market cap."
        },
        {
          "key": "lp_burn",
          "status": "warn",
          "points": 8,
          "detail": "LP burn/lock status unknown …"
        },
        {
          "key": "bundled_open",
          "status": "warn",
          "points": 6,
          "detail": "Elevated launch concentration (27.4 SOL in the first 20 buyers)."
        },
        {
          "key": "deployer_reputation",
          "status": "danger",
          "points": 12,
          "detail": "Deployer has bonded only 4% of 50 tokens."
        },
        {
          "key": "kol_distribution",
          "status": "warn",
          "points": 8,
          "detail": "Tracked KOLs are net-distributing this token."
        }
      ],
      "assessment": {
        "status": "complete",
        "unknown_inputs": [],
        "not_assessed": [
          "lp_custody"
        ]
      },
      "score_version": "v2",
      "dev": {
        "wallet": "7Dv4tP...Qm2e",
        "buy_tokens": 34120000,
        "sold_tokens": 30000000,
        "wallet_empty": false,
        "transfer_status": "none_detected"
      },
      "as_of": "2026-09-25T10:00:00.000Z"
    }
  4. 4 · It follows a field

    dev.wallet becomes the argument of madeonsol_deployer_profile: the creator's record, available on a Free key.

    madeonsol_deployer_profile, called with dev.wallet (abridged)
    // tools/call madeonsol_deployer_profile { "wallet": "7Dv4tP...Qm2e" }
    // → GET /api/v1/deployer-hunter/7Dv4tP...Qm2e
    {
      "deployer": {
        "wallet_address": "7Dv4tP...Qm2e",
        "tier": "cold",
        "is_tracked": false,
        "total_tokens_deployed": 50,
        "total_bonded": 2,
        "instant_bonds": 0,
        "bonding_rate": 0.04,
        "recent_bond_rate": 0,
        "recent_outcomes": "DDDDDDDDDD",
        "runner_rate": 0,
        "last_deploy_at": "2026-09-25T09:31:07.000Z"
      }
    }

Errors arrive as results

A failed call is also a text block, such as "Error 403: …" when the plan does not include the route or "Error 503: …" with risk_inputs_unavailable. The agent has to read it; nothing is thrown.

readOnlyHint

Reads carry readOnlyHint: true. Tools that create or change rules, alerts, watchlists or webhooks carry readOnlyHint: false, so a client can ask before calling them.

Server instructions

On connect the server tells the model to call madeonsol_discovery first and to try a single-item lookup before a heavier call on the same mint or wallet.

Who does what in that exchange

  1. 1 · Agent

    Question

    A user or a task asks about a mint, a wallet or a creator.

  2. 2 · Agent

    Tool choice

    The model reads the tool list and fills in the arguments.

  3. 3 · MadeOnSol

    MCP call

    With a key, the server calls the /api/v1 endpoint. In x402 mode, only the keyless tools exist and each call is paid.

  4. 4 · MadeOnSol

    Structured result

    Named fields, factor points and what could not be observed.

  5. 5 · Agent

    Agent reasoning

    The agent follows a field, answers, or asks the user. It never trades through MadeOnSol.

Try it

Connect one tool before you write an agent

Add the MCP server to Claude Desktop, Cursor or Claude Code with a free key and ask about a token. Or send an unpaid request to an x402 route and read the 402 your agent will answer.

Set up the MCP server Get a free API key See the x402 endpoints

MCP

What the MCP server exposes

mcp-server-madeonsol has 104 tools, each a thin wrapper over one MadeOnSol endpoint. Which of them register depends on how you authenticate. Install steps and client configs live on the MCP page.

ModeToolsCalls
API keyMADEONSOL_API_KEYAll 104 tools are registered. Each call keeps the plan gate of its endpoint./api/v1 with Authorization: Bearer msk_...
x402, keylessSVM_PRIVATE_KEYX402_PAY_TOX402_FEE_PAYERX402_MAX_AMOUNT_ATOMICX402_MAX_TOTAL_AMOUNT_ATOMICSVM_RPC_URLThe 12 tools on the keyless rail (KOL, deployer and sniper reads) plus madeonsol_discovery. Key-only tools, including madeonsol_token_risk and the wallet tools, are not registered, and 13 more are listed but answer with an error that asks for a key./api/x402, each call paid in USDC within the per-call and lifetime caps you set. Startup fails without them.
HTTP transportMCP_TRANSPORT=httpMCP_HTTP_TOKENSame tools as the API-key mode, for one operator on loopback.Refuses to start when a wallet key is configured: HTTP mode never carries a payer.

Keyless tools: madeonsol_kol_feed, madeonsol_kol_coordination, madeonsol_kol_leaderboard, madeonsol_deployer_alerts, madeonsol_kol_pairs, madeonsol_deployer_trajectory, madeonsol_kol_hot_tokens, madeonsol_kol_token_entry_order, madeonsol_kol_compare_wallets, madeonsol_kol_alerts_recent, madeonsol_kol_trending_tokens, madeonsol_sniper_recent.

Listed in x402 mode but need a key (they answer with an error text): madeonsol_kol_timing, madeonsol_deployer_stats, madeonsol_deployer_leaderboard, madeonsol_deployer_profile, madeonsol_deployer_tokens, madeonsol_deployer_alert_stats, madeonsol_deployer_best_tokens, madeonsol_deployer_recent_bonds, madeonsol_kol_pnl, madeonsol_sniper_by_deployer, madeonsol_sniper_watchlist_list, madeonsol_sniper_watchlist_add, madeonsol_sniper_watchlist_remove.

Tool families, with real names

Tokens

Snapshot, risk factors, holders, candles, many mints per call

madeonsol_token_getmadeonsol_token_riskmadeonsol_tokens_batch_riskmadeonsol_token_holdersmadeonsol_token_candles

Wallets

Flags, PnL, open positions, bulk reputation

madeonsol_wallet_statsmadeonsol_wallet_pnlmadeonsol_wallet_batch_classify

KOL and alpha wallets

Tracked-trader trades, convergence and rankings

madeonsol_kol_feedmadeonsol_kol_coordinationmadeonsol_alpha_leaderboard

Deployers

Creator record now and on a past date, launch alerts

madeonsol_deployer_profilemadeonsol_deployer_as_ofmadeonsol_deployer_alerts

Rules and deliveryreadOnlyHint: false

Configure copy-trade rules, price alerts, watchlists and webhooks in your account

madeonsol_copytrade_createmadeonsol_price_alerts_createmadeonsol_wallet_tracker_addmadeonsol_create_webhook

Account and catalog

Tier, quota and the priced keyless catalog

madeonsol_memadeonsol_discovery

What it does not do

No trade tool

No tool builds, signs or sends a swap. Rule tools make MadeOnSol notify you; your agent and its own stack decide and execute.

The only signature is the data fee

In x402 mode the server signs a USDC payment for a call, and only after checking payee, fee payer, asset, network and your caps.

Same API underneath

A tool returns what its endpoint returns, with the same plan gate and the same free-plan delay on live feeds.

x402

When the agent pays per call

MCP decides how an agent calls a tool; x402 decides how one HTTP request gets paid. 25 Solana routes take USDC per call, from $0.005 to $0.02, with no account. The full catalog and protocol notes are on the x402 page.

  1. 1 · Request

    The agent sends a plain GET to an /api/x402 route. No key, no account.

  2. 2 · HTTP 402

    The answer names the scheme, network, asset, amount and payee in accepts[], in the body and base64 in a header.

    PAYMENT-REQUIRED

  3. 3 · Pay and retry

    The client checks the offer against its own policy, signs a USDC payment and repeats the request with the proof.

    PAYMENT-SIGNATUREX-PAYMENT

  4. 4 · Data

    The payment is verified and settled, then the route answers with the same JSON as its /api/v1 twin.

    PAYMENT-RESPONSE

Which keyless client reaches what

ClientReaches keylessDoes not reach
mcp-server-madeonsol, x402 modeThe 12 keyless tools: KOL feed, coordination, leaderboard, pairs, hot and trending tokens, entry order, wallet compare and alerts; deployer alerts and trajectory; sniper deploys.Token risk, token snapshot, wallet stats and PnL, candles and the other priced token and wallet routes: their tools register only with a key.
madeonsol-x402 client (MadeOnSolX402)Priced routes through its methods, including tokenRisk, token, walletStats, walletPnl.Streams, webhooks, rules and key-only routes such as holders or surges.
Any x402 HTTP clientEvery priced route; GET /api/x402 lists each one with its price and parameters.The same key-only surfaces.
HTTP 402 body (abridged; also base64 in PAYMENT-REQUIRED)
// GET /api/x402/tokens/9kQuW3...pump/risk, no payment
// amount is atomic USDC (6 decimals): 20000 = $0.02
{
  "x402Version": 2,
  "error": "Payment required",
  "resource": {
    "url": "https://madeonsol.com/api/x402/tokens/9kQuW3...pump/risk",
    "mimeType": "application/json"
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "amount": "20000",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "payTo": "GLu63pRCYrp4BJu5P5ciYKxgeZFW9c8TJ8jWzK3TB9AR",
      "maxTimeoutSeconds": 60,
      "extra": {
        "feePayer": "2wKupLR9q6wXYppw8Gr2NvWxKBUqm4PPJKkQfoxHDBg4"
      }
    }
  ]
}
// + description, outputSchema and extensions.bazaar (discovery metadata)
TypeScript · keyless, madeonsol-x402
import { MadeOnSolX402 } from "madeonsol-x402";

// Required before the client signs anything: who may be paid, and how much.
const agent = new MadeOnSolX402({
  privateKey: process.env.SVM_PRIVATE_KEY!,
  paymentPolicy: {
    payTo: "GLu63p...B9AR",          // merchant, from /x402, not from the 402
    feePayer: "2wKupL...xHDBg4",      // facilitator fee payer
    maxAmountAtomic: "20000",        // per call (0.02 USDC)
    maxTotalAmountAtomic: "1000000", // per client instance (1 USDC)
    rpcUrl: process.env.SVM_RPC_URL!,
  },
});

// GET /api/x402/tokens/{mint}/risk: 402, pay within policy, retry, JSON.
const risk = await agent.tokenRisk("9kQuW3...pump");

Inputs checked before settlement

For token risk, the score inputs are loaded after the payment is verified and before it settles. If one cannot be read, the answer is 503 with charged: false and the same proof can be retried.

An untracked mint is still paid

Tracking status is not revealed before payment, so an untracked mint costs the call and returns 404. A free keyed lookup can check first.

A subset of the API

The keyless catalog covers KOL, deployer, token and wallet reads. Streams, webhooks, rules and routes such as holders or surges need a key.

Routes an agent pays for most

RouteReturnsPer call
GET /api/x402/tokens/{mint}/riskRisk factors and creator activity$0.02 USDC
GET /api/x402/token/{mint}Token snapshot$0.01 USDC
GET /api/x402/wallet/{address}Wallet stats and flags$0.005 USDC
GET /api/x402/wallet/{address}/pnlWallet FIFO PnL$0.02 USDC
GET /api/x402/kol/feedTracked KOL trades$0.005 USDC
GET /api/x402/deployer-hunter/alertsTracked-deployer launches$0.01 USDC

Architecture choice

MCP, x402 or your own backend

An agent does not have to use MCP. The same endpoints serve every route; pick by where the agent runs and who holds the credential.

Your agentUseHow
An assistant in Claude Desktop, Cursor or Claude CodeMCP server, stdioPut MADEONSOL_API_KEY in the client's server config. A free key works for the free routes.
An autonomous agent with its own Solana wallet and no accountx402The madeonsol-x402 client with a payment policy, or the MCP server in x402 mode for the keyless tools.
An agent service that defines its own toolsREST API through an SDKWrap the calls you need as tools; the key stays in your backend. Python, ElizaOS and Solana Agent Kit packages are listed on the MCP page.
An agent that reacts when something happensWebhooks or the WebSocket streamKeyed delivery from Pro. madeonsol_create_webhook and madeonsol_stream_token set it up from the agent itself.

The REST route, as your own tool

The same two calls as the MCP example, wrapped as one tool in your backend. The key never reaches the model. SDKs

TypeScript · your own tool, madeonsol-x402 REST client
import { MadeOnSolREST } from "madeonsol-x402";

const rest = new MadeOnSolREST({ apiKey: process.env.MADEONSOL_API_KEY! });

// Register this in your agent framework's tool format.
export const checkToken = {
  name: "check_token",
  description: "Risk factors and creator record for one Solana mint",
  input: { mint: "string" },
  async run({ mint }: { mint: string }) {
    const risk = await rest.tokenRisk(mint);             // GET /api/v1/tokens/{mint}/risk
    const creator = risk.dev?.wallet
      ? await rest.deployerProfile(risk.dev.wallet)      // GET /api/v1/deployer-hunter/{wallet}
      : null;
    return { band: risk.band, factors: risk.factors, assessment: risk.assessment, creator };
  },
};

Plans

What each tool needs

A tool needs the plan of the endpoint it calls. A Free key allows 200 calls a day. x402 is separate from any plan.

CapabilityTools or routePlan
The MCP server itselfnpm: mcp-server-madeonsolFree, MIT licenceCalls are billed as API calls
Token snapshot, creator profilemadeonsol_token_get · madeonsol_deployer_profileFree
KOL trades and deployer alertsmadeonsol_kol_feed · madeonsol_deployer_alertsFreeLive feeds 5 min delayed on Free
Token risk, wallet stats, KOL coordinationmadeonsol_token_risk · madeonsol_wallet_stats · madeonsol_kol_coordinationFrom Pro
Rules, webhooks, stream tokenmadeonsol_copytrade_create · madeonsol_create_webhook · madeonsol_stream_tokenFrom Pro
Keyless, per call/api/x402/*No plan: pay per callUSDC on Solana

Compare plans · API status · Webhooks

Architecture

Where MadeOnSol sits in an agent stack

  1. 1 · Source

    Chain activity

    Transactions and program events

  2. 2 · MadeOnSol

    Data and intelligence layer

    • MCP tools over the API
    • Structured JSON results
    • Keyed or pay-per-call access
  3. 3 · Delivery

    • REST API/api/v1 · what the MCP server calls with a key
    • x402/api/x402 · pay per call, keyless
    • Webhookssigned HTTPS push
    • WebSocket streams/ws/v1/stream
  4. 4 · Yours

    Your agent and its model

    Keys and business logic stay server-side

  5. 5 · Users

    Answers and actions

Build outcomes

What teams build with agent access

  • Token research agents
  • Wallet investigation agents
  • Smart-money research assistants
  • Token due-diligence agents
  • Market-monitoring agents
  • Onchain copilots in Claude or Cursor

An agent that shows MadeOnSol data to your own users is displaying it, which requires a Business plan. See pricing

Keep going

Related

Solution

Token Risk

The risk response an agent reads, field by field.

Solution

Smart Money

Tracked KOL and alpha wallets behind the KOL tools.

Solution

Wallet Tracking

Watchlists an agent can add to and read from.

Docs

SDKs

TypeScript, Python and Rust clients.

Guide

MCP, Agent Kit or x402 for a trading agent

Three ways to wire the data in.

Guide

Research tokens and KOLs from Claude and Cursor

The MCP server in a research session.

FAQ

Questions agent builders ask

Does an AI agent need MCP to use MadeOnSol?+
No. MCP suits clients that already speak it, such as Claude Desktop, Cursor and Claude Code. An agent service can call the same endpoints over REST through an SDK with its key kept server-side, or pay per call over x402 without a key. The data is the same on every route.
What is the difference between MCP and x402?+
MCP is how an agent finds and calls tools; x402 is how a single HTTP request gets paid. The MCP server with an msk_ key registers all 104 tools. Started with a Solana wallet instead, it registers only the 12 keyless KOL, deployer and sniper tools and pays each call in USDC within the caps you set. The madeonsol-x402 client reaches the other priced x402 routes, such as token risk.
Which MadeOnSol MCP tools work with an API key, and which work keyless?+
With MADEONSOL_API_KEY every tool registers and keeps the plan gate of its endpoint. In keyless x402 mode 12 tools work, among them madeonsol_kol_feed, madeonsol_deployer_alerts and madeonsol_sniper_recent. madeonsol_token_risk, the wallet tools and the rule tools are not registered, and 13 listed tools such as madeonsol_deployer_profile return an error asking for a key. madeonsol_discovery works in both modes.
Can an agent pay per request without a subscription?+
Yes, on the x402 endpoints. An unpaid GET returns HTTP 402 with the price, network, asset and payee; the client signs a USDC payment and repeats the request. No account and no key. The TypeScript client and the MCP server refuse to sign until you set a payee, a fee payer and per-call and total caps. Streams, webhooks, rules and key-only routes such as holders need a key.
Does MadeOnSol execute trades for AI agents?+
No. No MCP tool or endpoint builds, signs or sends a swap, and nothing holds funds. The one thing signed in x402 mode is the data fee, within your budget. Rule tools such as copy-trade rules and price alerts make MadeOnSol notify you; your agent decides and executes with its own stack.
What does an agent receive from a MadeOnSol MCP tool?+
One text block holding the endpoint's JSON, the same fields the API reference documents. A failed call is also text, for example "Error 403: …" when the route needs a higher plan, so the agent should read the result before reasoning over it.
Can teams prototype first?+
Yes. Create a free key on the developer page and add it to the MCP server: token snapshots, creator profiles and the KOL feed work on Free, with live feeds 5 minutes delayed. Token risk and wallet tools start on Pro; see pricing.

Next step

Connect a tool, read one result, then choose how your agent pays.

Check the service, wire the MCP server on a free key, then move to a plan or to x402.

  1. 1 · ProofAPI status Live health of the API behind the tools.
  2. 2 · TrySet up the MCP server Claude Desktop, Cursor, Claude Code.
  3. 3 · Docsx402 endpoints Routes, prices and the payment flow.
  4. 4 · PlanCompare plans Token risk and wallet tools from Pro.