Crank Protocol
REMOTE · MCP.CRANK.ING
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
Available components
Last scanned (4 hours ago)
Scores higher than 69% of remote servers
Unreachable for 1 day in a row. Last reached 4 Nov 2026.
Category Crypto and Web3
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 → Why this is hard to score →
Endpoint Security11
- TLS not yet verified: we couldn't open a connection to check the certificate. View diagnostics → Unverified
- Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS not yet verified: we couldn't read the response headers to check for it. View diagnostics → Unverified
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability0
- Transport check failed: declared streamable-http, but we couldn't connect to verify it. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability0
- Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
- Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
- Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified
Unverified: 5 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
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.
- 5 Nov 26 0
- Endpoint reachability: reachable → unreachable ▼ security
- Stability: fail → unverified ▼ security
- Authorization: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- TLS certificate: pass → unverified ▼ security
- HSTS header: pass → unverified ▼ security
- Transport: pass → fail ▼ security
- Schema quality: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 19 Oct 26 0
- Tool “get_my_contribution_score” rewrote its description, which is the text the model reads security
- 18 Oct 26 −1
- Stability: pass → fail ▼ security
- Tool “fund_wallet” was removed ▼ security
- Tool “get_onramp_status” was removed ▼ security
- Tool “offramp_to_fiat” was removed ▼ security
- Tool “declare_jurisdiction” rewrote its description, which is the text the model reads security
- Tool “perp_markets” rewrote its description, which is the text the model reads security
- Server version: 3.4.8 → 3.4.9 functional
- “declare_jurisdiction” added an optional parameter “accepted_terms” cosmetic
- “declare_jurisdiction” added an optional parameter “terms_version” cosmetic
- 16 Oct 26 0
- Tool “cancel_perp_order” rewrote its description, which is the text the model reads security
- Tool “close_perp_position” rewrote its description, which is the text the model reads security
- Tool “jupiter_swap” rewrote its description, which is the text the model reads security
- Tool “place_perp_order” rewrote its description, which is the text the model reads security
- Tool “pledge_to_ilo” rewrote its description, which is the text the model reads security
- Tool “set_permission_mode” rewrote its description, which is the text the model reads security
- Tool “set_perp_tpsl” rewrote its description, which is the text the model reads security
- New tool “poll_permission_mode_change” functional
- New tool “request_permission_mode_change” functional
- “cancel_perp_order” added an optional parameter “simulate” cosmetic
- “close_perp_position” added an optional parameter “simulate” cosmetic
- “jupiter_swap” added an optional parameter “simulate” cosmetic
- “place_perp_order” added an optional parameter “simulate” cosmetic
- “set_perp_tpsl” added an optional parameter “simulate” cosmetic
- 15 Oct 26 0
- New tool “get_rate_limits” functional
- 10 Oct 26 0
- Tool “create_agent_wallet” rewrote its description, which is the text the model reads security
- Tool “create_execution_intent” rewrote its description, which is the text the model reads security
- Tool “get_integrator_earnings” rewrote its description, which is the text the model reads security
- Tool “get_integrator_stats” rewrote its description, which is the text the model reads security
- Tool “jupiter_swap” rewrote its description, which is the text the model reads security
- Tool “register_counterparty_set” rewrote its description, which is the text the model reads security
- New tool “pause_wallet” functional
- New tool “resume_wallet” functional
- “create_agent_wallet” added an optional parameter “policy_preset” cosmetic
- “create_agent_wallet” added an optional parameter “unlimited” cosmetic
- “create_execution_intent” added an optional parameter “jito_tip_lamports” cosmetic
- “create_execution_intent” added an optional parameter “submit_mode” cosmetic
- “jupiter_swap” added an optional parameter “jito_tip_lamports” cosmetic
- “jupiter_swap” added an optional parameter “mev_fallback_public” cosmetic
- “jupiter_swap” added an optional parameter “submit_mode” cosmetic
- 2 Oct 26 0
- Tool “get_ilo_adoption_status” rewrote its description, which is the text the model reads security
- Tool “perp_positions_all” rewrote its description, which is the text the model reads security
- Tool “set_perp_tpsl” rewrote its description, which is the text the model reads security
- “set_perp_tpsl” added an optional parameter “cancel” cosmetic
- “set_perp_tpsl” added an optional parameter “request_id” cosmetic
- “set_perp_tpsl” added an optional parameter “trigger_price” cosmetic
- “set_perp_tpsl” made “position_id” optional cosmetic
- 1 Oct 26 0
- New tool “set_perp_tpsl”, which the server declares destructive security
- Tool “pledge_to_ilo” rewrote its description, which is the text the model reads security
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 5 Nov 2026 · Probed https://mcp.crank.ing/mcp
TLS unreached
Background: What to check on a remote MCP endpoint →
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 Inconclusive
We could not reach the endpoint well enough to judge its authorisation posture.
| Result | Inconclusive |
|---|
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.crank.ing/mcp | Unreachable | ||
| http (plaintext) | http://mcp.crank.ing/mcp | HTTPS enforced |
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
approve_proposal ~143
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 this again to retry. See ``wallets.approve_proposal``.
| Name | Type | Req | Description |
|---|---|---|---|
| approved_by | string | – | – |
| caller_id | string | – | – |
| proposal_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
asset_classification ~162
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 recommendation. Workflow: RISK/COMPLIANCE step -- classify before executing; 'equity' forces geo-gating + per-execution confirm. Pairs with get_disclaimers. See get_trading_workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| symbol | – | – | – |
| token_address | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
authorize_session_signer ~224
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_signer_authorization (open) -> the wallet OWNER approves in their browser -> poll_session_signer_authorization (bind the stored payload). signer_pubkey is a keypair the USER creates and holds -- ONLY its PUBLIC key ever crosses this surface (hard rule 1); once authorized via the handshake, calls carrying it are trade-only under tx_verify (docs/SESSION_SIGNER_DESIGN.md).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| capabilities | – | – | – |
| expires_at | string | – | – |
| label | string | – | – |
| signer_pubkey | string | yes | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
backtest_strategy ~449
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 tunes the strategy (e.g. {"fast":5,"slow":20} for momentum). For strategy_type="composite" pass the signal-rule ``definition`` (see compose_strategy); the response includes a per-stream signal_coverage honesty report -- streams with partial persisted history are flagged, never silently zero-filled. slippage_model: "fixed" (slippage_bps haircut) or "jupiter_replay" (realised price-impact from the recorded quote corpus). Returns performance metrics (Sharpe/Sortino/Calmar, max drawdown, win rate, profit factor, VaR/CVaR), final equity, and trade + signal counts. Read-only simulation -- no fee, no on-chain action. Workflow: SIMULATE step -- validate a strategy on history before risking capital; run twice (e.g. auto vs long_only) to compare. Poor Sharpe/deep drawdown -> retune or fall back to the yield leg. Feeds get_risk_assessment -> the strategy_*_create tools. See get_trading_workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| caller_id | string | – | – |
| definition | – | – | – |
| end_date | string | yes | – |
| fee_bps | integer | – | – |
| initial_capital | number | – | – |
| params | – | – | – |
| slippage_bps | integer | – | – |
| slippage_model | string | – | – |
| start_date | string | yes | – |
| strategy_type | string | yes | – |
| timeframe | string | yes | – |
| wallet_address | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
bridge_in ~338
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 broadcasts the EVM leg, and never holds funds in flight. ``amount`` is in source-token base units. Supported source chains: ethereum, arbitrum, base, optimism, polygon, bnb, avalanche, linea. Fund from any major chain, execute on Solana: pair with jupiter_swap / strategies once the funds arrive (confirm with get_balances). Value-bearing (technology service fee via x402 past the daily free tier). Paper trading mode returns a simulated order with a real DLN quote. ``idempotency_key`` (optional): retrying with the same key + args replays the original order instead of creating a second one.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | integer | yes | – |
| caller_id | string | – | – |
| dst_token | string | yes | – |
| evm_sender | string | yes | – |
| idempotency_key | string | – | – |
| pay_in_crank | boolean | – | – |
| payment_header | string | – | – |
| src_chain | string | yes | – |
| src_token | string | yes | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
bridge_out ~390
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`` block (gate follow-on decisions on ``verification.confirmed``). ``src_token`` is the Solana mint committed, ``amount`` its base units; ``evm_recipient`` is YOUR address on ``dst_chain`` (ethereum, arbitrum, base, optimism, polygon, bnb, avalanche, linea). Value-bearing (technology service fee via x402 past the daily free tier; charged once per order on the build leg, never re-charged on the completion leg). Paper trading mode returns a simulated order with a real DLN quote. ``idempotency_key`` (optional): reuse the SAME key across the build call and its signed_transaction completion retry. ``order_id`` (optional): pass back the build leg's returned order_id on the signed_transaction completion call to reconcile both legs into one BridgeTransfer row -- then poll fulfillment with get_bridge_status(order_id).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | integer | yes | – |
| caller_id | string | – | – |
| dst_chain | string | yes | – |
| dst_token | string | yes | – |
| evm_recipient | string | yes | – |
| idempotency_key | string | – | – |
| order_id | string | – | – |
| pay_in_crank | boolean | – | – |
| payment_header | string | – | – |
| signed_transaction | – | – | – |
| src_token | string | yes | – |
| verify | boolean | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
bulk_send_social ~291
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 few UNSIGNED transactions as fit -- the sender signs + broadcasts every returned tx. Each send carries its crank.ing claim link, the bearer ``claim_code`` (returned once, embed per tweet), and the ``transaction_index`` of the tx that funds it. Anti-abuse gated (account age, verified wallet, per-sender daily limit counting the whole batch). platform: x. ``idempotency_key`` (optional): a client-generated UUID. Retrying with the same key + same args replays the original result (same claim_codes/links) instead of locking a second batch of escrows.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| idempotency_key | string | – | – |
| platform | string | – | – |
| recipients | array | yes | – |
| referral | string | – | – |
| sender_wallet | string | yes | – |
| token | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
cancel_perp_order ~415
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; the two legs dedupe independently, so this never raises IDEMPOTENCY_CONFLICT. ``signed_transaction`` / ``verify`` (two-phase execution): see place_perp_order. A cancel moves no position, so confirming the signature landed IS the verification -- no state re-read is declared. ``venue_action`` (optional, completion leg only): see place_perp_order -- pass back the build leg's ``extra['venue_action']`` (e.g. Jupiter's cancel-limit-order) so the relay route is the venue's own declared one instead of one inferred from the signed bytes. ``simulate`` (optional): true = rehearse this call. The full gate stack (capability, kill switch, session signer, wallet policy, permission mode, soft launch, venue / compliance / token checks, fee quote) is evaluated read-only and returned as ``verdicts`` + ``would_execute``, with a paper fill where one applies. Nothing is built, signed, broadcast or charged. Omitted = your wallet's default_simulate setting; false = execute.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_tier_b | boolean | – | – |
| caller_id | string | – | – |
| idempotency_key | string | – | – |
| ip | string | – | – |
| jurisdiction | – | – | – |
| order_id | string | yes | – |
| signed_transaction | – | – | – |
| simulate | – | – | – |
| venue | – | – | – |
| venue_action | – | – | – |
| verify | boolean | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
check_claim_status ~144
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). Never exposes the claim-code secret.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| claim_id | – | – | – |
| recipient | string | – | – |
| sender_wallet | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
claim_ilo_tokens ~226
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 released, or the launch has not succeeded -- this returns ``action: "nothing_to_claim"`` with the schedule and a ``next_release_check_ts``, rather than a transaction the chain would reject. Free: a claim of your own allocation carries no technology service fee. Workflow: SETTLE step -- poll get_my_pledge_status, claim when ``release.releasable_base_units`` is non-zero.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| idempotency_key | string | – | – |
| launch_id | integer | yes | – |
| pledger_token_account | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
claim_status ~41
Public status of a crank.ing claim code (status, amount, claimable, expiry).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| code | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
clear_agnta_grant ~120
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
clone_strategy ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| template_id | integer | yes | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
close_perp_position ~478
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 original result instead of re-closing the position. Reuse the SAME key across the build call and its ``signed_transaction`` completion call -- see place_perp_order; the two legs dedupe independently, so this never raises IDEMPOTENCY_CONFLICT. ``signed_transaction`` / ``verify`` (two-phase execution): see place_perp_order -- re-call with the signed payload and Crank relays it by custody tier and verifies the result. ``venue_action`` (optional, completion leg only): see place_perp_order -- pass back the build leg's ``extra['venue_action']`` (e.g. Jupiter's decrease-position) so the relay route is the venue's own declared one instead of one inferred from the signed bytes. ``simulate`` (optional): true = rehearse this call. The full gate stack (capability, kill switch, session signer, wallet policy, permission mode, soft launch, venue / compliance / token checks, fee quote) is evaluated read-only and returned as ``verdicts`` + ``would_execute``, with a paper fill where one applies. Nothing is built, signed, broadcast or charged. Omitted = your wallet's default_simulate setting; false = execute.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_tier_b | boolean | – | – |
| caller_id | string | – | – |
| close_pct | number | – | – |
| idempotency_key | string | – | – |
| ip | string | – | – |
| jurisdiction | – | – | – |
| pay_in_crank | boolean | – | – |
| payment_header | string | – | – |
| position_id | string | yes | – |
| signed_transaction | – | – | – |
| simulate | – | – | – |
| venue | – | – | – |
| venue_action | – | – | – |
| verify | boolean | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
compose_strategy ~87
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).
| Name | Type | Req | Description |
|---|---|---|---|
| definition | object | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
create_agent_wallet ~231
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 decision journal; passing both a preset and unlimited=True is rejected. default_policies is the legacy alias of policy_preset. wallet_address is the agent's PUBLIC key (caller-supplied); omit it to provision managed signing. Returns wallet_address, agent_id, status, applied_policies and policy_summary (applied limits + how to change them).
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | – |
| caller_id | string | – | – |
| default_policies | string | – | – |
| display_name | string | – | – |
| owner_address | string | – | – |
| policy_preset | string | – | – |
| unlimited | boolean | – | – |
| wallet_address | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
create_execution_intent ~748
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 publicly on this rail. Lane 1 (non-custodial default): builds the unsigned swap transaction server-side, persists it as an intent, and returns {intent_id, approval_url}. NOTHING executes until the user opens the approval URL in their browser and signs with their own wallet. This tool never signs and never sees a key. amount is in input-token base units. The quote includes the technology service fee. After the user approves, poll get_intent_status and report ONLY the persisted on-chain state (CONFIRMED before any success claim). slippage_bps omitted (None) resolves to the published platform default of 50 bps -- unchanged from before; the returned summary's slippage.applied_source honestly reports "platform_default" in that case rather than falsely claiming "caller". FEE PARITY: the on-chain technology service fee baked into the unsigned tx is now resolved through the SAME discount-aware pipeline as ``jupiter_swap`` -- the tokenized-security classification is resolved ONCE here via the authoritative registry-backed classifier (parity with ``jupiter_swap``'s call site) and, together with ``pay_in_crank``, determines the quoted ``platformFeeBps``. Without this an intent proposed via this Lane 1 rail could be fee-classified differently from the identical swap executed via ``jupiter_swap``. Decision: ``pay_in_crank`` IS exposed here (not just ``is_security``) -- the fee rate is a quote-time input baked into the unsigned tx before the user ever reaches the approve page, so an agent must be able to request the pay-in-$CRANK discount at proposal time, same as it can on the direct s…
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified | boolean | – | – |
| amount | integer | yes | – |
| caller_id | string | – | – |
| idempotency_key | string | – | – |
| include_slippage_advisory | boolean | – | – |
| input_token | string | yes | – |
| ip | string | – | – |
| jito_tip_lamports | – | – | – |
| jurisdiction | – | – | – |
| output_token | string | yes | – |
| pay_in_crank | boolean | – | – |
| slippage_bps | – | – | – |
| submit_mode | – | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
declare_jurisdiction ~421
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/short/leverage/trade_equity tool) and the declaration is remembered for 90 days across EVERY geo-gated framework (tokenized equities under Reg S, perps/synthetic-shorting/leverage under the CFTC posture). ``jurisdiction`` is an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "SG") -- YOUR OWN self-declaration of where you are, never advice or a recommendation (hard rules 2/5-8). A US-person declaration does not unblock US-restricted venues; it makes the DENIED reason explicit rather than "jurisdiction_unknown". Re-declaring overwrites the prior value. Versioned terms acceptance: ``accepted_terms=true`` AND ``terms_version`` (the version string published with the terms at https://engaij.com/legal/crank/terms) are REQUIRED -- a declaration with the terms declined, unstated, or acknowledging a superseded version is rejected with the terms URL. Every value-bearing action (trade build, perp order, send, claim, payout) fails closed until this wallet has accepted the CURRENT terms version; when the published terms version is bumped, the next value-bearing action is refused until re-acceptance.
| Name | Type | Req | Description |
|---|---|---|---|
| accepted_terms | boolean | – | – |
| caller_id | string | – | – |
| ip | string | – | – |
| jurisdiction | string | yes | – |
| terms_version | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
delete_webhook ~47
Delete one of a wallet's webhook subscriptions (free control-plane write).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| wallet_address | string | yes | – |
| webhook_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
detect_regime ~249
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. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d. A description + suggestion only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action. Workflow: INTELLIGENCE step -- pair with get_market_briefing (macro) + get_ml_signal (forecast); feeds strategy choice + direction_mode at backtest + create time. bear + allow_short -> consider a short. See get_trading_workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| caller_id | string | – | – |
| lookback_candles | integer | – | – |
| timeframe | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
discover_agents ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| capability | string | – | – |
| limit | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
discover_strategies ~160
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 description/config_template/ performance_summary/eligibility/author_wallet/created_at.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| detail | string | – | – |
| limit | integer | – | – |
| sort | string | – | – |
| strategy_type | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
enable_agent_wallet ~125
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 status is no longer "pending".
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | – |
| caller_id | string | – | – |
| display_name | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
equity_corporate_events ~87
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| symbol | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
equity_market_hours ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| symbol | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
equity_markets ~89
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
equity_positions ~85
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).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
equity_quote ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | integer | yes | – |
| caller_id | string | – | – |
| side | string | – | – |
| slippage_bps | integer | – | – |
| symbol | string | yes | – |
| venue_hint | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
evm_balances ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | – |
| caller_id | string | – | – |
| chain | string | – | – |
| token_addresses | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
evm_swap ~870
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 with YOUR wallet for taker -- Crank never signs and never holds a key. The first time a given ERC-20 is sold the response is phase='approval_required' with an 'approval_transaction' for the EXACT sell amount (never an unlimited allowance); sign that, wait for its receipt, then call again. With signed_transaction: broadcasts the signed RLP and returns tx_hash plus a 'verification' block -- receipt status (a MINED transaction is NOT necessarily a SUCCESSFUL one), the fill parsed from the ERC-20 Transfer log, and a balance cross-check. Gate follow-on decisions on verification.status == 'success'. Value-bearing: the SAME technology service fee schedule as every other Crank venue, at the same rate -- there is no per-chain fee differentiation. Paper trading mode returns a real 0x quote and builds nothing signable. idempotency_key (optional): reuse the SAME key across the SWAP build call and its signed_transaction completion retry. Do NOT carry a key across the approval_required response into the swap build that follows it -- those are two different calls, and the approval leg is not deduplicated at all (it builds nothing that could be duplicated: an ERC-20 approve SETS an allowance rather than adding to one, so re-issuing it is a no-op). replace_nonce / replace_max_fee_per_gas / replace_max_priority_fee_per_gas (optional, all three together, BUILD leg only): rebuild this swap at the nonce of a transaction you already broadcast that is stuck unmined, with both EIP-1559 fee fields bumped past the ones it carries so a node accepts it as a replacement instead of rejecting it as un…
| Name | Type | Req | Description |
|---|---|---|---|
| buy_token | string | yes | – |
| caller_id | string | – | – |
| chain | string | – | – |
| expected_buy_amount | string | – | – |
| idempotency_key | string | – | – |
| pay_in_crank | boolean | – | – |
| payment_header | string | – | – |
| pre_buy_balance | string | – | – |
| replace_max_fee_per_gas | string | – | – |
| replace_max_priority_fee_per_gas | string | – | – |
| replace_nonce | string | – | – |
| sell_amount | string | yes | – |
| sell_token | string | yes | – |
| signed_transaction | string | – | – |
| slippage_bps | – | – | – |
| taker | string | yes | – |
| verify | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
evm_swap_quote ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| buy_token | string | yes | – |
| caller_id | string | – | – |
| chain | string | – | – |
| sell_amount | string | yes | – |
| sell_token | string | yes | – |
| taker | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
evm_token_price ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | – | – |
| caller_id | string | – | – |
| chain | string | – | – |
| quote_token | string | – | – |
| token_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
flash_loan ~220
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. ``idempotency_key`` (optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-issuing the flash loan tx.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified | boolean | – | – |
| amount | integer | yes | – |
| caller_id | string | – | – |
| idempotency_key | string | – | – |
| instructions | array | yes | – |
| marginfi_account | string | yes | – |
| pay_in_crank | boolean | – | – |
| payment_header | string | – | – |
| token | string | yes | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_agent_profile ~41
Read an agent's published profile + its referral stats (read-only, free).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_all_venues_status ~126
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 volume, uptime.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| detail | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_arb_discrepancies ~180
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, decision-support only -- ignores fees, slippage, and transfer latency; never an execution instruction. Not financial advice. Workflow: INTELLIGENCE step -- pair with get_cross_exchange for the current live-ish read on a specific asset.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | – | – | – |
| caller_id | string | – | – |
| min_spread_bps | number | – | – |
| window_hours | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_balances ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| detail | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_bridge_quote ~169
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 before bridge_in / bridge_out. Nothing is charged and no order is created.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | integer | yes | – |
| caller_id | string | – | – |
| dst_chain | string | yes | – |
| dst_token | string | yes | – |
| src_chain | string | yes | – |
| src_token | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_bridge_status ~134
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 value) and status (mapped onto pending/fulfilled/cancelled).
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| order_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_collective_insights ~213
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 expiry), and a rendered human-readable statement; detail=full adds the observed params and signal_keys. Every response is historical collective performance data aggregated across the Crank agent fleet -- descriptive only, never a recommendation or a promise of results. Workflow: INTELLIGENCE step -- fleet-wide context alongside get_market_briefing / get_consensus before sizing or creating strategies.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | – |
| caller_id | string | – | – |
| detail | string | – | – |
| insight_type | string | – | – |
| strategy_type | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_consensus ~272
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 historical hit-rate (get_source_accuracy). High agreement (>80%) is flagged as a crowded, potentially contrarian condition; low agreement (<30%) as uncertain. This is a PLATINUM-tier feature: covered by a Platinum $CRANK-staker subscription, or pay the per-call x402 fee with payment_header (PAYMENT_REQUIRED otherwise); the billing outcome is in the response ``billing`` field. Descriptive signal only, not a recommendation. Not financial advice. Workflow: INTELLIGENCE step -- pair with get_market_briefing + get_source_accuracy to gauge how crowded a directional read is before sizing.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| caller_id | string | – | – |
| payment_header | string | – | – |
| wallet_address | string | – | – |
| window_hours | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_contrarian_signals ~224
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, returns just that asset's assessment. PLATINUM-tier: covered by a Platinum $CRANK-staker subscription or a verified x402 payment_header (PAYMENT_REQUIRED otherwise); the billing outcome is in ``billing``. Descriptive signal only, not a recommendation. Not financial advice. Workflow: INTELLIGENCE step -- surface crowded trades to fade or uncertain assets to avoid before committing to a regime/allocation.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | – |
| caller_id | string | – | – |
| payment_header | string | – | – |
| wallet_address | string | – | – |
| window_hours | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_crank_score ~148
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 on-platform activity; circular funding between wallets is flagged + penalised. Well-formed zeros for an unscored wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_cross_exchange ~175
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; never an execution instruction. Not financial advice. Workflow: INTELLIGENCE step -- pair with get_arb_discrepancies for the persisted, already-debounced episode history.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| caller_id | string | – | – |
| window_minutes | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_disclaimers ~98
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_classification | – | – | – |
| caller_id | string | – | – |
| symbol | – | – | – |
| token_address | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_emerging_patterns ~187
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 the result count (max 100). No wallet address or cohort key is ever returned. Historical collective performance data aggregated across the Crank agent fleet -- descriptive only, never a recommendation or a promise of results. Workflow: INTELLIGENCE step -- see what the fleet is doing that no existing strategy type describes, before designing a new strategy.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| limit | integer | – | – |
| min_agents | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_health_factor ~83
Liquidation-risk monitor for a lending position. Returns health_factor (>1 safe, <1 liquidatable), collateral value, debt value, liquidation threshold. protocol: kamino | marginfi.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| marginfi_account | – | – | – |
| market | – | – | – |
| protocol | string | yes | – |
| wallet_address | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_ilo_adoption_status ~242
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 definition. A transaction is an EXECUTED trade only -- a recorded swap (broadcast signature required), a perp open, or a user-initiated perp close; reads, quotes, unexecuted intents, paper trades, liquidations and devnet activity never count. ``cluster=devnet`` exposes the same metric for pre-launch observability; the gate itself is the mainnet number. Aggregate counts only, no per-wallet data. A launch prerequisite (one required condition alongside legal sign-off and the other launch prerequisites); not a launch date, promise, or timeline.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| cluster | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_ilo_details ~226
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 from without parsing prose. Pass ``caller_wallet`` to attach that wallet's own pledge summary too (the authoritative per-wallet view is get_my_pledge_status). Utility token fair launch: participating commits funds to a non-custodial escrow; it is not a purchase of an expectation of profit. Workflow: DISCOVER step -- read details, check the window and the per-wallet cap, then preview with pledge_to_ilo (plan mode) before committing anything.
| Name | Type | Req | Description |
|---|---|---|---|
| caller_id | string | – | – |
| caller_wallet | string | – | – |
| launch_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_indicators ~329
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 token mint; timeframe one of 1m/5m/15m/1h/4h/1d; indicators selects a subset (empty = all); lookback candles capped at 500; params overrides per indicator, e.g. {"rsi": {"period": 21}}; include_series=true adds per-bar series (last 200 points). Readings are None while history is warming up. Computed readings only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action. Workflow: INTELLIGENCE step -- raw indicator readings underlying detect_regime; pair with get_ml_signal (forecast) + get_signals (persisted cross-source signals). See get_trading_workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| caller_id | string | – | – |
| include_series | boolean | – | – |
| indicators | – | – | – |
| lookback | integer | – | – |
| params | – | – | – |
| timeframe | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the Crank Protocol MCP server?
Crank Protocol is a hosted endpoint at https://mcp.crank.ing/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.crank.ing
claude mcp add --transport http ing-crank-crank 'https://mcp.crank.ing/mcp'
What is the Crank Protocol MCP server?
Crank Protocol is an MCP server listed in the public MCP registry as ing.crank/crank. Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities. This page covers its hosted endpoint (https://mcp.crank.ing/mcp).
Is the Crank Protocol MCP server safe to use?
Crank Protocol scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Crank Protocol MCP server expose?
Crank Protocol exposes 196 tools: jupiter_swap, verify_transaction, get_quotes, get_balances, portfolio_snapshot, and 191 more. Their descriptions and schemas cost roughly 41,788 tokens of context every time the server is loaded.
Does the Crank Protocol MCP server require authentication?
Its publisher declares no required credentials for Crank Protocol. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.
Is the Crank Protocol MCP server still maintained?
Crank Protocol is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.