io.github.operantlabs/operant-mcp
NPM · OPERANT-MCP · SCANNED SEP 20
Security testing MCP server for penetration testing, forensics, and vulnerability assessment
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security48
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 172 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6682 tokens (~131/item across 51 items; 51 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 51 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.operantlabs/operant-mcp server?
io.github.operantlabs/operant-mcp runs locally as an npm package, launched with npx -y operant-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · operant-mcp
claude mcp add operantlabs-operant-mcp -- npx -y operant-mcp
{
"mcpServers": {
"operantlabs-operant-mcp": {
"command": "npx",
"args": [
"-y",
"operant-mcp"
]
}
}
} {
"servers": {
"operantlabs-operant-mcp": {
"command": "npx",
"args": [
"-y",
"operant-mcp"
]
}
}
} codex mcp add operantlabs-operant-mcp -- npx -y operant-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"operantlabs-operant-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"operant-mcp"
],
"enabled": true
}
}
} openclaw mcp add operantlabs-operant-mcp --command npx --arg -y --arg operant-mcp
mcp_servers:
operantlabs-operant-mcp:
command: "npx"
args: ["-y", "operant-mcp"] {
"McpServers": {
"operantlabs-operant-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"operant-mcp"
]
}
}
} assistant mcp add operantlabs-operant-mcp -t stdio -c npx -a -y operant-mcp
{
"mcpServers": {
"operantlabs-operant-mcp": {
"command": "npx",
"args": [
"-y",
"operant-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 −3
- Stability: pass → 0.80 functional
- 15 Sept 26 +1
- Stability: 0.97 → pass security
- Security disclosure: unverified → fail ▼ functional
- 14 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 0
- Security disclosure: unverified → fail ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/operant-mcp@1.0.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
auth_bruteforce ~240
Username enumeration and credential brute-force. First enumerates valid usernames (if failure messages differ), then brute-forces passwords against confirmed usernames. Returns: {"username_enumeration": [{"username": str, "exists": bool}], "valid_credentials": [{"username": str, "password": str}], "requests_sent": int}. Side effects: Sends login requests. May trigger account lockout. Errors: Rate limiting may block requests. Use realistic credentials to avoid WAF detection.
| Name | Type | Req | Description |
|---|---|---|---|
| concurrent | number | – | Concurrent requests |
| content_type | string | – | Request content type |
| failure_indicator | string | – | String in response that indicates failure (e.g. 'invalid', 'incorrect') |
| method | string | – | HTTP method |
| password_field | string | – | Form field name for password |
| passwords | array | yes | Passwords to test |
| success_indicator | string | – | String in response that indicates success (e.g. 'dashboard', 'welcome') |
| url | string | yes | Login form URL |
| username_field | string | – | Form field name for username |
| usernames | array | yes | Usernames to test |
No output schema declared.
No examples provided.
auth_cookie_tamper ~122
Test cookie manipulation for privilege escalation. Sends requests with tampered cookie values and checks for access. Returns: {"results": [{"cookies": dict, "status": int, "length": int, "response_snippet": str}]}. Side effects: Sends GET requests with manipulated cookies.
| Name | Type | Req | Description |
|---|---|---|---|
| cookies | object | yes | Cookie name-value pairs to send, e.g. {"logged_in": "true", "admin": "1"} |
| url | string | yes | URL to test with tampered cookies (e.g. /dashboard, /admin) |
No output schema declared.
No examples provided.
auth_csrf_extract ~97
Extract CSRF tokens from HTML forms. Searches for the token in hidden input fields, meta tags, and script blocks. Returns: {"tokens_found": [{"source": str, "value": str}], "cookies": [str]}. Side effects: Single GET request.
| Name | Type | Req | Description |
|---|---|---|---|
| token_name | string | – | CSRF token field name to search for |
| url | string | yes | URL of the form page containing CSRF token |
No output schema declared.
No examples provided.
clickjacking_test ~124
Check X-Frame-Options and CSP frame-ancestors headers; generate PoC iframe HTML. Fetches response headers and checks for framing protections. If protections are missing, generates a ready-to-use PoC HTML page that embeds the target in a transparent iframe with a decoy button overlay. Returns: {headers, x_frame_options, csp_frame_ancestors, vulnerable, poc_html}. Side effects: Single HEAD/GET request.
| Name | Type | Req | Description |
|---|---|---|---|
| target_url | string | yes | URL to test for clickjacking vulnerability, e.g. https://target/my-account |
No output schema declared.
No examples provided.
cloudtrail_analyze ~95
Parse and analyze AWS CloudTrail logs. Extracts event timeline, unique users, event types, and source IPs. Returns: {"event_count": int, "unique_users": [str], "event_types": [str], "source_ips": [str], "timeline": str}. Side effects: Read-only file analysis. Requires jq.
| Name | Type | Req | Description |
|---|---|---|---|
| log_dir | string | yes | Directory containing CloudTrail JSON log files |
No output schema declared.
No examples provided.
cloudtrail_find_anomalies ~94
Find anomalies in CloudTrail logs: non-AWS IPs, unusual API calls, role assumptions. Returns: {"non_aws_ips": [str], "unusual_events": [str], "role_assumptions": [str], "data_exfil_indicators": [str]}. Side effects: Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| log_dir | string | yes | Directory containing CloudTrail JSON log files |
No output schema declared.
No examples provided.
cmdi_blind_detect ~152
Detect blind command injection via time delay and OOB callbacks. Tests sleep-based delay detection and optional out-of-band (curl/nslookup to callback). Returns time_based results array and oob_payloads list. Side effects: Executes sleep on target if vulnerable. OOB payloads call back to callback_url.
| Name | Type | Req | Description |
|---|---|---|---|
| base_value | string | – | Legitimate parameter value |
| callback_url | string | – | Out-of-band callback URL for OOB detection (e.g. Burp Collaborator) |
| delay_seconds | number | – | Sleep duration for time-based detection |
| method | string | – | HTTP method |
| parameter | string | yes | Vulnerable parameter name |
| url | string | yes | Target URL |
No output schema declared.
No examples provided.
cmdi_test ~168
Test command injection using various shell operators. Tests ;, &&, ||, |, backtick, $(), and %0a (newline) operators with 'id' and 'whoami' as detection commands. Returns results array with operator, payload, status, output_snippet, likely_vulnerable. Side effects: Read-only detection commands (id, whoami). Sends ~14 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| base_value | string | – | Legitimate value for the parameter, e.g. '1' |
| method | string | – | HTTP method |
| operators | array | – | Injection operators to test. Default: all common operators. |
| parameter | string | yes | Vulnerable parameter name, e.g. 'storeId' |
| url | string | yes | Target URL that processes the parameter server-side |
No output schema declared.
No examples provided.
cors_test ~164
Test CORS misconfigurations: origin reflection, null origin trust, subdomain wildcards. Sends requests with various Origin headers and checks Access-Control-Allow-Origin and Access-Control-Allow-Credentials in the response. Misconfigurations allow attacker sites to read authenticated API responses. Returns: {results: [{test, origin_sent, acao, acac, vulnerable}], exploit_html}. Side effects: Read-only requests with custom Origin headers. Sends ~8 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| api_endpoint | string | yes | API endpoint to test CORS on, e.g. /api/account or /api/users/me |
| auth_cookie | string | – | Session cookie to include for authenticated CORS tests |
| url | string | yes | Base URL of the target application, e.g. https://target.com |
No output schema declared.
No examples provided.
coupon_abuse_test ~187
Test coupon stacking and alternation bypass. Tests each coupon individually, then alternates between coupons to see if discounts compound past the intended limit. Returns: {"individual_results": [...], "stacking_results": [...], "stacking_possible": bool}. Side effects: Applies coupons to the cart. May modify cart totals.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie for authenticated requests |
| coupon_endpoint | string | yes | Full URL for applying coupons, e.g. https://target/cart/coupon |
| coupon_param | string | – | Form parameter name for the coupon code |
| coupons | array | yes | Coupon codes to test, e.g. ['NEWCUST5', 'SIGNUP30', 'FREESHIP'] |
| stacking_rounds | number | – | Number of alternation rounds to test for coupon stacking |
| url | string | yes | Coupon application endpoint URL |
No output schema declared.
No examples provided.
deserialization_test ~190
Detect and manipulate serialized objects in cookies. Analyzes cookie values for serialization patterns (PHP serialize, Java, .NET ViewState, base64-encoded JSON). If a serialized format is detected, attempts privilege escalation by modifying fields (admin=1, role=admin). Returns: {detection: {format, decoded, fields}, manipulation_results: [...]}. Side effects: Sends requests with modified cookies. May escalate privileges if successful.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Additional auth cookies to send, e.g. 'session=abc123' |
| cookie_name | string | yes | Cookie name that may contain serialized data, e.g. 'session', 'user', 'data' |
| cookie_value | string | – | Current cookie value to analyze. If not provided, fetches from the target URL |
| url | string | yes | Target URL to test, e.g. https://target/my-account |
No output schema declared.
No examples provided.
file_upload_test ~291
Test web shell upload with Content-Type bypass variants. Attempts to upload a PHP web shell using various techniques: 1) Direct .php upload 2) .php with image/jpeg Content-Type (Content-Type bypass) 3) Alternative extensions (.php5, .phtml, .phar, .php7, .phps) 4) Double extension (.php.jpg) 5) Null byte (.php%00.jpg). After each upload, attempts to access the uploaded file to check execution. Returns: {results: [{technique, upload_status, execution_status, output, successful}]}. Side effects: Uploads files to the server. May achieve remote code execution.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie for authenticated uploads |
| extra_fields | string | – | Additional form fields, e.g. 'user=test&csrf=abc123' |
| shell_command | string | – | Command the PHP shell should execute |
| upload_endpoint | string | yes | Upload endpoint path, e.g. /my-account/avatar or /api/upload |
| upload_field | string | – | Form field name for the file upload, e.g. 'avatar', 'file', 'upload' |
| upload_path_prefix | string | – | Path where uploaded files are accessible, e.g. /files/avatars/ |
| url | string | yes | Base URL of the target application, e.g. https://target.com |
No output schema declared.
No examples provided.
frame_buster_bypass ~118
Test sandbox attribute bypass for JavaScript frame busters. Generates PoC HTML that uses iframe sandbox='allow-forms' to disable JavaScript execution (neutralizing frame-busting code) while still allowing form submission for clickjacking. Also checks if the target page contains common frame-busting patterns. Returns: {frame_buster_detected, patterns_found, sandbox_poc_html}. Side effects: Single GET request to detect frame-busting code.
| Name | Type | Req | Description |
|---|---|---|---|
| target_url | string | yes | URL that uses JavaScript frame-busting code |
No output schema declared.
No examples provided.
graphql_find_hidden ~235
Find hidden/undocumented fields on a GraphQL type using field suggestion errors. Sends queries with intentionally misspelled field names to trigger GraphQL's field suggestion feature, which reveals valid field names. Also tries common sensitive field names directly. Returns: {discovered_fields: [str], suggestion_results: [...], direct_probe_results: [...]}. Side effects: Read-only POST requests. Sends ~25 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie |
| auth_header | string | – | Authorization header value |
| known_field | string | – | A known field on this type to use in queries, e.g. 'id' or 'title' |
| query_arg | string | – | Query argument, e.g. 'id: 1' or 'slug: "test"' |
| query_name | string | – | Query name to use for fetching objects, e.g. 'getUser' or 'getBlogPost' |
| type_name | string | yes | GraphQL type to probe for hidden fields, e.g. 'User', 'Post', 'BlogPost' |
| url | string | yes | GraphQL endpoint URL |
No output schema declared.
No examples provided.
graphql_introspect ~150
Run introspection query to enumerate all types, fields, and mutations. Sends the standard GraphQL introspection query (__schema) to discover the full API schema including hidden/undocumented fields, mutations, and types. Returns: {introspection_enabled, types: [{name, kind, fields: [str]}], mutations: [str], queries: [str]}. Side effects: Single POST request. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie for authenticated requests |
| auth_header | string | – | Authorization header value, e.g. 'Bearer abc123' |
| url | string | yes | GraphQL endpoint URL, e.g. https://target/graphql or https://target/api |
No output schema declared.
No examples provided.
idor_test ~269
Test Insecure Direct Object References by iterating through IDs/GUIDs. Sends requests with each ID and compares response status codes and lengths. Differing responses suggest IDOR — the server returns data for other users' objects without proper authorization checks. Returns: {"baseline": dict, "results": [{"id": str, "status": int, "length": int, "different": bool, "snippet": str}], "idor_candidates": [str]}. Side effects: Read-only requests. Sends len(id_list) + 1 requests. Errors: ConnectionError if target unreachable.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie to send (e.g. 'session=abc123'). If None, tests without auth |
| id_list | array | yes | List of IDs/GUIDs to test, e.g. ['1','2','3'] or ['abc-def-123', 'ghi-jkl-456'] |
| method | string | – | HTTP method to use |
| parameter | string | yes | Parameter name containing the ID, e.g. 'id'. Use '__path__' if the ID is in the URL path |
| url | string | yes | URL with ID parameter, e.g. https://target/my-account?id=123 or https://target/api/users/123 |
No output schema declared.
No examples provided.
maldoc_analyze ~188
Full malware document analysis pipeline. 1. oledump.py — list OLE streams, identify macro-containing streams (marked 'M') 2. olevba — extract VBA macro code 3. Identify auto-execution triggers (Document_open, AutoOpen, Workbook_Open) 4. Look for obfuscation patterns and base64 payloads 5. Search for PowerShell, WMI, and shell execution indicators Returns: {"ole_streams": str, "vba_macros": str, "auto_exec_triggers": [str], "suspicious_strings": [str], "iocs": [str]}. Side effects: Read-only file analysis. Does NOT execute any payloads. Errors: Requires oledump.py and olevba (pip install oletools).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to the suspicious OLE document (.doc, .xls, .bin) |
No output schema declared.
No examples provided.
maldoc_extract_macros ~66
Extract raw VBA macros from an OLE document. Returns: {"macros": str, "stream_count": int, "macro_streams": [str]}. Side effects: Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to the OLE document |
No output schema declared.
No examples provided.
memory_detect_rootkit ~85
Check for rootkits via syscall table tampering and hidden kernel modules. Runs linux_check_syscall and linux_hidden_modules plugins. Returns syscall_check, hidden_modules, rootkit_indicators, and likely_compromised. Read-only analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| dump_path | string | yes | Path to the Linux memory dump file |
| profile | string | yes | Volatility 2 profile name |
No output schema declared.
No examples provided.
nosqli_auth_bypass ~178
Test NoSQL operator injection ($ne, $gt, $regex) for authentication bypass. Sends payloads that abuse MongoDB query operators to bypass password checks. E.g., {"username":"admin","password":{"$ne":""}} matches any non-empty password. Returns: {results: [{payload_name, status, length, likely_bypass, snippet}]}. Side effects: Sends POST requests to the login endpoint. May create sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| password_param | string | – | JSON field name for password |
| target_username | string | – | Username to bypass auth for, e.g. 'admin' |
| url | string | yes | Login endpoint URL, e.g. https://target/login or https://target/api/auth |
| username_param | string | – | JSON field name for username, e.g. 'username' or 'email' |
No output schema declared.
No examples provided.
nosqli_detect ~150
Test NoSQL injection detection in query parameters. Tests MongoDB operator injection ($ne, $gt, $regex, $where) in GET parameters and JSON body to detect NoSQL injection points. Returns: {baseline, results: [{payload_name, status, length, different}], injectable}. Side effects: Read-only. Sends ~10 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| content_type | string | – | 'query' for URL params, 'json' for JSON body |
| method | string | – | HTTP method |
| parameter | string | yes | Parameter name to test for NoSQL injection |
| url | string | yes | URL with query parameter to test, e.g. https://target/api/products?category=Gifts |
No output schema declared.
No examples provided.
path_traversal_test ~148
Test path traversal with encoding variants at multiple depths. Tries plain ../, URL-encoded %2e%2e/, double-encoded %252e%252e/, and null-byte/truncation bypasses. Returns results array with payload, status, length, contains_target per attempt, and vulnerable_payloads list. Side effects: Read-only GET requests. Sends ~32 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | number | – | Maximum directory traversal depth |
| parameter | string | yes | Parameter that accepts filenames |
| target_file | string | – | Server file to attempt reading |
| url | string | yes | URL with file parameter, e.g. https://target/image?filename=photo.jpg |
No output schema declared.
No examples provided.
pcap_detect_scan ~57
Detect port scans by analyzing SYN packets without ACK. Returns scanners (ip + syn_count), top_scanned_ports, and a hint. Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
No output schema declared.
No examples provided.
pcap_dns_analysis ~72
Extract and analyze DNS queries from a PCAP. Returns dns_queries_by_frequency, dns_servers, and ipv6_dns_endpoints. Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
| source_ip | string | – | Filter DNS queries from a specific source IP |
No output schema declared.
No examples provided.
pcap_extract_credentials ~73
Extract credentials from FTP, HTTP, and SMTP traffic. Returns ftp_credentials, http_authorization_headers, http_post_data, and smtp_data. Read-only, may contain sensitive credentials.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
| protocol | string | – | Protocol to extract credentials from |
No output schema declared.
No examples provided.
pcap_follow_stream ~75
Follow a TCP/UDP/HTTP stream in a PCAP. Returns stream_content, stream_num, and protocol. Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
| protocol | string | – | Stream protocol |
| stream_num | number | yes | TCP stream number to follow |
No output schema declared.
No examples provided.
pcap_http_objects ~75
Export HTTP objects (files) from a PCAP to a directory. Returns exported_count, output_dir, files list, and tshark_output. Creates files in the output directory.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | string | yes | Directory to export HTTP objects to |
| pcap_path | string | yes | Path to the PCAP file |
No output schema declared.
No examples provided.
pcap_llmnr_ntlm ~64
Detect LLMNR poisoning and extract NTLM credentials from SMB. Returns llmnr_queries, ntlm_auth_entries, counts, and poisoning_indicators. Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
No output schema declared.
No examples provided.
pcap_overview ~59
Get protocol hierarchy and endpoint statistics from a PCAP. Returns protocol_hierarchy, endpoints, packet_count, and capture_info. Read-only file analysis, no network access.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
No output schema declared.
No examples provided.
pcap_tls_analysis ~66
Analyze TLS handshakes, SNI values, and certificate data in a PCAP. Returns sni_values, tls_versions, server_ephemeral_keys, and client_randoms. Read-only file analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| pcap_path | string | yes | Path to the PCAP file |
No output schema declared.
No examples provided.
price_manipulation_test ~216
Test client-side price manipulation by sending modified price values. Sends price=0, price=1, price=-1, and negative quantity variants to check if the server validates prices server-side. Returns: {"results": [{"test_case": str, "payload": str, "status": int, "length": int, "accepted": bool, "snippet": str}]}. Side effects: May add items to cart or create orders at manipulated prices.
| Name | Type | Req | Description |
|---|---|---|---|
| auth_cookie | string | – | Session cookie for authenticated requests |
| cart_endpoint | string | – | Separate cart/checkout endpoint to verify final price after manipulation |
| content_type | string | – | Request content type: 'form' or 'json' |
| extra_params | string | – | Additional form parameters, e.g. 'productId=1&quantity=1' |
| price_param | string | yes | Parameter name for the price, e.g. 'price', 'amount', 'total' |
| url | string | yes | URL that processes the purchase/cart action |
No output schema declared.
No examples provided.
recon_directory_bruteforce ~123
Directory brute-force using parallel curl requests. Returns results (path/status/length), found_count, and paths_tested. Read-only GET requests, sends one request per wordlist entry per extension.
| Name | Type | Req | Description |
|---|---|---|---|
| extensions | string | – | Comma-separated extensions to append, e.g. 'php,html,txt' |
| target | string | yes | Base URL, e.g. https://example.com |
| threads | number | – | Concurrent request count |
| wordlist | string | – | Path to wordlist file. Uses built-in common paths if not provided. |
No output schema declared.
No examples provided.
recon_dns ~65
Full DNS enumeration: A, AAAA, MX, TXT, NS, CNAME, AXFR, BIND version. Returns records object, axfr_result, and bind_version. Read-only DNS queries.
| Name | Type | Req | Description |
|---|---|---|---|
| target | string | yes | Target domain, e.g. example.com |
No output schema declared.
No examples provided.
recon_git_secrets ~69
Search git history for secrets: commit messages, author info, branches, deleted files. Returns secrets_in_code_history, unique_authors, branches, deleted_files_summary, and suspicious_commit_messages. Read-only git operations on local repository.
| Name | Type | Req | Description |
|---|---|---|---|
| repo_path | string | yes | Path to the git repository |
No output schema declared.
No examples provided.
recon_quick ~75
Quick reconnaissance: robots.txt, security.txt, common dirs, response headers. Returns robots_txt, security_txt, response_headers, accessible_directories, and error_page_snippet. Read-only, sends ~10 GET requests.
| Name | Type | Req | Description |
|---|---|---|---|
| target | string | yes | Target domain or URL, e.g. example.com or https://example.com |
No output schema declared.
No examples provided.
recon_s3_bucket ~67
Test an S3 bucket for public access (listing, reading). Returns bucket_url, listable, listing_snippet, and readable_files. Read-only requests to S3.
| Name | Type | Req | Description |
|---|---|---|---|
| bucket_name | string | yes | S3 bucket name to test, e.g. 'assets.example.com' |
No output schema declared.
No examples provided.
recon_tls_sans ~71
Extract Subject Alternative Names from the TLS certificate. Returns common_name, subject_alternative_names, issuer, validity, and san_count. Read-only TLS handshake.
| Name | Type | Req | Description |
|---|---|---|---|
| target | string | yes | Target domain or IP:port, e.g. example.com or 1.2.3.4:443 |
No output schema declared.
No examples provided.
recon_vhost ~115
Brute-force virtual hosts by fuzzing the Host header. Returns baseline_length, results (vhost/status/length/length_delta), unique_vhosts, and tested count. Read-only, sends one request per wordlist entry.
| Name | Type | Req | Description |
|---|---|---|---|
| base_domain | string | yes | Base domain for vhost names, e.g. hackycorp.com |
| target | string | yes | Target IP or domain to send requests to |
| wordlist | string | – | Path to wordlist file. Uses built-in common subdomains if not provided. |
No output schema declared.
No examples provided.
role_escalation_test ~270
Test cookie/parameter-based role escalation. Sends requests with various role cookie values (Admin=true, roleid=2, etc.) and checks for privilege escalation. Also tests JSON body field manipulation for profile update endpoints. Returns: {"baseline": dict, "results": [{"value": str, "status": int, "length": int, "escalated": bool}], "escalation_candidates": [str]}. Side effects: If json_body is set, sends POST/PUT requests that may modify state.
| Name | Type | Req | Description |
|---|---|---|---|
| cookie_name | string | yes | Cookie name for role control, e.g. 'admin', 'role', 'is_admin' |
| cookie_values | array | yes | Values to test, e.g. ['true','1','admin','2','yes'] |
| extra_cookies | string | – | Additional cookies to include, e.g. 'session=abc123; logged_in=true' |
| json_body | string | – | JSON body for POST-based role escalation, e.g. '{"roleid":2}'. Will test each value substituted |
| json_field | string | – | JSON field to manipulate in json_body, e.g. 'roleid' |
| url | string | yes | Protected URL to access, e.g. https://target/admin or https://target/api/users |
No output schema declared.
No examples provided.
sqli_blind_boolean ~144
Boolean-based blind SQLi with binary search character enumeration. Uses ASCII(SUBSTRING(...))>N technique with binary search for efficiency. Determines true/false by comparing response lengths. Returns extracted_value, characters_found, requests_sent. Side effects: Read-only. Sends ~8 requests per character (binary search on ASCII 32-126).
| Name | Type | Req | Description |
|---|---|---|---|
| max_length | number | – | Maximum string length to extract |
| parameter | string | yes | Vulnerable parameter name |
| query | string | – | SQL sub-query to extract, e.g. 'database()' or '(SELECT password FROM users LIMIT 1)' |
| url | string | yes | Full URL with injectable parameter |
No output schema declared.
No examples provided.
sqli_blind_time ~127
Time-based blind SQLi detection for MySQL, PostgreSQL, and MSSQL. Sends sleep-inducing payloads and measures response time to detect injection. Returns vulnerable, dbtype, and results array with payload, response_time, triggered. Side effects: Read-only but slow (each payload waits up to delay_seconds). Sends 3 requests.
| Name | Type | Req | Description |
|---|---|---|---|
| dbtype | string | – | Target database type |
| delay_seconds | number | – | Sleep duration for true condition |
| parameter | string | yes | Vulnerable parameter name |
| url | string | yes | Full URL with injectable parameter |
No output schema declared.
No examples provided.
sqli_file_read ~131
Read server files via UNION SELECT LOAD_FILE(). Requires MySQL FILE privilege. Uses LOAD_FILE() in a UNION SELECT. Returns file_content, success, target_file. Errors: FILE privilege required. Returns empty if privilege denied.
| Name | Type | Req | Description |
|---|---|---|---|
| column_count | number | – | Number of columns (from previous UNION discovery) |
| parameter | string | yes | Vulnerable parameter name |
| string_column | number | – | 1-indexed column that displays strings |
| target_file | string | – | Server-side file to read, e.g. /etc/passwd |
| url | string | yes | Full URL with injectable parameter |
No output schema declared.
No examples provided.
sqli_login_bypass ~152
Bypass login via SQL comment truncation (administrator'--). Extracts CSRF token from form, then POSTs with SQLi in the username field. The -- comment truncates the password check. Returns csrf_extracted, status_code, response_length, headers, likely_bypass.
| Name | Type | Req | Description |
|---|---|---|---|
| csrf_field | string | – | Name of the CSRF token field in the form |
| password_field | string | – | Name of the password form field |
| url | string | yes | Login form URL, e.g. https://target/login |
| username | string | – | Target username to bypass auth for, e.g. 'administrator' |
| username_field | string | – | Name of the username form field |
No output schema declared.
No examples provided.
sqli_union_extract ~146
Step-by-step UNION-based data extraction. 1. Finds column count via ORDER BY. 2. Identifies string-displayable columns via UNION SELECT. 3. Extracts database name and version. 4. Lists tables and columns. Returns column_count, string_columns, db_name, db_version, tables, user_columns. Side effects: Read-only GET requests. Sends ~30 requests depending on column count.
| Name | Type | Req | Description |
|---|---|---|---|
| max_columns | number | – | Maximum columns to probe with ORDER BY |
| parameter | string | yes | Vulnerable query parameter name |
| url | string | yes | Full URL with injectable parameter, e.g. https://target/filter?category=Gifts |
No output schema declared.
No examples provided.
sqli_where_bypass ~152
Test WHERE clause bypass via OR 1=1 variants. Sends multiple payloads (OR 1=1--, OR '1'='1, OR 1=1/*, etc.) against the target parameter and compares response lengths to the baseline. Returns baseline_length and results array. Side effects: None (read-only GET requests). Sends 7 requests total.
| Name | Type | Req | Description |
|---|---|---|---|
| parameter | string | yes | Vulnerable query parameter name, e.g. 'category' |
| url | string | yes | Full URL with query parameter, e.g. https://target/filter?category=Gifts |
| value | string | yes | Legitimate parameter value to base the injection on, e.g. 'Gifts' |
No output schema declared.
No examples provided.
ssrf_cloud_metadata ~122
Test SSRF access to cloud metadata endpoints (AWS/GCP/Azure). Attempts to reach instance metadata services through the SSRF vector. Returns results array with provider, endpoint, status, length, response_snippet. Side effects: May cause target to request cloud metadata. Could expose IAM credentials if successful.
| Name | Type | Req | Description |
|---|---|---|---|
| cloud_provider | string | – | Cloud provider to test metadata endpoints for |
| method | string | – | HTTP method |
| parameter | string | yes | Parameter that accepts URLs |
| url | string | yes | Target URL with SSRF-vulnerable parameter |
No output schema declared.
No examples provided.
ssrf_test ~157
Test SSRF with localhost bypass variants. Sends 10+ representations of localhost (127.0.0.1, 0, decimal, hex, IPv6, etc.) to check if the server fetches internal resources. Returns results array with variant, payload_url, status, length, different_from_baseline per attempt. Side effects: May cause the target server to make internal requests.
| Name | Type | Req | Description |
|---|---|---|---|
| internal_target | string | – | Internal resource to reach, e.g. 'http://localhost/admin' |
| method | string | – | HTTP method |
| parameter | string | yes | Parameter that accepts URLs, e.g. 'url', 'src', 'redirect' |
| url | string | yes | Target URL that accepts a URL/host parameter |
No output schema declared.
No examples provided.
volatility_linux ~106
Run a Volatility 2 Linux plugin against a memory dump. Returns plugin, profile, success, output, and errors. Read-only analysis. Requires volatility2 (vol.py) on PATH.
| Name | Type | Req | Description |
|---|---|---|---|
| dump_path | string | yes | Path to the Linux memory dump file |
| plugin | string | yes | Volatility 2 Linux plugin to run |
| profile | string | yes | Volatility 2 profile name, e.g. 'LinuxCentOS7_7_1908x64' |
No output schema declared.
No examples provided.
volatility_windows ~84
Run a Volatility 3 Windows plugin against a memory dump. Returns plugin, success, output, and errors. Read-only analysis, Volatility 3 auto-detects OS. Requires vol3 (vol) on PATH.
| Name | Type | Req | Description |
|---|---|---|---|
| dump_path | string | yes | Path to the Windows memory dump file |
| plugin | string | yes | Volatility 3 Windows plugin to run |
No output schema declared.
No examples provided.
xss_payload_generate ~115
Generate context-appropriate XSS payloads with optional filter evasion. Returns a list of payloads tailored to the injection context and filter bypass requirements. Returns context, filter_bypass, payloads array, notes. Side effects: None. Pure payload generation, no network requests.
| Name | Type | Req | Description |
|---|---|---|---|
| callback_url | string | – | Attacker-controlled URL for data exfiltration payloads |
| context | string | yes | Injection context: where the user input lands |
| filter_bypass | string | – | Level of filter evasion needed |
No output schema declared.
No examples provided.
What is the io.github.operantlabs/operant-mcp server?
io.github.operantlabs/operant-mcp is listed in the public MCP registry as io.github.operantlabs/operant-mcp. Security testing MCP server for penetration testing, forensics, and vulnerability assessment. This page covers its npm package (operant-mcp).
Is the io.github.operantlabs/operant-mcp server safe to use?
io.github.operantlabs/operant-mcp scores 70 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.operantlabs/operant-mcp server expose?
io.github.operantlabs/operant-mcp exposes 51 tools: sqli_where_bypass, sqli_login_bypass, sqli_union_extract, sqli_blind_boolean, sqli_blind_time, and 46 more. Their descriptions and schemas cost roughly 6,682 tokens of context every time the server is loaded.
Is the io.github.operantlabs/operant-mcp server still maintained?
io.github.operantlabs/operant-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.operantlabs/operant-mcp server under?
io.github.operantlabs/operant-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.