{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5f6zbcvrrbvx","handle":"dryhack-mcp","url":"https://wellknown.network/agents/dryhack-mcp","links":{"self":"https://wellknown.network/agents/dryhack-mcp/record.json","html":"https://wellknown.network/agents/dryhack-mcp","markdown":"https://wellknown.network/agents/dryhack-mcp/record.md","api":"https://wellknown.network/api/v1/agents/dryhack-mcp","status":"https://wellknown.network/api/v1/agents/dryhack-mcp/status","claim":"https://wellknown.network/agents/dryhack-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/dryhack-mcp/claim.json","badge":"https://wellknown.network/agents/dryhack-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/dryhack-mcp/history","tools":"https://wellknown.network/api/v1/agents/dryhack-mcp/tools"},"ard":{"identifier":"urn:air::server:dryhack-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"dryhack-mcp","summary":"DryHack-MCP - an MCP server providing offensive-security tooling (curl, python, shell, Playwright browser) and a scope-gated authorize engine for authorized penetration testing.","description":"# DryHack-MCP\n\nAn MCP (Model Context Protocol) server that gives an AI agent offensive-security\ntooling for **authorized** penetration testing. It exposes four tools:\n\n| Tool | Purpose |\n|------|---------|\n| `curl` | Raw HTTP interaction for web recon/exploitation |\n| `python` | Run ad-hoc Python snippets for scripted probing |\n| `shell` | Run shell commands (`nmap`, `ffuf`, `nc`, `sqlmap`, …) |\n| `browser` | Full Playwright browser automation: navigation, DOM interaction, JavaScript injection, screenshots/PDF, cookies/headers, multi-step chains |\n| `authorize` | Checks target membership in the per-call `scope` parameter; does not verify permission (no external API, no creds) |\n\n> ⚠️ **Legal notice.** Use this only against systems you own or are explicitly\n> authorized (in writing) to test. You are responsible for staying within scope.\n\n## Install\n\n```bash\npython3 -m pip install .\n```\n\nThis installs the `dryhack-mcp` console script (the MCP server).\n\n### Run without installing (uvx)\n\nWith [uv](https://docs.astral.sh/uv/) you can run the server directly from PyPI\n— no manual install needed:\n\n```bash\n# recommended: pull the browser extra so the `browser` tool is guaranteed\nuvx --from 'dryhack-mcp[browser]' dryhack-mcp\n# http transport\nuvx --from 'dryhack-mcp[browser]' dryhack-mcp --transport http --host 0.0.0.0 --port 8000\n# pin a version\nuvx --from 'dryhack-mcp[browser]==2.3.2' dryhack-mcp\n```\n\n> `uvx dryhack-mcp` (without `--from`) also works — Playwright is a core\n> dependency — but the explicit `--from 'dryhack-mcp[browser]'` form is the\n> recommended, unambiguous way to get everything the `browser` tool needs even\n> if a stale cache is involved.\n\nFor development:\n\n```bash\npython3 -m pip install -e \".[dev]\"\n```\n\n### Browser tool (Playwright)\n\nPlaywright is a **core dependency**, so a plain `pip install dryhack-mcp` /\n`uvx dryhack-mcp` already ships it. For MCP clients using uvx, the recommended,\nunambiguous invocation is:\n\n```bash\nuvx --from 'dryhack-mcp[browser]…","publisher":{"name":"Afrizal F.A","url":null},"homepage":"https://github.com/afrizalfarhan/DryHack-MCP","repository":"https://github.com/afrizalfarhan/DryHack-MCP","version":"2.3.2","license":"MIT License\n        \n        Copyright (c) 2026 Afrizal F.A\n   …","protocols":["mcp"],"tags":["mcp","penetration-testing","security","offensive-security","red-team"],"pricing":null,"endpoints":[{"url":"pypi:dryhack-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"code.testing","name":"Testing","confidence":1,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":1,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"derived"},{"slug":"security.scanning","name":"Security Scanning","confidence":1,"provenance":"derived"}],"categories":["code","dev","infra","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"dryhack-mcp","registry":"pypi","observedAt":"2026-10-27T23:25:42.769Z","publishedAt":"2026-09-21T14:49:08.594206Z","latestVersion":"2.3.2"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"dryhack-mcp","url":"https://pypi.org/project/dryhack-mcp/","firstSeenAt":"2026-09-15T13:21:02.152Z","fetchedAt":"2026-10-27T23:25:14.302Z","normalizedAt":"2026-10-27T23:25:14.302Z"}]},"firstSeenAt":"2026-09-15T13:21:02.152Z","updatedAt":"2026-10-27T23:25:42.769Z"}