Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted 1 min ago
teppi

Server definition

Hash
sha256:0b97477c1cb2ffc20fe135f1c04e2c9e11abc5a6ac33dc659449d26961fb6ca1
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "CTRL is a workflow automation system on Base mainnet. Workflows run inside a non-custodial V3 vault (verified on Basescan) that enforces the on-chain maxPerSwap and maxPerDay caps the user signs once. The keeper polls every ~5s. Built-in safety primitives include the pool.created safetyEnabled flag (GoPlus honeypot + tax + score gate) and pauseVault/revokeRule kill-switches. Call ctrl_get_block_catalog to read the live list of available blocks before assembling a workflow. Two equivalent surfaces exist: this JSON-RPC MCP server (tool execution needs an sk_ctrl_ key) and the anonymous REST API at /api/mcp/* (no key — the wallet signature at activate-time is the trust boundary). The REST surface is canonical for wallet-native agents; this MCP server is for key-based clients like Cursor and Claude Desktop. Both drive the same workflows.", "tools": [ { "description": "Return an EIP-5792 transactions[] batch the user signs ONCE to deploy their vault + register spending rules. After signing, the keeper runs the workflow autonomously per the on-chain caps.", "inputSchema": { "properties": { "depositEth": { "default": "0", "type": "string" }, "expiryDays": { "default": 30, "type": "number" }, "maxPerDayEth": { "default": "0.1", "type": "string" }, "maxPerSwapEth": { "default": "0.01", "type": "string" }, "workflowId": { "type": "string" } }, "required": [ "workflowId" ], "type": "object" }, "name": "ctrl_activate", "outputSchema": null }, { "description": "Create a CTRL workflow draft. ONE trigger + an ordered chain of up to 20 actions/conditions/utilities. Returns { workflowId, activateUrl }. Pass `targetChain` to pick which chain the workflow runs on — \"base\" (default, launchpads + Aerodrome + UniV4) or \"ethereum\" (UniV3 only, no launchpads, no clanker/zora). CRITICAL: call ctrl_get_block_catalog FIRST (with the same `chain` value) to discover field names — every key in trigger.config and chain[].config must exactly match catalog fields[].key. Populate EVERY field the user expressed intent for. For pool.created (Token Launch, Base-only) set launchpad (e.g. [\"bankr\"]), keywordIncludes (\"ai,agent,claw\"), keywordMatchMode \"any\", keywordCategories ([\"ai_agents\"]), safetyEnabled true, safetyRejectHoneypot true, safetyMinScore 50. For cypher.swap set tokenIn (\"ETH\"), tokenOut (\"{{trigger.tokenAddress}}\"), tokenOutMode \"dynamic\", amount (ETH units, e.g. 0.005 — ASK USER if not specified), slippage (15 for snipes), and autoSell* if user wants an exit (autoSellEnabled true, autoSellMode \"multiple\", autoSellMultiplier 2, autoSellPercent 100, autoSellReceiveToken \"USDC\"). For notify.telegram set message with {{token}}/{{amount}}/{{txHash}} placeholders. Interview the user for missing critical fields (amount, exit strategy, keywords) — do not silently default.", "inputSchema": { "properties": { "chain": { "items": { "properties": { "config": { "additionalProperties": true, "description": "Passthrough — for cypher.swap include amount, slippage, autoSell* if user wants exit.", "type": "object" }, "type": { "description": "Block id from ctrl_get_block_catalog (e.g. \"cypher.swap\", \"notify.telegram\").", "type": "string" } }, "required": [ "type" ], "type": "object" }, "maxItems": 20, "minItems": 1, "type": "array" }, "description": { "maxLength": 500, "type": "string" }, "name": { "maxLength": 120, "type": "string" }, "targetChain": { "description": "Chain to run the workflow on. Default: \"base\". \"ethereum\" disables launchpad-only blocks (pool.created/clanker/zora/bankr/flaunch) and UniV4/Aerodrome routing.", "enum": [ "base", "ethereum" ], "type": "string" }, "trigger": { "properties": { "config": { "additionalProperties": true, "description": "Passthrough — see ctrl_get_block_catalog for valid keys.", "type": "object" }, "type": { "description": "Block id from ctrl_get_block_catalog.triggers (e.g. \"pool.created\").", "type": "string" } }, "required": [ "type" ], "type": "object" } }, "required": [ "name", "trigger", "chain" ], "type": "object" }, "name": "ctrl_create_workflow", "outputSchema": null }, { "description": "Manually fire a workflow once. Keeper picks up within ~5s. Use to test a workflow without waiting for its natural trigger.", "inputSchema": { "properties": { "workflowId": { "type": "string" } }, "required": [ "workflowId" ], "type": "object" }, "name": "ctrl_fire_manual", "outputSchema": null }, { "description": "Return the live catalog of every CTRL workflow block with id, label, description, and config-field schemas. Call this before ctrl_create_workflow when unsure of a block's config shape. Pass `chain` to filter to blocks that are compatible with the target chain (Base = launchpads + Aerodrome + UniV4; Ethereum = no launchpads, V3 only). Default is \"base\".", "inputSchema": { "properties": { "category": { "description": "Optional. Filter to a single block bucket.", "enum": [ "trigger", "action", "condition", "utility" ], "type": "string" }, "chain": { "description": "Optional. Filter the catalog to blocks compatible with this chain. Default: \"base\".", "enum": [ "base", "ethereum" ], "type": "string" } }, "type": "object" }, "name": "ctrl_get_block_catalog", "outputSchema": null }, { "description": "Read recent workflow executions: trigger, status, BaseScan tx hash, gas, timing. Without workflowId returns the user's most recent across all workflows.", "inputSchema": { "properties": { "limit": { "default": 10, "type": "number" }, "workflowId": { "type": "string" } }, "type": "object" }, "name": "ctrl_get_execution_logs", "outputSchema": null }, { "description": "Read the user's CTRL vault address, ETH + WETH balance, and active rules. Call this BEFORE ctrl_activate so you can tell the user how much they need to fund.", "inputSchema": { "properties": {}, "type": "object" }, "name": "ctrl_get_vault_status", "outputSchema": null }, { "description": "Return an EIP-5792 batch the user signs to withdraw funds from their CTRL vault back to their wallet. The agent never signs. token defaults to ETH; pass WETH or a 0x token address for other assets; omit amount to withdraw the full balance.", "inputSchema": { "properties": { "amount": { "description": "Decimal amount, e.g. '0.05'. Omit for full balance.", "type": "string" }, "token": { "description": "'ETH' (default), 'WETH', or a 0x token address.", "type": "string" }, "wallet": { "description": "Vault owner address (0x…).", "type": "string" } }, "required": [ "wallet" ], "type": "object" }, "name": "ctrl_withdraw", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0b97477c1cb2ffc20fe135f1c04e2c9e11abc5a6ac33dc659449d26961fb6ca1 | sha256sum