Local MCP capabilities provider for Expo
IA-QA Security — 30 tools is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Agent security: prompt injection, PII & secret scans, TLS/header/CORS audits, MCP checks. Free.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http ia-qa-security-30-tools-mcp https://www.ia-qa.com/mcp/security
# 2 — ask your agent for something these tools do
# find_tool, prompt_injection_scan, guardrail_test and 27 more
IA-QA Security — 30 tools costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http ia-qa-security-30-tools-mcp https://www.ia-qa.com/mcp/securityReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
30 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Search available MCP tools by keyword or category before calling them. Returns matching tool names, descriptions, and optionally their inputSchemas. Call this when you are unsure which tool to use or want to explore the catalogue. Categories: data, encoding, text, llm, qa, rag, dev, security, web.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Keyword(s) to search in tool name and description (e.g. "cors", "token", "vector", "json") |
| category | string | no | Optional: filter by category — data | encoding | text | llm | qa | rag | dev | security | web |
| with_schema | boolean | no | Set true to include inputSchema in results (default: false) |
| max_results | number | no | Maximum tools to return (default 10, max 50). Results are ranked by IDF-weighted relevance, so common words like "test" do not inflate the list. |
Scan user input or prompts for common prompt injection patterns. Pattern-based: it recognises known phrasings and structural markers, not intent — a paraphrase it has no pattern for, or a language it does not cover, reads clean, so a clean result is not proof of safety. The instruction-override phrasing is covered in English, French, Spanish, German, Italian, Portuguese, Dutch, Russian, Chinese, J
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The user input or prompt to scan for injection patterns |
| sensitivity | string | no | Detection sensitivity (default: medium) |
Test an LLM response against a set of guardrail rules: must-include, must-not-include, max length, required format, language, forbidden patterns, and custom regex. Returns pass/fail per rule.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| response | string | yes | The LLM response to test |
| rules | array | yes | Array of guardrail rules to check |
Automatically detect and redact Personally Identifiable Information (PII) from text. Replaces emails, phone numbers, SSNs, IBANs, credit cards, IP addresses, and JWT tokens with [REDACTED_TYPE] placeholders. Safe to use before logging or sending to an LLM.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Text to redact PII from |
| types | string | no | Comma-separated types to redact (default: all). Options: email, phone, ssn, iban, credit_card, ip_address, jwt |
| marker | string | no | Custom replacement marker (default: "REDACTED"). Result: [REDACTED_EMAIL] |
Scan text or code for leaked secrets: API keys (AWS, GCP, Azure, OpenAI, Anthropic, Stripe, GitHub, GitLab, Slack, Twilio, SendGrid, HuggingFace), private keys (RSA/EC/PGP), JWTs, database connection strings, Bearer tokens, and Basic auth headers. Returns a list of findings with type, severity, line number, and a redacted preview. Use before committing code, sharing logs, or sending text to an LLM
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Text or code to scan for secrets |
| types | string | no | Comma-separated families to scan (default: all): aws, gcp, azure, openai, anthropic, huggingface, github, gitlab, stripe, slack, twilio, sendgrid, jwt, private_key, connection_string, bearer, basic_au |
Run declarative assertions on an agent trace (OpenAI tool-call messages, Anthropic tool_use/tool_result blocks, LangChain run trees, or plain text ReAct logs). No LLM call — deterministic. Assertion types: order (tool A before B), must_call, must_not_call, max_calls, min_calls, no_error, recovery (agent completes a successful step after its last error). A step counts as errored when the trace says
| Parameter | Type | Required | Notes |
|---|---|---|---|
| trace | yes | Agent execution trace as JSON (OpenAI messages array, LangChain run tree) or plain text log (Thought/Action/Observation format). | |
| assertions | array | yes | List of assertions to validate against the trace. |
| format | string | no | Trace format. auto (default) detects automatically. |
Validate that an MCP tool response conforms to expected format, schema, and content rules. Use this to QA-test any MCP server tool. Supply the tool's actual JSON result and a set of checks to perform.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| response | string | yes | The MCP tool result as a JSON string to validate |
| expected_type | string | no | Expected top-level type: "object", "array", "string", "number" |
| required_keys | string | no | Comma-separated list of keys that MUST exist in the response (dot-notation for nested: "data.id, data.name") |
| forbidden_keys | string | no | Comma-separated list of keys that MUST NOT exist (e.g. "password, secret, token") |
| max_response_ms | number | no | Maximum acceptable latency in ms (will be compared if provided) |
| actual_latency | number | no | Actual measured latency in ms (from the call) |
| min_items | number | no | If response is an array, minimum number of items expected |
| max_size_bytes | number | no | Maximum acceptable response size in bytes |
Check an MCP server's tool definitions without contacting it — for a server not deployed yet, a stdio server, or a CI gate. Paste the answer to tools/list (raw JSON-RPC or its result), a bare array of tools, one tool definition, or a manifest carrying name/description; input_shape says which one was read. Validates every tool against the MCP spec (name 1-128 chars of A-Z a-z 0-9 _ - .; camelCase a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| manifest | string | yes | JSON text: the answer to tools/list (raw JSON-RPC or its result), an array of tools, one tool definition, or a manifest with name/description/tools. |
| strict | boolean | no | Also require documentation: every description ≥ 20 characters, every parameter with a description and a type. |
Run a compliance evaluation against a live MCP server over Streamable HTTP, the way a client meets it. Checks: initialize (protocol version, serverInfo, Mcp-Session-Id carried afterwards), notifications/initialized (202), tools/list with pagination, the spec's tool-definition rules, ping, an unknown method (-32601), one tools/call, GET on the endpoint (SSE or 405), and P50/P95 latency over pings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Public URL of the MCP endpoint (e.g. https://mcp.example.com/mcp). An origin alone (https://www.ia-qa.com) tries /mcp, then /. |
| test_tool_name | string | no | Tool to call in the tools/call step. Without it, the first tool annotated readOnlyHint: true is called, or none. |
Scan text for toxic language, hate speech, bias/stereotype framing, violence, sexual and self-harm content. Lexical + structural pattern matching (identity term + predicate), not a semantic classifier — returns per-category risk plus the named rules that fired, so every finding can be checked. Languages: English for every category; French for insults, coarse language, direct threats and self-harm
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Text to scan |
| categories | array | no | Categories to check (default: all) |
Validate an LLM function call / tool_use output: check that function name is in allowed list, arguments match expected schema (types, enums, ranges), no extra/missing args. Reads the definitions as OpenAI (parameters), MCP (inputSchema) or Anthropic (input_schema) write them, or as plain required_args/optional_args; reads the call as arguments (object or JSON string), input (Anthropi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| function_call | object | yes | The function call object from LLM (e.g. { "name": "get_weather", "arguments": {"city":"Paris"} }) |
| allowed_functions | array | yes | List of allowed function definitions, in OpenAI, MCP or Anthropic form, or as {name, required_args, optional_args} |
Lint an MCP tool definition for best practices: naming conventions, description quality, schema completeness, required fields consistency, description length. Returns actionable warnings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tool_definition | object | yes | MCP tool definition object with name, description, inputSchema |
Analyse a set of LLM responses generated from the same prompt template but with different demographic variants (gender, origin, age, tone). Returns a bias score (0-100), sentiment analysis per variant, pairwise Jaccard similarity, and a human-readable verdict. No API key needed — runs entirely locally.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| responses | array | yes | Array of variant responses to compare for bias |
Run a comprehensive AI guardrail analysis on an LLM response. Orchestrates 7 deterministic safety checks plus an optional LLM-powered deep analysis in parallel: hallucination detection (grounding score), prompt injection scan on BOTH the response and the original prompt (reported separately as checks.injection / checks.injection_prompt, scored once at the worse of the two), toxicity scan, output v
| Parameter | Type | Required | Notes |
|---|---|---|---|
| response | string | yes | The LLM-generated response to analyze |
| source | string | no | Optional reference/source text for hallucination grounding check |
| prompt | string | no | Optional original prompt. Used for quality scoring AND scanned for prompt injection in its own right (checks.injection_prompt) — pass it whenever you have it, it is where the attack actually lands. |
| rules | array | no | Optional guardrail rules array (same format as guardrail_test tool) |
| model | string | no | LLM model for AI-powered deep analysis (default: "openai/gpt-oss-20b"). Set to "none" to skip LLM check. Supports any model from list_llm_models. |
Analyse the HTTP security headers of a public URL OR of raw response headers you paste in. Grades each header (A–F) for: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection, Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy, and Cross-Origin-Embedder-Policy. Returns an overall score (0–100), per-h
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | no | Optional. Full public URL to check (e.g. https://example.com). Omit it entirely when using headers. The server cannot reach localhost/private IPs. |
| headers | no | Optional, and sufficient on its own (no url needed). The response headers to grade, either as an object {"strict-transport-security": "max-age=...", ...} or as the raw header block pasted as a string |
Analyse the SSL/TLS certificate of any HTTPS host. Returns certificate subject, issuer, validity dates, days until expiry, protocol version, cipher suite, key exchange info, and an overall grade (A+, A, B, C, F). Detects expired, self-signed, and weak certificates. Use this to audit TLS posture before production deployment or during security reviews.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| host | string | yes | Hostname to check (e.g. example.com). Do not include https:// prefix. |
| port | number | no | Port number (default: 443) |
Test a URL for CORS misconfigurations. Sends preflight (OPTIONS) requests with various Origin headers to detect: wildcard origins with credentials, origin reflection (echoing any origin), null origin acceptance, subdomain wildcard bypass, and missing Vary headers. Returns risk level (safe/low/medium/high/critical) plus per-origin results. "unknown" means nothing was actually tested — every origin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Full URL to test (e.g. https://api.example.com/endpoint) |
| origin | string | no | Custom Origin header to test (default: tests multiple origins automatically) |
Check the CORS configuration of a URL the same way a browser would. Returns the main response status, all Access-Control-* headers, the tested origin, and the preflight OPTIONS response. Use this for direct CORS debugging, not just security auditing.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Full URL to test, e.g. https://api.example.com/resource |
| origin | string | no | Origin header to simulate (default: https://yourdomain.com) |
| method | string | no | HTTP method to simulate (default: GET) |
Audit the security attributes of cookies set by any URL. Fetches the URL and inspects all Set-Cookie headers for: HttpOnly, Secure, SameSite, Domain scope, Path scope, Max-Age/Expires, __Host-/__Secure- prefixes. Flags insecure patterns: missing HttpOnly on session cookies, missing Secure flag, SameSite=None without Secure, overly broad Domain, and excessive TTL. Returns per-cookie grades and an o
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Full URL to audit (e.g. https://example.com/login) |
Run a comprehensive web security audit combining headers, SSL, CORS, and cookies checks — then use an LLM to produce a prioritised remediation plan. Orchestrates security_headers_check + ssl_certificate_check + cors_test + cookie_security_audit in parallel, merges all findings, then asks an AI model to: (1) rank vulnerabilities by real-world exploitability, (2) generate a remediation roadmap, (3)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Full URL to audit (e.g. https://example.com) |
| model | string | no | LLM model for AI analysis (default: "openai/gpt-oss-20b"). Set to "none" to skip AI analysis. |
| api_key | string | no | Your Groq or HuggingFace API key. Required to enable AI analysis. |
Give honest usage feedback on an IA-QA MCP tool. Provide a score (1-5) and a comment. Rate low (1-2) if the tool was wrong, irrelevant, or a poor fit; rate high (4-5) only if it genuinely solved your need. Ratings are read by the IA-QA maintainers and are not published, one vote per agent and tool a month. Comments are screened before storing: one carrying a credential is not stored and personal d
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tool_name | string | yes | Name of the MCP tool to rate (e.g. "format_json", "shield_analyze") |
| score | number | yes | Rating from 1 (poor) to 5 (excellent) |
| comment | string | no | Strongly encouraged — explain what you were trying to do and whether the tool got you there. Be specific about what was missing, wrong, or a poor fit. This is the most valuable part of the rating. Up |
Decode a JWT (JSON Web Token) and return its header and payload without verifying the signature. Also reports whether the token is expired and the exact expiry date. Use to inspect claims (sub, iss, exp, roles) during debugging or when integrating with an auth provider.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token | string | yes | The JWT string to decode (header.payload.signature) |
Parse and validate a URL. Returns decomposed components: protocol, hostname, port, path, query parameters, hash, and origin.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | URL to validate and parse |
Look up detailed information about any HTTP status code: class, name, description, cacheability, typical causes, and handling best practices. Covers every code in the IANA HTTP Status Code Registry (1xx-5xx, including 226, 425, 451, 508, 511 and the WebDAV codes) with its defining RFC; anything outside the registry is reported as registered: false rather than described. cacheable means heurist
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | number | yes | HTTP status code (e.g. 200, 404, 429, 503) |
Parse a raw HTTP headers block into a structured JSON object. Detects multi-value headers, masks Authorization values, and optionally audits for missing security headers (HSTS, CSP, X-Frame-Options, etc.).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| headers | string | yes | Raw HTTP headers (one "Name: Value" per line) |
| analyze_security | boolean | no | Audit for missing security headers (default: true) |
Scan code or config files for hardcoded secrets: AWS keys, GitHub tokens, OpenAI/Anthropic API keys, Stripe secrets, JWTs, database connection strings, and generic passwords. Returns findings with severity. Run before every commit.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Code or config content to scan (max 500KB) |
| filename | string | no | Optional filename for context (e.g. ".env", "config.js") |
Measure response time of one or more HTTP endpoints (GET/POST). Runs N iterations and returns min/max/avg/p95 latency. Useful for API and MCP server benchmarking.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoints | string/array | yes | Endpoints to benchmark. Accepts a single URL string, an array of URL strings, or an array of {url, method?, body?, headers?, label?} objects. |
| iterations | number | no | Number of iterations per endpoint (default: 3, max: 10) |
Compute a cryptographic hash of a text string. Use when you need to verify data integrity, generate content fingerprints, hash passwords (prefer SHA-256+), or produce a fixed-length digest of any input. Supports SHA-256 (default), SHA-512, SHA-1, and MD5.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Text to hash |
| algorithm | string | no | Hash algorithm: sha256 (default), sha512, sha1, md5 |
Generate a cryptographically secure random password using crypto.randomBytes. Configurable length (4–128), uppercase letters, digits, and symbols. Use when resetting user passwords, seeding test accounts, or generating API secrets.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| length | number | no | Password length (4–128, default: 16) |
| uppercase | boolean | no | Include uppercase letters (default: true) |
| numbers | boolean | no | Include digits (default: true) |
| symbols | boolean | no | Include symbols like !@#$ (default: false) |
Compute an HMAC signature for a message using a secret key. Supports SHA-256 (default), SHA-512, SHA-1, and MD5. Used for API request signing, webhook verification (GitHub, Stripe, Twilio), and JWT validation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| message | string | yes | Message to sign |
| secret | string | yes | Secret key |
| algorithm | string | no | Hash algorithm: sha256 (default), sha512, sha1, md5 |
| encoding | string | no | Output encoding (default: hex) |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install IA-QA Security — 30 tools or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| find_tool | no tags | |
| prompt_injection_scan | no tags | |
| guardrail_test | no tags | |
| redact_pii | no tags | |
| secret_scan | no tags | |
| validate_agent_trajectory | no tags | |
| validate_mcp_response | no tags | |
| mcp_server_health_check | no tags | |
| mcp_server_evaluate | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| toxicity_scan | no tags | |
| function_call_validate | no tags | |
| mcp_schema_lint | no tags | |
| bias_detect | no tags | |
| shield_analyze | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| security_headers_check | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| ssl_certificate_check | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| cors_test | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| cors_checker | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| cookie_security_audit | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| web_security_audit | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| rate_tool | state-write | state-write: declares readOnlyHint: false |
| decode_jwt | no tags | |
| validate_url | no tags | |
| http_status_lookup | no tags | |
| parse_http_headers | no tags | |
| detect_secrets | no tags | |
| latency_benchmark | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| hash_text | no tags | |
| generate_password | no tags | |
| generate_hmac | external-sink | external-sink: keyword "webhook" |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.1.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish IA-QA Security — 30 tools can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.