Solana & Base DeFi intelligence for AI agents over x402: decisions, risk, signed receipts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Batch heuristic risk scan for up to 10 SPL token mints in ONE call (mint + freeze authority, Token-2022 dangerous extensions, top-10 holder concentration per token). A portfolio/watchlist bundle over the token-risk engine; each mint returns its own result or an explicit error. Transparent, conservative ('unknown' over guessing). NOT financial advice. Requires ?mints=<comma-separated mint addresses>.
Comma-separated base58 SPL mint addresses, up to 10 (duplicates removed), e.g. mintA,mintB,mintC.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Batch heuristic risk scan for up to 10 SPL token mints in ONE call (mint + freeze authority, Token-2022 dangerous extensions, top-10 holder concentration per token). A portfolio/watchlist bundle over the token-risk engine; each mint returns its own result or an explicit error. Transparent, conservative ('unknown' over guessing). NOT financial advice. Requires ?mints=<comma-separated mint addresses>.
| Argument | Type | Description |
|---|---|---|
| mints* | string | Comma-separated base58 SPL mint addresses, up to 10 (duplicates removed), e.g. mintA,mintB,mintC. |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "string",
"description": "Comma-separated base58 SPL mint addresses, up to 10 (duplicates removed), e.g. mintA,mintB,mintC."
}
}
}Discover the x402 catalog (endpoints, USDC prices, category, network, payTo). FREE.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}SolMachina Decision — the decision layer for autonomous agents: composes on-chain risk signals into ONE answer — EXECUTE / REVIEW / REJECT + SMRI (SolMachina Machine Risk Index 0-100) + confidence + full evidence. A transparent RISK GATE against stated thresholds — NOT financial advice, NOT a profit prediction; returns REVIEW/unknown instead of guessing. Requires ?mint=<token mint address>; optional ?action=, ?amountUsd=, and a named firewall ?policy= (conservative|bluechip|anti-rug|degen).
| Argument | Type | Description |
|---|---|---|
| tx | string | Optional base64 serialized transaction to BIND the signed authorization to: the response's authorization.subject.boundTxSha256 = sha256(tx), so your executor honors it only for that exact transaction (Proof-of-Decision per-tx). Also decoded OFFLINE to cross-check that the tx actually references the guarded mint — authorization.subject.txReferencesGuardedMint = true | false | "unknown". |
| mint* | string | Base58 SPL token mint to assess, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). |
| action | string | Single nonblank context string; default assess. Does not execute an action. |
| policy | string | Named firewall preset: conservative | bluechip | anti-rug | degen — expands to a full ALLOW/DENY policy (the individual params above override preset values). The response echoes policyTemplate. |
| minSmri | number | Agent Financial Firewall — your policy: require SMRI >= this (0-100). Adds policy.verdict = ALLOW/DENY (fail-closed). |
Live aggregated Solana swap quote from the Jupiter aggregator: best-route output, price impact with stated thresholds (minimal/low/moderate/high), min-received after slippage, transparent route path, USD value and a freshness slot. A quote, NOT an execution guarantee (impact/liquidity move block to block). NOT financial advice. Requires ?inputMint=&outputMint=&amount= (amount in the input token's base units).
| Argument | Type | Description |
|---|---|---|
| amount* | string | Amount of inputMint in its base units (lamports for SOL, 1e6 per USDC). |
| inputMint* | string | Base58 mint you are selling, e.g. So11111111111111111111111111111111111111112 (SOL). |
| outputMint* | string | Base58 mint you are buying, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC). |
| slippageBps | integer | Slippage tolerance in basis points for min-received, 0-5000 (default 50 = 0.5%). |
{
"type": "object",
"required": [
"inputMint",
"outputMint",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount of inputMint in its base units (lamports for SOL, 1e6 per USDC)."
},
"inputMint": {
"type": "string",
"description": "Base58 mint you are selling, e.g. So11111111111111111111111111111111111111112 (SOL)."
},
"outputMint": {
"type": "string",
"description": "Base58 mint you are buying, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC)."
},
"slippageBps": {
"type": "integer",
"description": "Slippage tolerance in basis points for min-received, 0-5000 (default 50 = 0.5%)."
}
}
}Live epoch info + ETA to epoch end (dual measured slot-rates labeled). Optional ?rate= selects which measured rate drives the ETA.
| Argument | Type | Description |
|---|---|---|
| rate | string | Which measured slot-rate to use for the ETA: 'primary', 'alt', or 'both' (default). |
{
"type": "object",
"required": [],
"properties": {
"rate": {
"type": "string",
"description": "Which measured slot-rate to use for the ETA: 'primary', 'alt', or 'both' (default)."
}
}
}Explain the x402 402->sign->retry flow so an agent can pay a paid endpoint with its own wallet. FREE.
| Argument | Type | Description |
|---|---|---|
| endpoint | string | optional endpoint path, e.g. /v1/decision |
{
"type": "object",
"required": [],
"properties": {
"endpoint": {
"type": "string",
"description": "optional endpoint path, e.g. /v1/decision"
}
}
}Kamino mainnet market list (trimmed JSON). Optional ?limit caps how many markets are returned.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max markets to return, 1-100 (default 100). |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"description": "Max markets to return, 1-100 (default 100)."
}
}
}Newest Solana liquidity pools (GeckoTerminal): name, base mint, creation time, age in minutes, liquidity, 24h volume and price change. New pools are UNVETTED and structurally high-risk — pair each mint with /v1/token-risk before acting. Factual observation only, NOT a recommendation. NOT financial advice. Optional ?limit (1-20, default 15).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many new pools to return, 1-20 (default 15). |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"description": "How many new pools to return, 1-20 (default 15)."
}
}
}Solana NFT collection snapshot from Magic Eden: floor price (SOL + lamports), listed count, 24h average price and 7-day volume. The floor is the lowest CURRENT ask (not a guaranteed sale price) and moves continuously. Factual snapshot, NOT a recommendation. NOT financial advice. Requires ?symbol=<Magic Eden collection symbol>.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Magic Eden collection symbol, e.g. mad_lads or okay_bears. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"description": "Magic Eden collection symbol, e.g. mad_lads or okay_bears."
}
}
}One-call PRE-TRADE SWEEP for a token: the full token-intel bundle (risk + executive digest + factual holder classification) PLUS a wallet-activity profile of the largest remaining holder PLUS observed priority-fee landing bands, distilled into a factual, threshold-stated checklist. Verdict-free (never 'buy'/'avoid'); partial sub-analyses are explicit errors, never silence. NOT financial advice. Requires ?mint=<token mint address>.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Base58 SPL token mint address to sweep, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Base58 SPL token mint address to sweep, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK)."
}
}
}Solana priority-fee intelligence: the observed distribution (percentiles + suggested economy/normal/fast/aggressive bands) of prioritization fees actually paid in recent slots, in micro-lamports per compute unit. Optional ?accounts= narrows to txs write-locking specific markets. Observed history, NOT a prediction or inclusion guarantee.
| Argument | Type | Description |
|---|---|---|
| accounts | string | Optional comma-separated base58 addresses to narrow the fee sample to transactions that write-locked them (e.g. a hot AMM pool). |
{
"type": "object",
"required": [],
"properties": {
"accounts": {
"type": "string",
"description": "Optional comma-separated base58 addresses to narrow the fee sample to transactions that write-locked them (e.g. a hot AMM pool)."
}
}
}FREE preview of any endpoint: response shape/example, inputs and price — inspect before paying.
| Argument | Type | Description |
|---|---|---|
| endpoint* | string | e.g. /v1/token-holders |
{
"type": "object",
"required": [
"endpoint"
],
"properties": {
"endpoint": {
"type": "string",
"description": "e.g. /v1/token-holders"
}
}
}SolMachina's own Solana epoch-transition checkpoint series: the live epoch/slot reading (getEpochInfo via multi-RPC) measured against our accumulating on-disk series to yield a MEASURED slot-rate + ETA (not a model) and last epoch-transition detection. Optional ?n sets how many recent series points to return.
| Argument | Type | Description |
|---|---|---|
| n | integer | How many most-recent series points to include in `series.recent`, 1-200 (default 20). |
{
"type": "object",
"required": [],
"properties": {
"n": {
"type": "integer",
"description": "How many most-recent series points to include in `series.recent`, 1-200 (default 20)."
}
}
}Pre-flight transaction simulation for agents: dry-run a serialized Solana transaction (simulateTransaction) BEFORE executing — will it succeed, compute units consumed, program logs, and the error if any. NEVER signs or sends; simulation only, NOT a guarantee of the real on-chain outcome. NOT financial advice. Requires ?tx=<base64 serialized transaction>.
| Argument | Type | Description |
|---|---|---|
| tx* | string | Base64-encoded serialized Solana transaction to dry-run. |
{
"type": "object",
"required": [
"tx"
],
"properties": {
"tx": {
"type": "string",
"description": "Base64-encoded serialized Solana transaction to dry-run."
}
}
}Solana swap slippage / price-impact curve by trade SIZE: quotes the same pair at decade multiples of your base amount (via the Jupiter aggregator) and returns the impact per size plus a factual depth summary (largest tested size that stays under 1% / 5% impact). Execution intelligence beyond a single /v1/dex-quote. A quote, NOT an execution guarantee. NOT financial advice. Requires ?inputMint=&outputMint=&amount= (input base units).
| Argument | Type | Description |
|---|---|---|
| mults | string | Optional comma-separated size multipliers of the base amount (default 0.1,1,10,100; up to 8). |
| amount* | string | Base units of inputMint for the 1x reference size (lamports for SOL, 1e6 per USDC). |
| inputMint* | string | Base58 mint you are selling, e.g. So11111111111111111111111111111111111111112 (SOL). |
| outputMint* | string | Base58 mint you are buying, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC). |
| slippageBps | integer | Slippage tolerance in basis points for min-received, 0-5000 (default 50). |
{
"type": "object",
"required": [
"inputMint",
"outputMint",
"amount"
],
"properties": {
"mults": {
"type": "string",
"description": "Optional comma-separated size multipliers of the base amount (default 0.1,1,10,100; up to 8)."
},
"amount": {
"type": "string",
"description": "Base units of inputMint for the 1x reference size (lamports for SOL, 1e6 per USDC)."
},
"inputMint": {
"type": "string",
"description": "Base58 mint you are selling, e.g. So11111111111111111111111111111111111111112 (SOL)."
},
"outputMint": {
"type": "string",
"description": "Base58 mint you are buying, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC)."
},
"slippageBps": {
"type": "integer",
"description": "Slippage tolerance in basis points for min-received, 0-5000 (default 50)."
}
}
}SolMachina Machine Risk Index (SMRI) for an SPL token: a 0-100 risk index (higher = lower assessed risk) with transparent components (contract authorities, top-10 concentration), a risk band, and confidence (= data completeness). The cheap, high-frequency score behind /v1/decision — for agents that just want the number. Verdict-free, returns 'unknown' over guessing. NOT financial advice. Requires ?mint=<token mint address>.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Base58 SPL token mint to score, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Base58 SPL token mint to score, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK)."
}
}
}Trust/health snapshot: version, uptime, WAL entry count + SHA-256 chain head. FREE.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Jito bundle tip-floor snapshot + rolling history (p50/p95/p99/EMA). Optional ?fresh=true bypasses the ~60s cache for a live snapshot.
| Argument | Type | Description |
|---|---|---|
| fresh | boolean | If 'true', bypass the ~60s cache and fetch a live tip-floor snapshot (otherwise a cached snapshot is served). |
{
"type": "object",
"required": [],
"properties": {
"fresh": {
"type": "boolean",
"description": "If 'true', bypass the ~60s cache and fetch a live tip-floor snapshot (otherwise a cached snapshot is served)."
}
}
}Solana SPL token holder distribution / whale map: the largest token accounts (up to 20) each with its share of supply, plus top-1/5/10/20 concentration and simple buckets. More detailed than /v1/token-risk's single top-10 signal. Owners are NOT resolved and an account is not necessarily a distinct wallet; concentration is a structural signal, NOT a verdict. NOT financial advice. Requires ?mint=<token mint address>.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Base58 SPL token mint address, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). Major stablecoins like USDC have too many accounts to snapshot. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Base58 SPL token mint address, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). Major stablecoins like USDC have too many accounts to snapshot."
}
}
}One-call Solana token intelligence bundle: the full token-risk analysis PLUS a decision-ready executive digest and factual top-holder classification (burn/system labels; unknowns left unresolved with owner exposed). Verdict-free, transparent, conservative ('unknown' over guessing). NOT financial advice. Requires ?mint=<token mint address>.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Base58 SPL token mint address to profile, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK). |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Base58 SPL token mint address to profile, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK)."
}
}
}Heuristic Solana SPL token risk/signal scan: mint + freeze authority, Token-2022 dangerous extensions, top-10 holder concentration, plus best-effort holder-count/age context. Transparent methodology, conservative (reports 'unknown' over guessing). NOT financial advice. Requires ?mint=<token mint address>.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Base58 SPL token mint address to scan, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC). |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Base58 SPL token mint address to scan, e.g. EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC)."
}
}
}Observed trending Solana tokens/pools (GeckoTerminal ranking of recent volume + activity): name, base mint, price + 1h/6h/24h change, 24h volume, liquidity, FDV, market cap, tx counts and pool age. Market-activity facts, NOT a recommendation, prediction or 'pump' signal — high volume does not imply safety. NOT financial advice. Optional ?limit (1-20, default 15).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many trending pools to return, 1-20 (default 15). |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"description": "How many trending pools to return, 1-20 (default 15)."
}
}
}Decode a Solana transaction into a structured summary: success/fee/compute-units, the programs it invoked (named for well-known ones), SOL balance deltas and SPL token balance deltas. Reports on-chain effects only, never intent. Requires ?sig=<transaction signature>.
| Argument | Type | Description |
|---|---|---|
| sig* | string | Base58 Solana transaction signature to decode. |
{
"type": "object",
"required": [
"sig"
],
"properties": {
"sig": {
"type": "string",
"description": "Base58 Solana transaction signature to decode."
}
}
}How to verify a paid answer's Ed25519 SIR receipt OFFLINE (proof of what you paid for). FREE.
| Argument | Type | Description |
|---|---|---|
| receipt | string | base64 X-SolMachina-Receipt value or the receipt JSON |
{
"type": "object",
"required": [],
"properties": {
"receipt": {
"type": "string",
"description": "base64 X-SolMachina-Receipt value or the receipt JSON"
}
}
}Solana wallet activity profile: age, transaction activity, SOL balance, SPL token holdings, and a factual footprint band (fresh/active/heavy/empty). Transparent, conservative ('unknown' over guessing), never a trust/scam judgement. NOT financial advice. Requires ?address=<wallet address>.
| Argument | Type | Description |
|---|---|---|
| address* | string | Base58 Solana wallet address to profile. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Base58 Solana wallet address to profile."
}
}
}| amountUsd |
| string |
| Single finite non-negative decimal USD amount, context only; does not change the score. No exponent notation or repeated values. |
| minConfidence | number | Firewall: DENY if data confidence is below this (0-1). |
| denyHighRiskBand | boolean | Firewall: DENY if the token-risk band is 'high'. |
| denyMintAuthority | boolean | Firewall: DENY if the mint authority is still set. |
| denyTxMintMismatch | boolean | Firewall (needs ?tx=): DENY on a CONFIRMED mismatch — the bound transaction provably does not reference the guarded mint. A tx that uses address-lookup-tables, or no tx at all, is not evaluable, so the rule passes (never a fabricated mismatch). |
| denyFreezeAuthority | boolean | Firewall: DENY if the freeze authority is still set. |
| maxConcentrationPct | number | Firewall: DENY if top-10 holder concentration exceeds this %. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"tx": {
"type": "string",
"description": "Optional base64 serialized transaction to BIND the signed authorization to: the response's authorization.subject.boundTxSha256 = sha256(tx), so your executor honors it only for that exact transaction (Proof-of-Decision per-tx). Also decoded OFFLINE to cross-check that the tx actually references the guarded mint — authorization.subject.txReferencesGuardedMint = true | false | \"unknown\"."
},
"mint": {
"type": "string",
"description": "Base58 SPL token mint to assess, e.g. DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK)."
},
"action": {
"type": "string",
"description": "Single nonblank context string; default assess. Does not execute an action."
},
"policy": {
"type": "string",
"description": "Named firewall preset: conservative | bluechip | anti-rug | degen — expands to a full ALLOW/DENY policy (the individual params above override preset values). The response echoes policyTemplate."
},
"minSmri": {
"type": "number",
"description": "Agent Financial Firewall — your policy: require SMRI >= this (0-100). Adds policy.verdict = ALLOW/DENY (fail-closed)."
},
"amountUsd": {
"type": "string",
"description": "Single finite non-negative decimal USD amount, context only; does not change the score. No exponent notation or repeated values."
},
"minConfidence": {
"type": "number",
"description": "Firewall: DENY if data confidence is below this (0-1)."
},
"denyHighRiskBand": {
"type": "boolean",
"description": "Firewall: DENY if the token-risk band is 'high'."
},
"denyMintAuthority": {
"type": "boolean",
"description": "Firewall: DENY if the mint authority is still set."
},
"denyTxMintMismatch": {
"type": "boolean",
"description": "Firewall (needs ?tx=): DENY on a CONFIRMED mismatch — the bound transaction provably does not reference the guarded mint. A tx that uses address-lookup-tables, or no tx at all, is not evaluable, so the rule passes (never a fabricated mismatch)."
},
"denyFreezeAuthority": {
"type": "boolean",
"description": "Firewall: DENY if the freeze authority is still set."
},
"maxConcentrationPct": {
"type": "number",
"description": "Firewall: DENY if top-10 holder concentration exceeds this %."
}
}
}