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 4

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

Available components

+7 this week 63 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 Management27
  • Stability observed for 8 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.

  • 4 Aug 26 +1

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

  • 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 4 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
strategy_protect_create ~179

Create a downside-protection monitor on a held position. Shares the stop-loss executor -- identical config/mechanics to ``strategy_stoploss_create`` -- framed as a pure downside guard. At least one of ``stop_loss_pct`` / ``take_profit_pct`` / ``trailing`` must be set.

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_rebalance_create ~133

Create a portfolio-rebalance strategy toward ``target_allocation`` (mint->weight). Direction (ENG-bd44b1b7, optional, advisory): ``direction_mode`` / ``allow_short`` / ``regime_override`` -- see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
drift_threshold_pctnumber
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
target_allocationobjectyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_resume ~89

Re-enable a paused strategy (manual re-enable after a drawdown pause). The drawdown kill switch (ENG-b2c60329) latches a strategy to ``paused_drawdown`` and requires this explicit owner action to resume; the equity high-water mark is reset so it does not immediately re-trip.

NameTypeReqDescription
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_sentiment_create ~234

Create a sentiment strategy -- trades an aggregate sentiment score. Buys when the score is >= ``bull_threshold`` (flat), sells when it is <= ``bear_threshold`` (holding); the neutral band holds. The score is sourced live from market intelligence each tick, or pinned via ``sentiment_score``. DISCRETIONARY (SEC framework, ENG-6f4d3513): targeting a tokenized SECURITY forces per-execution ``user_confirmed`` at execution (crypto stays fully autonomous). Call asset_classification first. ``risk`` / direction params: see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
bear_thresholdnumber
bull_thresholdnumber
direction_mode
interval_secondsinteger
regime_override
risk
sentiment_score
slippage_bpsinteger
source_tokenstring
target_tokenstringyes
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_snipe_create ~249

Create a snipe/scalping strategy -- dip-buy with a fast take-profit/stop exit. Flat: buys ``usd_per_buy`` when price is ``entry_dip_pct`` below the close ``lookback`` ticks ago. Holding: exits on a tight ``take_profit_pct`` OR ``stop_loss_pct`` -- many small round-trips. Runs on a short interval (default 60s) since it reads a per-tick rolling price window that must accumulate ``lookback`` + 1 observations before it can enter. ``risk`` / direction params: see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
entry_dip_pctnumber
interval_secondsinteger
lookbackinteger
regime_override
risk
slippage_bpsinteger
source_tokenstring
stop_loss_pctnumber
take_profit_pctnumber
target_tokenstringyes
usd_per_buynumberyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_status ~40

Status + last execution of one strategy (scoped to the caller's wallet).

NameTypeReqDescription
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_stoploss_create ~229

Create a stop-loss / take-profit / trailing-stop monitor on a held position. ``position_amount`` is base units of ``target_token`` to liquidate on trigger. At least one of ``stop_loss_pct`` / ``take_profit_pct`` / a trailing config should be set (fractions, e.g. 0.15 == 15%). Direction (ENG-bd44b1b7, optional, advisory): ``direction_mode`` / ``allow_short`` / ``regime_override`` -- see ``strategy_dca_create``.

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_vault_create ~213

Create a vault strategy -- a target-allocation basket held via rebalancing. Shares the rebalance executor -- identical config/mechanics to ``strategy_rebalance_create`` (``target_allocation`` mint->weight, ``drift_threshold_pct``) -- framed as a passive basket rather than an active rebalance loop. No external vault/LP deposit (hard rule 1): the non-custodial swap pipeline only rotates spot holdings toward the target weights. Direction (ENG-bd44b1b7, optional, advisory): ``direction_mode`` / ``allow_short`` / ``regime_override`` -- see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
drift_threshold_pctnumber
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
target_allocationobjectyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

strategy_yield_farm_create ~212

Create a yield-farm strategy -- maintains a target basket allocation. Shares the rebalance executor (config identical to ``strategy_rebalance_create``): depositing into an external yield protocol / LP position has no faithful swap-pipeline analogue, so this models a yield farm as keeping a target allocation across the basket via converging rebalance swaps (hard rule 1: the non-custodial pipeline only rotates spot holdings, never deposits externally). Direction (ENG-bd44b1b7, optional, advisory): ``direction_mode`` / ``allow_short`` / ``regime_override`` -- see ``strategy_dca_create``.

NameTypeReqDescription
allow_short
direction_mode
drift_threshold_pctnumber
interval_secondsinteger
regime_override
risk
slippage_bpsinteger
target_allocationobjectyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

suggest_parameter_adjustment ~148

Historical parameter observations for one of YOUR strategies (free read). Compares the strategy's realised outcomes against your other strategies of the same type that ran different parameter values, and returns the observed differences ranked by realised P&L -- historical performance data only, never advice, and nothing is changed by this call (PROPOSE flow: acting on an observation is your call via the strategy tools, where every policy/risk gate still applies). Workflow: ORIENT -> DECIDE step -- review observations, then adjust via strategy tools if YOU decide to.

NameTypeReqDescription
caller_idstring
strategy_idintegeryes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

token_info ~65

Token metadata, price, liquidity, volume, holder count. Provide token_address (mint) or a known symbol. Merges Helius (metadata) with Birdeye (market data).

NameTypeReqDescription
caller_idstring
symbol
token_address

Structured output declared, but exposes no named fields.

No examples provided.

trade_equity ~416

Spot-trade a tokenized equity (xStocks / Ondo) via Jupiter, non-custodial. side: buy | sell. amount is in base units of the INPUT token (USDC 6dp for a buy, the equity token for a sell). These are tokenized SECURITIES: the call is geo-gated (Reg S = no US persons; declare jurisdiction once via the jurisdiction arg) and OFAC-screened, and requires per-execution confirmation -- WITHOUT confirm=true it returns a quote + disclaimer and does NOT execute (no autonomous equity execution). With confirm=true it returns an UNSIGNED base64 tx to sign + broadcast; pass signed_transaction to broadcast a caller-signed tx. Value-bearing: past the daily free tier an x402 payment_header is required. ip = caller origin IP for the Reg S geo gate (US IP -> refused even with an attestation; an agent's Railway Singapore egress resolves to SG and passes). ``venue_hint`` (ENG-fc290438/ENG-00ebde90, MB#18215) is ADVISORY, never required -- equity routes via the issuer registry (one surface today); an unknown hint raises. ``idempotency_key`` (ENG-7ded4fb8, optional): see jupiter_swap -- same replay-on-retry semantics, same key reused across build + broadcast.

NameTypeReqDescription
allow_unverifiedboolean
amountintegeryes
caller_idstring
confirmboolean
idempotency_keystring
ipstring
jurisdiction
pay_in_crankboolean
payment_headerstring
sidestringyes
signed_transaction
slippage_bpsinteger
symbolstringyes
venue_hint
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

unstake_lst ~195

Unstake an LST back to SOL (non-custodial). lst_token is a mint (mSOL/jitoSOL/bSOL); amount in base units. mSOL routes via Marinade, others via the Sanctum router. Returns an UNSIGNED base64 tx. The technology service fee is charged on the unstaked-LST notional past the daily free tier (x402 payment_header). ``idempotency_key`` (ENG-7ded4fb8, optional): a client-generated UUID. Retrying with the same key + same args replays the original result instead of re-unstaking.

NameTypeReqDescription
amountintegeryes
caller_idstring
idempotency_keystring
lst_tokenstringyes
pay_in_crankboolean
payment_headerstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

update_agent_profile ~60

Patch an agent profile's metadata (display_name, capabilities, endpoints). metadata is a dict of writable fields; capabilities are validated if present.

NameTypeReqDescription
caller_idstring
metadataobjectyes
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

update_ticket_status ~71

Set a support ticket's status. status: open|in_progress|waiting_on_user|resolved|closed. Stamps resolved_at on transition into resolved/closed and clears it on reopen.

NameTypeReqDescription
caller_idstring
statusstringyes
ticket_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

venue_risk_comparison ~87

Side-by-side risk comparison of two venues for a routing decision. Read-only. Returns each venue's full risk record, the safer venue, and the composite-score delta. e.g. compare "jupiter" vs "pacifica" before routing.

NameTypeReqDescription
caller_idstring
venue_astringyes
venue_bstringyes

Structured output declared, but exposes no named fields.

No examples provided.

verify_token ~136

Multi-layer authenticity check for a token mint (read-only, no execution). Runs the same five-layer verification the swap/trade tools enforce before building a transaction: registry allow-list, Jupiter verified list, Metaplex metadata authority, minimum liquidity, and token age + holder count. Returns verification_status (verified | unverified | suspicious | blocked), the reasons, non-blocking warnings, and the per-layer findings. Call this before swapping into an unfamiliar token (ENG-a39caa6d).

NameTypeReqDescription
caller_idstring
symbol
token_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.

verify_transaction ~333

Verify any prior transaction signature on demand (FREE read). Post-trade verification (ENG-df8afe93, harness spec MB#18289 R13): awaits on-chain confirmation of ``tx_signature`` at ``commitment`` level (up to ``timeout_s``) and, when a state hint is supplied, re-reads the relevant state to compare against what was expected: - ``mint`` (+ ``wallet_address``): re-reads that SPL/SOL token balance. - ``market`` (+ ``wallet_address``): re-reads the Drift perp position. - ``protocol`` (+ ``wallet_address``, optional ``market`` / ``marginfi_account``): re-reads the lending obligation health. Returns ``{confirmed, slot, commitment, post_state, expected_vs_actual, retry_guidance}``. ``confirmed`` is False (never True) on a timeout -- NEVER treat an unconfirmed/timed-out result as success; ``retry_guidance`` names the next step. Use this after signing + broadcasting a transaction yourself (place_perp_order, lend_deposit/borrow/repay, and every other unsigned-tx tool never broadcast server-side) to confirm it actually landed before treating the position/balance as changed.

NameTypeReqDescription
caller_idstring
commitmentstring
marginfi_account
market
mint
protocol
timeout_snumber
tx_signaturestringyes
wallet_addressstring

Structured output declared, but exposes no named fields.

No examples provided.

wallet_status ~39

Current state, policy summary, recent activity, total volume, and tier.

NameTypeReqDescription
caller_idstring
wallet_addressstringyes

Structured output declared, but exposes no named fields.

No examples provided.