vektor-mcp
v1.1.0
Published
Vektor MCP server — DeFi tools for AI agents on Sui
Maintainers
Readme
vektor-mcp
40 DeFi tools for AI agents on Sui blockchain.
Vektor MCP exposes the full Vektor financial OS as an MCP server. Connect it to Claude, GPT, or any MCP-compatible agent and get full DeFi capabilities — swap, lend, borrow, schedule, set conditions, track positions, explain transactions, and more — all with Guardian risk protection built in.
Installation
npx vektor-mcpOr install globally:
npm install -g vektor-mcpSetup
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"vektor": {
"command": "npx",
"args": ["vektor-mcp"],
"env": {
"SUI_PRIVATE_KEY": "suiprivkey1...",
"ANTHROPIC_API_KEY": "sk-ant-...",
"SUI_NETWORK": "mainnet"
}
}
}
}Private key modes
| Mode | How |
|------|-----|
| Mode 1 — Env var | Set SUI_PRIVATE_KEY in the MCP config env |
| Mode 2 — Per-call | Pass privateKey in each tool call |
| Mode 3 — Quote only | No key needed for vektor_get_quote, vektor_guardian_*, price tools |
Accepts suiprivkey1... (bech32), hex (0x...), or base64.
Tools (40 total)
Core Trading
vektor_get_quote
Get the best swap quote across all Sui liquidity sources (DeepBook, Cetus, Aftermath, Turbos, Hop, 7K, FlowX). Returns route, estimated output, Guardian score, and unsigned PTB hex. No wallet required.
Input: { from: "SUI", to: "USDC", amount: 10 }
Output: { amountOut, amountOutHuman, priceImpact, route, guardianScore, guardianLevel, ptbHex, validUntil }vektor_swap
Execute a swap with automatic Guardian protection. CRITICAL risk = always blocked. HIGH risk = blocked unless bypassGuardianWarnings: true.
Input: { from: "SUI", to: "USDC", amount: 10 }
Output: { success, digest, actualAmountOut, guardianScore, guardianLevel, blocked?, blockReason? }vektor_get_quote_from_protocol
Get a quote forced through a specific protocol: deepbook, cetus, aftermath, turbos, kriya, flowx, bluefin, hop.
Input: { from: "SUI", to: "USDC", amount: 10, protocol: "cetus" }
Output: { protocol, routeUsed, amountOut, amountOutHuman, priceImpact, guardianScore }vektor_batch_swap
Execute multiple swaps in sequence. Each has its own Guardian check.
Input: { swaps: [{ from: "SUI", to: "USDC", amount: 5 }, ...] }
Output: { results: [{ digest, success, guardianScore }...], summary }Guardian
vektor_guardian_simulate
Run Guardian on any Sui transaction or PTB hex. No wallet required.
Input: { digest: "D8zRVk..." } OR { ptbHex: "a1b2..." }
Output: { score, level, flags, recommendation, safe }vektor_guardian_score
Guardian risk score for a swap pair without executing.
Input: { from: "SUI", to: "USDC", amount: 100 }
Output: { score, level, safe, recommendation, flags }vektor_guardian_report
Full Guardian report — all 7 risk classes with severity and message.
Input: { from: "SUI", to: "USDC", amount: 100 }
Output: { classes: [{ class, name, severity, title, message }...], passedChecks, warningChecks, failedChecks }Guardian checks 7 classes: Slippage · Oracle Staleness · Pool Liquidity · Price Impact · Concentration · Protocol Safety · Gas Anomaly
Portfolio
vektor_get_portfolio
Input: { walletAddress: "0x..." }
Output: { totalValueUsd, tokens: [{ symbol, balance, valueUsd }...], summary }vektor_get_balance
Input: { walletAddress: "0x...", token: "SUI" }
Output: { symbol, balance, valueUsd }vektor_get_positions
Input: { walletAddress: "0x..." }
Output: { openPositions, scheduledIntents, watchConditions, summary }vektor_get_portfolio_value
Input: { walletAddress: "0x..." }
Output: { totalValueUsd, breakdown: [{ asset, value, percentage }...] }Payments
vektor_send
Input: { to: "0x...", amount: 10, token: "USDC" }
Output: { success, digest, guardianScore }vektor_batch_send
Input: { recipients: [{ address: "0x...", amount: 10, token: "USDC" }, ...] }
Output: { success, digest, totalRecipients, totalSent, guardianScore }vektor_create_payment_request
Input: { amount: 50, token: "USDC", note?: "for dinner" }
Output: { requestId, link, expiresAt }vektor_onboard
Input: { amount: 5, token: "SUI" }
Output: { link, token, amount, expiresAt }vektor_check_payment_request
Input: { requestId: "uuid..." }
Output: { status, paidAt?, digest? }NAVI Lending
vektor_navi_deposit
Input: { token: "USDC", amount: 100 }
Output: { success, digest, currentHealthFactor }vektor_navi_borrow
Blocked if health factor would drop below 1.5.
Input: { token: "USDC", amount: 50 }
Output: { success, digest, newHealthFactor }vektor_navi_repay
Input: { token: "USDC", amount: 50 }
Output: { success, digest, newHealthFactor }vektor_navi_withdraw
Input: { token: "USDC", amount: 100 }
Output: { success, digest, newHealthFactor }vektor_navi_get_health_factor
Input: { walletAddress: "0x..." }
Output: { healthFactor, safe, riskLevel, totalCollateral, totalBorrowed, liquidationThreshold }vektor_navi_get_rates
Input: { token?: "USDC" }
Output: { rates: [{ token, depositApy, borrowApr, totalSupply, utilization }...] }Scheduling & Conditions
vektor_schedule
Input: { intent: "DCA 10 USDC into SUI every day for 30 days", walletAddress: "0x..." }
Output: { scheduleId, parsedIntent, frequency, nextExecution, totalExecutions }vektor_list_schedules
Input: { walletAddress: "0x..." }
Output: { schedules: [{ id, intent, frequency, nextExecution, executionsRemaining, totalExecuted }...] }vektor_cancel_schedule
Input: { scheduleId: "uuid...", walletAddress: "0x..." }
Output: { success, cancelledId }vektor_set_condition
Polls Pyth every 60s and fires the intent when the price condition is met.
Input: { condition: "when SUI drops below $3", intent: "swap all my SUI to USDC", walletAddress: "0x..." }
Output: { conditionId, parsedCondition, watchingAsset, triggerPrice, currentPrice }vektor_list_conditions
Input: { walletAddress: "0x..." }
Output: { conditions: [{ id, condition, asset, currentPrice, triggerPrice, distancePct }...] }vektor_cancel_condition
Input: { conditionId: "uuid...", walletAddress: "0x..." }
Output: { success, cancelledId }Memecoin Trading
vektor_buy_memecoin
Input: { token: "LOFI", amountUsdc: 20 }
Output: { success, digest, tokenReceived, entryPrice, guardianScore, guardianFlags }vektor_sell_memecoin
Input: { token: "LOFI", sellAll: true }
Output: { success, digest, usdcReceived, pnlUsd, pnlPct }vektor_set_auto_exit
Input: { token: "LOFI", profitTarget: 0.20, stopLoss: 0.15, walletAddress: "0x..." }
Output: { watcherId, profitTarget, stopLoss, entryPrice, currentPrice }vektor_get_memecoin_positions
Input: { walletAddress: "0x..." }
Output: { positions: [{ token, amount, entryPrice, currentPrice, pnlUsd, pnlPct }...] }Information & Analysis
vektor_explain_transaction
Input: { digest: "D8zRVk..." }
Output: { explanation, status, protocolsUsed, tokensIn, tokensOut, feePaid, gasCost }vektor_get_token_price
Input: { token: "SUI" }
Output: { symbol, priceUsd, change24h, publishTime, source }vektor_get_pool_info
Input: { tokenA: "SUI", tokenB: "USDC", protocol?: "cetus" }
Output: { pair, protocol, poolId, tvl, fee, volume24h }vektor_get_protocol_info
Input: { protocol: "cetus" }
Output: { name, audited, auditor, launchDate, tier, description, guardianTier }vektor_analyze_wallet
Input: { walletAddress: "0x..." }
Output: { summary, totalValueUsd, echoScore, strengths, weaknesses, recommendations, holdings }Echo
vektor_echo_status
Input: { walletAddress: "0x..." }
Output: { enabled, mode, activeRules, sessionKeyActive }vektor_echo_score
Input: { walletAddress: "0x..." }
Output: { total, diversification, yieldEfficiency, debtHealth, riskExposure, lastCalculated }vektor_echo_get_rules
Input: { walletAddress: "0x..." }
Output: { rules: [{ id, raw, parsed, active, createdAt, lastTriggered? }...] }vektor_echo_add_rule
Input: { rule: "Never let my health factor drop below 1.5", walletAddress: "0x..." }
Output: { ruleId, raw, parsedInterpretation, active }vektor_echo_get_activity
Input: { walletAddress: "0x...", limit?: 20 }
Output: { activities: [{ timestamp, description, action, guardianScore?, digest? }...] }Environment Variables
| Variable | Description |
|----------|-------------|
| SUI_PRIVATE_KEY | Wallet key — bech32, hex, or base64 |
| ANTHROPIC_API_KEY | Required for AI summaries and rule parsing |
| SUI_NETWORK | mainnet (default) or testnet |
| VEKTOR_MCP_DB | SQLite DB path (default: ./vektor-mcp.db) |
Guardian Risk Levels
Every execution tool runs Guardian automatically before signing:
| Score | Level | Action |
|-------|-------|--------|
| 80–100 | LOW | Proceeds |
| 55–79 | MEDIUM | Proceeds with warning in response |
| 30–54 | HIGH | Blocked — set bypassGuardianWarnings: true to override |
| 0–29 | CRITICAL | Always blocked, cannot bypass |
License
MIT © Vektor Labs
