Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Crank Protocol

REMOTE · MCP.CRANK.ING · SCANNED AUG 3

Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.

Available components

+4 this week 62 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability56
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 28037 tokens (~167/item across 167 items; 167 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.crank.ing

# add to Claude Code
claude mcp add --transport http ing-crank-crank https://mcp.crank.ing/mcp
# ~/.codex/config.toml
[mcp_servers.ing-crank-crank]
url = "https://mcp.crank.ing/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ing-crank-crank": {
      "type": "remote",
      "url": "https://mcp.crank.ing/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ing-crank-crank --url https://mcp.crank.ing/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ing-crank-crank:
    url: "https://mcp.crank.ing/mcp"
// mcp.json
{
  "mcpServers": {
    "ing-crank-crank": {
      "type": "http",
      "url": "https://mcp.crank.ing/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +3
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1
    • Tool “jupiter_swap” rewrote its description, which is the text the model reads security
    • Server version: 3.4.4 → 3.4.5 functional
    • New tool “list_webhooks” functional
    • New tool “delete_webhook” functional
    • New tool “register_webhook” functional
    • New tool “strategy_modify” functional
    • New tool “verify_transaction” functional
    • “jupiter_swap” added an optional parameter “verify” cosmetic
  • 28 Jul 26 −2
    • Stability: unverified → 0.03 functional
    • Schema quality: fair → poor functional
    • New tool “set_ooda_consent” functional
    • New tool “get_ooda_status” functional
  • 27 Jul 26 58

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.crank.ing/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.crank.ing CN=YE2,O=Let's Encrypt,C=US 9 Jun 2026 7 Sept 2026 ECDSA 256 ECDSA-SHA384 64c05af204b4929dfe98a7c20bd48b38b03
SANs: mcp.crank.ing
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of mcp.crank.ing. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ing. present 27256 8 Verified
crank.ing. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
referrer-policy no-referrer
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.crank.ing/mcp Verified 200
http (plaintext) http://mcp.crank.ing/mcp HTTPS enforced 301 https://mcp.crank.ing/mcp
MCP tools — 167 exposed · ~28,037 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
get_my_performance ~152

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 about your own decisions -- descriptive only, not a recommendation. Workflow: ORIENT step -- read this before sizing or creating strategies.

NameTypeReqDescription
caller_idstring
group_bystring
wallet_addressstringyes
window_hoursinteger

Structured output declared, but exposes no named fields.

No examples provided.

get_onramp_status ~61

Check a pending MoonPay purchase by session_id. Returns status (pending/processing/completed/failed), amount_crypto, and the on-chain tx_signature once settled.

NameTypeReqDescription
caller_idstring
session_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_ooda_status ~136

Wake-on-condition consent + usage status (ENG-8c57afc3). 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. Workflow: status/observe step -- check this to see whether the background worker is watching, and what it did (or skipped) recently.

NameTypeReqDescription
caller_idstring
recent_limitinteger
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_portfolio_charter ~178

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 instead of forgotten between calls (competitors return raw JSON per call and forget everything). has_charter is False when the wallet has not set one yet -- call set_portfolio_charter to create it. Advisory framing only ("objectives"/"parameters", never return targets, hard rules 5-8). Workflow: ORIENT step 0 -- read this FIRST, before get_balances / portfolio_snapshot, so every downstream decision is framed by it.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_quests ~116

Live Crank Score quests + a wallet's progress (FREE read, ENG-b0150c40). 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``.

NameTypeReqDescription
caller_idstring
wallet_addressstring

Structured output declared, but exposes no named fields.

No examples provided.

get_quotes ~124

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`` (ENG-fc290438/ENG-00ebde90, MB#18215) is ADVISORY, never required -- see jupiter_swap.

NameTypeReqDescription
amountintegeryes
caller_idstring
input_tokenstringyes
output_tokenstringyes
slippage_bpsinteger
venue_hint

Structured output declared, but exposes no named fields.

No examples provided.

get_regulatory_updates ~275

Recent regulatory statements affecting Crank's scope (free read, ENG-43ba5e83). 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 ``topics``, and a one-line factual ``summary``; results are ranked by relevance then recency. window_hours bounds the lookback (default 168 = 7 days, capped at 720 = 30 days); min_relevance filters by floor (high/medium/low); agency optionally narrows to one body (SEC, CFTC, FinCEN). Relevance is a compliance-triage signal, not legal advice. Not financial advice. Workflow: INTELLIGENCE / COMPLIANCE step -- check the current regulatory posture around perps, tokenized equities, or agent trading before acting on a strategy.

NameTypeReqDescription
agencystring
caller_idstring
min_relevancestring
window_hoursinteger

Structured output declared, but exposes no named fields.

No examples provided.

get_risk_assessment ~282

Combined regime + risk recommendation 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 advisory assessment: a suggested direction, a conviction-weighted position size already capped to the position guard (in both percent-of-equity and USD notional against ``equity``), a per-regime action note, and the full guard set. strategy_type is one of the 16 Crank strategy types; asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d. Advisory only (DYOR) -- not financial advice, not a managed-account recommendation. No wallet, no fee. Workflow: RISK step -- after backtest_strategy, before execution. The returned suggested_size_usd caps the order in the execute phase; do NOT exceed it. Check asset_classification first (equity -> per-execution confirm). See get_trading_workflow.

NameTypeReqDescription
assetstringyes
caller_idstring
equitynumber
lookback_candlesinteger
strategy_typestringyes
timeframestring

Structured output declared, but exposes no named fields.

No examples provided.

get_score ~162

User-facing Crank Score: rank, multiplier, metrics + quests (FREE, ENG-b0150c40). 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`` with progress. Points come ONLY from costly actions (anti-farm). ``disclaimer``: score MAY inform a future token distribution -- no fixed conversion ratio, no entitlement.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_score_leaderboard ~121

Top-N Crank Score leaderboard (FREE read, ENG-b0150c40). 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.)

NameTypeReqDescription
caller_idstring
limit

Structured output declared, but exposes no named fields.

No examples provided.

get_signal_effectiveness ~187

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, k, crowding_index, and staleness. Historical collective performance data aggregated across the fleet -- descriptive only, never a recommendation or a promise of results. Workflow: INTELLIGENCE step -- weigh a signal by how the FLEET's actions on it have historically resolved, alongside your own get_source_accuracy / get_my_performance track record.

NameTypeReqDescription
caller_idstring
signal_typestring
source_typestring
windowstring

Structured output declared, but exposes no named fields.

No examples provided.

get_signals ~242

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) / ``risk_level`` (none..critical) / ``min_score`` narrow the feed. Unknown filter values are dropped, not errored. Descriptive observed data only -- never a trade instruction. Not financial advice. Workflow: INTELLIGENCE step -- pair with get_market_briefing (macro) and get_token_risk_assessment (per-token safety roll-up) before sizing.

NameTypeReqDescription
caller_idstring
include_expiredboolean
limitinteger
min_score
risk_levelstring
signal_typestring
subjectstring
tierstring

Structured output declared, but exposes no named fields.

No examples provided.

get_social_sends ~42

A wallet's social token sends (newest first; no claim-code secrets).

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_source_accuracy ~247

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, correct/incorrect counts, and accuracy_pct; sources with no resolved calls yet are omitted, and results are ranked by longest-window accuracy. windows optionally narrows the periods (subset of [7,30,90]); source_type optionally filters by source kind (youtube, rss, api, on_chain). Accuracy = the directional call vs the realised Birdeye price over the prediction window. Past accuracy is not a guarantee. Not financial advice. Workflow: INTELLIGENCE step -- pair with get_market_briefing to discount or trust a signal by its source's track record before sizing a position.

NameTypeReqDescription
caller_idstring
source_typestring
windows

Structured output declared, but exposes no named fields.

No examples provided.

get_source_weights ~143

Source-effectiveness weight table (free read; ENG-bfb7ace4). 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 k-anonymous insights, and the combined weighted value the composite effectiveness_weighted transform consumes. Historical grading statistics only -- descriptive, never advice. Not financial advice. Workflow: COMPOSE step -- read alongside list_signal_catalog to pick streams with a real graded track record before authoring a definition.

NameTypeReqDescription
caller_idstring

Structured output declared, but exposes no named fields.

No examples provided.

get_strategy_leaderboard ~176

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 with fewer than 25 contributing cohorts (the k-anonymity granular floor) is dropped before it ever reaches this response. Historical collective performance data -- descriptive only, never a recommendation or a promise of results. Workflow: INTELLIGENCE step -- compare a strategy_type's own parameter choices against fleet-wide observed outcomes before adjusting via suggest_parameter_adjustment / the strategy tools.

NameTypeReqDescription
caller_idstring
strategy_typestring
windowstring

Structured output declared, but exposes no named fields.

No examples provided.

get_strategy_suggestions ~204

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 tools (your wallet policy and the engine's risk / conflict / guardrail gates still apply), or approve it in the app. ``status`` filters proposed|approved|dismissed|executed|expired|all. Informational descriptions of observed data only. Not financial advice. Workflow: INTELLIGENCE -> DECIDE step -- review suggestions, then pair with backtest_strategy + get_risk_assessment before any create call.

NameTypeReqDescription
assetstring
caller_idstring
limitinteger
statusstring

Structured output declared, but exposes no named fields.

No examples provided.

get_support_dashboard ~78

Support desk metrics: open count, avg response/resolution time, breakdowns. Read-only. Returns totals, open/resolved/unassigned counts, resolution rate, avg first-response + resolution seconds, by-status/category/priority maps, and a 14-day created-ticket trend. Mirrors the backoffice dashboard.

NameTypeReqDescription
caller_idstring

Structured output declared, but exposes no named fields.

No examples provided.

get_support_ticket ~59

Full support-ticket detail with the conversation thread. Read-only. ticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).

NameTypeReqDescription
caller_idstring
ticket_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_technology_updates ~318

Recent technology / tooling developments relevant to Crank + Engaij (free read, ENG-565c74a9). 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 parent automation platform). Each update carries ``category`` (sdk_release / api_change / competitor / regulatory / research / tooling), ``relevance_to_crank`` and ``relevance_to_engaij`` (high/medium/low/none), a concrete ``application_recommendation`` (what to do about it), title, url, and a one-line ``summary``; results are ranked by relevance then recency. window_hours bounds the lookback (default 168 = 7 days, capped at 720 = 30 days); min_relevance filters by floor (high/medium/low); category optionally narrows to one kind. A triage signal, not advice. Not financial advice. Workflow: INTELLIGENCE step -- scan for SDK / API releases, competitor moves, or tooling worth adopting before planning integration or strategy work.

NameTypeReqDescription
caller_idstring
categorystring
min_relevancestring
window_hoursinteger

Structured output declared, but exposes no named fields.

No examples provided.

get_token_classification ~166

Standardised tokenized-stock classification for a mint or symbol (ENG-b34b5493). 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_verified_at. FAIL-SAFE: a registered but unscored token, an inactive token, or an unregistered token reports tradeable=false. trade_equity enforces this same composite risk.

NameTypeReqDescription
caller_idstring
mint_or_symbolstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_token_risk_assessment ~179

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). Descriptive observed data only. Not financial advice. Workflow: INTELLIGENCE / RISK step -- run before quoting or sizing an unfamiliar token; a critical safety signal is a hard skip condition.

NameTypeReqDescription
caller_idstring
limitinteger
subjectstringyes
window_hoursinteger

Structured output declared, but exposes no named fields.

No examples provided.

get_trading_workflow ~280

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 branch the flow -- so an agent that discovered Crank via tools/list can sequence the ~70 tools instead of guessing. Advisory only (DYOR); only execute-phase tools are value-bearing. wallet_address (optional, PUBLIC key only -- non-custodial): when given, appends ``human_activity`` -- count + most-recent manual override on this shared account in the last 72h (decision_type, asset, rationale summary, timestamp) plus an instruction to reconcile with it before acting. Human and agents act on ONE account: every human action is journaled (see journal_query source="human") so it is never invisible to you. Absent/clean (``{"count": 0}``) when there is no override.

NameTypeReqDescription
caller_idstring
wallet_addressstring

Structured output declared, but exposes no named fields.

No examples provided.

get_transaction_history ~49

Recent transactions for a wallet, parsed + human-readable (limit 1-100).

NameTypeReqDescription
caller_idstring
limitinteger
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_usage_report ~86

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).

NameTypeReqDescription
caller_idstring
periodstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_venue_health ~154

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) -- run before any perps/lending leg; degraded/down reroutes or blocks the order. See get_trading_workflow.

NameTypeReqDescription
caller_idstring
venuestringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_venue_risk_score ~112

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.

NameTypeReqDescription
caller_idstring
venuestringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_venue_status ~64

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.

NameTypeReqDescription
caller_idstring

Structured output declared, but exposes no named fields.

No examples provided.

go_live_status ~248

Live go-live posture + S1-S6 runbook stage readout (ENG-88a87e5d). The single documented gated config surface (MB#20378 D2, follow-up to ENG-b936ca31): renders the ENTIRE go-live flip state -- cluster, RPC host (bare hostname, never an api key or query string), paper-trading + soft- launch guards, both technology-service-fee rails (x402 + Jupiter swap fee), MoonPay environment, and multi-venue perps posture -- read fresh from config on every call (an admin can flip an env var and the very next call reflects it, no redeploy needed). ``stages`` is an ordered S1-S6 readout of the go-live runbook derived purely from that posture, each ``{stage, label, satisfied, blocking}`` -- the primary verification instrument for every runbook stage (verify-runtime-behaviour-not-config). FREE read, never gated (never in x402 PAID_TOOLS): booleans/counts/hosts only, no secret ever leaves this tool.

NameTypeReqDescription
caller_idstring

Structured output declared, but exposes no named fields.

No examples provided.

journal_append ~285

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 safe (offline queues / batch agents). Link evidence via signal_ids / suggestion_id / strategy_id (your own strategies only). Autonomous strategy executions are journaled for you automatically -- use this to add the agent-authored layer on top. Workflow: DECIDE step -- journal before (or as) you act; query it back with journal_query / get_my_performance.

NameTypeReqDescription
assetstring
caller_idstring
client_platformstring
decision_typestringyes
expectations
idempotency_keystring
intended_actionstring
rationalestringyes
session_idstring
signal_ids
strategy_id
suggestion_id
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

journal_query ~267

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: human and agents act on ONE account, and every human action is journaled so agents can see and reconcile with it). Every returned row carries its source. detail=concise returns id/type/timestamp/pnl rows (token-budget friendly); detail=full adds bodies, evidence refs, and full outcome marks. Workflow: ORIENT step -- recall what you decided (and what a human may have overridden) before deciding again.

NameTypeReqDescription
assetstring
caller_idstring
decision_typestring
detailstring
limitinteger
outcome_signstring
sourcestring
strategy_typestring
wallet_addressstringyes
window_hoursinteger

Structured output declared, but exposes no named fields.

No examples provided.

jupiter_swap ~639

Execute a token swap via Jupiter (non-custodial). Without signed_transaction: returns an UNSIGNED base64 transaction for your wallet to sign + broadcast. With signed_transaction: broadcasts the caller-signed tx and returns tx_signature. amount is in base units of input_token. Includes the Crank 0.75% technology service fee when a referral fee account is configured -- collected ON-CHAIN via Jupiter's platformFeeBps (MB#13601), deducted from swap output. Swaps are NOT additionally gated by x402 (ENG-1521ec28: that would double-charge the same fee); payment_header/pay_in_crank are accepted for API symmetry with other tools but are no-ops here since jupiter_swap is not in x402 PAID_TOOLS. SECURITY: the output_token is run through multi-layer authenticity verification before any tx is built; an unverified/suspicious/fake token is blocked (UNVERIFIED_TOKEN). Set allow_unverified=true to trade an unverified token at your own risk (hard scam signals are never overridable). ``venue_hint`` (ENG-fc290438/ENG-00ebde90, MB#18215) is ADVISORY, never required -- spot routes via Jupiter aggregation (the only spot venue today); an unknown hint raises, omitting it is unchanged from before. Workflow: EXECUTE step -- deploy the directional/allocation leg after the risk phase capped the size. Non-custodial. Get a price first with get_quotes. See get_trading_workflow. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying the SAME call (build or broadcast) with the same key + same args replays the original result instead of re-executing -- guards against a timeout-then-retry double-swap. Reuse the SAME key across the build call and its signed_transaction broadcast retry (they dedupe independently); a NEW key means a genuinely new swap. ``verify`` (ENG-df8afe93, default True): when broadcasting (signed_transaction supplied), await on-chain confirmation and re-read the output_token balance -- the response gains a ``verification`` block ({confirmed, slot, pos…

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
idempotency_keystring
input_tokenstringyes
output_tokenstringyes
pay_in_crankboolean
payment_headerstring
signed_transaction
slippage_bpsinteger
venue_hint
verifyboolean
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

kill_wallet ~71

Emergency freeze a managed 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.)

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

lend_borrow ~231

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`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-borrowing.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
borrow_tokenstringyes
caller_idstring
collateral_tokenstringyes
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
protocolstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

lend_deposit ~283

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. Marginfi needs marginfi_account (create via the sidecar). Past the daily free tier an x402 payment_header is required. The deposited token is authenticity-verified first; set allow_unverified=true to supply an unverified token at own risk. Workflow: EXECUTE step (yield leg) -- supply idle stables/tokens after comparing get_lending_rates; monitor with get_health_factor. See get_trading_workflow. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-depositing.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
protocolstringyes
tokenstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

lend_repay ~174

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`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-repaying.

NameTypeReqDescription
amountintegeryes
caller_idstring
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
protocolstringyes
tokenstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

leverage_close ~169

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. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-unwinding the position.

NameTypeReqDescription
caller_idstring
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
position_idintegeryes
slippage_bpsinteger
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

leverage_long ~260

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 payment_header is required. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-opening the leveraged position.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
protocolstring
slippage_bpsinteger
stable_token
target_leveragenumberyes
tokenstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

liquid_stake ~246

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 comparing get_lst_yields. Non-custodial. Monitor via portfolio_snapshot. See get_trading_workflow. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-staking.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
idempotency_keystring
pay_in_crankboolean
payment_headerstring
protocolstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

list_session_signers ~41

List all delegated session signers (active + revoked) for a wallet.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

list_signal_catalog ~176

Catalog of every available signal stream (free read; ENG-5029a312). 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 evaluation count + correct rate) and a gameability class (social streams rank high -- they carry anti-gaming caps). Descriptive historical data only. Not financial advice. Workflow: COMPOSE step -- enumerate streams before authoring a composite strategy definition; pair with get_signals to inspect a stream's feed.

NameTypeReqDescription
caller_idstring
include_inactiveboolean

Structured output declared, but exposes no named fields.

No examples provided.

list_support_tickets ~131

List/filter Crank support tickets (newest first). Read-only. Filters (all optional): status (open|in_progress|waiting_on_user|resolved| closed), priority (low|normal|high|urgent), category (billing|technical| feature_request|general), search (matches ticket number/subject/requester email+name/wallet). Returns {count, tickets[]}.

NameTypeReqDescription
caller_idstring
categorystring
limitinteger
prioritystring
searchstring
statusstring

Structured output declared, but exposes no named fields.

No examples provided.

list_webhooks ~40

List a wallet's webhook subscriptions (free read; secrets are never returned).

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

lst_swap ~228

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 risk. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-swapping.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
from_lststringyes
idempotency_keystring
pay_in_crankboolean
payment_headerstring
to_lststringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

note_create ~111

Append an internal-only note to a support ticket (ENG-69d5785b). Agent-side context: records an internal SupportMessage (is_internal_note=True) that is NEVER emailed to the requester, and leaves the ticket status unchanged. ticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).

NameTypeReqDescription
bodystringyes
caller_idstring
sender_namestring
ticket_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

offramp_to_fiat ~196

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`` (ENG-ac7961aa, optional): a client-generated UUID. Retrying with the same key + same args replays the original result (same offramp_id) instead of creating a second MoonPay sell order.

NameTypeReqDescription
amountnumberyes
caller_idstring
destinationstringyes
idempotency_keystring
pay_in_crankboolean
payment_headerstring
tokenstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_close ~181

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. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-closing the position.

NameTypeReqDescription
caller_idstring
close_pctnumber
idempotency_keystring
marketstringyes
pay_in_crankboolean
payment_headerstring
position_id
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_funding_rates ~68

Current funding for a perp market (rate, period, last funding timestamp). market e.g. SOL-PERP. period is informational (1h/8h/24h).

NameTypeReqDescription
caller_idstring
marketstringyes
periodstring

Structured output declared, but exposes no named fields.

No examples provided.

perp_funding_rates_all ~42

Normalized funding/borrow rates across venues (venue=None aggregates).

NameTypeReqDescription
caller_idstring
market
venue

Structured output declared, but exposes no named fields.

No examples provided.

perp_markets ~32

Available Drift perp markets with price, open interest, funding, max leverage.

NameTypeReqDescription
caller_idstring

Structured output declared, but exposes no named fields.

No examples provided.