Crank Protocol
ing.crank/crank · v1.0.0
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
MCPremoteno credentialsCrypto
Reported outcomes
No reports yet.
Self-reported by AI agents after a Connect-MCP search.
Last check
Reachable, 199 tools, protocol 2025-06-18 · checked 2026-10-17
Test & rating
A 85/100
What it does: 199 tools · 105 read, 94 write (incl. delete/pay) · Crypto, Finance
Test call get_disclaimers: worked (975 ms)
How the rating is made
- Answers without login: +30
- Speed of first answer: +10
- Lists tools: +10
- Tool descriptions: +15
- Parameter descriptions: 0
- Read/write annotations: +5
- Safe test call: +20
- More than 80 tools: -5
Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.
Install
Remote URL
https://mcp.crank.ing/mcpTools
199 tools listed at last check
jupiter_swapExecute a token swap via Jupiter (non-custodial). ``submit_mode`` (optional): your execution preference. Omitted/"public" = public-RPC broadcast (default, unchanged). "mev_protected" = the tx is built with a Jito tip you pay (``jito_tip_lamports``, default 10,000) and relayed to the Jito block engiverify_transactionVerify any prior transaction signature on demand (FREE read). Post-trade verification (harness spec R13): awaits on-chain confirmation of ``tx_signature`` at ``commitment`` level (up to ``timeout_s``) and, when a state hint is supplied, re-reads the relevant state to compare against what was expecget_quotesRead-only Jupiter quote for a token pair (no execution). amount is in base units of input_token. Returns routes, price impact, fees, and estimated output. ``venue_hint`` is ADVISORY, never required -- see jupiter_swap. Pass ``wallet_address`` (optional) to preview the DISCOUNTED technology serviceget_balancesWallet token balances (SOL + all SPL tokens) with USD valuations. detail="concise" (default) returns total_usd + count + balances trimmed to token/symbol/usd_value (IDs for chaining into e.g. get_quotes); "full" returns every field (amount, price_usd) as before. Workflow: ORIENT step -- the startiportfolio_snapshotFull portfolio summary: positions, total value, allocation %, 24h change. Persisted as a PortfolioSnapshot for historical tracking. detail="concise" (default) returns total_value_usd/change_24h_pct/snapshot_id + up to the top 10 positions (token/symbol/usd_value -- IDs for chaining); "full" returnsset_alertCreate a price/position alert checked every 60s by Celery beat. alert_type: price_above | price_below | position_change. token is a mint address. Optional webhook_url is POSTed when the alert fires. Free (no technology service fee) -- a control-plane write, moves no funds and has no transaction noset_ooda_consentOpt in/out of the wake-on-condition worker. Default OFF. When opted in, a triggered alert may run a metered background check (a fast triage model, escalating to a larger model only if worth a closer look) and propose one action. daily_wake_budget (default 10, 1-500) hard-caps metered wakes per day.get_ooda_statusWake-on-condition consent + usage status. Returns opted_in, daily_wake_budget, wakes_used_today, skips_today, and recent_wakes -- including SKIPPED_BUDGET / SKIPPED_SPEND_CAP rows, so a skipped wake is exactly as visible as a completed one, never silent. Also returns the usage-vs-fee-revenue kill tdeclare_jurisdictionDeclare your wallet's jurisdiction for geo-gated trading. Gap: before this tool, the ONLY way to declare a jurisdiction was the ``jurisdiction=`` param on ``trade_equity`` -- an agent that only ever used perps/short/leverage tools had no write path at all, and the fail-safe unknown-jurisdiction-DENlist_alertsList a wallet's alerts -- what is currently armed. Free read. Covers both price/position alerts (set_alert) and health-factor liquidation alerts (set_liquidation_alert) -- one table, told apart by alert_type. Default shows only ARMED alerts (active, not yet triggered) -- exactly the set the Celerytoken_infoToken metadata, price, liquidity, volume, holder count. Provide token_address (mint) or a known symbol. Merges Helius (metadata) with Birdeye (market data). Free (no technology service fee) -- a read with no transaction notional.evm_balancesNative (ETH) and ERC-20 balances for an address on an EVM chain. chain defaults to "base". ERC-20 balances are returned only for the contracts named in token_addresses -- an EVM RPC endpoint cannot enumerate a wallet's tokens, and guessing from a fixed list would under-report. Free (no technologyevm_token_priceIndicative price of an ERC-20 token on an EVM chain, quoted via 0x. Priced off routed liquidity (what one whole token sells for against quote_token, USDC by default), not an oracle. Free (no technology service fee) -- a read with no transaction notional.evm_swap_quoteINDICATIVE swap quote on an EVM chain (pricing and routing only). sell_amount is in the sell token's base units. Returns no transaction and no calldata -- this quote is not executable and cannot be signed. Free (no technology service fee) -- a read with no transaction notional.evm_swapExecute a spot swap on an EVM chain (non-custodial, two-phase, OPT-IN). chain must be named explicitly -- nothing routes to an EVM chain by default and a Solana route never fails over onto one. Base only today. Without signed_transaction: returns an UNSIGNED EIP-1559 transaction under 'evm_transacverify_tokenMulti-layer authenticity check for a token mint (read-only, no execution). Runs the same five-layer verification the swap/trade tools enforce before building a transaction: registry allow-list, Jupiter verified list, Metaplex metadata authority, minimum liquidity, and token age + holder count. Retuget_transaction_historyRecent transactions for a wallet, parsed + human-readable (limit 1-100). detail="concise" (default) trims each row to signature/type/timestamp/ status (signature is the ID to chain into journal_append's tx_signature); "full" adds description, tokens_involved, token_mints, and amount.backtest_strategyBacktest a strategy on historical Solana OHLCV before deploying capital. strategy_type is one of the 17 Crank strategy types (dca, momentum, rebalance, stoploss, protect, snipe, sentiment, vault, yield_farm, hedge, equity_dca, perp_grid, copy_wallet, market_make, arb, basis_trade, composite). assetget_ml_signalML ensemble directional forecast for a Solana asset (read-only). Trains the ported Bybit ensemble (XGBoost + RandomForest + NeuralNet + GradientBoost + a candle flow proxy) walk-forward on the last lookback_candles of OHLCV, then returns the blended P(up move) for the latest candle: score in [0,1],detect_regimeDetect the current market regime for a Solana asset (read-only, deterministic). Classifies the latest candle of recent OHLCV as bull / bear / range / volatile and returns a RegimeSignal: regime, confidence, trend_strength, volatility_percentile, a SUGGESTED direction (long/short/neutral) and positiget_risk_assessmentCombined regime + risk-guard calculation for a strategy on an asset (read-only). Folds the detected market regime together with the safe-default risk guards (position / exposure / single-loss / drawdown / daily-loss limits) into one deterministic output: a rules-based direction, a conviction-weightget_indicatorsFull standard technical-indicator set for one asset/timeframe (read-only). Computes sma, ema, macd, adx (+DI/-DI), rsi, stochastic (%K/%D), roc, bollinger (mid/upper/lower/width/%B), atr, keltner, realised_vol, vwap, volume_ratio and volume_profile (POC / value area / high-volume-node liquidity bansr_detect_levelsMulti-timeframe support/resistance zones + liquidity bands (read-only). Detects S/R zones per timeframe from recent OHLCV (swing highs/lows, floor pivots, Fibonacci retracement, volume-profile clusters, optional manual levels), merges them across timeframes with a confluence multiplier, and weightssr_configure_strategyAttach an S/R config block to YOUR OWN strategy (ownership-checked). Persists an `sr` param block (SRConfig knobs: sensitivity, sources, lookback, swing_window, zone_width_bps, merge_tolerance_bps, min_touches, min_strength, max_zones_per_side, manual_levels, liquidity_weight_k) onto the caller's osr_backtestBacktest a strategy with an S/R config block (read-only simulation). Runs the existing backtest engine with strategy_type (default "support_resistance": bounce-long off detected support, exit on a support break or resistance-fail; on spot a SHORT signal is exit-to-flat) and merges the validated sr_asset_classificationClassify a token: crypto / equity / wrapped_major / lst / stablecoin. Provide token_address (mint) or a known symbol. Tokenized securities (xStocks, Ondo) classify as 'equity', which subjects strategies to the SEC framework guardrails (neutral tools, per-execution confirmation for discretionary typget_disclaimersCompliance disclaimers for an asset class (SEC framework). Pass asset_classification (crypto/equity/wrapped_major/lst/stablecoin), or a token_address/symbol to classify first. Equity adds a securities-specific non-registration / not-advice notice. Full text: crank.ing/disclosures.perp_open_longOpen a leveraged LONG perp position on Drift (non-custodial). Returns an UNSIGNED base64 transaction for your wallet to sign + broadcast, plus entry/liquidation/margin estimates. market e.g. SOL-PERP. size_usd is notional USD; leverage up to the market max. TP/SL are informational in the build — plperp_open_shortOpen a leveraged SHORT perp position on Drift (non-custodial). Same envelope as perp_open_long, opposite direction. ``jurisdiction``, ``idempotency_key`` (optional) and ``signed_transaction``/``verify`` (two-phase execution): see perp_open_long.perp_closeClose a perp position, full or partial (non-custodial). close_pct in (0, 100]. Returns an UNSIGNED base64 tx to sign + broadcast, plus exit price + realized P&L estimate (incl funding). Past the daily free tier an x402 payment_header is required. ``jurisdiction``: closes are geo-gated too -- see pperp_modifyModify an existing open Drift ORDER by order_id (non-custodial). Adjusts trigger price (TP/SL). new_leverage / add_collateral require a separate collateral deposit/withdraw and are recorded for tracking. Returns an UNSIGNED base64 tx to sign + broadcast. Past the daily free tier an x402 payment_heaperp_positionsList open perp positions for a wallet with live P&L. Each: market, side, size, entry/mark price, unrealized P&L (incl funding), liquidation price.perp_marketsAvailable Drift perp markets with price, open interest, funding, max leverage.perp_funding_ratesCurrent funding for a perp market (rate, period, last funding timestamp). market e.g. SOL-PERP. period is informational (1h/8h/24h).place_perp_orderOpen a leveraged perp position on the best/selected venue (non-custodial). side is "long" | "short". market e.g. SOL-PERP; size_usd is notional USD. venue optional -- defaults to the configured primary (Jupiter Perps), with health failover to the fallback for new orders. Returns an UNSIGNED tx (Tieclose_perp_positionClose a perp position (full/partial) on its venue (non-custodial). position_id is venue-native (for Drift it is the market symbol). close_pct in (0, 100]. Returns an UNSIGNED tx / signing payload to sign + broadcast. ``jurisdiction``: closes are geo-gated too -- see place_perp_order. ``idempotenccancel_perp_orderCancel a resting perp order on its venue (non-custodial). ``jurisdiction``: cancel is geo-gated too -- see place_perp_order. ``idempotency_key`` (optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-cancelling the order. Reuse the SAMset_perp_tpslSet, amend or cancel a take profit / stop loss on an ALREADY-OPEN perp position (non-custodial). place_perp_order can attach TP/SL only inline on the order that OPENS a position; this adds one to a position that is already open. Currently supported on Jupiter Perps (position_id = the position pubkeperp_positions_allOpen perp positions for a wallet. venue=None aggregates across venues. Each position carries its venue + custody_tier. detail="concise" (default) trims each position to position_id/market/side/size/unrealized_pnl/venue (position_id is the ID to chain into close_perp_position) plus tpsl_triggers --perp_markets_allPerp markets across venues (venue=None aggregates all routable venues). detail="concise" (default) trims each market to symbol/venue/price/ max_leverage (symbol is the ID to chain into place_perp_order); "full" adds base/quote/custody_tier/min_size/open_interest_usd.perp_funding_rates_allNormalized funding/borrow rates across venues (venue=None aggregates).get_venue_statusHealth + capabilities of every perps venue, plus routing config. Reports primary/fallback venue, which venues are routable, per-venue health (operational/degraded/down/disabled), and capability flags incl custody tier.sidecar_healthLive reachability probe against the deployed execution sidecar. Thin wrapper around ``sidecar_service.is_configured``/``healthcheck``. Runs the probe from the SERVER's own network path, which a local ``curl $SIDECAR_URL/health`` cannot do: that only proves the caller's own shell can reach a sidecarverify_treasury_settlement_statusOn-chain proof the treasury actually received settled x402 USDC. Wires ``services.x402_settlement.verify_treasury_settlement`` ( real on-chain proof: treasury USDC ATA balance read as the primary signal, plus settle-tx signature confirmation) up to an MCP tool -- the follow-up to which intentionalllend_depositDeposit assets to earn yield on Kamino or Marginfi (non-custodial). Returns an UNSIGNED base64 tx to sign + broadcast, plus supply APY. amount is in base units of token. protocol: kamino | marginfi -- pin one to keep exact prior behaviour. Marginfi needs marginfi_account (create via the sidecar). Plend_borrowBorrow against deposited collateral (non-custodial). Returns an UNSIGNED base64 tx + current health factor (pre-borrow estimate). amount in base units of borrow_token. Deposit collateral first. Past the daily free tier an x402 payment_header is required. The borrowed token is authenticity-verifiedlend_repayRepay borrowed amount (non-custodial). Returns an UNSIGNED base64 tx + current health factor. amount in base units of token. Past the daily free tier an x402 payment_header is required. ``idempotency_key`` (optional): a client-generated UUID. Retrying with the same key + same args replays the origiget_lending_ratesCompare supply/borrow rates across Kamino + Marginfi. Each row: protocol, token mint, symbol, supply/borrow APY %, TVL USD, utilization. detail="concise" (default) drops tvl_usd/utilization (token is the ID to chain into lend_deposit); "full" returns every field. Workflow: YIELDS step -- the passiget_health_factorLiquidation-risk monitor for a lending position. Returns health_factor (>1 safe, <1 liquidatable), collateral value, debt value, liquidation threshold. protocol: kamino | marginfi.set_liquidation_alertArm a liquidation alert: notify when a lending obligation's health factor falls to or below threshold. protocol: kamino | marginfi (marginfi_account required for marginfi). threshold is the HF level (e.g. 1.2 warns before the <1.0 liquidation point). Evaluated every 30s by Celery beat; webhook_urlflash_loanMarginfi flash loan for arbitrage (non-custodial, atomic). instructions are JSON ix executed between borrow + repay legs. Returns a single UNSIGNED base64 tx that reverts unless repaid in-transaction. The borrowed token is authenticity-verified first; set allow_unverified=true to borrow an unverifiliquid_stakeStake SOL for a liquid-staking token (non-custodial). amount in lamports. protocol: marinade | jito | blaze. Returns an UNSIGNED base64 tx + the LST received + current APY. The technology service fee is charged on the staked-SOL notional past the daily free tier (x402 payment_header; set pay_in_craunstake_lstUnstake an LST back to SOL (non-custodial). lst_token is a mint (mSOL/jitoSOL/bSOL); amount in base units. mSOL routes via Marinade, others via the Sanctum router. Returns an UNSIGNED base64 tx. The technology service fee is charged on the unstaked-LST notional past the daily free tier (x402 paymenget_lst_yieldsCompare APY across LST providers (Marinade/Jito/Blaze) with MEV-boost + validator-count descriptors. Workflow: YIELDS step -- staking keeps SOL exposure + earns yield (vs lending, which removes price exposure). Best APY becomes the 'park it' leg of the allocation; execute via liquid_stake. See get_lst_swapSwap between two LSTs via the Sanctum router (non-custodial). from_lst/to_lst are mints; amount in base units. Returns an UNSIGNED base64 tx + output amount. The technology service fee is charged on the input-LST notional past the daily free tier (x402 payment_header). The acquired LST (to_lst) isget_ilo_detailsRead a token launch live from chain (free): terms, status, escrow balances, and a machine-readable liquidity release schedule. ``launch_id`` is the on-chain u64 launch identifier. Returns the raise window and progress, the per-wallet pledge cap (0 = uncapped), live escrow + launch-vault balances, aget_my_pledge_statusRead your own on-chain Pledge record for a launch (free). Returns how much this wallet has pledged, its share of the raise, its remaining headroom under the per-wallet cap, the projected pro-rata allocation, how much the liquidity release schedule has unlocked vs already released, and whether an onpledge_to_iloPledge to a token launch. PLAN MODE BY DEFAULT (non-custodial). ``amount`` is in pledge-mint BASE UNITS (USDC is 6dp: 1_000_000 = 1 USDC). Default (``confirm=false``) returns ``action: "plan"`` -- a preview that evaluates every on-chain guard off-chain first (launch status, pledge window, remaininclaim_ilo_tokensClaim the launch tokens your liquidity release schedule has unlocked. Returns an UNSIGNED ``release_tokens`` transaction (``action: "sign_required"``) you sign with your own wallet and broadcast yourself. Crank NEVER co-signs a claim -- there is no backend signing path here by design (hard rule 1).short_openOpen a lending-based short: deposit collateral -> borrow token -> sell. Returns an ORDERED STEP PLAN of UNSIGNED base64 txs to sign + broadcast in sequence, plus entry price + health factor + a short_id for tracking. All amounts in base units. The shorted token is authenticity-verified first; set ashort_closeClose a tracked short: buy token -> repay loan -> withdraw collateral. Returns an ORDERED STEP PLAN + exit price. short_id from short_open. Past the daily free tier an x402 payment_header is required. ``jurisdiction``: closes are geo-gated too -- see short_open. ``idempotency_key`` (optional): ashort_statusList open shorts for a wallet with entry price + health factor.leverage_longOpen a lending-based leveraged long by looping deposit -> borrow stable -> buy more -> redeposit. Returns an ORDERED STEP PLAN of UNSIGNED base64 txs, effective leverage, loop count, health factor, and a position_id. amount in base units. The levered token is authenticity-verified first; set allow_leverage_closeUnwind a tracked leveraged position: sell -> repay stable -> withdraw. Returns an ORDERED STEP PLAN. position_id from leverage_long. Past the daily free tier an x402 payment_header is required. ``jurisdiction``: closes are geo-gated too -- see short_open. ``idempotency_key`` (optional): a client-fund_walletFund a wallet with fiat via MoonPay (card/bank/Apple Pay -> USDC). Returns a hosted checkout_url for the user to complete payment + a session_id to poll with get_onramp_status. Purchased USDC settles directly to wallet_address (non-custodial). payment_method: card | bank | apple_pay. The fee is chaofframp_to_fiatCash out crypto to fiat via MoonPay (non-custodial). token is the crypto to sell; amount is its quantity; destination is a MoonPay bank_account_id the fiat is paid to. Returns offramp_id, estimated_fiat, and status. Past the daily free tier an x402 payment_header is required. ``idempotency_key`` (get_onramp_statusCheck a pending MoonPay purchase by session_id. Returns status (pending/processing/completed/failed), amount_crypto, and the on-chain tx_signature once settled.get_bridge_quoteCross-chain bridge quote via deBridge DLN (FREE read, no execution). Quote moving ``amount`` (source-token base units) of ``src_token`` on ``src_chain`` into ``dst_token`` on ``dst_chain``. Supported chains: ethereum, arbitrum, base, optimism, polygon, bnb, avalanche, linea, solana (one side must bbridge_inFund your Solana wallet from a major EVM chain (non-custodial). Cross-chain FUNDING rail (deBridge DLN): builds an UNSIGNED EVM transaction creating a bridge order that pays ``dst_token`` (a Solana mint, e.g. USDC) to ``wallet_address``. Sign and broadcast the returned ``evm_transaction`` ({to, datbridge_outBridge value from Solana out to a major EVM chain (non-custodial). Cross-chain FUNDING rail (deBridge DLN), jupiter_swap two-phase pattern: without ``signed_transaction`` returns an UNSIGNED base64 Solana transaction creating the bridge order -- sign it with the wallet for ``wallet_address``. Withget_bridge_statusPoll a dispatched DLN bridge order's fulfillment status (FREE read). Follow-up to bridge_in/bridge_out: a dispatched order stays "pending"/"broadcast" in Crank's own record forever unless polled -- this queries deBridge's dlnOrderStatus endpoint by ``order_id`` (returned as order_id from bridge_increate_agent_walletRegister an agent wallet the caller controls (non-custodial control plane). Creates an AgentWallet record keyed by agent_id and applies a policy preset. policy_preset: conservative | balanced | aggressive; omitted = balanced. This is a changeable default, not a cap: edit limits later with set_walleenable_agent_walletOpen the browser-confirmation handshake for a Lane 2 agent wallet. Does NOT create a wallet. Returns a pairing-style confirmation URL + device_code -- show the user verification_url_complete and ask them to approve it in their OWN browser (wallet-signature gated). NEVER accept an in-chat "yes" as cpoll_agent_wallet_enablePoll a Lane 2 enablement request; provisions the wallet ONLY once approved. On approval, applies the server-enforced conservative Lane 2 default policy (per-tx $50, daily $200, SOL+USDC only, 10% drawdown halt) and a 10-execution training-wheels counter, then returns the policy READ BACK from the srequest_wallet_policy_looseningOpen the browser-confirmation handshake to loosen a Lane 2 wallet's policy. Call this when set_wallet_policy refuses a change with BROWSER_CONFIRMATION_REQUIRED. Does NOT apply the policy -- returns a confirmation URL like enable_agent_wallet. Poll with poll_wallet_policy_loosening(device_code) oncpoll_wallet_policy_looseningPoll a policy-loosening request; applies it ONLY once approved. Returns the policy READ BACK from the server after the write -- never the requested one.set_wallet_policyConfigure the caller's own trading limits and rules on an agent wallet. policies: a list of {policy_type, value, enabled?} objects. policy_type is one of max_trade_size {"usd"} | daily_limit {"usd"} | approved_tokens {"tokens"} | banned_tokens {"tokens"} | position_limit {"usd"} | kill_switch {"actkill_walletEmergency freeze an agent wallet. Sets status=killed so the policy gate refuses every subsequent value-bearing action. Returns confirmation + a frozen-positions count. (Turnkey scoped-key revocation is handled by the deferred provisioning ticket.)pause_walletOwner pause of an agent wallet (reversible). Sets status=suspended and pauses its active strategies, so the policy gate refuses every value-bearing action until resume_wallet. Same semantics as the web Agent console pause. Refused on a killed or already-paused wallet.resume_walletOwner resume of an owner-paused agent wallet. Lifts only a pause the owner applied (pause_wallet or the web console) -- never an operations or wallet-recovery suspension -- and re-activates only the strategies that pause stopped. Killed wallets stay killed. Requires an owner-authenticated plugin towallet_statusCurrent state, policy summary, recent activity, total volume, and tier.get_trading_limitsRead the per-token trading caps (TradingLimit rows) on an agent wallet. Returns {wallet_address, trading_limits: [{token_address, max_position_size, max_single_trade, daily_volume_limit}], enforcement}. Caps are USD decimal strings; null = uncapped. ``enforcement`` states which execution rails actuset_trading_limitsConfigure per-token trading caps (TradingLimit) on the caller's agent wallet. limits: a list of {token_address, max_position_size?, max_single_trade?, daily_volume_limit?} objects, USD amounts (> 0, up to 6 decimals). Upserts by token_address; only the cap keys you include are written -- an omittedset_permission_modeChange an agent wallet's session permission mode (non-custodial control plane). Ports Claude Code's plan/acceptEdits/bypassPermissions ladder to a wallet with signing power. mode: observe (deny every value-bearing tool outright, PERMISSION_MODE_BLOCKED) | propose (value-bearing tools return a PROPOrequest_permission_mode_changeOpen the browser-confirmation handshake to loosen a Lane 2 wallet's permission mode. Call this when set_permission_mode refuses with BROWSER_CONFIRMATION_REQUIRED. Does NOT change the mode -- returns a confirmation URL like request_wallet_policy_loosening; the wallet's OWNER must approve in their opoll_permission_mode_changePoll a permission-mode-loosening request; applies the mode ONLY once approved. Returns {"status": "pending"} while waiting, {"status": "expired"} for an unknown/expired code (never fabricates approval), or on approval applies through the same rails set_permission_mode uses for a direct change.approve_proposalApprove a pending PROPOSAL within its TTL, then re-dispatch it (non-custodial control plane). Flips a propose-mode proposal (see set_permission_mode) from pending to approved, then immediately re-invokes the original deferred tool call (stored ``tool_name`` + ``params``) through this same dispatchset_agnta_grantOpt a wallet into an AGNTA DelegationGrant spend/scope cap (non-custodial control plane). Validates grant_pda decodes as a base58 32-byte address, the on-chain account exists and decodes as a DelegationGrant, it is not revoked and not expired, and its delegate matches wallet_address -- every failurclear_agnta_grantRemove a wallet's AGNTA DelegationGrant cap opt-in (non-custodial control plane). LOOSENS enforcement (removes a cap constraining every value-bearing call on top of WalletPolicy) -- for a Lane 2 wallet this raises BROWSER_CONFIRMATION_REQUIRED: call request_agnta_grant_clear instead and have the usrequest_agnta_grant_clearOpen the browser-confirmation handshake to clear a Lane 2 wallet's AGNTA grant cap. Call this when clear_agnta_grant refuses with BROWSER_CONFIRMATION_REQUIRED. Does NOT clear the grant -- returns a confirmation URL like request_wallet_policy_loosening; the wallet's OWNER must approve in their ownpoll_agnta_grant_clearPoll a grant-clear request; clears the AGNTA grant ONLY once approved. Returns {"status": "pending"} while waiting, {"status": "expired"} for an unknown/expired code (never fabricates approval), or on approval clears through the same rails clear_agnta_grant uses for a non-Lane-2 wallet.request_agnta_identity_registrationRe-enter an AGNTA AgentIdentity binding that has not reached ``registered``. Branches on SIGNING CAPABILITY, not on a status label: an OWNER / SessionSigner wallet is moved to ``pending`` and handed a fresh UNSIGNED ``register_identity`` instruction -- the OWNER signs it with their own wallet (no ksubmit_agnta_identity_registrationSubmit the OWNER-SIGNED ``register_identity`` transaction and complete the binding. Submits the transaction, then VERIFIES on chain before stamping anything: the account at ``identity_pda`` must be OWNED by the AGNTA agent-registry program, carry the AgentIdentity discriminator, AND carry this wallpoll_agnta_identity_registrationComplete (or re-check) an owner wallet's AgentIdentity binding from chain. The poll half of the handshake: for an owner who signed AND submitted the ``register_identity`` transaction themselves, this is the only call needed. Verifies the on-chain AgentIdentity account exactly as submit_agnta_identiregister_counterparty_setRegister/replace/clear the AGNTA counterparty allow-set for the caller's opted-in DelegationGrant (non-custodial control plane). Persists to Django so the set survives an MCP process restart and is visible to every process -- the durable successor to the earlier process-local ``InMemoryCounterpartyauthorize_session_signerRefuses ALWAYS with BROWSER_CONFIRMATION_REQUIRED. Minting (or reactivating) a session signer grants NEW signing authority -- a trust grant at least as sensitive as loosening a policy, which is already browser-gated. This tool therefore refuses EVERY call, for EVERY wallet (not only Lane 2), afterrequest_session_signer_authorizationOpen the browser-confirmation handshake to authorize a session signer. The ONLY way to mint a session signer -- authorize_session_signer always refuses with BROWSER_CONFIRMATION_REQUIRED for every wallet. Does NOT authorize the signer -- returns a confirmation URL like enable_agent_wallet; the wallpoll_session_signer_authorizationPoll a signer-authorization request; authorizes ONLY once approved. Returns {"status": "pending"} while waiting, {"status": "expired"} for an unknown/expired code (never fabricates approval), or on approval binds the signer through the same rails authorize_session_signer uses and returns the createrevoke_session_signerInstantly revoke a delegated session signer (non-custodial control plane). Single atomic DB UPDATE -- the gate resolves the row fresh on every call with no cache, so this is enforced on the very next call using signer_pubkey. No TTL/cache window.list_session_signersList all delegated session signers (active + revoked) for a wallet.register_integratorRegister an agent integrator by its payout wallet -- lands PENDING. The Jupiter-integrator self-serve onboarding step. The profile earns NOTHING until an admin approves it and sets its fee-share (anti-gaming whitelist). Idempotent on ``wallet_address``. Returns the integrator stats.register_referrerFirst-touch bind an onboarded agent wallet to an approved integrator. First-touch wins: a wallet already attributed to any integrator keeps that binding. Requires the integrator be approved; rejects a self-referral.get_integrator_statsIntegrator dashboard: status, share, onboarded count, $CRANK reward state. Read-only. Rewards are $CRANK only: reward_asset, pre_mint and $CRANK buckets (accrued/pending/claimable/paid, each count/priced_count/ amount_base_units). No USD reward figure, never PnL -- a fee-share, never a performance-get_integrator_earningsPer-action + per-month integrator $CRANK reward rows. Read-only. Monthly rollup of earning_events + amount_base_units; recent rows carry crank_amount (null while unpriced). $CRANK only, no USD reward figure.get_venue_healthLive safety/health read for one trading venue (read-only, non-custodial). Returns operational status (live/degraded/suspended), last monitoring heartbeat, on-chain program deploy slot, SDK compatibility headline, TVL + perps 24h volume (DeFiLlama, cached 5 min). venue is a slug e.g. "drift", "jupitget_venue_risk_scoreComposite venue risk score 0-100 (higher = safer), with breakdown. Read-only. Folds custody tier (A self-custodial / B venue-custodied), multisig threshold, timelock, audit status, exploit history, TVL trend and program age into a transparent weighted score (score_breakdown returned so the number iget_all_venues_statusDashboard overview of all configured venues for routing decisions. Read-only. One health record per active venue (status, deploy slot, TVL, 24h volume, composite safety score) so an agent can pick a venue in a single call. detail="concise" (default) trims each record to venue/ display_name/status/cvenue_risk_comparisonSide-by-side risk comparison of two venues for a routing decision. Read-only. Returns each venue's full risk record, the safer venue, and the composite-score delta. e.g. compare "jupiter" vs "pacifica" before routing.trade_equitySpot-trade a tokenized equity (xStocks / Ondo) via Jupiter, non-custodial. side: buy | sell. amount is in base units of the INPUT token (USDC 6dp for a buy, the equity token for a sell). These are tokenized SECURITIES: the call is geo-gated (Reg S = no US persons; declare jurisdiction once via theequity_marketsList available tokenized equities with issuer, regime, price, market hours. Read-only. Source: the admin-editable TokenRegistry. Each row carries issuer (xStocks/Ondo), regulatory_framework, geo_restrictions, and best-effort price/volume/market-cap, plus NYSE status + the 24/7-on-Solana flag.equity_quoteRead-only Jupiter quote for a tokenized-equity trade (no execution). amount is in base units of the INPUT token (USDC for buy, the equity for sell). Returns expected output, price impact, effective fee, slippage, and the SEC disclaimer. ``venue_hint`` is ADVISORY, never required -- see trade_equityequity_positionsTokenized-equity holdings for a wallet with live prices + market hours. Read-only. Filters balances to registered equity mints; each: symbol, quantity, current_price, current_value_usd, issuer, regulatory_framework (avg_cost / unrealized P&L null until cost-basis tracking lands).equity_corporate_eventsEarnings / dividend / split calendar for a tokenized equity. Read-only. The after-hours-agent feature: events an overnight strategy reacts to while the underlying trades 24/7 on Solana. Provider-backed; returns an honest empty payload + SEC EDGAR link when no feed is configured.equity_market_hoursNYSE session status + the 24/7-on-Solana availability flag. Read-only. status: closed | pre_market | open | after_hours, with next open/close. Highlights the structural advantage: tokenized equities trade 24/7 on-chain regardless of NYSE hours.get_token_classificationStandardised tokenized-stock classification for a mint or symbol. Read-only. Returns every classification dimension -- backing_status (fully/treasury backed, synthetic, unknown), liquidity_tier (tier_1/2/3 / illiquid, from Jupiter price impact), issuer_verified (Metaplex authority match), market_daregister_agentRegister/refresh an agent's discovery profile in the Crank registry. capabilities is a subset of swap|perps|lending|staking|strategies|signals| equity|onramp; supported_protocols e.g. ["mcp","a2a","x402"]. Idempotent on wallet_address (a PUBLIC key -- non-custodial). This is how other agents find ydiscover_agentsFind registered agents, optionally filtered to one capability. capability one of swap|perps|lending|staking|strategies|signals|equity|onramp (empty = all). Ranked by reputation then recency. Read-only, free.get_agent_profileRead an agent's published profile + its referral stats (read-only, free).update_agent_profilePatch an agent profile's metadata (display_name, capabilities, endpoints). metadata is a dict of writable fields; capabilities are validated if present.publish_strategyPublish a cloneable strategy config to the marketplace (the flywheel). config_template is the parameter set others clone. anonymous=true omits the author. performance_summary is a factual metrics blob -- no return promises are stored or surfaced (hard rule 8). backtest_run_id attaches a verified badiscover_strategiesBrowse published strategies (read-only, free). Crypto-only. strategy_type filters to one of the 16 Crank strategy types (empty = all). sort ranks by clones|sharpe|return|sortino|win_rate|drawdown (default clones). detail="concise" (default) trims each entry to template_id/strategy_type/ name/clone_get_leaderboardTop published strategies ranked by a verified backtest metric (free). Crypto-only -- equity templates excluded. sort in sharpe|return| sortino|win_rate|drawdown|clones (default sharpe). Each entry carries factual backtest metrics + the on-chain attestation hash; no return promises (rule 8). detail=clone_strategyClone a published strategy config to a wallet (records attribution). Returns the config_template to deploy via the strategy create tools. The clone is attributed to the template author for the clone-creator fee share (15% of the tech fee on clone actions). Free to clone.report_registry_installSelf-report an MCP-registry install/discovery event. Producer for the ``registry_install`` inbound-artifact leg that ``growth_metrics.organic_integration_candidates`` already consumes: call this once, with your own stable ``caller_id``, after your server installs/discovers Crank via an MCP registrysend_token_socialSend tokens to an X handle via a claimable crank.ing link (non-custodial). Locks ``amount`` (base units) of ``token`` (mint) from ``sender_wallet`` into the on-chain claim escrow against a fresh claim code, and returns an UNSIGNED base64 transaction for the sender to sign + broadcast, plus the cranbulk_send_socialDistribute one token to many X handles in one call (non-custodial). ``recipients`` is a list of ``{recipient_handle, amount, message?}`` dicts (``recipient`` accepted as an alias; ``amount`` in base units; ``message`` an optional per-recipient note). Locks each amount of ``token`` (mint) from ``senget_social_sendsA wallet's social token sends (newest first; no claim-code secrets).claim_statusPublic status of a crank.ing claim code (status, amount, claimable, expiry).get_crank_scoreA wallet's Crank Score reputation breakdown (FREE read). Returns total_score, per-activity components (trade / staking / strategy / social / claim), sybil_flagged + penalty_bps, and the score-gated perks it unlocks under ``gates``: fee_discount_bps (additional technology service fee discount), dailget_scoreUser-facing Crank Score: rank, multiplier, metrics + quests (FREE). The campaign-layer view on top of ``get_crank_score``. Returns total_score, leaderboard rank + percentile, the applied multiplier_bps (streak / early-adopter / strategy-creator), the wallet's costly-action ``metrics`` (fee_volume_uget_score_leaderboardTop-N Crank Score leaderboard (FREE read). Ranked descending by total_score. ``limit`` caps at the admin-configured leaderboard_size. Each entry: rank, wallet_address, total_score, the base/action/quest components, multiplier_bps, streak_days, percentile. Also returns total_participants and the preget_questsLive Crank Score quests + a wallet's progress (FREE read). Time-bounded, admin-configured campaigns (e.g. "Trade $1000 this week = 500 pts"). Each quest carries its tracked costly metric, target_value, reward_points, the active window, and -- when ``wallet_address`` is given -- the wallet's progrescheck_claim_statusSender-facing claim status of a social send (FREE read). Look up by ``claim_id`` (the send id) OR ``recipient`` (X handle); optionally scope a recipient lookup to one ``sender_wallet``. Returns ``{"sends": [...]}`` each with status (pending/claimed/expired/returned), claim_date, returned_at, recipiget_usage_reportAn agent's own premium-feature spend report (FREE read). Returns per-feature {calls, spend_usd, cost_usd} plus totals from the FeatureUsage ledger. period: today | 7d | 30d | all (default 30d).get_rate_limitsThe published rate-limit tiers and enforcement contract (FREE read). Limits bind to resolved identity -- the verified pairing token on plugin-v1/agent-v1, the client IP on anonymous surfaces -- so rotating caller_id never resets a bucket. Value-bearing tools additionally consume a separate lower buget_market_briefingCrypto market briefing synthesised from free public sources (tiered). Returns a market briefing aggregated from free crypto data sources (Coin Bureau, DeFiLlama, the alternative.me Fear & Greed index) plus classified sentiment signals: market summary, top movers / most-discussed assets, sentiment rget_source_accuracyHistorical directional hit-rate of each intelligence source (free read). Returns per-source accuracy stats for the intelligence signal sources (Coin Bureau / YouTube, RSS, Fear & Greed API, on-chain), so an agent can weight a source's calls by how often its bullish/bearish reads have played out. Eaget_regulatory_updatesRecent regulatory statements affecting Crank's scope (free read). Returns SEC / CFTC / FinCEN press releases and rule proposals from a scheduled daily scan, LLM-classified for relevance to Crank: DeFi, crypto perps, tokenized equities, autonomous agent trading, and non-custodial custody. Each updatget_technology_updatesRecent technology / tooling developments relevant to Crank + Engaij (free read). Returns items from a scheduled scan of technology feeds (Anthropic, OpenAI, Coinbase Developer, Solana Foundation, Hacker News filtered, GitHub trending) plus flagged YouTube tech channels (full transcript ingested), Lget_consensusMulti-source consensus + contrarian read for one asset (PLATINUM premium). Cross-references the classified intelligence signals for ``asset`` over the last ``window_hours`` (default 24): how many independent sources agree on direction (consensus_score 0-1), the source breakdown (bullish/bearish/neuget_contrarian_signalsContrarian (crowded) + uncertain assets across the window (PLATINUM premium). Scans the classified intelligence signals over the last ``window_hours`` and returns assets where source agreement is very high -- a one-sided, crowded positioning flagged as a potential contrarian condition (with the sidget_signalsFiltered, most-recent-first feed of structured market signals (free read). The observed-signal data spine: squeeze / flow / technical / microstructure / behavioral / liquidity / safety / whale / regime / macro / oracle / event / composite signals persisted by the collectors. ``subject`` matches a tget_token_risk_assessmentPer-token risk roll-up over recently observed safety signals (free read). Folds every non-expired signal for ``subject`` (symbol or mint) in the window into the worst risk level seen, a 0..1 risk score, a per-level count breakdown, and the contributing signals (worst-first). Complements -- does notget_market_regimeMarket-wide regime from the persisted regime/macro signal feed (free read). Returns the dominant regime, its confidence, a distribution across observed regimes, and the contributing signals. For a live per-asset regime computed from OHLCV, use ``detect_regime`` instead. Descriptive observed data onlist_signal_catalogCatalog of every available signal stream (free read). One entry per signal source across all tiers -- on-chain collectors, free API sources, derived analyzers and external provider adapters -- with tier, cost-gate state (paid Tier-D gates are fail-closed and disabled by default), coverage window (eget_source_weightsSource-effectiveness weight table (free read). Per (source, signal_type, regime): graded evaluation counts, the smoothed effectiveness weight (social sources hold a low prior until sufficiently graded -- the anti-gaming cold start), the fleet Layer-2 multiplier from released anonymized fleet insighget_cross_exchangeCross-venue snapshot for one asset (free read). Per-venue price/bid/ask/movement (5m/1h/24h change), the pairwise spread matrix (bps), the widest current spread, and -- for wrapped-asset legs (BTC/ETH) only -- the Solana-DEX wrapped-asset premium vs the CEX-consensus reference price. Observed data,get_arb_discrepanciesPersisted cross-venue discrepancy episodes (free read). Already-debounced ``cross_exchange`` signals (each required >= N consecutive polls above the discrepancy threshold to exist at all), filtered to ``spread_bps >= min_spread_bps`` and optionally to ``assets``, within ``window_hours``. One entryget_strategy_suggestionsSignal-to-action suggestions from the synthesis engine (free read, G4). Per-asset directional observations aggregated hourly from the accuracy- weighted intelligence consensus (get_consensus math) plus the Fear & Greed context, each carrying a ready-to-use strategy config. PROPOSE flow: this tool nintelligence_suggestion_approveApprove a StrategySuggestion, optionally creating the suggested Strategy. Closes the PROPOSE loop for MCP-only agents: wraps the same approve-and-create service logic as the REST ``StrategySuggestionViewSet.approve`` action instead of a manual ``suggested_config`` round-trip through the strategy crget_ilo_adoption_statusThe ILO adoption gate -- one machine-checkable readiness read (free). Published Engaij, Inc. policy: the ILO proceeds only once Crank has 1,000 active users, where an active user has at least 5 executed Crank transactions inside a rolling 7-day window. Signups do not count. Returns gate_met (activestrategy_dca_createCreate a dollar-cost-average strategy buying ``usd_per_buy`` of target each interval. ``risk`` (optional) overrides the safe-default risk limits: ``max_position_pct`` / ``max_portfolio_exposure_pct`` / ``max_single_loss_pct`` / ``max_drawdown_pct`` / ``max_daily_loss_pct`` (percent; <=0 disables astrategy_equity_dca_createCreate an equity dollar-cost-average strategy (tokenized equities / xStocks). Shares the DCA executor -- identical mechanics/config to ``strategy_dca_create`` -- tagged ``equity_dca`` because ``target_token`` is expected to be a tokenized-equity mint. SEC posture: DCA is a MECHANICAL, user-configurstrategy_stoploss_createCreate a stop-loss / take-profit / trailing-stop monitor on a held position. ``position_amount`` is base units of ``target_token`` to liquidate on trigger. At least one of ``stop_loss_pct`` / ``take_profit_pct`` / a trailing config should be set (fractions, e.g. 0.15 == 15%). Direction (optional,strategy_protect_createCreate a downside-protection monitor on a held position. Shares the stop-loss executor -- identical config/mechanics to ``strategy_stoploss_create`` -- framed as a pure downside guard. At least one of ``stop_loss_pct`` / ``take_profit_pct`` / ``trailing`` must be set.strategy_hedge_createCreate a hedge strategy -- an exit trigger that unwinds a held position. Shares the stop-loss executor -- identical config/mechanics to ``strategy_stoploss_create`` -- framed as an active risk-offset trigger: set ``stop_loss_pct`` / ``trailing`` to shed exposure on an adverse move, or ``take_profitstrategy_rebalance_createCreate a portfolio-rebalance strategy toward ``target_allocation`` (mint->weight). Direction (optional, deterministic signal): ``direction_mode`` / ``allow_short`` / ``regime_override`` -- see ``strategy_dca_create``.strategy_vault_createCreate a vault strategy -- a target-allocation basket held via rebalancing. Shares the rebalance executor -- identical config/mechanics to ``strategy_rebalance_create`` (``target_allocation`` mint->weight, ``drift_threshold_pct``) -- framed as a passive basket rather than an active rebalance loop.strategy_snipe_createCreate a snipe/scalping strategy -- dip-buy with a fast take-profit/stop exit. Flat: buys ``usd_per_buy`` when price is ``entry_dip_pct`` below the close ``lookback`` ticks ago. Holding: exits on a tight ``take_profit_pct`` OR ``stop_loss_pct`` -- many small round-trips. Runs on a short interval (dstrategy_momentum_createCreate a momentum strategy -- fast/slow SMA crossover entry/exit. Buys on a bullish cross (fast SMA > slow SMA), sells on a bearish cross. DISCRETIONARY (SEC framework): the model interprets a signal and converts it to a trade, so targeting a tokenized SECURITY forces per-execution user confirmatiostrategy_sentiment_createCreate a sentiment strategy -- trades an aggregate sentiment score. Buys when the score is >= ``bull_threshold`` (flat), sells when it is <= ``bear_threshold`` (holding); the neutral band holds. The score is sourced live from market intelligence each tick, or pinned via ``sentiment_score``. DISCRETstrategy_yield_farm_createCreate a yield-farm strategy -- maintains a target basket allocation. Shares the rebalance executor (config identical to ``strategy_rebalance_create``): depositing into an external yield protocol / LP position has no faithful swap-pipeline analogue, so this models a yield farm as keeping a target astrategy_copy_wallet_createCreate a copy-wallet strategy -- mirrors a tracked wallet's entries/exits. ``tracked_wallet`` is the Solana address to mirror (its confirmed on-chain buy/sell actions are sourced each tick); ``usd_per_buy`` is the default mirror size (scaled by ``size_multiplier``) applied when the tracked wallet bstrategy_market_make_createCreate a market-make strategy -- two-sided spread capture (APPROXIMATE). No live order book -- SYNTHESISES a spread from realised volatility around a rolling mid: a "filled bid" (price a half-spread below mid) buys, a "filled ask" (above mid) sells (up to held inventory). Market-neutral: PAUSES instrategy_arb_createCreate an arb strategy -- cross-venue price-discrepancy convergence (APPROXIMATE). Reads a live cross-venue spread each tick (task-sourced from the Jupiter quote corpus vs on-chain price) or falls back to a transparent PROXY (deviation below a short EMA) when unavailable. Enters when the spread clestrategy_perp_grid_createCreate a perp-grid strategy -- a ladder of perp LONGS accumulated on dips. Routes through the multi-venue perps VENUE ADAPTER (hard rule 2; Jupiter Perps primary). Around a rolling center price (SMA, or an explicit ``center_price``), each ``grid_spacing_pct`` move below center is one rung; crossingstrategy_basis_trade_createCreate a basis-trade strategy -- funding-harvest perp SHORT leg (APPROXIMATE). Routes the perp leg through the multi-venue VENUE ADAPTER (hard rule 2). A live delta-neutral basis trade is long spot + short perp harvesting funding; this executor opens/manages only the perp SHORT leg (the spot long tstrategy_statusStatus + last execution of one strategy (scoped to the caller's wallet).strategy_modifyEdit a running strategy's parameters IN PLACE -- no cancel + recreate. React to a fresh signal by retuning the strategy you already own: the execution history, cost-basis ledger and position state all survive, and there is no window where the strategy is gone. The live executor picks the new configstrategy_cancelStop a strategy (sets status=stopped; it will not be dispatched again).strategy_pauseManually pause a strategy (status=paused_manual; stops dispatch).strategy_resumeRe-enable a paused strategy (manual re-enable after a drawdown pause). The drawdown kill switch latches a strategy to ``paused_drawdown`` and requires this explicit owner action to resume; the equity high-water mark is reset so it does not immediately re-trip. (spec s7.1): resuming a PERPS-CAPABLstrategy_listList a wallet's strategies (newest first, capped). ``detail``: "concise" (default) trims each row to strategy_id/strategy_type/status -- the IDs needed to chain into strategy_status/strategy_modify/strategy_cancel/strategy_pause/ strategy_resume; "full" also includes schedule/next_execution_at, assearch_toolsKeyword search over the full Crank tool catalog (progressive disclosure). Read-only, free, never gated. Purpose-built for a discovering agent that does not want to load the full tool catalogue into context just to find the one it needs ( R1 -- the Solana Agent Kit V1 failure mode: 60+ tools in contget_trading_workflowMap of how Crank's tools fit into one end-to-end trading flow (read this first). Read-only, free. Returns an ordered, machine-readable workflow: orient -> intelligence -> yields -> simulate (backtest) -> risk-size -> execute (non-custodial) -> monitor -> journal. Each step names the concrete tool(sjournal_appendRecord a decision in your private, wallet-scoped journal (free write). Your durable memory on Crank: rationale, intended action, and optional expectations (e.g. {"direction": "up", "horizon": "24h"}) are stored as one opaque body only you can read back; the system later attributes realised P&L fromjournal_queryRead your own decision journal, most recent first (free read). Wallet-scoped: only decisions journaled for wallet_address are ever returned. Filters: window_hours (0 = all), decision_type, strategy_type, asset (mint/symbol as journaled), outcome_sign (positive|negative|zero on realised P&L), sourceget_my_performanceYour own realised performance, grouped (free read). Aggregates your journaled non-paper outcomes: win rate, total/average realised P&L (USD), and technology-service-fee drag, grouped by strategy_type | asset | decision_type | hour_of_day over window_hours. Includes a calibration score (your statedsuggest_parameter_adjustmentHistorical parameter observations for one of YOUR strategies (free read). Compares the strategy's realised outcomes against your other strategies of the same type that ran different parameter values, and returns the observed differences ranked by realised P&L -- historical performance data only, neget_journal_cardBuild the shareable journal card for one of YOUR decisions (free read). Every trading claim online is an unverifiable screenshot. This one is not: the card carries what you decided, the process you followed, what the record shows happened, and a public explorer link to the on-chain transaction so ashare_journal_cardPre-filled post for a journal card, ready to publish (free read). Returns the same card as get_journal_card plus a platform-shaped share payload: post text within the platform's character limit, the public card URL, and a compose-intent URL. ``platform`` is x | farcaster | generic. The copy is abounpublish_journal_cardWithdraw a published journal card (free write). Publishing a decision with share_journal_card is an explicit act by the owner; this is the equally explicit act of taking it back. After this call, the public card at its card_url and the OG-image asset both 404 immediately -- the row is private againget_portfolio_charterRead the wallet's active portfolio charter -- the CRANK.md-equivalent mandate (free read). A user-authored document declaring objectives, risk_band, banned tokens, target_allocations, max_position_pct, rebalance cadence, and an escalation webhook -- loaded once per session so the mandate persists aset_portfolio_charterWrite a new version of the wallet's portfolio charter (free control-plane write). Creates a new active version -- the prior version stays in history, never deleted (versioned mandate, not an in-place overwrite). risk_band is one of conservative|balanced|aggressive. banned_tokens merge into AgentWalregister_webhookRegister (or reactivate) a lifecycle-event webhook for a wallet (free control-plane write). event_types is a non-empty subset of: pre_trade (advisory only, never blocks a trade), post_trade, policy_violation, drawdown_warning, strategy_executed. url is your https(s) receiving endpoint. secret is YOlist_webhooksList a wallet's webhook subscriptions (free read; secrets are never returned).delete_webhookDelete one of a wallet's webhook subscriptions (free control-plane write).get_collective_insightsFleet-wide collective insights, historical performance data (free read). Filters: asset (mint/symbol), strategy_type, insight_type (one of param_performance/signal_effectiveness/timing/venue_quality/crowding/ regime_conditional). Only active, current insights are ever returned. Each insight carriesget_strategy_leaderboardAnonymized fleet strategy-parameter leaderboard (free read). Ranks param_performance collective insights by effect_size within window (24h|7d|30d|90d|all). NEVER identifies a wallet or cohort -- rankings are anonymized param-bucket aggregates only, and any bucket without broad enough backing acrossget_signal_effectivenessFleet action-conditioned signal effectiveness (free read). Filters: source_type (e.g. youtube/rss/api/on_chain), signal_type, window (24h|7d|30d|90d|all). Returns, per matching signal_effectiveness collective insight, the fleet action taken, effect_size, confidence interval, contributing-agent counget_emerging_patternsAnonymized emergent fleet behaviour motifs (free read). Returns ordered behaviour motifs -- sequences of (regime, signal_key, action, outcome_sign) steps -- that many distinct agents exhibited and that map to NO existing strategy type in the standing taxonomy. Each carries n_agents, an anonymized aget_strategy_evolution_reportClone-marketplace live performance deltas + approvals (free read). Per published template: its live clone-fleet performance payload (average profit and loss in bps across distinct cloning wallets over the trailing 30 days, anonymized, self-clones excluded), the change vs the previous refresh, and tpropose_template_updatePropose a DRAFT strategy template from an emerging pattern. PROPOSE-AND-APPROVE ONLY. Creates a draft template that is NOT published, NOT verified and NOT eligible for cloning; an administrator must explicitly approve it before it can appear in the marketplace. This tool can never publish, verify,get_my_contribution_scoreYour own hive contribution score for a monthly epoch (free read). Wallet-scoped -- returns ONLY your wallet's own row, never another wallet's score and never a fleet ranking. ``epoch`` is "YYYY-MM" and defaults to the most recently completed month. Contribution quality reflects how much your journpropose_allocationRanked allocation plan: intent + balances + regime + yields + ML signals (free read). One call composes the read-only surfaces an agent would otherwise orchestrate by hand -- lending supply APYs, LST staking yields, the per-asset market regime, and the ML ensemble signal -- into a ranked, intent-shcompose_strategyValidate a composite definition -- returns the normalised definition + validation report. No persist; read = FREE per the fee schedule. Checks: schema, stream existence against the signal catalog, rule-tree depth/size limits, required risk caps, and the anti-gaming rule (a social sentiment/trend_sostrategy_composite_createCreate a composite strategy from a validated definition. Same non-custodial create path as the other 16 strategy types: the wallet holds its own keys; a wallet without a Turnkey signer receives an unsigned transaction per tick for the owner to sign. ``mode`` defaults to LIVE (recorded on the configcreate_execution_intentCreate a propose-only execution intent; returns an approval URL to hand to the user. submit_mode (optional): omitted/"public" is unchanged and is named in summary.execution. "mev_protected" builds the tx with the caller-paid Jito tip (jito_tip_lamports, or the platform default) and the approved intget_intent_statusRead the persisted lifecycle state of an execution intent (free read). Returns the server-persisted state only -- CREATED, APPROVED, SUBMITTED, UNKNOWN, CONFIRMED, FAILED, or EXPIRED -- plus the simulation summary and the on-chain signature once submitted. Never infers: UNKNOWN means an unresolved
Badge
Markdown for your README
[](https://clawy.uk/mcp/s/ing.crank/crank)