Atlas / MCP servers / jakegu1 / vetagent

vetagentBLOCK

mcp/jakegu1/vetagent

VetAgent — token risk intelligence MCP for AI agents. Cloudflare Worker deployment. Assess token risk (liquidity/honeypot/rug) and return actionable low/medium/high verdict. Remote MCP at https://vetagent.dev/mcp.

Verdict
BLOCK
Grade
D
Trust score
61 /100
Exposed tools
1 1r · 0w · 0d
Transport
streamable-http
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://smithery.ai/servers/jake-gu95/vetagent) [](https://registry.modelcontextprotocol.io/) [](https://glama.ai/mcp/connectors/dev.vetagent/vetagent) [](LICENSE)

A pre-trade safety check for AI agents. Before an agent buys, holds, or recommends a token, it calls VetAgent and gets an actionable verdict — low / medium / high / unknown — plus the specific signals behind it, instead of a wall of numbers to interpret.

Remote MCP endpoint: `https://vetagent.dev/mcp` · Landing page: https://vetagent.dev Using it, or think it got a token wrong? [email protected] — or open an issue.

// assess_token_risk("0x...", chain_hint="ethereum")
{
"risk_level": "medium",
"risk_score": 36,
"confidence": "high",
"signals": [
{"severity": "ok",   "name": "Liquidity is adequate",     "category": "liquidity"},
{"severity": "ok",   "name": "Buys and sells normally",   "category": "honeypot"},
{"severity": "warn", "name": "Contract is closed source", "category": "contract"}
],
"recommendation": "Medium risk. Real signals fired but none are fatal. Review liquidity, holder distribution and contract permissions before deciding."
}

Install

Nothing to install. It is a remote server: no package, no container, no API key, no signup. Add one URL.

Claude Code:

claude mcp add --transport http vetagent https://vetagent.dev/mcp

Cline, Cursor, Claude Desktop, or any other MCP client — add to the MCP config:

{
"mcpServers": {
"vetagent": {
"type": "http",
"url": "https://vetagent.dev/mcp"
}
}
}

Confir

Read from source at commit 0811353ba419OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add vetagent --env CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN} --env QUICKINTEL_API_KEY=${QUICKINTEL_API_KEY} -- uvx vetagent
claude-desktop
{
  "mcpServers": {
    "vetagent": {
      "command": "uvx",
      "args": [
        "vetagent"
      ],
      "env": {
        "CLOUDFLARE_API_TOKEN": "${CLOUDFLARE_API_TOKEN}",
        "QUICKINTEL_API_KEY": "${QUICKINTEL_API_KEY}"
      }
    }
  }
}
03

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
budgeted-reviewreadMulti-dimension adversarial review with a hard agent ceiling
04

Trust audit

BLOCKgrade D · trust 61/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
bench/snapshots/pools-2026-10-12.ndjson:85
{"seen_at": "2026-10-12T09:18:01.737143+00:00", "chain": "eth", "kind": "new", "pool_id": "eth_0x9eb16fe4cf77c070b50e71e3c6a0b079f93b65c7", "pool_address": "0x9eb16fe4cf77c070b50e71e3c6a0b079f93b65c7"
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
bench/snapshots/sellability-2026-10-10.ndjson:70
{"seen_at": "2026-10-10T18:39:59.505402+00:00", "chain": "eth", "token": "0xdd3e50a042454e27892823af11f93139cd11ab07", "pool_address": "0xedde0201ced153bcf8af946bc73ddcb6a09ca68d", "pool_created_at":
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
bench/snapshots/sellability-2026-10-11.ndjson:8
{"seen_at": "2026-10-11T08:58:19.060488+00:00", "chain": "eth", "token": "0xb4782511bece17a113b73917a5a0aeea15028b07", "pool_address": "0x7cbe1328684b5e4618d2dd3e435610f27d6d9ec0", "pool_created_at":
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
bench/snapshots/sellability-2026-10-11.ndjson:17
{"seen_at": "2026-10-11T08:58:19.060488+00:00", "chain": "eth", "token": "0x3581232fb8e898e66bdaa6efcdc1edf7ee324b07", "pool_address": "0x896a79c35a17583e7b9137dae8056cb813b5c4d7", "pool_created_at":
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
bench/snapshots/sellability-2026-10-11.ndjson:23
{"seen_at": "2026-10-11T08:58:19.060488+00:00", "chain": "eth", "token": "0xad0b005a2e247b9ef8a45df403e627c37174db07", "pool_address": "0xb543a55bf66b962a5433e72195667e87c4899e94", "pool_created_at":
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
bench/cache_bytecode/base_0x00000e7efa313f4e11bfff432471ed9423ac6b30.json:1
{"chain": "base", "address": "0x00000e7efa313f4e11bfff432471ed9423ac6b30", "code": "0x608060405234801561000f575f5ffd5b5060043610610135575f3560e01c806379cc6790116100b6578063a9059cbb1161007a578063a9059c
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
bench/cache_bytecode/base_0x001aad84c21a5cd4d696c56d44866e9703c43f77.json:1
{"chain": "base", "address": "0x001aad84c21a5cd4d696c56d44866e9703c43f77", "code": "0x608060405234801561000f575f80fd5b5060043610610213575f3560e01c80637f2eecc31161011f578063c630948d116100a9578063d91694
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
bench/cache_bytecode/base_0x00e57ec29ef2ba7df07ad10573011647b2366f6d.json:1
{"chain": "base", "address": "0x00e57ec29ef2ba7df07ad10573011647b2366f6d", "code": "0x6080604052600436106101d15760003560e01c806395d89b41116100f7578063cb96372811610095578063e2f4560511610064578063e2f456
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
bench/cache_bytecode/base_0x00f3c42833c3170159af4e92dbb451fb3f708917.json:1
{"chain": "base", "address": "0x00f3c42833c3170159af4e92dbb451fb3f708917", "code": "0x60806040526004361061017b575f3560e01c8063880cdc31116100cd578063a9059cbb11610087578063d559f05b11610062578063d559f05b
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
bench/cache_bytecode/base_0x010e74bc5f0020cd313a21b87f30997213cb1bb1.json:1
{"chain": "base", "address": "0x010e74bc5f0020cd313a21b87f30997213cb1bb1", "code": "0x6080604052600436106100f2575f3560e01c80638119c06511610087578063a9059cbb11610057578063a9059cbb14610297578063dd62ed3e
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_backfill.py:61
token = "0x1111111111111111111111111111111111111111"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_finite_market_measurements.py:21
TOKEN = '0x1111111111111111111111111111111111111111'
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_risk.py:2069
TOKEN = "0x5555555555555555555555555555555555555555"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_risk.py:3024
TOKEN = "0x226a2fa2556c48245e57cd1cba4c6c9e67077dd2"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_sellability_archive.py:665
secret = "fixture-secret-must-not-escape"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
bench/selector_mine.py:734
h = hashlib.md5((address or "").encode("utf-8")).hexdigest()
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/test_second_oracle.py:132
return "0x" + hashlib.sha1(symbol.encode("utf-8")).hexdigest()
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
bench/backfill.py:332
raw = bytes.fromhex(h[128:128 + n * 2])
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
bench/backfill.py:334
raw = bytes.fromhex(h).rstrip(b"\x00")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/og_image.py:5
PNG = base64.b64decode(
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
tools/og_image.py:73
f.write("PNG = base64.b64decode(\n")
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/DECISIONS.md:82
| E30 | The upstream contract test **derives** its field list from `src/risk.py` rather than carrying one, and asserts a **measured distribution** per path, not presence. Its CI job is no longer `cont
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/answers2.txt:51
the server issues no Mcp-Session-Id, so each POST is its own context and
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOInventory / provenance · inv.oversize · CWE-1104
bench/rugcheck_scores_rerun.jsonl
bench/rugcheck_scores_rerun.jsonl
Why it matters. 2103503 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
bench/snapshots/pools-2026-09-05.ndjson
bench/snapshots/pools-2026-09-05.ndjson
Why it matters. 1688406 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 0811353ba419full audit observations/trust-audit/mcp-server/jakegu1__vetagent.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-120811353ba419BLOCKD61first audit
06

Questions

What is the vetagent MCP server?

VetAgent — token risk intelligence MCP for AI agents. Cloudflare Worker deployment. Assess token risk (liquidity/honeypot/rug) and return actionable low/medium/high verdict. Remote MCP at https://vetagent.dev/mcp.

What tools does vetagent expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is vetagent safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (61/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does vetagent need?

It reads CLOUDFLARE_API_TOKEN and QUICKINTEL_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does vetagent run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as vetagent.

How current is this page?

The grade is for one exact copy of the source (0811353ba419), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement