About Request Guard MCP
Request Guard MCP is an MCP server published by rhamenator in the Scraping category: a Rust-based MCP server for defending websites and APIs against AI scraping, with practical detection, policy enforcement, and response controls for bot traffic.
Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/rhamenator/request-guard-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (23)
abuse_pattern_matchHeuristic abuse pattern detection. Development main accepts optional categories `injection`, `traversal`, `ai_attack`, `data_extraction` without regard to ASCII case, rejects unknown categories or misspelled fields, and recognizes ASCII case variants of encoded traversal dots plus encoded slash/backslash after literal `..`. Omitted `categories` checks all patterns. Published v0.1.5 can silently ignore a misspelled filter or return a false-clean result for an unknown category or multiline SQL text. These fixed patterns do not fully URL-decode text or enforce a blocking policy.
Parameters not published.
batch_classifyClassify multiple requests. On development main, `options.include_details: false` omits per-item signal details; omitted or `true` preserves the full result. Unknown batch/options/item field names are rejected before processing any item. Check `errors` and each item error for classification failures when `fail_fast` is false. Published v0.1.5 accepts but ignores `include_details` and can silently ignore misspelled metadata.
Parameters not published.
calibration_reportPrecision/recall report. Development main rejects unknown request fields; published v0.1.5 may silently use the default window after a typo.
Parameters not published.
canary_evalCanary token evaluation. Development main rejects unknown arguments such as a misspelled `context`; published v0.1.5 may silently omit that context. Matched context is stored in Redis unredacted.
Parameters not published.
classifyClassify an inbound request. Development main rejects unknown metadata names (use `extra` for custom metadata) and uses decoded route and file-name boundaries for sensitive paths, while ignoring query/fragment text; `/products/configurable-shirt` stays ordinary, and `/admin`, `/administrator`, `/prod.env`, and `/admin;jsessionid=1` stay sensitive. Published v0.1.5 can silently ignore a misspelled metadata name and can match a sensitive prefix inside an ordinary segment. The heuristic is not site authorization.
Parameters not published.
config_snapshotRunning config snapshot
Parameters not published.
drift_reportScore drift over time. Development main rejects unknown request fields; published v0.1.5 may silently use the default window after a typo.
Parameters not published.
enrich_asnDiagnostic ASN organization and Redis reputation enrichment. Development main reports `asn_data_found` and `reputation_listed`; a 0.1 baseline with both flags false is unverified, not a safety verdict. `is_hosting` is a coarse organization-name heuristic when ASN data exists; `country` is not populated. Published v0.1.5 lacks the evidence flags.
Parameters not published.
enrich_ipIP geolocation/ASN enrichment; development main looks up IPv4-mapped IPv6 under its IPv4 key and treats IPv6 unique-local/link-local as local addresses. Published v0.1.5 does not include this correction.
Parameters not published.
enrich_uaUser-agent parsing and a diagnostic risk hint. Development main also raises the score for rule-engine AI-bot and scraper patterns such as sqlmap, Nikto, masscan and generic HTTP client strings; published v0.1.5 can report 0.1 for them. Broad pattern matches can be false positives. `is_bot` reflects the parser's crawler category, so `false` or a low score is not a safe verdict. Use `classify` for inbound decisions.
Parameters not published.
Show all 23 tools
explainExplain a supplied classification response or recompute from nested request metadata. Development main labels caller-supplied results and does not retrieve a stored decision; optional `format` accepts only `"json"` (the default structured response), rejecting unsupported formats and unknown fields. Published v0.1.5 accepts but ignores other `format` strings and should receive request metadata because a response can be misread as an empty request.
Parameters not published.
feature_flagsList startup feature flags; development main rejects unknown flag names; use `/ready` for live backend readiness.
Parameters not published.
feedbackSubmit classification feedback. On development main, spell optional `notes` and `reporter` exactly; unknown fields are rejected rather than silently dropped. Published v0.1.5 can ignore a misspelled optional field. Requires PostgreSQL.
Parameters not published.
healthServer health check; omit arguments or pass `{}`. Development main rejects unknown arguments; published v0.1.5 can silently ignore them. On development main, `uptime_seconds` counts from server state initialization, including time before the first health call. Published v0.1.5 may begin counting at the first health call.
Parameters not published.
model_infoServer and tool metadata; omit arguments or pass `{}`. Development main rejects unknown arguments; published v0.1.5 can silently ignore them. `enabled` reflects configured startup capability, not live backend health. Check `health` or `/ready` before relying on a backend.
Parameters not published.
queue_statusBest-effort Redis tool-operation telemetry, not a backlog. Development main rejects unknown request fields; published v0.1.5 may silently treat a misspelled `queue` as omitted. `depth` counts observed active records, which can lag or remain stale; `consumers` is the configured global concurrency ceiling, not live workers or free permits. A requested name with no records returns zero activity, which does not prove the queue exists or is healthy.
Parameters not published.
redact_previewPreview case-insensitive, exact JSON key redaction. Development main lists only keys actually replaced in `fields_redacted` and rejects misspelled request fields; published v0.1.5 can misreport this list. Custom `fields` replace the defaults; text inside string values is not parsed.
Parameters not published.
replay_decisionReplay a past decision
Parameters not published.
score_breakdownDiagnostic rule-engine score for optional `signals` containing an inbound classification request metadata object, such as `{"user_agent":"GPTBot/1.0","path":"/"}`. Development main rejects an unknown field, raw signal list, or wrong field type instead of reporting a clean zero; published v0.1.5 can return zero for malformed supplied `signals`. This diagnostic is not a persisted verdict and does not verify a caller-supplied TLS fingerprint. On development main, `threshold_allow` is the exclusive upper boundary (0.40) for an allow score, `threshold_block` is 0.75, and per-signal `weighted_score` values are the numerator of a weighted mean rather than terms that directly sum to `total_score`.
Parameters not published.
self_testBuilt-in test suite (`suite: "all"` or omitted)
Parameters not published.
threat_lookupExact Redis threat-record lookup, not a safety verdict. Development main rejects unknown arguments, folds one trailing domain dot and domain case, rejects uppercase URL schemes, and checks the canonical IP key before the exact supplied spelling for legacy IPv6 records. Seed new IPv6 keys canonically; other aliases are not searched. URL keys otherwise match exact strings. Published v0.1.5 lacks these corrections.
Parameters not published.
validate_payloadCheck a named tool's payload against its request shape; development main checks supplied nested `score_breakdown.signals`, rejects unknown fields for replay, enrichment, validation and self-test requests, and checks supported `feature_flags.flag` and `warmup.target` names. Errors use root path `/`. Execution, feature enablement, backend availability and other business rules are not checked.
Parameters not published.
warmupBest-effort synthetic classify/local-cache warmup, not a Redis health check; development main rejects unsupported targets.
Parameters not published.
Ask AI
Ask AI about Request Guard MCP
Powered by Claude
Security checks
6 checks have not been run yet.