# protonnegativo/raijin architecture

> Architecture diagram of the GitHub repository protonnegativo/raijin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/protonnegativo/raijin
- Repository: https://github.com/protonnegativo/raijin

## Overview

Raijin is an umbrella for standalone security tools designed to turn scanner output into compact, ranked JSON for AI agents. The documented flow is target and scope through a tool’s underlying engine, then reduction into the shared Raijin Schema; the MCP server exposes the tools to agents. This checkout contains no tool implementations, so the tool and engine nodes represent capabilities documented in README.md, not inspected source. The local install script is omitted because installation is not the runtime product workflow.

Main entry points: [`docs/schema.md`](https://github.com/protonnegativo/raijin/blob/main/docs/schema.md) (Raijin Schema)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Agent access"]
  node_mcp["MCP server"]
end

subgraph group_security["Security tools"]
  node_probe["Probe"]
  node_subs["Subdomain discovery"]
  node_ports["Port discovery"]
  node_crawl["Web crawling"]
  node_js["JavaScript analysis"]
  node_params["Parameter discovery"]
  node_scan["Vulnerability scan"]
  node_fuzz["Web fuzzing"]
  node_tls["TLS analysis"]
  node_secrets["Secret detection"]
  node_xss["XSS testing"]
  node_cors["CORS testing"]
  node_takeover["Takeover detection"]
  node_diff["Run comparison"]
  node_engine["Scanning engines"]
end

subgraph group_results["Result reduction"]
  node_reducer["Wrapper and reducer"]
  node_schema["Raijin Schema<br/>[schema.md]"]
end

node_agent(("AI agent"))

node_agent -->|"invokes"| node_mcp
node_mcp -->|"exposes"| node_probe
node_mcp -->|"exposes"| node_subs
node_mcp -->|"exposes"| node_ports
node_mcp -->|"exposes"| node_crawl
node_mcp -->|"exposes"| node_js
node_mcp -->|"exposes"| node_params
node_mcp -->|"exposes"| node_scan
node_mcp -->|"exposes"| node_fuzz
node_mcp -->|"exposes"| node_tls
node_mcp -->|"exposes"| node_secrets
node_mcp -->|"exposes"| node_xss
node_mcp -->|"exposes"| node_cors
node_mcp -->|"exposes"| node_takeover
node_mcp -->|"exposes"| node_diff
node_probe -->|"runs"| node_engine
node_subs -->|"runs"| node_engine
node_ports -->|"runs"| node_engine
node_crawl -->|"runs"| node_engine
node_js -->|"runs"| node_engine
node_params -->|"runs"| node_engine
node_scan -->|"runs"| node_engine
node_fuzz -->|"runs"| node_engine
node_tls -->|"runs"| node_engine
node_secrets -->|"runs"| node_engine
node_xss -->|"runs"| node_engine
node_takeover -->|"runs"| node_engine
node_probe -->|"reduces output"| node_reducer
node_subs -->|"reduces output"| node_reducer
node_ports -->|"reduces output"| node_reducer
node_crawl -->|"reduces output"| node_reducer
node_js -->|"reduces output"| node_reducer
node_params -->|"reduces output"| node_reducer
node_scan -->|"reduces output"| node_reducer
node_fuzz -->|"reduces output"| node_reducer
node_tls -->|"reduces output"| node_reducer
node_secrets -->|"reduces output"| node_reducer
node_xss -->|"reduces output"| node_reducer
node_cors -->|"produces JSON"| node_reducer
node_takeover -->|"reduces output"| node_reducer
node_diff -->|"compares runs"| node_reducer
node_reducer -->|"emits"| node_schema

click node_schema "https://github.com/protonnegativo/raijin/blob/main/docs/schema.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mcp toneBlue
class node_probe,node_subs,node_ports,node_crawl,node_js,node_params,node_scan,node_fuzz,node_tls,node_secrets,node_xss,node_cors,node_takeover,node_diff,node_engine toneAmber
class node_reducer,node_schema toneMint
class node_agent toneIndigo
```

## Components

### Agent access

- **MCP server**

### Security tools

- **Probe**
- **Subdomain discovery**
- **Port discovery**
- **Web crawling**
- **JavaScript analysis**
- **Parameter discovery**
- **Vulnerability scan**
- **Web fuzzing**
- **TLS analysis**
- **Secret detection**
- **XSS testing**
- **CORS testing**
- **Takeover detection**
- **Run comparison**
- **Scanning engines**

### Result reduction

- **Wrapper and reducer**
- [Raijin Schema](https://github.com/protonnegativo/raijin/blob/main/docs/schema.md): `docs/schema.md`

### Other components

- **AI agent**

## Connections

- AI agent → MCP server: invokes (evidence: `README.md`)
- MCP server → Probe: exposes (evidence: `README.md`)
- MCP server → Subdomain discovery: exposes (evidence: `README.md`)
- MCP server → Port discovery: exposes (evidence: `README.md`)
- MCP server → Web crawling: exposes (evidence: `README.md`)
- MCP server → JavaScript analysis: exposes (evidence: `README.md`)
- MCP server → Parameter discovery: exposes (evidence: `README.md`)
- MCP server → Vulnerability scan: exposes (evidence: `README.md`)
- MCP server → Web fuzzing: exposes (evidence: `README.md`)
- MCP server → TLS analysis: exposes (evidence: `README.md`)
- MCP server → Secret detection: exposes (evidence: `README.md`)
- MCP server → XSS testing: exposes (evidence: `README.md`)
- MCP server → CORS testing: exposes (evidence: `README.md`)
- MCP server → Takeover detection: exposes (evidence: `README.md`)
- MCP server → Run comparison: exposes (evidence: `README.md`)
- Probe → Scanning engines: runs (evidence: `README.md`)
- Subdomain discovery → Scanning engines: runs (evidence: `README.md`)
- Port discovery → Scanning engines: runs (evidence: `README.md`)
- Web crawling → Scanning engines: runs (evidence: `README.md`)
- JavaScript analysis → Scanning engines: runs (evidence: `README.md`)
- Parameter discovery → Scanning engines: runs (evidence: `README.md`)
- Vulnerability scan → Scanning engines: runs (evidence: `README.md`)
- Web fuzzing → Scanning engines: runs (evidence: `README.md`)
- TLS analysis → Scanning engines: runs (evidence: `README.md`)
- Secret detection → Scanning engines: runs (evidence: `README.md`)
- XSS testing → Scanning engines: runs (evidence: `README.md`)
- Takeover detection → Scanning engines: runs (evidence: `README.md`)
- Probe → Wrapper and reducer: reduces output (evidence: `README.md`)
- Subdomain discovery → Wrapper and reducer: reduces output (evidence: `README.md`)
- Port discovery → Wrapper and reducer: reduces output (evidence: `README.md`)
- Web crawling → Wrapper and reducer: reduces output (evidence: `README.md`)
- JavaScript analysis → Wrapper and reducer: reduces output (evidence: `README.md`)
- Parameter discovery → Wrapper and reducer: reduces output (evidence: `README.md`)
- Vulnerability scan → Wrapper and reducer: reduces output (evidence: `README.md`)
- Web fuzzing → Wrapper and reducer: reduces output (evidence: `README.md`)
- TLS analysis → Wrapper and reducer: reduces output (evidence: `README.md`)
- Secret detection → Wrapper and reducer: reduces output (evidence: `README.md`)
- XSS testing → Wrapper and reducer: reduces output (evidence: `README.md`)
- CORS testing → Wrapper and reducer: produces JSON (evidence: `README.md`)
- Takeover detection → Wrapper and reducer: reduces output (evidence: `README.md`)
- Run comparison → Wrapper and reducer: compares runs (evidence: `README.md`)
- Wrapper and reducer → Raijin Schema: emits (evidence: `README.md`)
