Model Context Protocol (MCP) server for freee API integration
Crank Protocol is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http crank-protocol-mcp https://mcp.crank.ing/mcp
# 2 — ask your agent for something these tools do
# jupiter_swap, verify_transaction, get_quotes and 194 more
Crank Protocol costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http crank-protocol-mcp https://mcp.crank.ing/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
197 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Execute 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 engine as a bundle. Use the same mode on build and broadcast. A failed protected submit returns an error
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input_token | string | yes | — |
| output_token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| slippage_bps | no | — | |
| signed_transaction | no | — | |
| allow_unverified | boolean | no | — |
| venue_hint | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| submit_mode | no | — | |
| jito_tip_lamports | no | — | |
| mev_fallback_public | boolean | no | — |
Verify 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 expected: - mint (+ wallet_address): re-reads that SPL/SOL token balance. - market (+ `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tx_signature | string | yes | — |
| wallet_address | string | no | — |
| mint | no | — | |
| market | no | — | |
| protocol | no | — | |
| marginfi_account | no | — | |
| commitment | string | no | — |
| timeout_s | number | no | — |
| caller_id | string | no | — |
Read-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 service fee that wallet will actually pay -- its volume tier plus $CRANK staker / pay_in_crank` / Crank
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input_token | string | yes | — |
| output_token | string | yes | — |
| amount | integer | yes | — |
| slippage_bps | no | — | |
| venue_hint | no | — | |
| caller_id | string | no | — |
| wallet_address | string | no | — |
| pay_in_crank | boolean | no | — |
| include_slippage_advisory | boolean | no | — |
Wallet 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 starting read for any flow. See get_trading_workflow.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| detail | string | no | — |
| caller_id | string | no | — |
Full 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" returns every position with amount/price_usd and the complete allocation_pcts map, as before. Workflow: OR
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| detail | string | no | — |
| caller_id | string | no | — |
Create 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 notional. Workflow: MONITOR step -- arm after executing so a tripped level loops you back to the risk
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| token | string | yes | — |
| alert_type | string | yes | — |
| threshold | number | yes | — |
| webhook_url | no | — | |
| caller_id | string | no | — |
Opt 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. The worker never executes -- every proposal is approved in your own wallet. See get_ooda_status for
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| opted_in | boolean | yes | — |
| daily_wake_budget | no | — | |
| kill_threshold_enabled | no | — | |
| kill_threshold_ratio | no | — | |
| kill_window_days | no | — | |
| caller_id | string | no | — |
Wake-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 threshold config and state: kill_threshold_enabled, kill_threshold_ratio, kill_window_days, and -- if
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| recent_limit | integer | no | — |
| caller_id | string | no | — |
Declare 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-DENIED rule permanently refused it. Call this ONCE (or pass jurisdiction=` directly on any perps/sho
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| jurisdiction | string | yes | — |
| ip | string | no | — |
| caller_id | string | no | — |
List 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 Celery evaluators will act on. include_triggered=True adds already- tripped and deactivated alerts (recent
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| include_triggered | boolean | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Token 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | no | — | |
| symbol | no | — | |
| caller_id | string | no | — |
Native (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 technology service fee) -- a read with no transaction notional.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| address | string | yes | — |
| chain | string | no | — |
| token_addresses | no | — | |
| caller_id | string | no | — |
Indicative 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| chain | string | no | — |
| quote_token | string | no | — |
| amount | string | no | — |
| caller_id | string | no | — |
INDICATIVE 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sell_token | string | yes | — |
| buy_token | string | yes | — |
| sell_amount | string | yes | — |
| chain | string | no | — |
| taker | string | no | — |
| caller_id | string | no | — |
Execute 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_transaction' (Crank fills nonce, gas and 1559 fees, and re-estimates gas against current state). Sign it wi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sell_token | string | yes | — |
| buy_token | string | yes | — |
| sell_amount | string | yes | — |
| taker | string | yes | — |
| chain | string | no | — |
| slippage_bps | no | — | |
| signed_transaction | string | no | — |
| expected_buy_amount | string | no | — |
| pre_buy_balance | string | no | — |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
| replace_nonce | string | no | — |
| replace_max_fee_per_gas | string | no | — |
| replace_max_priority_fee_per_gas | string | no | — |
Multi-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. Returns verification_status (verified | unverified | suspicious | blocked), the reasons, non-blocking wa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| symbol | no | — | |
| caller_id | string | no | — |
Recent 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| limit | integer | no | — |
| detail | string | no | — |
| caller_id | string | no | — |
Backtest 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). asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d; start_date/end_date are ISO-8601. params tune
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | yes | — |
| asset | string | yes | — |
| timeframe | string | yes | — |
| start_date | string | yes | — |
| end_date | string | yes | — |
| params | no | — | |
| initial_capital | number | no | — |
| fee_bps | integer | no | — |
| slippage_model | string | no | — |
| slippage_bps | integer | no | — |
| wallet_address | string | no | — |
| definition | no | — | |
| caller_id | string | no | — |
ML 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], confidence (distance from 0.5), direction (long/short/neutral via buy_threshold/sell_threshold), pe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| timeframe | string | no | — |
| lookback_candles | integer | no | — |
| horizon | integer | no | — |
| buy_threshold | number | no | — |
| sell_threshold | number | no | — |
| caller_id | string | no | — |
Detect 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 position-size fraction (0-1), plus the raw ADX / +DI / -DI / SMA-slope / volume readings for transparency.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| timeframe | string | no | — |
| lookback_candles | integer | no | — |
| caller_id | string | no | — |
Combined 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-weighted position size already capped to the position guard (in both percent-of-equity and USD notional ag
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | yes | — |
| asset | string | yes | — |
| timeframe | string | no | — |
| equity | number | no | — |
| lookback_candles | integer | no | — |
| caller_id | string | no | — |
Full 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 bands with 0-1 depth scores) from recent OHLCV via the canonical backend/indicators library. asset is a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| timeframe | string | no | — |
| indicators | no | — | |
| lookback | integer | no | — |
| params | no | — | |
| include_series | boolean | no | — |
| caller_id | string | no | — |
Multi-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 weights zone strength by overlapping candle-volume liquidity-band depth. asset is a token mint; timeframes
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| timeframes | no | — | |
| lookback | integer | no | — |
| sources | no | — | |
| sensitivity | number | no | — |
| zone_width_bps | integer | no | — |
| manual_levels | no | — | |
| caller_id | string | no | — |
Attach 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 own strategy params. The strategy must belong to wallet_address -- configuring someone else's strateg
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
| sr_config | object | yes | — |
| caller_id | string | no | — |
Backtest 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_config into params["sr"]. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d; start_date/end
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| timeframe | string | yes | — |
| start_date | string | yes | — |
| end_date | string | yes | — |
| sr_config | no | — | |
| strategy_type | string | no | — |
| params | no | — | |
| initial_capital | number | no | — |
| fee_bps | integer | no | — |
| slippage_model | string | no | — |
| slippage_bps | integer | no | — |
| wallet_address | string | no | — |
| caller_id | string | no | — |
Classify 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 types). Registry-authoritative with a static + symbol fallback. Factual classification only -- not a re
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | no | — | |
| symbol | no | — | |
| caller_id | string | no | — |
Compliance 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset_classification | no | — | |
| token_address | no | — | |
| symbol | no | — | |
| caller_id | string | no | — |
Open 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 — place them as trigger orders after the position opens. The fee is charged on size_usd notional past th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| market | string | yes | — |
| size_usd | number | yes | — |
| leverage | number | yes | — |
| take_profit_price | no | — | |
| stop_loss_price | no | — | |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Open 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| market | string | yes | — |
| size_usd | number | yes | — |
| leverage | number | yes | — |
| take_profit_price | no | — | |
| stop_loss_price | no | — | |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Close 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 perp_open_long. idempotency_key` (optional): a client-generated UUID. Retrying with the same key
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| market | string | yes | — |
| position_id | no | — | |
| close_pct | number | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Modify 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_header is required. `jurisdiction`: modify (changes leverage/ exposure) is geo-gated too -- see perp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| order_id | integer | yes | — |
| new_leverage | no | — | |
| add_collateral | no | — | |
| new_tp | no | — | |
| new_sl | no | — | |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
List open perp positions for a wallet with live P&L. Each: market, side, size, entry/mark price, unrealized P&L (incl funding), liquidation price.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Available Drift perp markets with price, open interest, funding, max leverage.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Current funding for a perp market (rate, period, last funding timestamp). market e.g. SOL-PERP. period is informational (1h/8h/24h).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | yes | — |
| period | string | no | — |
| caller_id | string | no | — |
Open 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 (Tier A) or a signing payload (Tier B) for your wallet to sign + broadcast, plus venue_name / custody_ti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| market | string | yes | — |
| side | string | yes | — |
| size_usd | number | yes | — |
| leverage | number | yes | — |
| order_type | no | — | |
| limit_price | no | — | |
| take_profit_price | no | — | |
| stop_loss_price | no | — | |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| signed_transaction | no | — | |
| venue_action | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Close 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. idempotency_key` (optional): a client-generated UUID. Retrying with the same key + same args replays the orig
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| position_id | string | yes | — |
| close_pct | number | no | — |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| signed_transaction | no | — | |
| venue_action | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Cancel 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 SAME key across the build call and its signed_transaction` completion call -- see place_perp_order;
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| order_id | string | yes | — |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| signed_transaction | no | — | |
| venue_action | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
Set, 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 pubkey, as returned by perp_positions_all); other venues are refused. At least one of take_profit_price
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| position_id | string | no | — |
| take_profit_price | no | — | |
| stop_loss_price | no | — | |
| size_pct | number | no | — |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| signed_transaction | no | — | |
| venue_action | no | — | |
| verify | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
| request_id | no | — | |
| trigger_price | no | — | |
| cancel | boolean | no | — |
Open 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 -- the TP/SL triggers resting on the position, each with the request_id set_perp_tpsl takes to amend or
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| venue | no | — | |
| detail | string | no | — |
| caller_id | string | no | — |
Perp 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue | no | — | |
| detail | string | no | — |
| caller_id | string | no | — |
Normalized funding/borrow rates across venues (venue=None aggregates).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue | no | — | |
| market | no | — | |
| caller_id | string | no | — |
Health + 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Live 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 sidecar, never whether the deployed mcp.crank.ing server can. Unconfigured (SIDECAR_URL` unset) raises
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
On-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 intentionally split the on-chain proof logic from this wiring to avoid file collisions across parallel sessions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expected_usd | string | no | — |
| since_iso | string | no | — |
| signatures | no | — | |
| signature_limit | integer | no | — |
| caller_id | string | no | — |
Deposit 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). Past the daily free tier an x402 payment_header is required. The deposited token is authenticity-veri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| protocol | string | yes | — |
| token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| venue_hint | no | — | |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Borrow 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-verified first; set allow_unverified=true to borrow an unverified token at your own risk. `idempotency_key
| Parameter | Type | Required | Notes |
|---|---|---|---|
| protocol | string | yes | — |
| collateral_token | string | yes | — |
| borrow_token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Repay 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 original result instead of re-repaying. Reuse the SAME key across the build call and its `signed_transac
| Parameter | Type | Required | Notes |
|---|---|---|---|
| protocol | string | yes | — |
| token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Compare 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 passive-return option for idle/low-conviction capital (lending USDC removes price exposure). Pairs with g
| Parameter | Type | Required | Notes |
|---|---|---|---|
| detail | string | no | — |
| caller_id | string | no | — |
Liquidation-risk monitor for a lending position. Returns health_factor (>1 safe, <1 liquidatable), collateral value, debt value, liquidation threshold. protocol: kamino | marginfi.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| protocol | string | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| caller_id | string | no | — |
Arm 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_url is POSTed on trip. Workflow: MONITOR step -- arm after opening a leveraged/borrow position so a det
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| protocol | string | yes | — |
| threshold | number | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| webhook_url | no | — | |
| caller_id | string | no | — |
Marginfi 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 unverified mint at your own risk. Past the daily free tier an x402 payment_header is required. ``idempotenc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token | string | yes | — |
| amount | integer | yes | — |
| instructions | array | yes | — |
| wallet_address | string | yes | — |
| marginfi_account | string | yes | — |
| allow_unverified | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Stake 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_crank for the $CRANK discount). Workflow: EXECUTE step (yield leg) -- stake the idle slice after compa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| protocol | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Unstake 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 payment_header). `idempotency_key` (optional): a client-generated UUID. Retrying with the same key + sa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lst_token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Compare 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_trading_workflow.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Swap 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) is authenticity-verified first; set allow_unverified=true to swap into an unverified LST at your own ri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from_lst | string | yes | — |
| to_lst | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| allow_unverified | boolean | no | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Read 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, and a release_schedule` block (cliff-then-linear) an agent can plan future claim_ilo_tokens calls
| Parameter | Type | Required | Notes |
|---|---|---|---|
| launch_id | integer | yes | — |
| caller_wallet | string | no | — |
| caller_id | string | no | — |
Read 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 on-chain refund is available (refunds open only if the raise FAILS its minimum). Workflow: MONITOR st
| Parameter | Type | Required | Notes |
|---|---|---|---|
| launch_id | integer | yes | — |
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Pledge 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, remaining capacity, per-wallet cap) plus the anti-sybil screen and a pro-rata allocation projection. Nothing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| launch_id | integer | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| pledger_token_account | string | no | — |
| confirm | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
| jurisdiction | string | no | — |
| ip | string | no | — |
| disclosures_acknowledged | boolean | no | — |
Claim 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). When nothing has unlocked yet -- before the cliff, or everything unlocked has already been release
| Parameter | Type | Required | Notes |
|---|---|---|---|
| launch_id | integer | yes | — |
| wallet_address | string | yes | — |
| pledger_token_account | string | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
Open 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 allow_unverified=true to short an unverified mint at your own risk. Past the daily free tier an x402
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_to_short | string | yes | — |
| collateral_token | string | yes | — |
| collateral_amount | integer | yes | — |
| borrow_amount | integer | yes | — |
| wallet_address | string | yes | — |
| protocol | string | no | — |
| market | no | — | |
| marginfi_account | no | — | |
| slippage_bps | integer | no | — |
| allow_unverified | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Close 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): a client-generated UUID. Retrying with the same key + same args replays the original result instead of
| Parameter | Type | Required | Notes |
|---|---|---|---|
| short_id | integer | yes | — |
| wallet_address | string | yes | — |
| buy_with_amount | no | — | |
| market | no | — | |
| marginfi_account | no | — | |
| slippage_bps | integer | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
List open shorts for a wallet with entry price + health factor.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Open 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_unverified=true to lever an unverified mint at your own risk. Past the daily free tier an x402 payme
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token | string | yes | — |
| amount | integer | yes | — |
| target_leverage | number | yes | — |
| wallet_address | string | yes | — |
| protocol | string | no | — |
| stable_token | no | — | |
| market | no | — | |
| marginfi_account | no | — | |
| slippage_bps | integer | no | — |
| allow_unverified | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Unwind 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-generated UUID. Retrying with the same key + same args replays the original result instead of re-unw
| Parameter | Type | Required | Notes |
|---|---|---|---|
| position_id | integer | yes | — |
| wallet_address | string | yes | — |
| market | no | — | |
| marginfi_account | no | — | |
| slippage_bps | integer | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Fund 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 charged on amount_usd notional past the daily free tier (x402 payment_header). `idempotency_key` (op
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| amount_usd | number | yes | — |
| payment_method | string | no | — |
| currency | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Cash 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` (optional): a client-generated UUID. Retrying with the same key + same args replays the original resu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| token | string | yes | — |
| amount | number | yes | — |
| destination | string | yes | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Check a pending MoonPay purchase by session_id. Returns status (pending/processing/completed/failed), amount_crypto, and the on-chain tx_signature once settled.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
| caller_id | string | no | — |
Cross-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 be solana). Returns estimated destination amount, per-leg USD values, and DLN protocol costs. Use bef
| Parameter | Type | Required | Notes |
|---|---|---|---|
| src_chain | string | yes | — |
| src_token | string | yes | — |
| amount | integer | yes | — |
| dst_chain | string | yes | — |
| dst_token | string | yes | — |
| caller_id | string | no | — |
Fund 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, data, value}) with your OWN wallet (evm_sender) on src_chain` -- Crank never signs, never broadc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| src_chain | string | yes | — |
| src_token | string | yes | — |
| amount | integer | yes | — |
| dst_token | string | yes | — |
| wallet_address | string | yes | — |
| evm_sender | string | yes | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Bridge 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. With signed_transaction broadcasts the caller-signed tx and returns tx_signature + a verification`
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dst_chain | string | yes | — |
| dst_token | string | yes | — |
| src_token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| evm_recipient | string | yes | — |
| signed_transaction | no | — | |
| verify | boolean | no | — |
| order_id | string | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
Poll 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_in / bridge_out) and best-effort updates the matching BridgeTransfer row. Returns dln_status (raw DLN v
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | — |
| caller_id | string | no | — |
Register 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_wallet_policy. unlimited=True starts the wallet with NO policies and records that explicit choice in the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| agent_id | string | yes | — |
| display_name | string | no | — |
| default_policies | string | no | — |
| wallet_address | string | no | — |
| owner_address | string | no | — |
| policy_preset | string | no | — |
| unlimited | boolean | no | — |
| caller_id | string | no | — |
Open 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 consent (CRANK_PLUGIN_SPEC.md section 5). Poll with poll_agent_wallet_enable(device_code) until statu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| agent_id | string | yes | — |
| display_name | string | no | — |
| caller_id | string | no | — |
Poll 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 server -- never the intended one.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_code | string | yes | — |
| caller_id | string | no | — |
Open 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) once the user approves.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| policies | array | yes | — |
| caller_id | string | no | — |
Poll a policy-loosening request; applies it ONLY once approved. Returns the policy READ BACK from the server after the write -- never the requested one.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_code | string | yes | — |
| caller_id | string | no | — |
Configure 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 {"active"} | drawdown_limit {"max_pct"} | max_daily_loss {"usd"} | trade_velocity {"max_per_hour", "max_p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| policies | array | yes | — |
| caller_id | string | no | — |
Emergency 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.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Owner 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| reason | string | no | — |
| caller_id | string | no | — |
Owner 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 token (wallet_admin scope); refused while a wallet recovery is in progress.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| reason | string | no | — |
| caller_id | string | no | — |
Current state, policy summary, recent activity, total volume, and tier.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Read 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 actually read each column today -- a stored cap is not necessarily a binding one. Sibling of wallet_stat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Configure 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 omitted key keeps its stored value, an explicit null clears it (uncapped). Returns the full updated set rea
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| limits | array | yes | — |
| caller_id | string | no | — |
Change 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 PROPOSAL envelope -- proposal_id + params + summary -- instead of executing; approve within the TTL via a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| mode | string | yes | — |
| caller_id | string | no | — |
Approve 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 dispatch table. On redispatch failure the proposal stays APPROVED (not silently EXECUTED or PENDING) -- call
| Parameter | Type | Required | Notes |
|---|---|---|---|
| proposal_id | string | yes | — |
| approved_by | string | no | — |
| caller_id | string | no | — |
Opt 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 failure raises INVALID_PARAMS with a distinct message. Adds an ADDITIONAL cap enforced alongside (never re
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| grant_pda | string | yes | — |
| caller_id | string | no | — |
Remove 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 user approve it in their own browser. A non-Lane-2 wallet clears directly.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Open 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 own browser (never in-chat). Poll with poll_agnta_grant_clear(device_code) once approved.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Poll 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_code | string | yes | — |
| caller_id | string | no | — |
Re-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 key material ever reaches Crank, hard rule 1) and then calls submit_agnta_identity_registration, or s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Submit 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 wallet's own authority pubkey. Only then does the wallet move pending -> registered`. A signature
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| identity_pda | string | yes | — |
| signed_transaction_base64 | string | yes | — |
| caller_id | string | no | — |
Complete (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_identity_registration does and stamps registered` only on success; otherwise it returns the wallet's cu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| identity_pda | string | yes | — |
| caller_id | string | no | — |
Register/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 `InMemoryCounterpartySetResolver. wallet_address must belong to an AgentWallet with a non-blank `agnta_grant_p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| members | array | yes | — |
| expected_root | string | no | — |
| caller_id | string | no | — |
Refuses 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), after validating capabilities for early UX. The only mint path is the browser handshake: request_session_s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| signer_pubkey | string | yes | — |
| label | string | no | — |
| capabilities | no | — | |
| expires_at | string | no | — |
| caller_id | string | no | — |
Open 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 wallet's OWNER must approve in their own browser (wallet-signature gated, never in-chat). Poll with poll
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| signer_pubkey | string | yes | — |
| label | string | no | — |
| capabilities | no | — | |
| expires_at | string | no | — |
| caller_id | string | no | — |
Poll 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 created session_signer row.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_code | string | yes | — |
| caller_id | string | no | — |
Instantly 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signer_pubkey | string | yes | — |
| caller_id | string | no | — |
List all delegated session signers (active + revoked) for a wallet.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Register 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| name | string | no | — |
| contact_email | string | no | — |
| agent_id | string | no | — |
| caller_id | string | no | — |
First-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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| integrator_wallet_address | string | yes | — |
| referred_wallet_address | string | yes | — |
| caller_id | string | no | — |
Integrator 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-share.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| integrator_wallet_address | string | yes | — |
| caller_id | string | no | — |
Per-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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| integrator_wallet_address | string | yes | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Live 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", "jupiter", "pacifica". Use BEFORE routing capital to a venue. Workflow: RISK step (venue-safety gate) --
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue | string | yes | — |
| caller_id | string | no | — |
Composite 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 is auditable). Factual assessment, not financial advice.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue | string | yes | — |
| caller_id | string | no | — |
Dashboard 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/composite_score (venue is the ID to chain into get_venue_health); "full" adds deploy slot, TVL, 24h v
| Parameter | Type | Required | Notes |
|---|---|---|---|
| detail | string | no | — |
| caller_id | string | no | — |
Side-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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue_a | string | yes | — |
| venue_b | string | yes | — |
| caller_id | string | no | — |
Spot-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 the jurisdiction arg) and OFAC-screened, and requires per-execution confirmation -- WITHOUT confirm=true
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symbol | string | yes | — |
| side | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| jurisdiction | no | — | |
| confirm | boolean | no | — |
| slippage_bps | integer | no | — |
| signed_transaction | no | — | |
| allow_unverified | boolean | no | — |
| ip | string | no | — |
| venue_hint | no | — | |
| verify | boolean | no | — |
| caller_id | string | no | — |
| payment_header | string | no | — |
| pay_in_crank | boolean | no | — |
| idempotency_key | string | no | — |
List 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Read-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_equity.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symbol | string | yes | — |
| amount | integer | yes | — |
| side | string | no | — |
| slippage_bps | integer | no | — |
| venue_hint | no | — | |
| caller_id | string | no | — |
Tokenized-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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Earnings / 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symbol | string | yes | — |
| caller_id | string | no | — |
NYSE 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symbol | no | — | |
| caller_id | string | no | — |
Standardised 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_data_quality (live/stale/none) -- plus the derived composite risk (low/medium/high/blocked) and last_v
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mint_or_symbol | string | yes | — |
| caller_id | string | no | — |
Register/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 you via the A2A Agent Card + Solana Agent Registry.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| capabilities | no | — | |
| display_name | string | no | — |
| description | string | no | — |
| a2a_card_url | string | no | — |
| mcp_endpoint | string | no | — |
| supported_protocols | no | — | |
| contact | string | no | — |
| version | string | no | — |
| caller_id | string | no | — |
Find 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| capability | string | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Read an agent's published profile + its referral stats (read-only, free).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Patch an agent profile's metadata (display_name, capabilities, endpoints). metadata is a dict of writable fields; capabilities are validated if present.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| metadata | object | yes | — |
| caller_id | string | no | — |
Publish 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 backtest (on-chain attestation hash + leaderboard ranking). Equity (tokenized-security) strategies are
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | yes | — |
| name | string | yes | — |
| config_template | object | yes | — |
| description | string | no | — |
| performance_summary | no | — | |
| author_wallet_address | string | no | — |
| anonymous | boolean | no | — |
| backtest_run_id | no | — | |
| caller_id | string | no | — |
Browse 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_count/is_verified/backtest_hash (template_id is the ID to chain into clone_strategy); "full" adds de
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | no | — |
| limit | integer | no | — |
| sort | string | no | — |
| detail | string | no | — |
| caller_id | string | no | — |
Top 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="concise" (default) trims each entry the same way as discover_strategies (template_id is the ID to c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | no | — |
| sort | string | no | — |
| limit | integer | no | — |
| detail | string | no | — |
| caller_id | string | no | — |
Clone 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| template_id | integer | yes | — |
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Self-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 registry listing (Smithery, PulseMCP, the official MCP registry). Writes a synthetic marker row -- moves no
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Send 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 crank.ing/{code} claim link and the claim_code (the bearer secret to embed in the announcement tweet). W
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recipient_handle | string | yes | — |
| amount | integer | yes | — |
| token | string | yes | — |
| sender_wallet | string | yes | — |
| platform | string | no | — |
| referral | string | no | — |
| expiry_days | no | — | |
| allow_unverified | boolean | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
Distribute 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 sender_wallet into a fresh claim escrow and returns the create_claim` instructions batched into as
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recipients | array | yes | — |
| token | string | yes | — |
| sender_wallet | string | yes | — |
| platform | string | no | — |
| referral | string | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
A wallet's social token sends (newest first; no claim-code secrets).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Public status of a crank.ing claim code (status, amount, claimable, expiry).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | — |
| caller_id | string | no | — |
A 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), daily_send_limit (higher social-send cap), priority_access, and the gate tier (0-3). Score accrues from
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
User-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_usd, strategies_published, clones_spawned, referrals_activated, active_days), and its live quests`
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Top-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 pre-token disclaimer. (Distinct from get_leaderboard`, which ranks strategy templates.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | no | — | |
| caller_id | string | no | — |
Live 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 progress_value + completion state. Carries the disclaimer`.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | no | — |
| caller_id | string | no | — |
Sender-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, recipient_wallet, amount, claim_link, expiry_ts, and expires_in_seconds (a live countdown, 0 once expired)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| claim_id | no | — | |
| recipient | string | no | — |
| sender_wallet | string | no | — |
| caller_id | string | no | — |
An 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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| period | string | no | — |
| caller_id | string | no | — |
The 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 bucket. Exhausted callers get a RATE_LIMITED error envelope with retry_after_seconds; plugin-v1/agent-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Crypto 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 regime, the Fear & Greed reading, and source attribution. assets is an optional list of tickers (e.g.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| assets | no | — | |
| detail_level | string | no | — |
| timeframe | string | no | — |
| wallet_address | string | no | — |
| payment_header | string | no | — |
| detail | string | no | — |
| caller_id | string | no | — |
Historical 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. Each source carries a `windows` map over rolling 7d/30d/90d periods, each with total resolved calls,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| windows | no | — | |
| source_type | string | no | — |
| caller_id | string | no | — |
Recent 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 update carries the issuing `agency, title, url, relevance (high/medium/low) + score, matched `top
| Parameter | Type | Required | Notes |
|---|---|---|---|
| window_hours | integer | no | — |
| min_relevance | string | no | — |
| agency | string | no | — |
| caller_id | string | no | — |
Recent 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), LLM-classified for relevance to both Crank (Solana trading infra + DeFi frontend) and Engaij (the par
| Parameter | Type | Required | Notes |
|---|---|---|---|
| window_hours | integer | no | — |
| min_relevance | string | no | — |
| category | string | no | — |
| caller_id | string | no | — |
Multi-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/neutral), and the accuracy-weighted directional score (-1..+1) that blends each source's call by its hi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| window_hours | integer | no | — |
| wallet_address | string | no | — |
| payment_header | string | no | — |
| caller_id | string | no | — |
Contrarian (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 side a contrarian would take) -- and assets where agreement is very low (uncertain). With asset` set
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | no | — |
| window_hours | integer | no | — |
| wallet_address | string | no | — |
| payment_header | string | no | — |
| caller_id | string | no | — |
Filtered, 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 token symbol/market or its stable ref (mint / market address); signal_type / tier (a|b|c) /
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subject | string | no | — |
| signal_type | string | no | — |
| tier | string | no | — |
| risk_level | string | no | — |
| min_score | no | — | |
| limit | integer | no | — |
| include_expired | boolean | no | — |
| caller_id | string | no | — |
Per-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 not replace -- get_risk_assessment` (regime + position-size guards for deploying a strategy). Descri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subject | string | yes | — |
| window_hours | integer | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Market-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 only. Not financial advice. Workflow: INTELLIGENCE step -- market-wide posture check before choosing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| window_hours | integer | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Catalog 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 (earliest/latest persisted signal -- the honest backtest window), effectiveness stats (graded evaluati
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_inactive | boolean | no | — |
| caller_id | string | no | — |
Source-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 insights, and the combined weighted value the composite effectiveness_weighted transform consumes. Histori
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller_id | string | no | — |
Cross-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, decision-support only -- spreads ignore fees, slippage, and cross-venue/bridge transfer latency; ne
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | yes | — |
| window_minutes | integer | no | — |
| caller_id | string | no | — |
Persisted 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 entry per episode: venue pair, spread, first/last seen, persistence, reference price. Observed data, decis
| Parameter | Type | Required | Notes |
|---|---|---|---|
| min_spread_bps | number | no | — |
| assets | no | — | |
| window_hours | integer | no | — |
| caller_id | string | no | — |
Signal-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 never executes anything -- act on a suggestion by creating the strategy through the normal strategy t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | — |
| asset | string | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Approve 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 create tools, which silently drops the suggestion linkage (StrategySuggestion.created_strategy` / h
| Parameter | Type | Required | Notes |
|---|---|---|---|
| suggestion_id | integer | yes | — |
| wallet_address | string | yes | — |
| agent_wallet_id | no | — | |
| config_overrides | no | — | |
| interval_seconds | integer | no | — |
| caller_id | string | no | — |
The 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 (active_users >= 1000), active_users, near_active_users, users_with_any_tx and the pinned transaction defin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cluster | string | no | — |
| caller_id | string | no | — |
Create 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 a guard). Direction (optional, all deterministic signals -- DYOR): direction_mode` (auto | long_on
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| slippage_bps | integer | no | — |
| smart | boolean | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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-configured strategy (not discretionary), so it stays autonomous even on a security target -- the per-executi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| slippage_bps | integer | no | — |
| smart | boolean | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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, deterministic signal): direction_mode / allow_short / regime_override -- see `strategy_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| position_amount | integer | yes | — |
| stop_loss_pct | no | — | |
| take_profit_pct | no | — | |
| trailing | boolean | no | — |
| trailing_distance_pct | no | — | |
| entry_price | no | — | |
| source_token | string | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| position_amount | integer | yes | — |
| stop_loss_pct | no | — | |
| take_profit_pct | no | — | |
| trailing | boolean | no | — |
| trailing_distance_pct | no | — | |
| entry_price | no | — | |
| source_token | string | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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_profit_pct to lock in a favourable one. At least one of stop_loss_pct / take_profit_pct / `trai
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| position_amount | integer | yes | — |
| stop_loss_pct | no | — | |
| take_profit_pct | no | — | |
| trailing | boolean | no | — |
| trailing_distance_pct | no | — | |
| entry_price | no | — | |
| source_token | string | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create a portfolio-rebalance strategy toward `target_allocation (mint->weight). Direction (optional, deterministic signal): direction_mode / allow_short / regime_override -- see strategy_dca_create`.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_allocation | object | yes | — |
| drift_threshold_pct | number | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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. No external vault/LP deposit (hard rule 1): the non-custodial swap pipeline only rotates spot holdin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_allocation | object | yes | — |
| drift_threshold_pct | number | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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 (default 60s) since it reads a per-tick rolling price window that must accumulate lookback` + 1 obs
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| lookback | integer | no | — |
| entry_dip_pct | number | no | — |
| take_profit_pct | number | no | — |
| stop_loss_pct | number | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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 confirmation before the scheduled dispatcher will run a tick (`strategies.tasks.execute_strategy requires `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| fast | integer | no | — |
| slow | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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. DISCRETIONARY (SEC framework): targeting a tokenized SECURITY forces per-execution user_confirmed` at ex
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| bull_threshold | number | no | — |
| bear_threshold | number | no | — |
| sentiment_score | no | — | |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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 allocation across the basket via converging rebalance swaps (hard rule 1: the non-custodial pipeline
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_allocation | object | yes | — |
| drift_threshold_pct | number | no | — |
| interval_seconds | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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 buys. APPROXIMATE: no full per-fill replication (every execution is flagged approximate). `risk
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_buy | number | yes | — |
| tracked_wallet | no | — | |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| size_multiplier | number | no | — |
| slippage_bps | integer | no | — |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — |
Create 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 in a trending (bull/bear) regime instead of adapting direction (a maker gets run over by a directional
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_quote | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| mid_period | integer | no | — |
| spread_lookback | integer | no | — |
| base_spread_pct | number | no | — |
| vol_spread_mult | number | no | — |
| max_levels | integer | no | — |
| slippage_bps | integer | no | — |
| risk | no | — |
Create 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 clears `entry_spread_pct and flat; exits when it reverts to exit_spread_pct`. The simultaneous tw
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_trade | number | yes | — |
| interval_seconds | integer | no | — |
| source_token | string | no | — |
| ema_period | integer | no | — |
| entry_spread_pct | number | no | — |
| exit_spread_pct | number | no | — |
| slippage_bps | integer | no | — |
| risk | no | — |
Create 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; crossing a deeper rung opens a perp long sized usd_per_level at leverage`. PAUSES new rungs in a tren
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_level | number | yes | — |
| interval_seconds | integer | no | — |
| center_price | no | — | |
| center_period | integer | no | — |
| grid_spacing_pct | number | no | — |
| grid_levels | integer | no | — |
| leverage | number | no | — |
| range_tighten | number | no | — |
| volatile_widen | number | no | — |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| slippage_bps | integer | no | — |
| risk | no | — |
Create 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 that makes the book delta-neutral is held separately by the caller) -- flagged `approximate + `fu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| target_token | string | yes | — |
| usd_per_trade | number | yes | — |
| interval_seconds | integer | no | — |
| funding_lookback | integer | no | — |
| min_funding | number | no | — |
| leverage | number | no | — |
| venue | no | — | |
| acknowledge_tier_b | boolean | no | — |
| slippage_bps | integer | no | — |
| risk | no | — |
Status + last execution of one strategy (scoped to the caller's wallet).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
Edit 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 config up on its NEXT tick; a tick already in flight finishes against the config it loaded (it writes only
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
| config_updates | no | — | |
| remove_keys | no | — | |
| risk | no | — | |
| direction_mode | no | — | |
| allow_short | no | — | |
| regime_override | no | — | |
| target_allocation | no | — | |
| interval_seconds | no | — | |
| reason | string | no | — |
Stop a strategy (sets status=stopped; it will not be dispatched again).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
Manually pause a strategy (status=paused_manual; stops dispatch).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
Re-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-CAPABLE strategy (perp_grid / basis_trade / allow_short / short_only) re-runs the perps jurisdiction gate
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | integer | yes | — |
| wallet_address | string | yes | — |
List 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, as before. An unrecognised value falls back to concise (never errors).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| detail | string | no | — |
Keyword 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 context caused tool-selection hallucinations). Pass a keyword or short phrase (e.g. "perp funding rate",
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| caller_id | string | no | — |
| limit | integer | no | — |
Map 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(s) to call, their purpose, key inputs, how to use the output downstream, and the decision points that
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | no | — |
| caller_id | string | no | — |
Record 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 from on-chain-verified fills and marks prices at 1h/24h/7d/30d horizons. idempotency_key makes replays s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| decision_type | string | yes | — |
| rationale | string | yes | — |
| intended_action | string | no | — |
| expectations | no | — | |
| signal_ids | no | — | |
| suggestion_id | no | — | |
| strategy_id | no | — | |
| asset | string | no | — |
| idempotency_key | string | no | — |
| session_id | string | no | — |
| client_platform | string | no | — |
| tx_signature | string | no | — |
| caller_id | string | no | — |
Read 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), source (agent|system|human -- pass source="human" to see only a manual override on this shared account: hu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| window_hours | integer | no | — |
| decision_type | string | no | — |
| strategy_type | string | no | — |
| asset | string | no | — |
| outcome_sign | string | no | — |
| source | string | no | — |
| detail | string | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Your 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 stated expectations vs the realised 24h move) when you journal expectations. Historical performance data ab
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| group_by | string | no | — |
| window_hours | integer | no | — |
| caller_id | string | no | — |
Historical 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, never advice, and nothing is changed by this call (PROPOSE flow: acting on an observation is your call
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| strategy_id | integer | yes | — |
| caller_id | string | no | — |
Build 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 anyone can check it without a Crank account. It also carries a schema.org JSON-LD node so the public
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| decision_id | string | yes | — |
| include_rationale | boolean | no | — |
| caller_id | string | no | — |
Pre-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 about YOUR process -- what your agent decided, that the rationale was written down before the outcome,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| decision_id | string | yes | — |
| platform | string | no | — |
| include_rationale | boolean | no | — |
| caller_id | string | no | — |
Withdraw 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 again, exactly as it was before the first publish. Wallet-scoped like every other Layer 1 tool: you can
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| decision_id | string | yes | — |
| caller_id | string | no | — |
Read 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 across every downstream call instead of being re-supplied ad hoc. has_charter is False when the walle
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Write 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 AgentWallet.evaluate_trade as an ADDITIONAL deny source alongside WalletPolicy.banned_tokens -- an active Wa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| body_markdown | string | no | — |
| risk_band | string | no | — |
| banned_tokens | no | — | |
| target_allocations | no | — | |
| max_position_pct | no | — | |
| cadence | string | no | — |
| escalation_webhook | string | no | — |
| objectives | string | no | — |
| rotate_escalation_secret | boolean | no | — |
| caller_id | string | no | — |
Register (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 YOUR OWN HMAC-SHA256 signing secret (8-128 chars) -- Crank never sends or stores platform key material
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| event_types | array | yes | — |
| url | string | yes | — |
| secret | string | yes | — |
| caller_id | string | no | — |
List a wallet's webhook subscriptions (free read; secrets are never returned).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| caller_id | string | no | — |
Delete one of a wallet's webhook subscriptions (free control-plane write).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| webhook_id | integer | yes | — |
| caller_id | string | no | — |
Fleet-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 carries n (contributing agents), effect_size, a confidence interval, crowding_index, staleness (age and exp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| asset | string | no | — |
| strategy_type | string | no | — |
| insight_type | string | no | — |
| detail | string | no | — |
| caller_id | string | no | — |
Anonymized 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 across the fleet is dropped before it ever reaches this response. Historical collective performance data -
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | no | — |
| window | string | no | — |
| caller_id | string | no | — |
Fleet 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 count n, crowding_index, and staleness. Historical collective performance data aggregated across the fle
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source_type | string | no | — |
| signal_type | string | no | — |
| window | string | no | — |
| caller_id | string | no | — |
Anonymized 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 aggregate effect_size with a confidence interval, and staleness. Filter with min_agents; limit caps t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| min_agents | integer | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Clone-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 the approval trail for templates that came through the propose-and-approve governance path. A templat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_type | string | no | — |
| limit | integer | no | — |
| caller_id | string | no | — |
Propose 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, or modify an existing live template, and never auto-applies anything. pattern_id comes from get_emer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern_id | string | yes | — |
| name | string | no | — |
| description | string | no | — |
| caller_id | string | no | — |
Your 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 journaled decisions genuinely improved the collective intelligence pool: accurate, verifiable, original c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| epoch | string | no | — |
| caller_id | string | no | — |
Ranked 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-shaped plan (conservative | balanced | aggressive). Each directional entry names the exact backtest_st
| Parameter | Type | Required | Notes |
|---|---|---|---|
| intent | string | no | — |
| wallet_address | string | no | — |
| assets | no | — | |
| timeframe | string | no | — |
| caller_id | string | no | — |
Validate 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_social stream may never be the sole entry trigger).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| definition | object | yes | — |
Create 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 config; a paper mode annotation is informational until the managed-signing epic lands). Recommended: run c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| definition | object | yes | — |
| interval_seconds | integer | no | — |
| mode | string | no | — |
| risk | no | — |
Create 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 intent is relayed to the Jito block engine (bundle-only). A failed protected relay is never retried pub
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input_token | string | yes | — |
| output_token | string | yes | — |
| amount | integer | yes | — |
| wallet_address | string | yes | — |
| slippage_bps | no | — | |
| allow_unverified | boolean | no | — |
| caller_id | string | no | — |
| idempotency_key | string | no | — |
| pay_in_crank | boolean | no | — |
| jurisdiction | no | — | |
| ip | string | no | — |
| include_slippage_advisory | boolean | no | — |
| submit_mode | no | — | |
| jito_tip_lamports | no | — |
Read 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 send (may have landed); only CONFIRMED is a verified on-chain success (fail-closed reporting, docs/C
| Parameter | Type | Required | Notes |
|---|---|---|---|
| intent_id | string | yes | — |
| caller_id | string | no | — |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Crank Protocol or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Crank Protocol can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.