HeyAnon MCP

HeyAnon on-chain agent: wallets, portfolios, DeFi and CEX actions, transfers, Gemma research.

사용해야 할까요

품질 및 안전성

B
설명 품질
100%
스키마 완전성
62%
이름 품질
83%
오염 위험
80%
권한 일치
90%
프로토콜 준수
100%

발견 사항 (3)

  • HIGHTool poisoning patterns detected
  • LOWTool description contains role marker that could confuse chat modelsask_gemma에서
  • LOWTool 'get_api_key_setup_url' suggests web access but openWorldHint=falseget_api_key_setup_url에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,657토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.64%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "heyanon": {
      "url": "https://api.heyanon.ai/mcp"
    }
  }
}

원격 엔드포인트

https://api.heyanon.ai/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (21)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢ping

Health check for the Hey Anon MCP server. Returns "pong" and the server time (ISO 8601). No API key required.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_api_key_setup_url

Get the URL of the Hey Anon page where the user logs in and creates an API key, plus the MCP config snippet where the key goes (X-API-Key header). Call this when a tool fails with "API key not set" or the user has no key yet. The key is never passed through the chat. No API key required.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢wallet_list

List the user wallets registered in Hey Anon: display name, type (evm, solana, ton, etc.), address, labels and whether the wallet is archived. Call it before ask_anon to choose which addresses to attach (at most one per type); match the wallet the user names by display name, label or address and skip archived wallets. The same addresses are used by the portfolio_* tools.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴ask_anon(text, wallets, files)

Send a message to Anon, the Hey Anon on-chain AI agent (balances, swaps, bridging, lending, staking, CEX, scheduled automations, research). Asynchronous: the output is only a confirmation with the background task ID; poll background_task with that ID until status is no longer "pending" ("completed": the reply is in result; any other status, e.g. "failed": the request did not finish, check logs). Anon keeps NO conversation context: every message is processed from a clean slate, so each message must be self-contained (repeat the wallet, network, token and amount every time; follow-ups like "and on Base?" will not work). Before sending, the tool checks that Anon is idle: if the previous request is still processing it returns an error, poll background_task until it finishes (or call abort) and retry. Anon can execute real transactions from the attached wallets: send action instructions (swap, send, bridge, stake, create an automation) only when the user explicitly asked for that action, and phrase everything else as a question. For general crypto research not tied to the user wallets, prefer ask_gemma.

입력 스키마

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Natural-language message or instruction for Anon. Phrase information requests as questions, e.g. \"What is my S balance on Sonic?\" or \"Show my Aave positions\". Action instructions such as \"Swap 10 USDC to ETH on Base\" can make Anon execute a real transaction from the attached wallet: send them only when the user explicitly requested that exact action, token and amount"
    },
    "wallets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "Wallet addresses to attach: at least one, and at most ONE per wallet type (e.g. one evm, one solana, one ton). Two addresses of the same type are rejected by the backend (\"Multiple wallets found for type evm\"). Take addresses from wallet_list. If the user has several wallets of the same type, use the one the user named (by displayName or address); otherwise ask which one to use rather than picking arbitrarily."
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Publicly accessible file URL"
          },
          "mimetype": {
            "type": "string",
            "description": "MIME type, e.g. image/png"
          }
        },
        "required": [
          "url",
          "mimetype"
        ],
        "additionalProperties": false
      },
      "description": "Optional attachments (publicly reachable URL + MIME type), e.g. a screenshot or document for Anon to analyze"
    }
  },
  "required": [
    "text",
    "wallets"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ask_gemma(text)

Ask Gemma, the Hey Anon crypto research assistant: protocol analysis, community and social insights, market data, news, token analytics by contract address. Synchronous: returns the answer text directly, no polling and no wallet addresses needed. Research only: Gemma takes no wallet addresses, executes no transactions and keeps its own session, separate from the Anon conversation. Prefer ask_gemma for general crypto questions and ask_anon for anything about the user wallets or for actions.

입력 스키마

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Research question for Gemma, e.g. \"Analyze token 0x... on Sonic\" or \"Latest news about Aave\""
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢isProcessing

Check whether Anon is still processing the previous ask_anon request. Returns "isProcessing: true|false". Use before sending another message, or when a request looks stuck (then call abort).

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴abort

Force-stop Anon processing of the current ask_anon request. Use only when isProcessing stays true for too long or the request is stuck; otherwise wait for the background task to complete.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢projects

List the protocols and integrations Anon can operate (swaps, lending, staking, bridges, CEX, etc.): name, key, description, supported networks, tool count. Use it to check whether Anon supports a protocol or network before asking.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢scheduled_task_list

List the user scheduled tasks: automations created through Anon that run at a given time or when a price condition is met. There is no create/update tool: to create an automation, ask Anon via ask_anon (e.g. "Buy 0.1 ETH on Base when ETH drops below 2000"), then use this tool to confirm it exists. Returns id, description, status, type and, when present, taskExecutorResponse (the last execution result); the trigger time or condition is not a separate field, infer it from description.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢scheduled_task_get(id)

Get one scheduled task by id (from scheduled_task_list). Returns id, description, status, type and taskExecutorResponse (the last execution result).

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Scheduled task ID (from scheduled_task_list)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴scheduled_task_delete(id)

Delete (cancel) a scheduled task by id. Irreversible: the automation will not run again. Returns a confirmation.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Scheduled task ID to delete (from scheduled_task_list)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢portfolio_tokens

Token balances for every user wallet (addresses taken from wallet_list) across all supported networks. Returns JSON [{ walletAddress, data }]; for EVM wallets data.evm is keyed by chain id, Solana balances are in data.solana. Output can be large with many wallets.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢portfolio_transactions

Recent transactions for every user wallet (addresses taken from wallet_list). Returns JSON [{ walletAddress, data }]. Output can be large with many wallets.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢portfolio_defi

DeFi positions (LP, staking, lending, vaults, etc.) for every user wallet (addresses taken from wallet_list). Returns JSON [{ walletAddress, data }].

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢portfolio_cex(address)

Balances and positions from the exchange accounts linked to Hey Anon (e.g. Hyperliquid, keyed by exchange). Pass address (an EVM wallet from wallet_list) when the user has several EVM wallets, otherwise the backend rejects the call. Returns the raw JSON response.

입력 스키마

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "EVM wallet address (from wallet_list). Required when the account has several EVM wallets."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢background_task_list

List the user Anon background tasks (one per ask_anon message): id, prompt, status, result (Anon reply when completed), logs, createdAt, updatedAt. Use it to find earlier answers or check what is still pending. Also returned as structuredContent { tasks }.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "tasks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "pending | completed | failed"
          },
          "result": {
            "type": "string",
            "description": "Anon reply; present once status is completed"
          },
          "logs": {
            "type": "array",
            "items": {},
            "description": "Execution trace lines, appended while the task runs"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "required": [
    "tasks"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢background_task(id)

Get one Anon background task by id. Each ask_anon call creates a task; poll this tool until status is no longer "pending": "completed" means the Anon reply is in result; any other status (e.g. "failed") means the request did not finish, check logs. Returns id, prompt, status, result ("—" while absent), logs (execution trace, appended live while the task runs), createdAt, updatedAt; the same object is returned as structuredContent.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Background task ID (returned by ask_anon or background_task_list)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "prompt": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "description": "pending | completed | failed"
    },
    "result": {
      "type": "string",
      "description": "Anon reply; present once status is completed"
    },
    "logs": {
      "type": "array",
      "items": {},
      "description": "Execution trace lines, appended while the task runs"
    },
    "createdAt": {
      "type": "string"
    },
    "updatedAt": {
      "type": "string"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴background_task_delete(id)

Delete a background task record by id.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Background task ID to delete (from ask_anon or background_task_list)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "boolean"
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "deleted",
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴transfer_native(chain, from, to, amount, allBalance)

Send the native coin of a network (ETH, S, SOL, TON, ...) from one of the user wallets to another address. This moves real funds and cannot be undone. Call it only when the user explicitly asked to send this exact amount of this asset from this wallet to this recipient on this network; never infer, round or top up any of these values. If anything is missing or ambiguous, ask the user instead of guessing. Returns the transaction hash and an explorer link (also as structuredContent).

입력 스키마

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "optimism",
        "bsc",
        "gnosis",
        "polygon",
        "sonic",
        "zksync",
        "base",
        "avalanche",
        "arbitrum",
        "scroll",
        "solana",
        "ton",
        "hyperevm",
        "plasma",
        "monad",
        "robinhood"
      ],
      "description": "Network name: ethereum, optimism, bsc, gnosis, polygon, sonic, zksync, base, avalanche, arbitrum, scroll, solana, ton, hyperevm, plasma, monad, robinhood"
    },
    "from": {
      "type": "string",
      "description": "Sender: one of the user wallet addresses from wallet_list, of the type matching the network (evm / solana / ton)"
    },
    "to": {
      "type": "string",
      "description": "Recipient address on the same network, exactly as the user gave it. If the user names a saved contact instead of an address, resolve it with address_book_list and confirm the address with the user first"
    },
    "amount": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "Amount as an integer string in the smallest unit of the asset (wei, lamports, nanoton, token base units), e.g. \"1000000000000000000\" = 1 ETH (18 decimals); 1 USDC = \"1000000\" (6 decimals)"
    },
    "allBalance": {
      "type": "boolean",
      "description": "true = send the entire balance of the asset instead of amount. Only when the user explicitly asked to send everything."
    }
  },
  "required": [
    "chain",
    "from",
    "to",
    "amount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "hash": {
      "type": "string",
      "description": "Transaction hash"
    },
    "link": {
      "type": "string",
      "description": "Block explorer link to the transaction"
    }
  },
  "required": [
    "hash",
    "link"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴transfer_asset(chain, from, to, amount, allBalance, ...)

Send a token (ERC-20 / SPL / jetton) from one of the user wallets to another address. This moves real funds and cannot be undone. Call it only when the user explicitly asked to send this exact amount of this asset from this wallet to this recipient on this network; never infer, round or top up any of these values. If anything is missing or ambiguous, ask the user instead of guessing. Returns the transaction hash and an explorer link (also as structuredContent).

입력 스키마

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "optimism",
        "bsc",
        "gnosis",
        "polygon",
        "sonic",
        "zksync",
        "base",
        "avalanche",
        "arbitrum",
        "scroll",
        "solana",
        "ton",
        "hyperevm",
        "plasma",
        "monad",
        "robinhood"
      ],
      "description": "Network name: ethereum, optimism, bsc, gnosis, polygon, sonic, zksync, base, avalanche, arbitrum, scroll, solana, ton, hyperevm, plasma, monad, robinhood"
    },
    "from": {
      "type": "string",
      "description": "Sender: one of the user wallet addresses from wallet_list, of the type matching the network (evm / solana / ton)"
    },
    "to": {
      "type": "string",
      "description": "Recipient address on the same network, exactly as the user gave it. If the user names a saved contact instead of an address, resolve it with address_book_list and confirm the address with the user first"
    },
    "amount": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "Amount as an integer string in the smallest unit of the asset (wei, lamports, nanoton, token base units), e.g. \"1000000000000000000\" = 1 ETH (18 decimals); 1 USDC = \"1000000\" (6 decimals)"
    },
    "allBalance": {
      "type": "boolean",
      "description": "true = send the entire balance of the asset instead of amount. Only when the user explicitly asked to send everything."
    },
    "asset": {
      "type": "string",
      "description": "Token contract / mint address on that network (not the symbol)"
    }
  },
  "required": [
    "chain",
    "from",
    "to",
    "amount",
    "asset"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "hash": {
      "type": "string",
      "description": "Transaction hash"
    },
    "link": {
      "type": "string",
      "description": "Block explorer link to the transaction"
    }
  },
  "required": [
    "hash",
    "link"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢address_book_list(search, chains, page, size)

List the user saved recipient addresses (address book): name, networks and address. Use it to resolve a recipient the user names, e.g. "send 0.1 ETH to My work address": find the entry by name (search), take its address and confirm it with the user before calling transfer_native or transfer_asset. Informational only: transfers are not restricted to these addresses. Returns the entries and pagination, also as structuredContent.

입력 스키마

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Filter by name or address substring"
    },
    "chains": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "ethereum",
          "optimism",
          "bsc",
          "gnosis",
          "polygon",
          "sonic",
          "zksync",
          "base",
          "avalanche",
          "arbitrum",
          "scroll",
          "solana",
          "ton",
          "hyperevm",
          "plasma",
          "monad",
          "robinhood"
        ]
      },
      "description": "Only entries saved for these networks: ethereum, optimism, bsc, gnosis, polygon, sonic, zksync, base, avalanche, arbitrum, scroll, solana, ton, hyperevm, plasma, monad, robinhood"
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, starting at 1"
    },
    "size": {
      "type": "integer",
      "minimum": 1,
      "description": "Entries per page"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "whitelist": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "chains": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "address": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    },
    "pagination": {
      "type": "object",
      "properties": {
        "totalCount": {
          "type": "number"
        },
        "page": {
          "type": "number"
        },
        "size": {
          "type": "number"
        }
      },
      "additionalProperties": true
    }
  },
  "required": [
    "whitelist"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 21개