Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

IA-QA — 152 QA & Dev Tools for AI Agents

REMOTE · WWW.IA-QA.COM

152 free QA tools for agents: injection scan, evals, RAG, web audits. Smaller packs: /mcp/{pack}.

Available components

+2 this week 89 Trust /100

Last scanned (7 hours ago)

Scores higher than 97% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Testing and QA

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability86
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 22973 tokens (~151/item across 152 items; 152 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Tools include usage examples.Pass
Stability & Change Management100
  • Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 97% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "run_eval_contract" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 153 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

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.

  • 5 Nov 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “cors_test” rewrote its description, which is the text the model reads security
    • Tool “mcp_server_evaluate” rewrote its description, which is the text the model reads security
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • MCP protocol version: 2025-11-25 → 2026-07-28 functional
    • “mcp_server_evaluate” added an optional parameter “test_tool_args” cosmetic
    • “mcp_server_evaluate” reworded the description of “test_tool_name” cosmetic
  • 4 Nov 26 0
    • Tool “find_tool” rewrote its description, which is the text the model reads security
    • Tool “rate_tool” rewrote its description, which is the text the model reads security
    • Tool “run_eval_contract” rewrote its description, which is the text the model reads security
    • “run_eval_contract” reworded the description of “inline_contract” cosmetic
  • 3 Nov 26 0
    • Tool “compare_models” rewrote its description, which is the text the model reads security
    • Tool “estimate_llm_cost” rewrote its description, which is the text the model reads security
    • Tool “llm_fit_finder” rewrote its description, which is the text the model reads security
    • Tool “llm_generate” rewrote its description, which is the text the model reads security
    • Tool “token_budget_calculator” rewrote its description, which is the text the model reads security
    • “compare_models” reworded the description of “models” cosmetic
    • “context_window_check” reworded the description of “model” cosmetic
    • “llm_fit_finder” reworded the description of “top_n” cosmetic
    • “llm_fit_finder” reworded the description of “use_case” cosmetic
    • “llm_generate” reworded the description of “model” cosmetic
    • “shield_analyze” reworded the description of “model” cosmetic
    • “token_budget_calculator” reworded the description of “model” cosmetic
    • “compare_models” dropped the optional parameter “use_case” cosmetic
  • 1 Nov 26 +2
    • Stability: pass → fail ▼ security
    • A breaking change shipped without a version bump: still 1.0.0 ▼ security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “detect_secrets” rewrote its description, which is the text the model reads security
    • Tool “generate_ci_workflow” rewrote its description, which is the text the model reads security
    • Tool “jira_to_test_suite” rewrote its description, which is the text the model reads security
    • Tool “mcp_schema_lint” rewrote its description, which is the text the model reads security
    • Tool “metamorphic_check” rewrote its description, which is the text the model reads security
    • Tool “multimodal_eval_guide” rewrote its description, which is the text the model reads security
    • Tool “prompt_injection_scan” rewrote its description, which is the text the model reads security
    • Tool “rerank_evaluate” rewrote its description, which is the text the model reads security
    • Tool “run_eval_contract” rewrote its description, which is the text the model reads security
    • Tool “run_vlm_test_suite” rewrote its description, which is the text the model reads security
    • Tool “run_vlm_test_suite_batch” rewrote its description, which is the text the model reads security
    • Tool “secret_scan” rewrote its description, which is the text the model reads security
    • Tool “shield_analyze” rewrote its description, which is the text the model reads security
    • Tool “test_skill” rewrote its description, which is the text the model reads security
    • Tool “validate_agent_trajectory” rewrote its description, which is the text the model reads security
    • “secret_scan” changed the type of “input”: string → string|array ▼ functional
    • Schema quality: fail → pass ▲ functional
    • “hallucination_check” added an optional parameter “cases” cosmetic
    • “json_schema_generate” added an optional parameter “samples” cosmetic
    • “generate_ci_workflow” reworded the description of “app_base_url” cosmetic
    • “generate_ci_workflow” reworded the description of “app_start_command” cosmetic
    • “generate_ci_workflow” reworded the description of “cli_tools” cosmetic
    • “generate_ci_workflow” reworded the description of “contract_path” cosmetic
    • “generate_ci_workflow” reworded the description of “cron” cosmetic
    • “generate_ci_workflow” reworded the description of “fail_on_fail” cosmetic
    • “generate_ci_workflow” reworded the description of “gate” cosmetic
    • “generate_ci_workflow” reworded the description of “min_score” cosmetic
    • “generate_ci_workflow” reworded the description of “node_version” cosmetic
    • “generate_ci_workflow” reworded the description of “provider” cosmetic
    • “generate_ci_workflow” reworded the description of “triggers” cosmetic
    • “generate_ci_workflow” reworded the description of “workflow_name” cosmetic
    • “hallucination_check” reworded the description of “answer” cosmetic
    • “hallucination_check” reworded the description of “context” cosmetic
    • “hallucination_check” reworded the description of “strict” cosmetic
    • “jira_to_test_suite” reworded the description of “api_key” cosmetic
    • “jira_to_test_suite” reworded the description of “confluence_pages” cosmetic
    • “jira_to_test_suite” reworded the description of “issue” cosmetic
    • “jira_to_test_suite” reworded the description of “issue_key” cosmetic
    • “jira_to_test_suite” reworded the description of “jira_base_url” cosmetic
    • “jira_to_test_suite” reworded the description of “jira_email” cosmetic
    • “jira_to_test_suite” reworded the description of “jira_token” cosmetic
    • “jira_to_test_suite” reworded the description of “max_tokens” cosmetic
    • “jira_to_test_suite” reworded the description of “model” cosmetic
    • “json_schema_generate” reworded the description of “required_all” cosmetic
    • “metamorphic_check” reworded the description of “api_key” cosmetic
    • “metamorphic_check” reworded the description of “base” cosmetic
    • “metamorphic_check” reworded the description of “baseline_guard” cosmetic
    • “metamorphic_check” reworded the description of “mode” cosmetic
    • “metamorphic_check” reworded the description of “require_all” cosmetic
    • “metamorphic_check” reworded the description of “thresholds” cosmetic
    • “metamorphic_check” reworded the description of “variants” cosmetic
    • “multimodal_eval_guide” reworded the description of “action” cosmetic
    • “multimodal_eval_guide” reworded the description of “api_key” cosmetic
    • “multimodal_eval_guide” reworded the description of “clip” cosmetic
    • “multimodal_eval_guide” reworded the description of “fid” cosmetic
    • “multimodal_eval_guide” reworded the description of “generated_images” cosmetic
    • “multimodal_eval_guide” reworded the description of “image_base64” cosmetic
    • “multimodal_eval_guide” reworded the description of “image_mime_type” cosmetic
    • “multimodal_eval_guide” reworded the description of “image_url” cosmetic
    • “multimodal_eval_guide” reworded the description of “metric” cosmetic
    • “multimodal_eval_guide” reworded the description of “model” cosmetic
    • “multimodal_eval_guide” reworded the description of “real_images” cosmetic
    • “multimodal_eval_guide” reworded the description of “score” cosmetic
    • “multimodal_eval_guide” reworded the description of “system_prompt” cosmetic
    • “multimodal_eval_guide” reworded the description of “test_cases” cosmetic
    • “multimodal_eval_guide” reworded the description of “text” cosmetic
    • “multimodal_eval_guide” reworded the description of “vqa” cosmetic
    • “rerank_evaluate” reworded the description of “api_key” cosmetic
    • “rerank_evaluate” reworded the description of “passages” cosmetic
    • “rerank_evaluate” reworded the description of “query” cosmetic
    • “rerank_evaluate” reworded the description of “threshold” cosmetic
    • “rerank_evaluate” reworded the description of “top_k” cosmetic
    • “response_quality_score” reworded the description of “expected_keywords” cosmetic
    • “run_eval_contract” reworded the description of “api_keys” cosmetic
    • “run_eval_contract” reworded the description of “contract_path” cosmetic
    • “run_eval_contract” reworded the description of “inline_contract” cosmetic
    • “run_vlm_test_suite” reworded the description of “api_key” cosmetic
    • “run_vlm_test_suite” reworded the description of “image_base64” cosmetic
    • “run_vlm_test_suite” reworded the description of “image_mime_type” cosmetic
    • “run_vlm_test_suite” reworded the description of “image_url” cosmetic
    • “run_vlm_test_suite” reworded the description of “model” cosmetic
    • “run_vlm_test_suite” reworded the description of “system_prompt” cosmetic
    • “run_vlm_test_suite” reworded the description of “test_cases” cosmetic
    • “run_vlm_test_suite” reworded the description of “threshold” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “api_keys” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “image_base64” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “image_mime_type” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “image_url” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “models” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “system_prompt” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “test_cases” cosmetic
    • “run_vlm_test_suite_batch” reworded the description of “threshold” cosmetic
    • “secret_scan” reworded the description of “input” cosmetic
    • “secret_scan” reworded the description of “types” cosmetic
    • “shield_analyze” reworded the description of “model” cosmetic
    • “shield_analyze” reworded the description of “prompt” cosmetic
    • “shield_analyze” reworded the description of “response” cosmetic
    • “shield_analyze” reworded the description of “rules” cosmetic
    • “shield_analyze” reworded the description of “source” cosmetic
    • “test_skill” reworded the description of “api_key” cosmetic
    • “test_skill” reworded the description of “dir_name” cosmetic
    • “test_skill” reworded the description of “lint_only” cosmetic
    • “test_skill” reworded the description of “model” cosmetic
    • “test_skill” reworded the description of “other_skills” cosmetic
    • “test_skill” reworded the description of “scenario_count” cosmetic
    • “test_skill” reworded the description of “scenarios” cosmetic
    • “validate_agent_trajectory” reworded the description of “assertions” cosmetic
    • “validate_agent_trajectory” reworded the description of “format” cosmetic
    • “validate_agent_trajectory” reworded the description of “trace” cosmetic
    • “hallucination_check” made “answer” optional cosmetic
    • “hallucination_check” made “context” optional cosmetic
  • 29 Oct 26 0
    • Tool “llm_generate” rewrote its description, which is the text the model reads security
    • “llm_generate” reworded the description of “model” cosmetic
  • 28 Oct 26 0
    • Tool “ab_test_report” rewrote its description, which is the text the model reads security
    • Tool “function_call_validate” rewrote its description, which is the text the model reads security
    • Tool “json_schema_validate” rewrote its description, which is the text the model reads security
    • Tool “prompt_injection_scan” rewrote its description, which is the text the model reads security
    • Tool “rate_tool” rewrote its description, which is the text the model reads security
    • Tool “redact_pii” rewrote its description, which is the text the model reads security
    • Tool “toxicity_scan” rewrote its description, which is the text the model reads security
    • Tool “validate_agent_trajectory” rewrote its description, which is the text the model reads security
    • “function_call_validate” reworded the description of “allowed_functions” cosmetic
    • “redact_pii” reworded the description of “types” cosmetic
  • 26 Oct 26 0
    • “compare_models” reworded the description of “models” cosmetic
    • “jira_to_test_suite” reworded the description of “model” cosmetic
    • “llm_generate” reworded the description of “model” cosmetic
    • “model_info” reworded the description of “model” cosmetic
    • “token_budget_calculator” reworded the description of “model” cosmetic

    5 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 24 Oct 26 0
    • Tool “mcp_server_evaluate” rewrote its description, which is the text the model reads security
    • Tool “mcp_server_health_check” rewrote its description, which is the text the model reads security
    • “mcp_server_evaluate” reworded the description of “test_tool_name” cosmetic
    • “mcp_server_evaluate” reworded the description of “url” cosmetic
    • “mcp_server_health_check” reworded the description of “manifest” cosmetic
    • “mcp_server_health_check” reworded the description of “strict” cosmetic
Diagnostics

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 5 Nov 2026 · Probed https://www.ia-qa.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.ia-qa.com CN=YR2,O=Let's Encrypt,C=US 10 Oct 2026 8 Jan 2027 RSA 2048 SHA256-RSA 660e1d6981514e1320131b13dbf4a910775
SANs: www.ia-qa.com
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of www.ia-qa.com. — Secure

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
ia-qa.com. DS published 52852 8 Verified
www.ia-qa.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy default-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;img-src 'self' data: blob: https:;font-src 'self' https://fonts.gstatic.com data:;connect-src 'self' https: wss: http://localhost:11434 data:;media-src 'self' blob:;object-src 'none';frame-ancestors 'self';base-uri 'self';form-action 'self';script-src-attr 'none';upgrade-insecure-requests
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy no-referrer
permissions-policy camera=(), microphone=(), geolocation=(), payment=(), usb=(), display-capture=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.ia-qa.com/mcp Verified 200
http (plaintext) http://www.ia-qa.com/mcp HTTPS enforced 301 https://www.ia-qa.com/mcp
MCP tools · 152 exposed · ~22,457 tokens

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 →

Tool Tokens
find_tool ~194

Search available MCP tools by keyword or category before calling them. Returns matching tool names, descriptions, and optionally their inputSchemas. Queries are logged 90 days, screened for credentials and personal data. Categories: data, encoding, text, llm, qa, rag, dev, security, web.

NameTypeReqDescription
categorystring–Optional: filter by category — data | encoding | text | llm | qa | rag | dev | security | web
max_resultsnumber–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.
querystringyesKeyword(s) to search in tool name and description (e.g. "cors", "token", "vector", "json")
with_schemaboolean–Set true to include inputSchema in results (default: false)
NameTypeReqDescription
category–––
countnumber––
hint–––
query–––
score–––
tool–––
toolsarray––
total_matchesnumber––
truncatedboolean––
{"query":"leaked api key"}
fix_gherkin ~290

Fix Gherkin syntax warnings from a jira_to_test_suite result. Takes the current gherkin text and the _gherkin_warnings array, calls your LLM to fix ONLY the flagged issues (adds missing Given/When/Then steps, etc.), and returns the corrected Gherkin. Lightweight — uses ~300-500 tokens vs ~5k for a full regeneration. Requires BYOK LLM key.

NameTypeReqDescription
api_keystringyesYour own LLM provider API key (BYOK) — OpenAI "sk-…", Anthropic "sk-ant-…", Google "AIzaSy…", or Groq "gsk_…". There is no server-side key for this tool: if you do not have one, do not call it and do…
gherkinstringyesThe current Gherkin text from the jira_to_test_suite result (test_suite.gherkin).
modelstringyesLLM model to use for the fix, e.g. "gpt-4o-mini". Must belong to the provider whose key you passed in api_key.
warningsarrayyesThe _gherkin_warnings array from the jira_to_test_suite result.
NameTypeReqDescription
fixed_gherkinstring––
latency_msnumber––
model_usedstring––
remaining_warningsarray––
warnings_afternumber––
warnings_beforenumber––
{"api_key":"\u003cyour-api-key\u003e","gherkin":"Feature: Login\n  Scenario: ok\n    given I open the page\n    Then I see the form","model":"gpt-4o-mini","warnings":["Step keyword \"given\" should be capitalised"]}
flatten_json ~112

Flatten a nested JSON object to single-level dot-notation keys (e.g. {"a":{"b":1}} → {"a.b":1}), or unflatten dot-notation keys back to a nested object. Supports custom separators.

NameTypeReqDescription
inputstring|object|arrayyesThe JSON to flatten or unflatten — a JSON string, or the object itself.
modestring–"flatten" (default) or "unflatten"
separatorstring–Key separator (default: ".")
NameTypeReqDescription
key_countnumber––
max_deptharray––
result–––
{"input":{"a":{"b":1,"c":[1,2]}}}
format_bytes ~124

Convert raw byte counts to human-readable sizes in SI (KB=1000) or IEC (KiB=1024) units, or parse size strings back to bytes. Covers B, KB/KiB, MB/MiB, GB/GiB, TB/TiB, PB/PiB.

NameTypeReqDescription
bytesnumber–Number of bytes to format
size_stringstring–Size string to parse to bytes (e.g. "1.5 GB", "512 MiB")
standardstring–Output standard (default: both)
NameTypeReqDescription
bytesnumber––
original–––
{"bytes":1536,"standard":"iec"}
format_json ~148

Validate and pretty-print a string that is ALREADY valid JSON. Strict by design — it is a validity gate: valid JSON comes back formatted, anything else is rejected with the exact parse error. It never repairs, completes, or guesses. NOT for: plain text or prose (will fail), JSON embedded in markdown/prose (use extract_json_from_text first), JS objects (JSON.stringify them first), YAML (use yaml_to_json).

NameTypeReqDescription
indentnumber–Indent size (default: 2)
inputstringyesA raw JSON string, e.g. '{"key":"value"}'. Must already parse as JSON — plain text or truncated JSON is rejected, not repaired.
NameTypeReqDescription
formattedstring––
validboolean––
{"input":"{\"a\":1,\"b\":{\"a\":2}}"}
format_table ~108

Convert a JSON array of objects into a Markdown table. Automatically detects columns, aligns headers, and fills missing keys with empty cells. Use when an agent needs to present structured data — tool results, model comparisons, test reports — as a readable table in a response or document.

NameTypeReqDescription
columnsarray–Column names and order (default: all keys from first row)
inputstring|object|arrayyesThe array of objects to render — a JSON string, or the array itself.
NameTypeReqDescription
columnsnumber––
rowsnumber––
tablestring––
{"input":[{"a":1}]}
function_call_validate ~186

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` (Anthropic tool_use) or an OpenAI `{function:{…}}` wrapper.

NameTypeReqDescription
allowed_functionsarrayyesList of allowed function definitions, in OpenAI, MCP or Anthropic form, or as {name, required_args, optional_args}
function_callobjectyesThe function call object from LLM (e.g. { "name": "get_weather", "arguments": {"city":"Paris"} })
NameTypeReqDescription
error_countnumber––
errorsarray––
function_name–––
provided_args–––
required_args–––
validboolean––
{"allowed_functions":[{"name":"get_weather","required_args":["city"]}],"function_call":{"arguments":{"city":"Paris"},"name":"get_weather"}}
generate_ci_workflow ~380

Generate a ready-to-commit GitHub Actions workflow that gates a build on IA-QA: "eval_contract" runs a .ia-eval.yaml through ia-qa-com/eval-action@v1 (needs a provider key as a repo secret), "cli_checks" runs deterministic tools via npx @ia-qa/cli and fails the build on their verdict, "selector_drift" gates E2E selectors with @ia-qa/self-healing. Deterministic template, no LLM. Returns the YAML, the secrets to create and the next steps. Pair with generate_eval_yaml for the contract.

NameTypeReqDescription
app_base_urlstring–[selector_drift] Default http://127.0.0.1:3000; must match .ia-qa/config.json.
app_start_commandstring–[selector_drift] Boots the app, e.g. "npm run start:ci". Never guessed: omitted, the step is a TODO.
cli_toolsarray–Tools to gate on, e.g. ["secret_scan","prompt_injection_scan"].
contract_pathstring–Default evals/smoke.ia-eval.yaml.
cronstring–For schedule (default '0 6 * * 1').
fail_on_failboolean–Default true; false reports without gating.
gatestring–Default eval_contract. both = CLI checks + eval; all = CLI checks, drift, eval.
min_scorenumber–Override the contract min_score (0-100).
node_versionstring–Default "20".
providerstring–Decides which repo secret is wired (default groq).
triggersarray–Default push + pull_request.
workflow_namestring––
NameTypeReqDescription
gatestring––
next_stepsarray––
notesarray––
pathstring––
secrets_requiredarray––
yamlstring––
{}
generate_curl ~154

Generate a curl command from request parameters. Supports GET/POST/PUT/DELETE, custom headers, JSON body, and form data. Useful for documentation, sharing, and debugging API calls.

NameTypeReqDescription
bodystring–Raw request body string
body_jsonobject–JSON body (auto-adds Content-Type: application/json)
follow_redirectsboolean–Follow redirects with -L flag (default: true)
headersobject–Request headers as key-value object
methodstring–HTTP method (default: GET)
urlstringyesRequest URL (must be http/https)
verboseboolean–Add -v for verbose output (default: false)
NameTypeReqDescription
curlstring––
header_countnumber––
method–––
url–––
{"method":"DELETE","url":"https://x.com"}
generate_eval_yaml ~192

Generate a complete .ia-eval.yaml evaluation contract from a plain-language description of what your LLM should do. Uses Groq openai/gpt-oss-20b (server-side, no API key needed). Returns ready-to-run YAML for the LLM Test Runner (run_eval_contract). Picks appropriate evaluators (cosine_similarity, contains_check, hallucination_check, etc.) based on the task type.

NameTypeReqDescription
descriptionstringyesPlain-language description of what the LLM under test should do. Be specific: describe inputs, expected behaviour, and constraints.
scenario_countnumber–Number of scenarios to generate (default: 5). Covers happy path + edge cases + adversarial.
system_promptstring–Optional system prompt of the LLM under test. Helps generate more accurate test cases.
task_typestring–Optional task type hint to guide evaluator selection.
NameTypeReqDescription
model_usedstring––
scenario_countnumber––
task_typestring––
yamlstring––
{"description":"Summarize a customer support ticket in one sentence."}
generate_hmac ~117

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.

NameTypeReqDescription
algorithmstring–Hash algorithm: sha256 (default), sha512, sha1, md5
encodingstring–Output encoding (default: hex)
messagestringyesMessage to sign
secretstringyesSecret key
NameTypeReqDescription
algorithm–––
encoding–––
hmac–––
message_lengthnumber––
{"algorithm":"sha256","message":"msg","secret":"k"}
generate_html_report ~79

Convert a run_eval_contract() LLM Test Runner JSON result into a fully self-contained dark-themed HTML report with Pass/Fail badges, side-by-side Input/Output/Ground-Truth panels, evaluator score bars, and a radar chart. Returns the HTML as a string.

NameTypeReqDescription
resultsobjectyesThe JSON object returned by run_eval_contract()
NameTypeReqDescription
html–––
{"results":{}}
generate_json_ld ~138

Generate a ready-to-paste <script type="application/ld+json"> snippet for GEO / structured data optimization. Supported types: WebSite, FAQPage, Article, Person, Organization, SoftwareApplication, HowTo.

NameTypeReqDescription
faq_itemsarray–For FAQPage/HowTo: array of { question, answer } objects
fieldsobject–Schema fields as key-value pairs (name, url, description, author, datePublished, etc.)
typestringyesSchema @type: "WebSite", "FAQPage", "Article", "Person", "Organization", "SoftwareApplication", "HowTo"
NameTypeReqDescription
acceptedAnswerobject––
namestring––
schema–––
snippetstring––
{"faq_items":[{"answer":"A.","question":"Q?"}],"type":"FAQPage"}
generate_password ~114

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.

NameTypeReqDescription
lengthnumber–Password length (4–128, default: 16)
numbersboolean–Include digits (default: true)
symbolsboolean–Include symbols like !@#$ (default: false)
uppercaseboolean–Include uppercase letters (default: true)
NameTypeReqDescription
charset_sizenumber––
lengthnumber––
password–––
{"length":24,"numbers":true,"symbols":true,"uppercase":true}
generate_slug ~84

Convert any string into a URL-friendly slug: lowercase, ASCII-normalized (é→e), special characters removed, spaces replaced with hyphens. Use for generating SEO-friendly URL paths, file names, or identifier keys from user-provided titles or labels.

NameTypeReqDescription
inputstringyesString to slugify
separatorstring–Separator character (default: "-")
NameTypeReqDescription
slug–––
{"input":"Héllo Wörld 2026"}
generate_test_cases ~257

Generate a set of test cases (valid, edge, invalid, pairwise) for a given feature description. Declared constraints drive the boundaries: a length or numeric bound ("[8-64]", "min 8 chars", "at least 8 characters" — read from inputs, and from the feature prose when a sentence names exactly one field) yields the last accepted value AND the first rejected one; a format (email/url/uuid, from the type, the field name or the wording) yields malformed-value cases. A bound nobody declared is labelled as this tool's assumption, not as expected behaviour. gherkinFormat renders every case (cap 200, stated in the output) and gherkinScenarioCount lets you check it against totalCases.

NameTypeReqDescription
featurestringyesFeature or function to test. Be specific: describe inputs, expected behaviour, context. Constraints stated here ("password must be at least 8 characters") are used when the sentence names exactly one…
inputsstring–Optional: list of input parameters (one per line, e.g. "email: string [required]", "password: string [required, min 8 chars]", "age: number [18-99]")
NameTypeReqDescription
featurestring––
gherkinFormatstring––
gherkinScenarioCountnumber––
parsedInputsarray––
test_casesarray––
{"feature":"Login form with email and password"}
generate_uuid ~80

Generate one or more cryptographically random UUID v4 identifiers. Use this when you need unique IDs for test fixtures, database records, session tokens, or any scenario requiring a guaranteed-unique string. Returns up to 100 UUIDs in one call.

NameTypeReqDescription
countnumber–Number of UUIDs to generate (1–100, default: 1)
NameTypeReqDescription
countnumber––
uuids–––
{"count":5}
get_testing_guidelines ~227

Query the IA-QA methodology knowledge base. Returns structured testing guidelines, assertion strategies, thresholds, best practices, and relevant MCP tools for a given topic. Call without a topic to list all available topics. Topics: llm-unit-testing, rag-pipeline, prompt-stability, prompt-ab-testing, embedding-quality, eval-framework, semantic-testing, auto-testing, security, api-testing, ci-cd, multimodal, llm-data-security, agent-observability, pro-tips, learning-paths, golden-dataset, selector-drift, qa-recipes, playbooks. Not sure where to start testing an LLM, RAG pipeline or agent? Call without a topic (or with "start-here"): it maps what you are testing to the tools to call and the output field to gate CI on. A plain question such as "how do I test my RAG" also resolves to the right topic.

NameTypeReqDescription
topicstring–The testing topic to retrieve guidelines for. Omit to get the start-here map and the full list of available topics.
NameTypeReqDescription
available_topicsarray––
keywordsarray––
start_hereobject––
tipstring––
topic–––
usagestring––
{"topic":"rag-pipeline"}
guardrail_test ~80

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.

NameTypeReqDescription
responsestringyesThe LLM response to test
rulesarrayyesArray of guardrail rules to check
NameTypeReqDescription
all_passedboolean––
detailstring––
failed–––
label–––
passboolean––
passed–––
results–––
rule–––
total_rulesnumber––
value–––
{"response":"Your refund is approved.","rules":[{"type":"must_include","value":"refund"},"no_pii"]}
hallucination_check ~247

Lexical hallucination check: verifies an LLM answer's words, numbers and polarity against the provided source/context. Fast, deterministic, no API key needed. Each answer sentence is aligned to its best-matching source sentence, so a number only counts as support when it sits on the SAME statement ("founded in 1998" is not grounded by "sold 1998 units"), and a negation or antonym flip against that sentence returns verdict "contradicted" — the corrupted-fact hallucination that reuses source vocabulary. Limitations: still lexical — it cannot follow a paraphrase, a synonym, or multi-sentence reasoning, so a "well_grounded" verdict means "nothing lexical found", never "verified true". For entailment use run_semantic_tests (NLI/embedding) or a calibrated judge.

NameTypeReqDescription
answerstring–The LLM answer to verify (with context).
casesarray–Batch instead of answer + context: one result per case, and the worst gate overall.
contextstring–The source text that should ground it.
strictboolean–Every sentence must be supported (default false).
NameTypeReqDescription
analysis–––
contradictions–––
detailstring––
entities–––
groundedboolean––
grounded_countnumber––
grounding_score–––
matched_wordsnumber––
messagestring––
numbers–––
overlapnumber––
sentence–––
total_sentencesnumber––
total_wordsnumber––
unbound_claims–––
ungrounded_countnumber––
unsupported_claims–––
verdictstring––
{"answer":"Le remboursement prend plus de 7 jours ouvrés.","context":"Le remboursement prend plus de 7 jours ouvrés."}
hash_text ~102

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.

NameTypeReqDescription
algorithmstring–Hash algorithm: sha256 (default), sha512, sha1, md5
inputstringyesText to hash
NameTypeReqDescription
algorithm–––
hash–––
input_lengthnumber––
{"algorithm":"md5","input":"héllo wörld 🌍"}
html_to_markdown ~81

Convert HTML to clean Markdown. Strips scripts, styles, nav, ads, and comments. Converts headings, lists, links, images, code blocks. Ideal for preparing web content as LLM context.

NameTypeReqDescription
inputstringyesHTML string to convert
strip_linksboolean–Strip link URLs, keep text only (default: false)
NameTypeReqDescription
markdown–––
markdown_lengthnumber––
original_lengthnumber––
{"input":"\u003ch1\u003eT\u003c/h1\u003e\u003cp\u003ea \u003cstrong\u003eb\u003c/strong\u003e \u003ca href=\"https://x.com\"\u003ec\u003c/a\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003ei\u003c/li\u003e\u003c/ul\u003e"}
http_status_lookup ~142

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 heuristically cacheable by default per RFC 9110 §15.1.

NameTypeReqDescription
codenumberyesHTTP status code (e.g. 200, 404, 429, 503)
NameTypeReqDescription
cacheable–––
class–––
code–––
descstring––
description–––
namestring––
registeredboolean––
{"code":418}
identify_caller ~71

Returns what the server knows about the current MCP client: clientInfo captured during initialize, User-Agent, and any _meta fields sent with this request. Useful for debugging caller identification.

NameTypeReqDescription
_metaobject–Optional self-identification. Keys: agent (string), model (string), version (string).
NameTypeReqDescription
effective_agentstring––
meta_overrideobject––
notestring––
sessionobject––
{}
jira_to_test_suite ~267

Turn a Jira ticket into a test suite: Gherkin scenarios, E2E steps, API tests, test data and the ambiguities to clarify. Pass the issue object, or Jira credentials to fetch it. It never invents: a thin ticket returns an empty suite with verdict INCOMPLETE_SPEC and the questions to ask. test_suite._gherkin_warnings is a deterministic syntax check. BYOK: your LLM key.

NameTypeReqDescription
api_keystringyesYour LLM provider key.
confluence_pagesarray–Pages from fetch_confluence_page, as documentation.
issueobject–The ticket: key, summary, description, and optionally status, issue_type, priority, labels, comments (fetch_jira_issue returns this shape).
issue_keystring–e.g. "PROJ-123", to fetch with the jira_* fields.
jira_base_urlstring––
jira_emailstring––
jira_tokenstring––
max_tokensinteger–Default 8192.
modelstringyese.g. "gpt-4o-mini", "claude-haiku-4-5-20251001", "gemini-3.5-flash".
NameTypeReqDescription
issue_keystring––
issue_urlstring––
latency_msnumber––
model_usedstring––
summarystring––
test_suiteobject––
tokens_usednumber––
{"api_key":"\u003cyour-api-key\u003e","issue":{"description":"A registered user can request a reset link; the link expires after 30 minutes.","key":"PROJ-1","summary":"Password reset by email"},"model":"gpt-4o-mini"}
json_diff ~187

Compute a deep structural diff between two JSON values. Returns added, removed, and changed keys with dot-notation paths. Like git diff but for JSON objects — perfect for API response regression testing. Arrays are not compared blindly by position: the same elements in a different order collapse to a single "reordered" change, and an array of records sharing a stable identity field (id, uuid, key, name…) is matched by that field, so paths read [id=42] and a moved record is not reported as N rewrites.

NameTypeReqDescription
afterstring|object|arrayyesThe modified JSON (after) — a JSON string, or the value itself.
beforestring|object|arrayyesThe original JSON (before) — a JSON string, or the value itself.
max_depthnumber–Max nesting depth to recurse (default: 10)
NameTypeReqDescription
addedboolean––
changesarray––
identicalboolean––
modifiedboolean––
removedboolean––
total_changesnumber––
{"after":{"a":1,"b":2},"before":{"a":1,"b":2}}
json_schema_generate ~182

Infer a JSON Schema (draft-07) from a sample JSON value. Detects types, required fields, array item shapes, nested objects, and common string formats (email, uri, date, date-time, uuid). Returns a ready-to-use schema compatible with json_schema_validate. Use when you have a sample API response or LLM output and want to auto-generate a validation schema for CI/CD testing.

NameTypeReqDescription
inputstring|object|arrayyesThe sample JSON value to infer the schema from — a JSON string, or the value itself.
required_allboolean–Mark fields present in every observed object as required (default: true)
samplesarray|string–More samples of the same shape, merged with input: a field seen as null and as a date becomes ["string","null"]; one missing somewhere is not required.
NameTypeReqDescription
schemaobject––
warningsarray––
{"input":{"a":[1],"b":true,"f":1.5,"n":1,"o":{"k":null},"s":"x"}}
json_schema_validate ~192

Validate a JSON value against a JSON Schema (draft-07 subset). Supports type, required, properties, items, enum, const, pattern, format (email/uri/date/date-time/uuid), minimum/maximum, minLength/maxLength, minItems/maxItems, uniqueItems, additionalProperties, anyOf, allOf, oneOf, not, and local $ref (#/definitions/…, #/$defs/…). A schema using a keyword outside that list (patternProperties, if/then, dependencies, a remote $ref…) is never reported valid: the keyword is named in `unevaluated_keywords`. Returns all validation errors with dot-notation paths.

NameTypeReqDescription
schemastring|object|arrayyesThe JSON Schema — a JSON string, or the schema object itself.
valuestring|object|arrayyesThe JSON value to validate — a JSON string, or the value itself.
NameTypeReqDescription
error_countnumber––
errorsarray––
validboolean––
{"schema":{"$defs":{"P":{"properties":{"n":{"type":"string"}},"type":"object"}},"properties":{"p":{"$ref":"#/$defs/P"}},"type":"object"},"value":{"p":{"n":"five"}}}
json_to_csv ~90

Convert a JSON array of objects to CSV format. Automatically detects columns from all object keys. Handles quoting and escaping per RFC 4180.

NameTypeReqDescription
delimiterstring–Column delimiter (default: ",")
headersboolean–Include header row (default: true)
inputstring|object|arrayyesThe array of objects to convert — a JSON string, or the array itself.
NameTypeReqDescription
column_names–––
columnsnumber––
csvstring––
rowsnumber––
{"input":[{"a":1},{"b":2}]}
json_to_yaml ~80

Convert a JSON object to clean, human-readable YAML. Handles nested objects, arrays, multiline strings, and special characters. No external dependencies.

NameTypeReqDescription
indentnumber–Indentation size in spaces (default: 2)
inputstring|object|arrayyesThe JSON to convert to YAML — a JSON string, or the value itself.
NameTypeReqDescription
linesnumber––
yaml–––
{"input":{"a":"x: y","c":null,"d":"yes","e":"0123"}}
latency_benchmark ~110

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.

NameTypeReqDescription
endpointsstring|arrayyesEndpoints to benchmark. Accepts a single URL string, an array of URL strings, or an array of {url, method?, body?, headers?, label?} objects.
iterationsnumber–Number of iterations per endpoint (default: 3, max: 10)
NameTypeReqDescription
iterationsnumber––
resultsarray––
{"endpoints":"https://www.ia-qa.com/mcp/ping","iterations":3}
levenshtein_distance ~109

Compute the Levenshtein (edit) distance and normalized similarity ratio between two strings. Supports batch comparison. Useful for fuzzy string matching, deduplication, and test result comparison.

NameTypeReqDescription
astring–First string (single-pair mode)
bstring–Second string (single-pair mode)
batcharray–Batch of {a,b} pairs (max 50)
case_insensitiveboolean–Ignore case differences (default: false)
NameTypeReqDescription
a–––
b–––
countnumber––
distance–––
modestring––
operations_needed–––
results–––
similaritystring––
{"a":"kitten","b":"sitting"}
lint_commit_message ~91

Validate a git commit message against the Conventional Commits spec (feat, fix, docs, style, refactor, test, chore, ci, perf, build). Returns compliance score, breaking change detection, and actionable suggestions.

NameTypeReqDescription
messagestringyesGit commit message to validate
strictboolean–Enforce strict rules: max 72-char subject, imperative mood check (default: false)
NameTypeReqDescription
checks–––
has_bodyboolean––
is_breaking_changeboolean––
scope–––
scorenumber––
subject–––
type–––
validboolean––
{"message":"feat!: drop node 18"}
list_llm_models ~137

List all LLM models available on ia-qa.com with their provider, API endpoint, and capabilities. Filter by provider name (e.g. "Groq", "HuggingFace", "OpenAI") or return the full catalog. Use this to discover which models are available before calling an LLM API, or to compare providers.

NameTypeReqDescription
providerstring–Filter by provider name (case-insensitive). E.g. "Groq", "HuggingFace", "OpenAI", "Anthropic", "Google", "DeepSeek", "xAI", "Ollama". Omit for full catalog.
NameTypeReqDescription
filter–––
models–––
providers–––
totalnumber––
{"provider":"groq"}
list_local_tests ~70

Discover .ia-eval.yaml LLM test suite files in the project directory. Scans CWD and standard sub-directories (evals/, tests/, contracts/). Returns file paths ready to pass to run_eval_contract.

NameTypeReqDescription
dirstring–Directory to scan (defaults to server CWD)
NameTypeReqDescription
countnumber––
dirstring––
filesarray––
{}
llm_fit_finder ~274

Shortlist LLMs on facts, no ranking: cloud models with the features you need within a monthly budget, cheapest first; or local models that fit your VRAM, largest first, with the ollama command. To pick one, run your cases on the shortlist (prompt_test_suite, run_eval_contract).

NameTypeReqDescription
featuresarray–Required features: vision, function_calling, json_mode, streaming, reasoning
max_budgetnumber–Maximum monthly budget in USD (based on tokens_per_day)
modestring–cloud (API models) or local (Ollama/self-hosted). Default: cloud
quantizationstring–Quantization (only for mode=local): Q4_K_M | Q8_0 | FP16. Default: Q4_K_M
tokens_per_daynumber–Estimated daily token volume (default: 100000)
top_nnumber–Number of models to return (default: 5)
use_casestring–Only "reasoning" filters (requires the feature); chatbot | code | rag | summarization | classification | agents | multilingual rank nothing
vram_gbnumber–GPU VRAM in GB (only for mode=local). Default: 16
NameTypeReqDescription
modestring––
notestring––
orderstring––
prices_as_of–––
quantization–––
resultsarray––
tokens_per_day–––
total_matchingnumber––
use_case–––
vram_gb–––
{"features":["vision"],"top_n":5,"use_case":"chatbot"}
llm_format_check ~92

Validate that an LLM output matches an expected format: JSON, Markdown, code block, bullet list, numbered list, table, YAML, XML, or custom regex. Essential for structured output testing.

NameTypeReqDescription
expected_formatstringyesExpected format
outputstringyesThe LLM output to validate
regex_patternstring–Custom regex pattern (only when expected_format is "regex")
NameTypeReqDescription
checks–––
expected_format–––
failed–––
passed–––
total_checksnumber––
validboolean––
{"expected_format":"yaml","output":"a: 1\nb: [1, 2]"}
llm_generate ~275

Generate text with an open-source model hosted on Groq, on the server's key — no API key needed. Models: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.8-27b (default "openai/gpt-oss-20b"). HuggingFace models are not served on the server key. A reasoning model that spends max_tokens thinking is retried once at 4096. Rate-limited.

NameTypeReqDescription
max_tokensnumber–Maximum tokens to generate (default: 2048, max: 4096)
modelstring–Model ID (default: "openai/gpt-oss-20b"). Server-keyed whitelist only — Groq: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.8-27b. Other ids from list_llm_models, HuggingFace ones included, are…
promptstringyesThe user prompt / instruction to send to the model
systemstring–Optional system prompt to set context or persona
temperaturenumber–Sampling temperature 0.0–1.5 (default: 0.7)
NameTypeReqDescription
content–––
latency_msnumber––
model–––
provider–––
usage–––
{"prompt":"Reply with the single word OK."}
llm_json_schema_check ~85

Validate that an LLM JSON output matches a JSON Schema definition. Tests required fields, types, enums, nested objects, and arrays. Critical for function-calling and structured output testing.

NameTypeReqDescription
outputstringyesThe LLM JSON output (raw string, will be parsed)
schemaobjectyesJSON Schema (draft-07 subset) to validate against
NameTypeReqDescription
error_countnumber––
errorsarray––
parse_error–––
parsed_type–––
validboolean––
{"output":"{\"name\":\"a\",\"age\":3}","schema":{"properties":{"age":{"minimum":0,"type":"integer"},"name":{"type":"string"},"role":{"enum":["admin","user"]}},"required":["name","age"],"type":"object"}}
llm_output_validator ~240

Validate an LLM response against QA criteria: format checks (JSON, code, markdown), content rules (must-include, must-not-include), length constraints, language detection, and safety patterns. Essential for QA testing LLM-powered features.

NameTypeReqDescription
check_json_schemastring–If expected_format is JSON, provide required keys as comma-separated list to validate the structure
check_safetyboolean–Check for PII patterns (emails, phones, SSN), profanity signals, and prompt leakage
expected_formatstring–Expected output format
expected_languagestring–Expected language of the output (en, fr, es, de…). Checks for common words.
max_lengthnumber–Maximum character length for the output
min_lengthnumber–Minimum character length for the output
must_includestring–Comma-separated strings that MUST appear in the output
must_not_includestring–Comma-separated strings that must NOT appear (e.g. "TODO, FIXME, undefined, NaN")
outputstringyesThe LLM output text to validate
NameTypeReqDescription
checks–––
failed–––
passed–––
totalnumber––
verdict–––
{"expected_format":"json","must_include":"a","must_not_include":"TODO","output":"{\"a\":1}"}
lorem_ipsum ~120

Generate Lorem Ipsum placeholder text for UI mockups, design prototypes, or test data population. Configurable paragraphs (1–10), sentences per paragraph (1–20), and approximate words per sentence (3–30).

NameTypeReqDescription
paragraphsnumber–Number of paragraphs to generate (1–10, default: 1)
sentences_per_paragraphnumber–Sentences per paragraph (1–20, default: 5)
words_per_sentencenumber–Approximate words per sentence (3–30, default: 10)
NameTypeReqDescription
paragraph_countnumber––
paragraphs–––
{"paragraphs":3,"sentences_per_paragraph":2}
mcp_schema_lint ~92

Lint one MCP tool definition with the same rules as mcp_server_health_check: errors break the MCP spec (FAIL), documentation_issues are what its strict mode refuses — a parameter without description or type (FIX, never an A) — and suggestions are style only (snake_case) and change nothing.

NameTypeReqDescription
tool_definitionobjectyesMCP tool definition object with name, description, inputSchema
NameTypeReqDescription
error_countnumber––
errors–––
grade–––
quality_score–––
warning_countnumber––
warnings–––
{"tool_definition":{"description":"Return the current weather for a city. Use it when the user asks about the weather now.","inputSchema":{"properties":{"city":{"description":"City name, e.g. Paris","type":"string"}},"required":["city"],"type":"object"},"name":"get_weather"}}
mcp_server_evaluate ~274

Check that a live MCP server over Streamable HTTP speaks the protocol, 2026-07-28 or earlier: handshake or server/discover, tools/list and its definitions, error codes, one tools/call, structuredContent against outputSchema, latency. Returns PASS/FIX/BLOCK with a 0-100 score, or INCONCLUSIVE (score null) when authorization is required. The verdict covers the PROTOCOL, never whether tools answer correctly: what_this_does_not_prove lists what was not measured. Called: only test_tool_name, or a tool annotated readOnlyHint: true. A refusal of invented arguments is not scored (tool_behaviour: refused_placeholder); pass test_tool_args to exercise the tool. Private addresses and stdio are out of reach: paste tools/list into mcp_server_health_check.

NameTypeReqDescription
test_tool_argsobject–Real arguments, sent to the tested server. Without them, required ones are invented.
test_tool_namestring–Tool to call. Default: a read-only one, preferring no required arg.
urlstringyesPublic URL of the MCP endpoint (e.g. https://mcp.example.com/mcp). An origin alone (https://www.ia-qa.com) tries /mcp, then /.
NameTypeReqDescription
checksarray––
endpointstring––
latencyobject|null––
next_stepsarray––
scopestring––
scorenumber|null––
serverobject––
tool_behaviourstring––
verdictstring––
what_this_does_not_provearray––
what_this_provesarray––
{"url":"https://www.ia-qa.com/mcp"}
Install

How do I install the IA-QA — 152 QA & Dev Tools for AI Agents MCP server?

IA-QA — 152 QA & Dev Tools for AI Agents is a hosted endpoint at https://www.ia-qa.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.ia-qa.com

# add to Claude Code
claude mcp add --transport http jcjamet-ia-qa-toolbox 'https://www.ia-qa.com/mcp'
Common questions

What is the IA-QA — 152 QA & Dev Tools for AI Agents MCP server?

IA-QA — 152 QA & Dev Tools for AI Agents is an MCP server listed in the public MCP registry as io.github.JcJamet/ia-qa-toolbox. 152 free QA tools for agents: injection scan, evals, RAG, web audits. Smaller packs: /mcp/{pack}. This page covers its hosted endpoint (https://www.ia-qa.com/mcp).

Is the IA-QA — 152 QA & Dev Tools for AI Agents MCP server safe to use?

IA-QA — 152 QA & Dev Tools for AI Agents scores 89 out of 100 on VerifyMCP. 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 IA-QA — 152 QA & Dev Tools for AI Agents MCP server expose?

IA-QA — 152 QA & Dev Tools for AI Agents exposes 152 tools: get_testing_guidelines, find_tool, generate_test_cases, jira_to_test_suite, analyze_diff_bugs, and 147 more. Their descriptions and schemas cost roughly 22,457 tokens of context every time the server is loaded.

Does the IA-QA — 152 QA & Dev Tools for AI Agents MCP server require authentication?

No. We connected to IA-QA — 152 QA & Dev Tools for AI Agents without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the IA-QA — 152 QA & Dev Tools for AI Agents MCP server still maintained?

IA-QA — 152 QA & Dev Tools for AI Agents is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the IA-QA — 152 QA & Dev Tools for AI Agents MCP server?

VerifyMCP ran 13 checks on IA-QA — 152 QA & Dev Tools for AI Agents, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.