aeX402 — Cross-Chain DeFi MCP: LINQ, AMM, Bridge, AI
Ce que fait ce MCP
Provides cross-chain blockchain and DeFi access, including AMM quotes and swaps, bridging, token and contract discovery, RPC calls, transfers, and market data.
Outils
Schéma d’entrée
{'type': 'object', 'required': ['pool', 'inputMint', 'amount', 'userWallet'], 'properties': {'pool': {'type': 'string', 'description': 'Pool account address (base58)'}, 'amount': {'type': 'number', 'description': 'Input amount in atomic units'}, 'inputMint': {'type': 'string', 'description': 'Input token mint address'}, 'userWallet': {'type': 'string', 'description': 'User wallet address (for account derivation)'}, 'slippageBps': {'type': 'number', 'description': 'Max slippage in basis points (default 50 = 0.5%)'}}}
Schéma de sortie
{'type': 'object', 'required': ['action', 'instruction'], 'properties': {'quote': {'type': 'object', 'description': 'estimatedOutput, minOutput, priceImpact'}, 'action': {'type': 'string', 'description': "'aex402_swap'"}, 'instruction': {'type': 'object', 'description': 'programId, keys, data (base64) — sign & submit client-side'}}}
Schéma d’entrée
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'Pool account address (base58)'}}}
Schéma de sortie
{'type': 'object', 'required': ['address'], 'properties': {'amp': {'type': 'string', 'description': 'u64 as string'}, 'feeBps': {'type': 'string', 'description': 'basis points as string'}, 'lpMint': {'type': 'string'}, 'paused': {'type': 'boolean'}, 'vault0': {'type': 'string'}, 'vault1': {'type': 'string'}, 'address': {'type': 'string'}, 'balance0': {'type': 'string', 'description': 'u64 as string'}, 'balance1': {'type': 'string', 'description': 'u64 as string'}, 'lpSupply': {'type': 'string', 'description': 'u64 as string'}, 'analytics': {'type': 'object', 'description': 'OHLCV candles + trade stats'}, 'authority': {'type': 'string'}, 'token0Mint': {'type': 'string'}, 'token1Mint': {'type': 'string'}}, 'description': 'full pool state'}
Schéma d’entrée
{'type': 'object', 'properties': {'minTvl': {'type': 'number', 'default': 0, 'description': 'Minimum TVL in lamports to filter (default 0)'}}}
Schéma de sortie
{'type': 'object', 'required': ['count', 'pools'], 'properties': {'count': {'type': 'integer'}, 'pools': {'type': 'array', 'items': {'type': 'object', 'description': 'pool summary: address, mints, balances, tvl, feeBps, amp'}}}}
Schéma d’entrée
{'type': 'object', 'required': ['pool', 'inputMint', 'amount'], 'properties': {'pool': {'type': 'string', 'description': 'Pool account address (base58)'}, 'amount': {'type': 'number', 'description': 'Input amount in atomic units (lamports/smallest unit)'}, 'inputMint': {'type': 'string', 'description': 'Input token mint address'}}}
Schéma de sortie
{'type': 'object', 'required': ['inputMint', 'inputAmount', 'outputMint', 'estimatedOutput'], 'properties': {'note': {'type': 'string'}, 'feeBps': {'type': 'integer'}, 'inputMint': {'type': 'string'}, 'outputMint': {'type': 'string'}, 'inputAmount': {'type': 'string', 'description': 'u64 as string'}, 'priceImpactPct': {'type': 'string', 'description': 'percent, 4 decimals'}, 'estimatedOutput': {'type': 'string', 'description': 'u64 as string'}}}
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma d’entrée
{'type': 'object', 'required': ['message'], 'properties': {'role': {'type': 'string', 'description': 'Role for new agent (e.g. "Solana pool analyst", "route optimizer"). Ignored if resuming session.'}, 'model': {'type': 'string', 'description': 'Model ID or alias (default: gpt-4o-mini)'}, 'message': {'type': 'string', 'description': 'Task or question for the delegate agent'}, 'session': {'type': 'string', 'description': 'Existing session ID to resume, or omit to create new session'}}}
Schéma de sortie
{'type': 'object', 'description': 'delegate agent response (session, reply text, usage)'}
Schéma d’entrée
{'type': 'object', 'required': ['messages'], 'properties': {'model': {'type': 'string', 'description': 'Model ID or alias: gpt-4o-mini (default), gpt-4o, claude-sonnet, claude-haiku, llama-70b, llama-8b, gemini-flash'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'content'], 'properties': {'role': {'type': 'string', 'description': 'Message role: system, user, or assistant'}, 'content': {'type': 'string', 'description': 'Message content'}}}, 'description': 'Chat messages array [{role: "user"|"system"|"assistant", content: "..."}]'}, 'max_tokens': {'type': 'number', 'description': 'Maximum tokens to generate (model-dependent default)'}, 'temperature': {'type': 'number', 'description': 'Sampling temperature (0-2)'}, 'reasoning_effort': {'type': 'string', 'description': 'low | medium | high — ask a reasoning-capable model to think harder. The chain-of-thought comes back in the tool result _meta ("com.aex402/reasoning").'}}}
Schéma de sortie
{'type': 'object', 'required': ['choices'], 'properties': {'id': {'type': 'string'}, 'model': {'type': 'string'}, 'usage': {'type': 'object', 'description': 'prompt/completion/total tokens'}, 'object': {'type': 'string', 'description': "always 'chat.completion'"}, 'choices': {'type': 'array', 'items': {'type': 'object', 'properties': {'message': {'type': 'object', 'description': 'role + content'}, 'finish_reason': {'type': 'string'}}}}, 'created': {'type': 'integer', 'description': 'unix seconds'}}, 'description': 'OpenAI-compatible chat completion'}
Schéma d’entrée
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Endpoint path including query string, e.g. /security/9Wq.. or /pumpfun?limit=5'}}}
Schéma d’entrée
{'type': 'object', 'required': ['fromChain', 'toChain', 'fromToken', 'toToken', 'fromAmount', 'fromAddress'], 'properties': {'toChain': {'type': 'string', 'description': 'Destination chain id or key, e.g. 4663 (Robinhood Chain)'}, 'toToken': {'type': 'string', 'description': 'Destination token symbol or 0x address, e.g. USDG or ETH'}, 'fromChain': {'type': 'string', 'description': 'Source chain id or key, e.g. 42161 or ARB'}, 'fromToken': {'type': 'string', 'description': 'Source token symbol or 0x address, e.g. USDC'}, 'toAddress': {'type': 'string', 'description': 'Recipient on the destination chain (defaults to fromAddress)'}, 'fromAmount': {'type': 'string', 'description': "Amount in the source token's smallest unit (e.g. 1000000 = 1 USDC at 6 decimals)"}, 'fromAddress': {'type': 'string', 'description': 'Sender 0x address on the source chain'}}}
Schéma de sortie
{'type': 'object', 'required': ['bridge', 'toAmount', 'transactionRequest'], 'properties': {'note': {'type': 'string'}, 'bridge': {'type': 'string', 'description': 'bridge tool used (e.g. across)'}, 'toToken': {'type': 'string'}, 'toAmount': {'type': 'string'}, 'fromToken': {'type': 'string'}, 'toAddress': {'type': 'string'}, 'toChainId': {'type': 'integer'}, 'feeCostUsd': {'type': 'number'}, 'fromAmount': {'type': 'string'}, 'gasCostUsd': {'type': 'number'}, 'fromAddress': {'type': 'string'}, 'fromChainId': {'type': 'integer'}, 'toAmountMin': {'type': 'string'}, 'toTokenAddress': {'type': 'string'}, 'fromTokenAddress': {'type': 'string'}, 'transactionRequest': {'type': 'object', 'description': 'UNSIGNED tx (to, data, value, gasLimit) — caller signs & submits on the fromChain'}, 'estimatedDurationSec': {'type': 'number'}}}
Schéma d’entrée
{'type': 'object', 'required': ['txHash'], 'properties': {'bridge': {'type': 'string', 'description': 'The bridge tool from bridge_quote (e.g. across, stargate) — optional'}, 'txHash': {'type': 'string', 'description': 'Source-chain transaction hash from submitting the bridge tx'}, 'toChain': {'type': 'string', 'description': 'Destination chain id/key (optional)'}, 'fromChain': {'type': 'string', 'description': 'Source chain id/key (optional)'}}}
Schéma de sortie
{'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'description': 'DONE | PENDING | FAILED | NOT_FOUND'}, 'sending': {'type': 'object', 'description': 'source-chain leg'}, 'receiving': {'type': 'object', 'description': 'destination-chain leg (tx hash once complete)'}, 'substatus': {'type': 'string'}, 'substatusMessage': {'type': 'string'}}}
Schéma d’entrée
{'type': 'object', 'required': ['chain', 'address'], 'properties': {'chain': {'type': 'string', 'description': 'solana | slonana | robinhood | hyperevm | ethereum | base | stable | plasma | tempo | codex'}, 'address': {'type': 'string', 'description': 'Program id (base58, Solana/Slonana) or contract address (0x…, EVM)'}}}
Schéma de sortie
{'type': 'object', 'required': ['chain', 'address'], 'properties': {'chain': {'type': 'string'}, 'erc20': {'type': 'object', 'description': 'ERC-20 name/symbol/decimals. EVM only — omitted when the address is not an ERC-20, or the chain is Solana/Slonana'}, 'known': {'type': ['object', 'null'], 'description': 'curated registry entry {id,name,type,note} when the address is recognised'}, 'owner': {'type': 'string', 'description': 'owning program. Solana/Slonana only — omitted when the chain is EVM'}, 'proxy': {'type': 'object', 'description': 'EIP-1967 proxy standard + implementation. EVM only — omitted when the address is not a proxy, or the chain is Solana/Slonana'}, 'exists': {'type': 'boolean', 'description': 'Solana/Slonana only — omitted when the chain is EVM (isContract is the EVM equivalent)'}, 'address': {'type': 'string'}, 'dataLen': {'type': 'integer', 'description': 'account data length in bytes. Solana/Slonana only — omitted when the chain is EVM (codeSize is the EVM equivalent)'}, 'codeSize': {'type': 'integer', 'description': 'EVM bytecode length in bytes. EVM only — omitted when the chain is Solana/Slonana (dataLen is the Solana equivalent)'}, 'lamports': {'type': 'integer', 'description': 'Solana/Slonana only — omitted when the chain is EVM'}, 'isProgram': {'type': 'boolean', 'description': 'Solana/Slonana only — omitted when the chain is EVM'}, 'executable': {'type': 'boolean', 'description': 'Solana/Slonana only — omitted when the chain is EVM'}, 'isContract': {'type': 'boolean', 'description': 'EVM only — omitted when the chain is Solana/Slonana, where executable/isProgram carry this instead'}}}
Schéma d’entrée
{'type': 'object', 'properties': {'chain': {'type': 'string', 'default': 'all', 'description': 'Filter to one chain: solana | slonana | robinhood | hyperevm | ethereum | base | stable | plasma | tempo | codex. Omit or "all" for every chain.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'note': {'type': 'string', 'description': 'caveats about what this scan did and did not see'}, 'chain': {'type': 'string'}, 'count': {'type': 'integer'}, 'tokens': {'type': 'integer', 'description': 'token contracts seen alongside programs'}, 'coverage': {'type': ['string', 'object'], 'description': 'what this scan enumerated: a string on the single-chain response, the full per-chain map on the all-chains response'}, 'programs': {'type': ['array', 'object'], 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'program/contract address'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'type': {'type': 'string', 'description': "'core' | 'curated' | 'discovered'"}, 'activity': {'type': 'integer', 'description': 'recent invocations/calls'}}}, 'description': 'array on the single-chain response; a per-chain {chain: program[]} map on the all-chains response'}, 'discovered': {'type': 'integer', 'description': 'auto-discovered (not curated) entries'}}}
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma de sortie
{'type': 'object', 'required': ['status'], 'properties': {'note': {'type': 'string', 'description': 'plain-language reading of status'}, 'counts': {'type': 'object', 'description': 'per-chain program counts from the last scan'}, 'status': {'type': 'string', 'description': 'healthy | stale | degraded'}, 'history': {'type': 'array', 'items': {'type': 'object', 'properties': {'ts': {'type': 'integer', 'description': 'unix seconds'}, 'counts': {'type': 'object', 'description': 'per-chain program count at that run'}}}, 'description': 'per-chain counts over the last <=24 cron runs, oldest first'}, 'emptyScans': {'type': 'array', 'items': {'type': 'string'}, 'description': 'chains whose last scan returned zero (omitted when none)'}, 'failedScans': {'type': 'array', 'items': {'type': 'string'}, 'description': 'chains whose last scan errored (omitted when none)'}, 'lastRunUnix': {'type': 'integer'}, 'sourceErrors': {'type': 'object', 'description': 'per-chain list of what each live source ACTUALLY answered when it failed, e.g. "robinhood/ERC-20: blockscout /api/v2/tokens → 403". Says WHY a census is thin where seedsOnlyScans only says THAT it is. Capped at 4 entries per chain; when more were recorded the list carries a final "… +N more (T total)" string, so the count survives the truncation rather than the list silently reading as complete. Omitted when every source succeeded'}, 'lastRunAgeMin': {'type': 'number'}, 'seedsOnlyScans': {'type': 'array', 'items': {'type': 'string'}, 'description': 'chains whose last scan returned ONLY hardcoded canonical seeds — every live source returned nothing while the fallback held, so the count is non-zero and emptyScans does NOT list them. Sets status=degraded. Omitted when none'}, 'censusLiveRecords': {'type': 'object', 'description': 'per-census count of records the LIVE source returned, before any merge, cap or spam filter — the evidence behind seedsOnlyScans. 0 means the live source supplied nothing (the census is its fallback); -1 means this census was last written by a build that did not record the field, which is NOT the same as zero. Published even when healthy, so a reader can distinguish "source is fine" from "nothing was measured" without inferring it from a verdict. Never omitted: built over the census keys in counts, so every census always carries a value and -1 covers the pre-field case — the earlier exemption for records predating the field was retired when the conditional spread was removed'}, 'censusRecordsBeforeCap': {'type': 'object', 'description': 'per-census record count BEFORE the fungible (170) and NFT (50) caps. A count sitting exactly on its cap cannot say whether it is a finding or a ceiling — hyperevm_census reads 170 because 170 IS the cap. Compare against counts: a value here greater than the published count means that census was TRUNCATED, equal means it was not. -1 means the build that last wrote this census did not record the field. Never omitted, same construction as censusLiveRecords'}}}
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'method': {'type': 'string', 'description': 'EVM RPC method name, e.g. eth_getBalance'}, 'params': {'type': 'array', 'description': 'Positional params array (method-specific). Omit for no params.'}, 'network': {'type': 'string', 'default': 'robinhood', 'description': 'Chain slug: robinhood (default; legacy mainnet alias accepted), robinhood-testnet, hyperevm, ethereum/eth, base, stable/tether, plasma, tempo, codex, or arc (Circle mainnet)'}}}
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'A search result id, e.g. "pool:G5d3qFZq..." or "token:robinhood:0x5fc5..." or "program:solana:3AMM53..."'}}}
Schéma de sortie
{'type': 'object', 'required': ['id', 'title', 'text', 'url'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'text': {'type': 'string', 'description': 'Entity detail as pretty-printed JSON/prose'}, 'title': {'type': 'string'}, 'metadata': {'type': 'object', 'additionalProperties': True}}}
Schéma d’entrée
{'type': 'object', 'required': ['type'], 'properties': {'dir': {'type': 'string', 'description': 'rankBy only: asc | desc (default desc — highest rankBy value first)'}, 'coin': {'type': 'string', 'description': 'Coin symbol for l2Book/candleSnapshot (e.g. BTC, ETH)'}, 'type': {'type': 'string', 'description': 'Info request type, e.g. meta, l2Book, allMids, clearinghouseState, metaAndAssetCtxs'}, 'user': {'type': 'string', 'description': '0x address for user-scoped queries (clearinghouseState, openOrders, userFills)'}, 'limit': {'type': 'number', 'description': 'rankBy only: how many ranked rows to return (default 20, max 100)'}, 'rankBy': {'type': 'string', 'description': 'type:metaAndAssetCtxs ONLY. One of funding | fundingAbs | openInterest | volume. Joins each coin\'s name to its funding/OI/volume, drops delisted coins, sorts, and returns {ranked, rankBy, dir, totalCoins} instead of the raw two-array response. Use fundingAbs for "biggest funding outlier either direction" (ranks by |funding|); use funding for "most positive/most negative" specifically (with dir).'}, 'endTime': {'type': 'number', 'description': 'candleSnapshot only: end time epoch ms (default: now)'}, 'interval': {'type': 'string', 'description': 'candleSnapshot only: candle interval, e.g. 1m,5m,15m,1h,4h,1d'}, 'startTime': {'type': 'number', 'description': 'candleSnapshot only: start time epoch ms (default: endTime minus 500 intervals)'}}}
Schéma d’entrée
{'type': 'object', 'required': ['name', 'ticker'], 'properties': {'pad': {'type': 'string', 'description': "OPTIONAL aeX402 launchpad slug the coin is launched on. Its vpId then starts with that pad's tag, so the pad lists it. Applies on BOTH the custodial (default) and build:true paths"}, 'name': {'type': 'string', 'description': 'Token name, 1..32 bytes (e.g. "Fork Meme")'}, 'build': {'type': 'boolean', 'description': 'If true, return an UNSIGNED tx to submit yourself (non-custodial) instead of the backend launching for you. Default false.'}, 'image': {'type': 'string', 'description': 'Image URL (https:// or ipfs:// only) — off-chain metadata'}, 'links': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 3 links (https:// or ipfs:// only) — off-chain metadata'}, 'ticker': {'type': 'string', 'description': 'Ticker / symbol, 1..16 bytes (e.g. "FMEME")'}, 'creator': {'type': 'string', 'description': 'OPTIONAL 0x EVM address recorded as the coin owner (and seeds the vpId). REQUIRED only when build:true (then it is the self-signing on-chain creator).'}, 'description': {'type': 'string', 'description': 'Short description (<=256 chars) — off-chain metadata'}}}
Schéma de sortie
{'type': 'object', 'properties': {'ok': {'type': 'boolean', 'description': 'Custodial mode: whether the launch was submitted'}, 'to': {'type': 'string', 'description': 'build mode: aeX402 diamond address'}, 'data': {'type': 'string', 'description': 'build mode: createVPool calldata to submit'}, 'note': {'type': 'string'}, 'vpId': {'type': 'string', 'description': 'Deterministic keccak256(creator-or-launcher ++ name ++ ticker)'}, 'status': {'type': 'string', 'description': 'submitted | gated | custodial-disabled | exists | rate-limited | insufficient-gas | submit-failed'}, 'txHash': {'type': 'string', 'description': 'Custodial mode: the createVPool tx hash'}, 'metadata': {'type': 'object', 'description': 'Off-chain metadata (stored server-side in custodial mode)'}}}
Schéma d’entrée
{'type': 'object', 'required': ['server'], 'properties': {'tool': {'type': 'string', 'description': "Tool name on that server, e.g. aea_list_services. Omit both tool and arguments to list that server's tools instead."}, 'server': {'type': 'string', 'description': 'Federated server name. One of: slonana'}, 'arguments': {'type': 'object', 'description': "Arguments for the tool call, per that server's own schema."}}}
Schéma d’entrée
{'type': 'object', 'required': ['calls'], 'properties': {'linq': {'type': 'string', 'description': 'LINQ-like query string compiled into pipeline steps. Supports fluent dot chaining and query clauses. .where()/.map()/.select() bodies AND .orderBy()/.orderByDesc()/.distinctBy()/.groupBy() keys are all real expressions — ternaries, &&/||, comparisons, arithmetic, member/index access, object/array literals, and a small method whitelist (.includes/.startsWith/.endsWith/.toLowerCase/.toUpperCase/.trim/.slice/.indexOf/.split/.join, Math.min/max/round/floor/ceil/abs, String()/Number()/Boolean()) all work, e.g. results.map(r => r.ok ? ({chain: r.id, height: r.output}) : ({chain: r.id, height: -1})), or ranking by a COMPUTED score: results.where(r => r.ok).orderByDesc(r => r.output.volume24h * r.output.priceChangePct).take(10) — the ranking key is not limited to a bare field. Fluent example: results.selectMany(r => r.output.programs[]).where(p => p.type in ("token","canonical-token")).groupBy(p => p._chain, assets=count(), activity=sum(activity)).orderByDesc(assets).take(5). Clause example: from results[] | expand output.programs[] | where type in ("token","canonical-token") | group by _chain as chain select assets=count(), activity=sum(activity) | order by assets desc | take 5.'}, 'calls': {'type': 'array', 'items': {'type': 'object', 'required': ['tool'], 'properties': {'id': {'type': 'string', 'description': 'Stable label for this subcall; defaults to tool:index.'}, 'args': {'type': 'object', 'description': 'Arguments for the subcall.', 'additionalProperties': True}, 'pick': {'type': 'string', 'description': 'Optional dot path to return from this subcall, e.g. count or programs[].activity.'}, 'tool': {'type': 'string', 'description': 'Read-only tool name, e.g. evm_rpc, solana_rpc, discover_programs, search_tokens, hl_info.'}}}, 'maxItems': 32, 'minItems': 1, 'description': 'Read-only MCP tool calls to run. Each call has {id?, tool, args?, pick?}. pick is a dot path into that call output; [] flattens arrays.'}, 'reduce': {'type': 'object', 'description': 'Named reductions to compute from subcall outputs. Example: {"total":{"op":"sum","path":"results[].picked"},"top":{"op":"top","path":"results[]","sortBy":"picked","limit":5}}.', 'additionalProperties': {'type': 'object', 'required': ['op'], 'properties': {'by': {'type': 'string', 'description': 'For group* reducers: dot path inside each selected item used as the group key.'}, 'op': {'enum': ['count', 'sum', 'avg', 'min', 'max', 'top', 'groupCount', 'groupSum', 'groupAvg', 'concat', 'first'], 'type': 'string'}, 'path': {'type': 'string', 'description': 'Dot path into the batch result, e.g. results[].picked or results[].output.programs[].activity.'}, 'limit': {'type': 'number', 'description': 'Max rows returned by top/concat/group reducers (default 10, max 100).'}, 'value': {'type': 'string', 'description': 'For groupSum/groupAvg: numeric path inside each selected item. Defaults to the item itself.'}, 'sortBy': {'type': 'string', 'description': 'For top: numeric/string path inside each selected item used for ordering.'}}}}, 'pipeline': {'type': 'array', 'items': {'type': 'object', 'required': ['op'], 'properties': {'by': {'type': 'string', 'description': 'groupBy/distinct key path.'}, 'op': {'type': 'string', 'description': 'from | expand | where | select | project | groupBy | orderBy | sort | take | limit | skip | distinct | count | sum | avg | min | max | first | top'}, 'dir': {'type': 'string', 'description': 'asc or desc for orderBy/top.'}, 'path': {'type': 'string', 'description': 'Dot path. [] flattens arrays. "$" or "." means the current item.'}, 'count': {'type': 'number', 'description': 'take/limit/top count.'}, 'limit': {'type': 'number', 'description': 'Alias for count.'}, 'fields': {'type': 'object', 'description': 'Projection map: outputField -> input path. Use {"literal":value} for literal strings.', 'additionalProperties': True}, 'aggregates': {'type': 'object', 'description': 'groupBy aggregates: name -> {op,path?}; ops: count, sum, avg, min, max, first, top.', 'additionalProperties': True}}, 'additionalProperties': True}, 'maxItems': 64, 'description': 'LINQ-style chained transforms over the raw batch result. Each step feeds the next. Ops: from, expand, where, select/project, groupBy, orderBy/sort, take/limit, skip, distinct, count, sum, avg, min, max, first, top. Example: [{"op":"from","path":"results[]"},{"op":"expand","path":"output.programs[]"},{"op":"where","path":"type","in":["token","canonical-token"]},{"op":"groupBy","by":"_chain","as":"chain","aggregates":{"tokens":{"op":"count"},"activity":{"op":"sum","path":"activity"}}},{"op":"orderBy","path":"tokens","dir":"desc"},{"op":"take","count":5}].'}, 'concurrency': {'type': 'number', 'default': 8, 'description': 'Parallelism for subcalls (default 8, max 12).'}, 'ignoreFailures': {'type': 'boolean', 'default': False, 'description': 'When reduce/pipeline/linq is used, a failed subcall is normally still reported in `failures` alongside the aggregate result, since a `.where(ok)`-style query would otherwise make it invisible. Set true to suppress that and get back only {reductions?, result?} — use when you already expect some chains/calls to fail and only want whatever succeeded. Defaults to false (failures still shown) because silently dropping an error is a real information loss, not just an efficiency choice — this one is opt-in on purpose.'}}}
Schéma de sortie
{'type': 'object', 'required': [], 'properties': {'ok': {'type': 'boolean', 'description': 'omitted when reduce/pipeline/linq was requested — the aggregation response is just the answer, not this batch-fanout shape'}, 'note': {'type': 'string', 'description': 'omitted when reduce/pipeline/linq was requested'}, 'calls': {'type': 'integer', 'description': 'number of subcalls attempted; omitted when reduce/pipeline/linq was requested'}, 'result': {'description': 'The pipeline/linq output value — the entire point of the call when args.pipeline or args.linq was passed, returned alone rather than wrapped; omitted when neither was passed'}, 'results': {'type': 'array', 'items': {'type': 'object', 'description': 'per-call result: id, tool, ok, picked/output or error'}, 'description': 'omitted when reduce/pipeline/linq was requested — see failures instead for what went wrong'}, 'failures': {'type': 'array', 'items': {'type': 'object', 'description': 'failed subcall: id, tool, error'}, 'description': 'omitted when every subcall succeeded, when ignoreFailures:true was passed, or when no aggregation was requested (failures show inside results instead)'}, 'reductions': {'type': 'object', 'description': 'named reducer outputs; omitted when args.reduce was not passed'}, 'concurrency': {'type': 'integer', 'description': 'omitted when reduce/pipeline/linq was requested'}}}
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma de sortie
{'type': 'object', 'required': ['paidTier', 'mcp', 'docs'], 'properties': {'mcp': {'type': 'object', 'description': 'MCP-specific: which methods stay free, how to attach X-Session / Bearer key to MCP requests', 'additionalProperties': True}, 'docs': {'type': 'string'}, 'note': {'type': 'string', 'description': 'one-line summary of the cheapest path to a paid session'}, 'freeTier': {'type': 'object', 'additionalProperties': True}, 'paidTier': {'type': 'object', 'description': 'Prices, accepted assets with mints/contracts + merchant addresses, howToPay steps', 'additionalProperties': True}, 'quickstart': {'type': 'object', 'additionalProperties': True}}}
Schéma d’entrée
{'type': 'object', 'required': ['chain', 'address'], 'properties': {'chain': {'type': 'string', 'description': 'robinhood | hyperevm | ethereum | base | stable | plasma | tempo | codex'}, 'address': {'type': 'string', 'description': 'EVM contract address (0x…). For a proxy, pass the implementation for the real logic.'}}}
Schéma de sortie
{'type': 'object', 'required': ['chain', 'address', 'isContract'], 'properties': {'note': {'type': 'string', 'description': 'what the reconstruction could and could not resolve'}, 'chain': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'object', 'description': '{topic0, sig}'}, 'description': 'resolved event signatures'}, 'address': {'type': 'string'}, 'codeSize': {'type': 'integer'}, 'functions': {'type': 'array', 'items': {'type': 'object', 'description': '{selector, sig}'}, 'description': 'resolved function signatures'}, 'isContract': {'type': 'boolean'}, 'functionCount': {'type': 'integer', 'description': 'total PUSH4 selectors found'}, 'unresolvedSelectors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'novel/proprietary selectors no DB knows'}}}
Schéma d’entrée
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Keyword: token symbol/name ("usdg"), program name ("pump.fun"), contract address, or pool address.'}}}
Schéma de sortie
{'type': 'object', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'type': 'string', 'description': 'Opaque id for fetch: token:<chain>:<address> | program:<chain>:<address> | pool:<address>'}, 'url': {'type': 'string'}, 'title': {'type': 'string'}}}}}}
Schéma d’entrée
{'type': 'object', 'properties': {'chain': {'type': 'string', 'description': 'robinhood | hyperevm. Omit to search both.'}, 'limit': {'type': 'number', 'default': 20, 'description': 'Max results (default 20).'}, 'query': {'type': 'string', 'description': 'Symbol or name substring, case-insensitive (e.g. "usdc", "hype"). Omit to list the top of the census.'}}}
Schéma de sortie
{'type': 'object', 'required': ['count', 'tokens'], 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'chains': {'type': 'array', 'items': {'type': 'string'}}, 'tokens': {'type': 'array', 'items': {'type': 'object', 'description': 'address, symbol, name, standard, decimals, holders, marketCap, price'}}, 'censusAgeMin': {'type': 'number', 'description': 'minutes since the census cron last ran'}}}
Schéma d’entrée
{'type': 'object', 'required': ['from', 'to', 'amount'], 'properties': {'to': {'type': 'string', 'description': 'Recipient address (base58)'}, 'from': {'type': 'string', 'description': 'Sender wallet address (base58)'}, 'mint': {'type': 'string', 'description': 'SPL token mint address. Omit for native SOL transfer.'}, 'amount': {'type': 'number', 'description': 'Amount in atomic units (lamports for SOL, smallest unit for SPL)'}}}
Schéma de sortie
{'type': 'object', 'required': ['action', 'instruction'], 'properties': {'action': {'type': 'string', 'description': "'transfer_sol' or 'transfer_spl'"}, 'summary': {'type': 'string', 'description': 'human-readable description of the transfer being built'}, 'instruction': {'type': 'object', 'required': ['programId', 'keys', 'data'], 'properties': {'data': {'type': 'string', 'description': 'base64 instruction data'}, 'keys': {'type': 'array', 'items': {'type': 'object', 'description': 'pubkey/isSigner/isWritable'}}, 'programId': {'type': 'string'}}}}}
Schéma d’entrée
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'Account address (base58)'}, 'encoding': {'type': 'string', 'default': 'base64', 'description': 'Data encoding: base64 (default) or jsonParsed'}}}
Schéma de sortie
{'type': 'object', 'required': ['context'], 'properties': {'value': {'type': ['object', 'null'], 'description': 'account (lamports, owner, data, executable, rentEpoch) or null if it does not exist'}, 'context': {'type': 'object', 'properties': {'slot': {'type': 'integer', 'description': 'slot the value was read at'}}}}}
Schéma d’entrée
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'Solana wallet address (base58)'}}}
Schéma de sortie
{'type': 'object', 'required': ['context', 'value'], 'properties': {'value': {'type': 'integer', 'description': 'balance in lamports (1e9 = 1 SOL)'}, 'context': {'type': 'object', 'properties': {'slot': {'type': 'integer', 'description': 'slot the value was read at'}}}}}
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma de sortie
{'type': 'object', 'required': ['context', 'value'], 'properties': {'value': {'type': 'object', 'required': ['blockhash', 'lastValidBlockHeight'], 'properties': {'blockhash': {'type': 'string', 'description': 'base58'}, 'lastValidBlockHeight': {'type': 'integer'}}}, 'context': {'type': 'object', 'properties': {'slot': {'type': 'integer', 'description': 'slot the value was read at'}}}}}
Schéma d’entrée
{'type': 'object', 'required': ['address'], 'properties': {'limit': {'type': 'number', 'default': 20, 'description': 'Max signatures to return (default 20, max 1000)'}, 'address': {'type': 'string', 'description': 'Account address (base58)'}}}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'properties': {'err': {'type': ['object', 'null']}, 'slot': {'type': 'integer'}, 'blockTime': {'type': ['integer', 'null']}, 'signature': {'type': 'string', 'description': 'base58 tx signature'}, 'confirmationStatus': {'type': 'string'}}}}}, 'description': 'array of recent signature records, newest first'}
Schéma d’entrée
{'type': 'object', 'properties': {}}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'integer', 'description': 'current slot'}}, 'description': 'current slot number'}
Schéma d’entrée
{'type': 'object', 'required': ['owner'], 'properties': {'owner': {'type': 'string', 'description': 'Wallet address (base58)'}}}
Schéma de sortie
{'type': 'object', 'required': ['context', 'value'], 'properties': {'value': {'type': 'array', 'items': {'type': 'object', 'properties': {'pubkey': {'type': 'string', 'description': 'token account address'}, 'account': {'type': 'object', 'description': 'parsed SPL account (mint, owner, tokenAmount)'}}}}, 'context': {'type': 'object', 'properties': {'slot': {'type': 'integer', 'description': 'slot the value was read at'}}}}}
Schéma d’entrée
{'type': 'object', 'required': ['signature'], 'properties': {'signature': {'type': 'string', 'description': 'Transaction signature (base58)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'meta': {'type': 'object', 'description': 'fee, pre/post balances, logs, err'}, 'slot': {'type': 'integer'}, 'blockTime': {'type': ['integer', 'null'], 'description': 'unix seconds'}, 'transaction': {'type': 'object', 'description': 'message + signatures'}}}
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'method': {'type': 'string', 'description': 'Solana RPC method name, e.g. getEpochInfo'}, 'params': {'type': 'array', 'description': 'Positional params array (method-specific). Omit for no params.'}, 'network': {'type': 'string', 'default': 'solana', 'description': 'solana (default/mainnet-beta) or slonana'}}}
Schéma d’entrée
{'type': 'object', 'required': ['transaction'], 'properties': {'transaction': {'type': 'string', 'description': 'Base64-encoded signed transaction'}}}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'string', 'description': 'base58 transaction signature'}}, 'description': 'signature of the submitted transaction'}
Modifications récentes des outils
Serveurs MCP similaires
SODAX Builders MCP
Exposes cross-chain DeFi and AMM analytics, money-market positions, token and chain data, order books, swap quotes, and SDK docum…
mcp
Provides blockchain staking network data, APY-based reward estimates, staking infrastructure documentation, integrations, and int…
1inch MCP
Provides 1inch documentation and APIs for token swaps, cross-chain swaps, limit orders, portfolio data, prices, and wallet-signed…
The Stall
Provides pay-per-call tools for YouTube keyword research and research on stocks, crypto, DeFi, options, and macroeconomic data.
Crank Protocol
Provides non-custodial Solana and EVM tools for swaps, derivatives, lending, staking, tokenized equities, bridging, and strategy …
x402-services
Provides on-chain, trading, and AI tools for Robinhood Chain.
FortFi Treasury MCP
Provides policy-controlled crypto treasury operations across chains, including wallets, payments, token discovery, swaps, bridges…
XGR MCP Gateway
Provides an MCP gateway for XGRChain and XDaLa workflows, including blockchain explorer queries, session inspection, transaction …