dedup_list
List all registered dedup sources to review duplicate detection rules in Burp Suite.
Instructions
List all registered dedup sources.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/burp_mcp_plus/server.py:651-653 (handler)The `dedup_list` MCP tool handler – calls `dedup.list_sources()` and returns the result as JSON.
def dedup_list() -> str: """List all registered dedup sources.""" return json.dumps(dedup.list_sources(), indent=2) - src/burp_mcp_plus/server.py:650-651 (registration)The `@mcp.tool()` decorator registers `dedup_list` as an MCP tool.
@mcp.tool() def dedup_list() -> str: - src/burp_mcp_plus/dedup.py:159-163 (helper)The `list_sources()` helper function in the dedup module that returns the list of registered sources from the in-process registry.
def list_sources() -> list[dict[str, object]]: return [ {"name": s.name, "path": s.path, "entries": len(s.entries)} for s in _REGISTRY.values() ] - src/burp_mcp_plus/dedup.py:137-149 (helper)The `register()` function and `_REGISTRY` dict that maintain the in-process registry of dedup sources, which `list_sources()` reads from.
def register(path: str, name: str | None = None) -> DedupSource: p = os.path.abspath(os.path.expanduser(path)) if not os.path.isfile(p): raise FileNotFoundError(p) if name is None: # Default name: parent dir basename, fall back to file stem. parent = os.path.basename(os.path.dirname(p)) or os.path.splitext( os.path.basename(p) )[0] name = parent entries = parse_dedup_file(p) src = DedupSource(name=name, path=p, entries=entries) _REGISTRY[name] = src - src/burp_mcp_plus/dedup.py:44-70 (schema)The `DedupEntry` and `DedupSource` dataclasses that define the data schema for dedup sources and entries returned by `list_sources()`.
@dataclass class DedupEntry: index: int # 1-based as in the file method: str url: str status: int | None length: int | None parameters: str request: str response: str def host_path(self) -> tuple[str, str]: # url is full https://host[:port]/path m = re.match(r"https?://([^/]+)(/.*)?$", self.url) if not m: return "", self.url host = m.group(1) path = m.group(2) or "/" return host, path @dataclass class DedupSource: name: str path: str entries: list[DedupEntry]