Skip to main content
Glama
holistis

bug-bounty-intelligence-mcp

README.md
# Bug Bounty Intelligence: MCP Server

AI-powered smart contract security analysis for AI agents and developers.

**Drawn from a corpus of 27,681 submitted findings across 105 Sherlock and Code4rena contests.**
**Cost: $5 USDC on Base (eip155:8453) via x402.**
**Free tool: `list_vulnerability_patterns`, no payment needed.**

`list_vulnerability_patterns`' acceptance-rate numbers are computed only from the subset where
results could be exactly reconciled against Sherlock's own published outcomes: 1,032 findings
across 10 contests. We'd rather show fewer, verified numbers than a bigger set we can't stand
behind. See [METHODOLOGY.md](METHODOLOGY.md) for exactly why, and how to reproduce it.

## Free dataset: no server, no MCP, no payment

[`vulnerability-acceptance-rates.json`](vulnerability-acceptance-rates.json) is the same data
`list_vulnerability_patterns` serves, as a static file. No API call, no account, no network
dependency at all. Download it, or copy it into your own tool's rule set. CC0 licensed, use it
however you want, credit optional.

```bash
curl -sO https://raw.githubusercontent.com/holistis/bug-bounty-intelligence-mcp/main/vulnerability-acceptance-rates.json
```

If you're building a local-first / offline security scanner and the paid `scan_contract` tool
below isn't a fit for your project's architecture, this file might still be useful on its own.

## Just want pattern search, nothing paid? Use 3ilm-mcp instead

[3ilm-mcp](https://github.com/holistis/3ilm-mcp) is a smaller, free-only MCP server built from
the same verified dataset. It has no paid tier at all, just pattern search
(`search_vulnerabilities`, `get_pattern_details`, `list_patterns`). Use this repo
(bug-bounty-intelligence-mcp) if you also want the paid `scan_contract` full-repo scan; use
3ilm-mcp if you only ever wanted the free lookup tools and prefer the lighter package.

Two more tools in the same Al-Mizaan toolkit, for the rest of the workflow: [al-mizaan-judge](https://github.com/holistis/al-mizaan-judge) is a local CLI that pressure-tests a candidate finding through the same 7-gate framework before you submit it, and [DeFi Signal API](https://github.com/holistis/defi-signal-api) exposes the same vuln-search/bug-intel routes as a pay-per-call HTTP API for anyone who wants this outside MCP.

## Benchmark: vs Slither

**[See the full benchmark →](BENCHMARK.md)**

On 3FLabs/grunt (ERC-4626 + Morpho vaults, 218 contracts): Slither reports 27 "High" findings. After analysis: 24 are in `lib/solady` (out-of-scope dependency with known Slither false positive patterns), and 3 are EIP-712 design patterns. False positive rate: **100%**.

Bug Bounty Intelligence scopes to `src/` only and filters through the Al-Mizaan 7-gate framework before reporting anything.

We also reported a related `divide-before-multiply` pattern on the same `lib/solady` code directly to the Slither project: [crytic/slither#3039](https://github.com/crytic/slither/issues/3039). A maintainer merged a fix for part of it ([crytic/slither#3040](https://github.com/crytic/slither/pull/3040)); see [BENCHMARK.md](BENCHMARK.md) for the honest scope of what that fix does and doesn't cover, we overclaimed in the original report.

## What it does

Submit a public GitHub repo containing Solidity smart contracts. Receive a full vulnerability report within 24 hours, powered by the Al-Mizaan v3 analysis framework.

## Tools

| Tool | Description | Cost |
|------|-------------|------|
| `scan_contract` | Submit repo for security analysis | $5 USDC |
| `get_scan_report` | Poll status and get report URL | Free |
| `list_vulnerability_patterns` | Show acceptance rates from exact-reconciled Sherlock contests | Free |

## Quick start (Claude Desktop / Claude Code)

Also listed in [PuPu](https://github.com/haoxiang-xu/PuPu)'s MCP store as of release v0.1.11 ([registration issue](https://github.com/haoxiang-xu/PuPu/issues/186)).

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "bug-bounty-intelligence": {
      "command": "npx",
      "args": ["-y", "bug-bounty-intelligence-mcp@latest"]
    }
  }
}
```

Or run directly:

```bash
npx -y bug-bounty-intelligence-mcp@latest
```

## Payment

If `scan_contract` returns `PAYMENT REQUIRED`, send exactly $5 USDC on Base to the address shown, then retry. Payment = acceptance of [service terms](https://wazir-x402.duckdns.org/terms).

**x402 info:**
- Network: Base mainnet (eip155:8453)
- Amount: 5,000,000 (= 5 USDC, 6 decimals)
- Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
- Wallet: 0x015Eb036560216B3051339061FF68A207E0fe88f

The wallet address can change. Always pay the address `scan_contract` actually returns in its `PAYMENT REQUIRED` response, not a copy of this README. This document is updated when the address changes, but the live tool response is the source of truth.

## Example session

```
> list_vulnerability_patterns({ protocol_type: "LENDING" })

Vulnerability patterns for LENDING protocols (from Sherlock audit findings, exact-reconciled contests only):

oracle-manipulation      36% accepted (131 cases)
liquidation              29% accepted (14 cases)
staleness                49% accepted (174 cases)
rounding                 40% accepted (63 cases)
flash-loan               46% accepted (13 cases)
access-control           47% accepted (74 cases)

> scan_contract({ repo_url: "https://github.com/myprotocol/contracts", protocol_type: "LENDING" })

PAYMENT REQUIRED to start the scan.

Amount:  5.00 USDC
Network: Base mainnet (eip155:8453)
Pay to:  0x015Eb036560216B3051339061FF68A207E0fe88f
Asset:   USDC — 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

After paying, retry scan_contract with the same repo_url.
```

## Sample scan output

Real scan of `sherlock-audit/2025-03-crestal-network` (Derivatives protocol, 29 contracts):

```
Summary: 0 Critical  |  1 High  |  0 Medium  |  0 Low
Analyzed: 29 contracts  |  Model: qwen2.5:7b  |  Duration: 25min

FINDING #1 — HIGH
Title:    Owner Can Arbitrarily Set Payment Addresses
File:     Blueprint.sol
Functions: setCreateAgentTokenCost, setUpdateCreateAgentTokenCost,
           addPaymentAddress, removePaymentAddress
Category: ACCESS

Description:
  The owner can arbitrarily set payment addresses and costs without
  any external validation or timelock.

Attack path:
  An attacker with ownership calls setCreateAgentTokenCost or
  addPaymentAddress to modify fees or redirect user payments to
  an attacker-controlled wallet.

Impact:
  Extremely high costs (griefing) or redirection of user funds.

Recommendation:
  Implement a governance mechanism or timelock to restrict fee
  and address changes.

Confidence: 0.90 (CONFIRMED by Al-Mizaan validation)
```

## About the analysis

The Al-Mizaan v3 framework checks 7 gates:

1. Code reading (literal, not docs)
2. Reachability chain (entry to exploit)
3. Threat model (who can trigger it)
4. Invariant breach (what rule is violated)
5. Protocol intent (was this intended?)
6. Impact (real financial damage)
7. Formal proof (reproducible PoC)

Only findings that survive all 7 gates are reported.

## Service info

- **API endpoint**: https://wazir-x402.duckdns.org/api/bug-intel
- **Terms**: https://wazir-x402.duckdns.org/terms
- **Delivery**: within 24h
- **Source code**: deleted after analysis

## Support this project

This is a free, open-source MCP server maintained in my spare time. If it caught something useful before you shipped, tips are welcome and appreciated (never expected):

`0xdffcC75a674257be6FE1b5549FE52e8f8a6A3A5A` (USDC, Base)

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct role: list_vulnerability_patterns provides historical data, scan_contract starts a new analysis, and get_scan_report polls for results. There is no ambiguity or overlap between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: list_vulnerability_patterns, scan_contract, and get_scan_report. The naming clearly communicates the action and resource.

Tool Count4/5

With only 3 tools the server feels slightly minimal, but the count is appropriate for a focused scan-and-report workflow. Each tool serves a distinct step in the user journey, so the size is reasonable rather than inadequate.

Completeness4/5

The server covers the full lifecycle from querying historical patterns to submitting a scan and retrieving the report. A minor gap is the lack of a way to list past jobs or cancel a scan, but this is not essential for the core purpose.

Maintenance

ActivityActive
ResponsivenessUnresponsive