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
perp_markets_all ~37

Perp markets across venues (venue=None aggregates all routable venues).

NameTypeReqDescription
caller_idstring
venue

Structured output declared, but exposes no named fields.

No examples provided.

perp_modify ~203

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

NameTypeReqDescription
add_collateral
caller_idstring
idempotency_keystring
new_leverage
new_sl
new_tp
order_idintegeryes
pay_in_crankboolean
payment_headerstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_open_long ~248

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 advisory in the build — place them as trigger orders after the position opens. The fee is charged on size_usd notional past the daily free tier (x402 payment_header). ``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 position.

NameTypeReqDescription
allow_unverifiedboolean
caller_idstring
idempotency_keystring
leveragenumberyes
marketstringyes
pay_in_crankboolean
payment_headerstring
size_usdnumberyes
stop_loss_price
take_profit_price
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_open_short ~147

Open a leveraged SHORT perp position on Drift (non-custodial). Same envelope as perp_open_long, opposite direction. ``idempotency_key`` (ENG-7ded4fb8, optional): see perp_open_long.

NameTypeReqDescription
allow_unverifiedboolean
caller_idstring
idempotency_keystring
leveragenumberyes
marketstringyes
pay_in_crankboolean
payment_headerstring
size_usdnumberyes
stop_loss_price
take_profit_price
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_positions ~64

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.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

perp_positions_all ~53

Open perp positions for a wallet. venue=None aggregates across venues. Each position carries its venue + custody_tier.

NameTypeReqDescription
caller_idstring
venue
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

place_perp_order ~364

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_tier / settlement_token. Tier B (venue-custodied) venues require acknowledge_tier_b=true after reviewing custody_disclosure. Fee charged on size_usd notional past the daily free tier (x402). Workflow: EXECUTE step (leveraged directional leg) -- after get_venue_health / get_venue_risk_score clear the venue and get_risk_assessment caps the size. Monitor via perp_positions. 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-opening the order.

NameTypeReqDescription
acknowledge_tier_bboolean
caller_idstring
idempotency_keystring
leveragenumberyes
limit_price
marketstringyes
order_typestring
pay_in_crankboolean
payment_headerstring
sidestringyes
size_usdnumberyes
stop_loss_price
take_profit_price
venue
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

poll_agent_wallet_enable ~108

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.

NameTypeReqDescription
caller_idstring
device_codestringyes

Structured output declared, but exposes no named fields.

No examples provided.

poll_wallet_policy_loosening ~60

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.

NameTypeReqDescription
caller_idstring
device_codestringyes

Structured output declared, but exposes no named fields.

No examples provided.

portfolio_snapshot ~84

Full portfolio summary: positions, total value, allocation %, 24h change. Persisted as a PortfolioSnapshot for historical tracking. Workflow: ORIENT step -- the denominator for position sizing. Call before intelligence/risk so sizes are net of current holdings. See get_trading_workflow.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

propose_allocation ~205

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_strategy args to validate it BEFORE deploying, plus the follow-up tool that would act on it. Descriptive analytics only -- never advice, never a promise of results; nothing is executed. Workflow: INTELLIGENCE/ANALYSIS step -- call after get_market_briefing and before backtest_strategy / get_risk_assessment / strategy_*_create.

NameTypeReqDescription
assets
caller_idstring
intentstring
timeframestring
wallet_addressstring

Structured output declared, but exposes no named fields.

No examples provided.

publish_strategy ~170

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 excluded (MB#13761). Read/control-plane, free.

NameTypeReqDescription
anonymousboolean
author_wallet_addressstring
backtest_run_id
caller_idstring
config_templateobjectyes
descriptionstring
namestringyes
performance_summary
strategy_typestringyes

Structured output declared, but exposes no named fields.

No examples provided.

register_agent ~183

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.

NameTypeReqDescription
a2a_card_urlstring
caller_idstring
capabilities
contactstring
descriptionstring
display_namestring
mcp_endpointstring
supported_protocols
versionstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

register_integrator ~112

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 via ``set_integrator_share`` (anti-gaming whitelist). Idempotent on ``wallet_address``. Returns the integrator stats.

NameTypeReqDescription
agent_idstring
caller_idstring
contact_emailstring
namestring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

register_referrer ~80

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.

NameTypeReqDescription
caller_idstring
integrator_wallet_addressstringyes
referred_wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

register_webhook ~215

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 here (hard rule 1); you use it to verify the `X-Crank-Signature` header on every delivered event (see docs/WEBHOOKS.md). Re-registering the same (wallet_address, url) pair updates its event_types/secret and reactivates it if it was auto-disabled after repeated delivery failures.

NameTypeReqDescription
caller_idstring
event_typesarrayyes
secretstringyes
urlstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

reply_to_ticket ~114

Reply to a support ticket — emails the requester (SendGrid) + threads it. Records the outbound message and advances status (open/waiting -> in_progress, or waiting_on_user when set_waiting). The message is persisted even if email delivery fails; the returned ``email_sent`` reflects the delivery attempt.

NameTypeReqDescription
caller_idstring
messagestringyes
sender_namestring
set_waitingboolean
ticket_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

request_wallet_policy_loosening ~101

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.

NameTypeReqDescription
caller_idstring
policiesarrayyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

revoke_session_signer ~90

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 (ENG-39ec13bf).

NameTypeReqDescription
caller_idstring
signer_pubkeystringyes

Structured output declared, but exposes no named fields.

No examples provided.

send_token_social ~309

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). Whoever presents the code claims the tokens and binds ``referral`` on their first claim. ``expiry_days`` (optional, default 7, range 1-90) sets the claim window; unclaimed tokens are returned to the sender after expiry. Anti-abuse gated: sender account age, verified wallet, per-sender daily limit. platform: x. ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result (same claim_code/link) instead of locking a second escrow.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
expiry_days
idempotency_keystring
platformstring
recipient_handlestringyes
referralstring
sender_walletstringyes
tokenstringyes

Structured output declared, but exposes no named fields.

No examples provided.

set_alert ~132

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. Workflow: MONITOR step -- arm after executing so a tripped level loops you back to the risk/execute phase. See get_trading_workflow.

NameTypeReqDescription
alert_typestringyes
caller_idstring
thresholdnumberyes
tokenstringyes
wallet_addressstringyes
webhook_url

Structured output declared, but exposes no named fields.

No examples provided.

set_integrator_share ~157

ADMIN-GATED: approve an integrator and set its fee-share (0-20%). Validates ``share_bps`` against the per-leg ceiling (integrator_max_share_bps) AND the combined stacking guard (referral + clone + integrator <= max_total_share_bps, so Crank keeps >=40% of every net fee). A breach is REJECTED, never silently clamped. Setting a share on a PENDING integrator also approves it. Requires a valid ``admin_secret`` (CRANK_ADMIN_SECRET).

NameTypeReqDescription
admin_secretstring
caller_idstring
integrator_wallet_addressstringyes
share_bpsintegeryes

Structured output declared, but exposes no named fields.

No examples provided.

set_liquidation_alert ~183

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 deteriorating obligation loops you back to repay/de-risk. Pairs with get_health_factor. See get_trading_workflow.

NameTypeReqDescription
caller_idstring
marginfi_account
market
protocolstringyes
thresholdnumberyes
wallet_addressstringyes
webhook_url

Structured output declared, but exposes no named fields.

No examples provided.

set_ooda_consent ~184

Opt in/out of the wake-on-condition worker (ENG-8c57afc3). Default OFF. When opted in, a triggered alert may run a metered background check (Haiku triage, escalating to Sonnet 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 wake history including skipped wakes. Workflow: consent step -- run once (or to change budget) before wakes can fire; check get_ooda_status afterward to confirm state.

NameTypeReqDescription
caller_idstring
daily_wake_budget
opted_inbooleanyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

set_permission_mode ~173

Change a managed 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 mutating tool outright, PERMISSION_MODE_BLOCKED) | propose (mutating tools return a PROPOSAL envelope -- proposal_id + params + summary -- instead of executing; approve within the TTL via approve_proposal) | auto_within_policy (execute immediately, still capped by every configured WalletPolicy -- the pre-R9 default). Also settable inline via set_wallet_policy's permission_mode param. The transition is logged as an AgentTransaction audit row.

NameTypeReqDescription
caller_idstring
modestringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

set_portfolio_charter ~293

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 WalletPolicy always wins when it is the stricter rule; a charter can never loosen an existing policy, and a conflict comes back in the response's `warnings` (logged server-side, never silently dropped). target_allocations is {token: percent}, must sum to <=100. objectives/cadence are free-form parameters -- never phrase them as return promises (hard rules 5-8). Workflow: ORIENT step 0 -- set once at the start of a relationship with an agent/wallet; strategies read it on every execute_strategy tick (see get_trading_workflow).

NameTypeReqDescription
banned_tokens
body_markdownstring
cadencestring
caller_idstring
escalation_webhookstring
max_position_pct
objectivesstring
risk_bandstring
target_allocations
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

set_ticket_priority ~67

Set a support ticket's priority (ENG-69d5785b). priority: low|normal|high|urgent. Metadata-only -- no email, no status change.

NameTypeReqDescription
caller_idstring
prioritystringyes
ticket_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

set_wallet_policy ~223

Configure trading limits and rules on a managed 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_per_day"} | venue_allowlist {"venues"}. Upserts by policy_type; returns the full updated policy set. (Perp leverage cap is a separate follow-up, ENG-f3aacdf1 -- not a policy_type here.) On a Lane 2 wallet, a change that would LOOSEN a server-enforced default raises BROWSER_CONFIRMATION_REQUIRED -- call request_wallet_policy_loosening instead (ENG-45e5ea07).

NameTypeReqDescription
caller_idstring
policiesarrayyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

short_close ~178

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. ``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 short.

NameTypeReqDescription
buy_with_amount
caller_idstring
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
short_idintegeryes
slippage_bpsinteger
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

short_open ~264

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

NameTypeReqDescription
allow_unverifiedboolean
borrow_amountintegeryes
caller_idstring
collateral_amountintegeryes
collateral_tokenstringyes
idempotency_keystring
marginfi_account
market
pay_in_crankboolean
payment_headerstring
protocolstring
slippage_bpsinteger
token_to_shortstringyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

short_status ~37

List open shorts for a wallet with entry price + health factor.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

sr_backtest ~298

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_date ISO-8601. Returns the standard performance metrics plus persisted SUPPORT_RESISTANCE signals carrying zone metadata. Read-only simulation -- no fee, no on-chain action, not financial advice (DYOR). Workflow: SIMULATE step -- validate an S/R setup on history before risking capital; feeds get_risk_assessment -> sr_configure_strategy. See get_trading_workflow.

NameTypeReqDescription
assetstringyes
caller_idstring
end_datestringyes
fee_bpsinteger
initial_capitalnumber
params
slippage_bpsinteger
slippage_modelstring
sr_config
start_datestringyes
strategy_typestring
timeframestringyes
wallet_addressstring

Structured output declared, but exposes no named fields.

No examples provided.

sr_configure_strategy ~219

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 strategy is refused. Strategies without an `sr` block behave exactly as before (back-compat). User/agent-owned configuration only: you own and control the strategy; the platform never exercises discretion (DYOR). No key handling, no fee. Workflow: DECIDE step -- after sr_detect_levels + sr_backtest confirm the level picture, store the tuned config on the strategy. See get_trading_workflow.

NameTypeReqDescription
caller_idstring
sr_configobjectyes
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

sr_detect_levels ~327

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 default ["1h","4h","1d"]; lookback candles per timeframe (capped at 500); sources subset of swing / pivot / fibonacci / volume_profile / price_impact / manual; sensitivity 0-1 (higher = more zones); zone_width_bps sets the band half-width; manual_levels adds caller-supplied override prices. Returns zones (supports / resistances / pivots with price, band, strength, touches, sources, timeframes) plus liquidity_bands. Computed reference levels only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action. Workflow: INTELLIGENCE step -- the level picture behind sr_backtest + sr_configure_strategy; pair with get_indicators + detect_regime. See get_trading_workflow.

NameTypeReqDescription
assetstringyes
caller_idstring
lookbackinteger
manual_levels
sensitivitynumber
sources
timeframes
zone_width_bpsinteger

Structured output declared, but exposes no named fields.

No examples provided.

strategy_arb_create ~237

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 two-venue fill is collapsed to one leg (flagged ``approximate``). Market-neutral: no direction params exposed (regime is read directly, not adapted). ``risk``: see ``strategy_dca_create``.

NameTypeReqDescription
ema_periodinteger
entry_spread_pctnumber
exit_spread_pctnumber
interval_secondsinteger
risk
slippage_bpsinteger
source_tokenstring
target_tokenstringyes
usd_per_tradenumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_basis_trade_create ~303

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`` + ``funding_not_modeled`` (funding PnL itself is not simulated live). While funding is favourable (> ``min_funding``) and flat, opens the short sized ``usd_per_trade`` at ``leverage``; closes when funding decays to <= ``min_funding``. Only an asset with a mapped perp market (currently SOL) can open. A Tier B (custodied) venue needs ``acknowledge_tier_b=true``. ``risk``: see ``strategy_dca_create``.

NameTypeReqDescription
acknowledge_tier_bboolean
funding_lookbackinteger
interval_secondsinteger
leveragenumber
min_fundingnumber
risk
slippage_bpsinteger
target_tokenstringyes
usd_per_tradenumberyes
venue
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_cancel ~41

Stop a strategy (sets status=stopped; it will not be dispatched again).

NameTypeReqDescription
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_composite_create ~151

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 advisory until the managed-signing epic lands). Recommended: run compose_strategy + backtest_strategy on the definition FIRST -- historical results are not predictive; DYOR.

NameTypeReqDescription
definitionobjectyes
interval_secondsinteger
modestring
risk
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_copy_wallet_create ~202

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`` / direction params: see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
interval_secondsinteger
regime_override
risk
size_multipliernumber
slippage_bpsinteger
source_tokenstring
target_tokenstringyes
tracked_wallet
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_dca_create ~320

Create a dollar-cost-average strategy buying ``usd_per_buy`` of target each interval. ``risk`` (optional) overrides the safe-default risk limits (ENG-b2c60329): ``max_position_pct`` / ``max_portfolio_exposure_pct`` / ``max_single_loss_pct`` / ``max_drawdown_pct`` / ``max_daily_loss_pct`` (percent; <=0 disables a guard). Direction (ENG-bd44b1b7, optional, all advisory -- DYOR): ``direction_mode`` (auto | long_only | short_only | manual; default auto = follow the market regime, reducing exposure in a bear instead of accumulating), ``allow_short`` (enable real shorts via the Drift perps venue), ``regime_override`` (force bull | bear | range | volatile instead of trusting detection). Workflow: EXECUTE step -- stand up a recurring strategy after backtest_strategy validates it and get_risk_assessment sets the guards; track via strategy_status. A managed wallet without a Turnkey signer = paper-trade (unsigned tx per tick). See get_trading_workflow.

NameTypeReqDescription
allow_short
direction_mode
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
smartboolean
source_tokenstring
target_tokenstringyes
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_equity_dca_create ~251

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 (ENG-6f4d3513): DCA is a MECHANICAL, user-configured strategy (not discretionary), so it stays autonomous even on a security target -- the per-execution confirmation gate only applies to the discretionary types (momentum / sentiment). Equity classification still drives geo-gating + disclaimers at execution; call asset_classification / get_disclaimers first. ``risk`` / direction params: see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
smartboolean
source_tokenstring
target_tokenstringyes
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_hedge_create ~219

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`` / ``trailing`` must be set.

NameTypeReqDescription
allow_short
direction_mode
entry_price
interval_secondsinteger
position_amountintegeryes
regime_override
risk
slippage_bpsinteger
source_tokenstring
stop_loss_pct
take_profit_pct
target_tokenstringyes
trailingboolean
trailing_distance_pct
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_list ~28

List a wallet's strategies (newest first, capped).

NameTypeReqDescription
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_market_make_create ~241

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 move) -- read directly inside the executor, so no direction params are exposed here. ``risk``: see ``strategy_dca_create``.

NameTypeReqDescription
base_spread_pctnumber
interval_secondsinteger
max_levelsinteger
mid_periodinteger
risk
slippage_bpsinteger
source_tokenstring
spread_lookbackinteger
target_tokenstringyes
usd_per_quotenumberyes
vol_spread_multnumber
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_modify ~598

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 runtime state, never config, so the two can never clobber each other). Scoped to the caller's own wallet (hard rule 1 -- non-custodial: this edits a row the owner already controls; nothing here holds keys, signs or moves funds). Args (all optional -- supply at least one): ``config_updates``: strategy-config keys to set, merged over the existing config (e.g. ``{"usd_per_buy": 25, "stop_loss_pct": 0.08}``). ``remove_keys``: config keys to drop back to the executor's default. ``risk``: retune the risk limits -- ``max_position_pct`` / ``max_portfolio_exposure_pct`` / ``max_single_loss_pct`` / ``max_drawdown_pct`` / ``max_daily_loss_pct`` (percent; <=0 disables a single guard). ``direction_mode`` / ``allow_short`` / ``regime_override``: the direction controls from the create tools (advisory -- DYOR). ``target_allocation``: new mint->weight basket (rebalance / vault / yield_farm). ``interval_seconds``: new tick interval, used from the next tick on. ``reason``: free text recorded on the strategy's audit log. REFUSED (returns ``immutable_config_key``): ``target_token`` / ``source_token`` / ``tracked_wallet`` / ``venue`` / composite ``definition``. These define WHAT the strategy trades -- editing them in place would desync the executor's position bookkeeping or strand an open perp leg on the venue it was opened against. Cancel and create a new strategy for those. A STOPPED strategy is final and cannot be modified; a paused one can (the edit does not resume it -- use strategy_resume). The merged config is dry-run through the strategy's exec…

NameTypeReqDescription
allow_short
config_updates
direction_mode
interval_seconds
reasonstring
regime_override
remove_keys
risk
strategy_idintegeryes
target_allocation
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_momentum_create ~227

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, ENG-6f4d3513): 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 ``user_confirmed=True``; crypto targets stay fully autonomous). Call asset_classification first. ``risk`` / direction params: see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
fastinteger
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
slowinteger
source_tokenstring
target_tokenstringyes
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_pause ~38

Manually pause a strategy (status=paused_manual; stops dispatch).

NameTypeReqDescription
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_perp_grid_create ~341

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 trending (bull/bear) regime and closes the ladder in a bear (stop the bleed); tightens spacing in range, widens when volatile. Only an asset with a mapped perp market (currently SOL) can open -- see get_venue_status for routable markets. ``venue`` optional (defaults to the configured primary); a Tier B (custodied) venue needs ``acknowledge_tier_b=true`` after reviewing its ``custody_disclosure``. ``risk``: see ``strategy_dca_create``.

NameTypeReqDescription
acknowledge_tier_bboolean
center_periodinteger
center_price
grid_levelsinteger
grid_spacing_pctnumber
interval_secondsinteger
leveragenumber
range_tightennumber
risk
slippage_bpsinteger
target_tokenstringyes
usd_per_levelnumberyes
venue
volatile_widennumber
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.