IA-QA — 152 QA & Dev Tools for AI Agents is an MCP server with 152 tools an agent can call, among them ab_test_report, analyze_diff_bugs, analyze_responses. It answers at https://www.ia-qa.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 20 October 2026, succeeded.
152 free QA tools for agents: injection scan, evals, RAG, web audits. Smaller packs: /mcp/{pack}.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
ab_test_report | Generate an A/B test report comparing two prompts or model configurations. Accepts arrays of scores and returns statistical comparison: mean, median, std deviation, winner, and improvement percentage. Inputs: variant_a, variant_b |
analyze_diff_bugs | Pattern-based diff linter: flags a fixed set of risky shapes in changed code — query-string interpolation (SQL/Cypher/Mongo injection shape), shell interpolation, eval/new Function, empty catch blocks, regex built from a variable, fewer cat Inputs: version1, version2, context |
analyze_responses | Semantically analyze N already-produced model outputs for the SAME task (the MCP counterpart to the LLM Sandbox). Without a reference: computes consensus — pairwise cosine agreement, the most-representative output, and the outlier. With a ` Inputs: responses, reference |
base64_decode | Decode a Base64 string back to UTF-8 text. Use for inspecting Base64-encoded API responses, JWT payload claims, config file values, or attachment data. Inputs: input |
base64_encode | Encode a UTF-8 string to Base64. Use when you need to embed binary data, multi-line text, or special characters safely inside JSON fields, HTTP headers, or data URIs. Inputs: input |
bias_detect | 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 hum Inputs: responses |
bm25_score | Compute BM25 relevance score between a query and one or more documents. BM25 is the industry-standard keyword-based ranking algorithm used in Elasticsearch, OpenSearch, and Weaviate hybrid search. Returns ranked results with normalized scor Inputs: query, documents, k1, b, top_k |
build_rag_prompt | Assemble a complete RAG (Retrieval-Augmented Generation) prompt from retrieved context chunks and a user query. Handles token budgeting, citation numbering, system instruction injection, and source attribution. Inputs: query, chunks, system_instruction, max_context_tokens, cite_sources, language |
calculate_readability | Calculate readability scores: Flesch Reading Ease, Flesch-Kincaid Grade Level, Coleman-Liau Index, and Automated Readability Index. Useful for evaluating LLM output quality. Inputs: input |
case_convert | Convert a string between naming conventions: camelCase, PascalCase, snake_case, kebab-case, UPPER_SNAKE_CASE, dot.case, Title Case. Essential for code generation and refactoring. Inputs: input, to |
check_contrast_ratio | Calculate WCAG 2.1 contrast ratio between two colors. Returns ratio and compliance for AA/AAA normal and large text. Inputs: foreground, background |
color_convert | Convert a color between HEX, RGB, and HSL formats. Use when translating design tokens between CSS notations, verifying color accessibility, or normalizing color values from user input. Accepts #rrggbb, #rgb, rgb(r,g,b), or hsl(h,s%,l%). Inputs: input |
compare_models | Compare 2-5 AI models side by side: context window, pricing, multimodal, reasoning capabilities, and provider. Returns a comparison table with a recommendation based on your use case. Inputs: models, use_case |
compare_responses | Compare two ALREADY-PRODUCED outputs (e.g. model A vs model B on the same task) side by side. Returns deterministic metrics (token cosine, ROUGE-L, Jaccard, length/structure deltas, JSON diff) and a verdict. If a `reference` (ground truth) Inputs: response_a, response_b, label_a, label_b, task, reference |
consistency_check | Compare multiple LLM responses to the same prompt and detect inconsistencies using Jaccard word-overlap similarity and fact drift (number comparison). Fast, deterministic, no API key needed. Limitations: relies on surface-level word matchin Inputs: responses, check_facts |
context_window_check | Given an array of message objects [{role, content}], estimate total token usage and check if it fits in the target model's context window. Warns about truncation risk. Inputs: messages, model, max_output_tokens |
conversation_analyze | Analyze a multi-turn conversation for context retention, topic drift, instruction following, and repetition. Accepts messages array [{role, content}]. Essential for chatbot QA. Inputs: messages |
cookie_security_audit | 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: mi Inputs: url |
cors_checker | 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 Inputs: url, origin, method |
cors_test | 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, a Inputs: url, origin |
cot_analyzer | Analyze a Chain-of-Thought (CoT) or reasoning trace from an LLM. Detects step count, logical flow, conclusion presence, backtracking, and estimates reasoning depth. Useful for o1/o3/DeepSeek-R1 evaluation. Inputs: reasoning, expected_conclusion |
count_code_lines | Count lines of code: total, code lines, comment lines, blank lines, and comment density. Supports JS/TS, Python, Java/C/C++, Ruby, Go, Shell, HTML/XML, and CSS. Inputs: input, language |
count_tokens | Estimate the token count of a text string using the cl100k_base approximation (~4 chars/token). Call this BEFORE sending any text to an LLM API to check if it fits within the model context window and to estimate cost. Returns token estimate Inputs: input |
create_confluence_page | Create a new Confluence page from the output of jira_to_test_suite. Formats Gherkin, E2E steps, API tests, and test data as a properly structured Confluence page with code blocks and tables. STATEFUL — creates a new page in the specified sp Inputs: confluence_base_url, confluence_email, confluence_token, space_key, title, parent_page_id |
cron_parse | Parse a cron expression into a human-readable schedule description. Supports standard 5-field cron (minute hour day month weekday). Inputs: expression |
cron_validator | Validate a 5-field cron expression, explain the schedule, and preview the next execution times. Use this to debug cron jobs before they reach production. Returns parsed fields, a human-readable description, and upcoming ISO timestamps. Inputs: expression, next_runs_count |
decode_jwt | 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 inte Inputs: token |
detect_language | Detect the natural language of a text using n-gram frequency analysis and common word markers. Supports 15 languages: English, French, Spanish, German, Italian, Portuguese, Dutch, Russian, Chinese, Japanese, Korean, Arabic, Polish, Turkish, Inputs: input |
detect_secrets | 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. Inputs: input, filename |
diff_mappings | Diff a baseline page mapping against a current one and return a CI-style verdict: PASS / FIX / BLOCK, plus per-element drift (ok, renamed, healable, ambiguous, lost, added, rebound). Pure and deterministic — provide two mappings as JSON wit Inputs: before, after |
diff_text | Compute a unified line-by-line diff between two text strings (LCS algorithm). Returns added/removed/unchanged line counts and formatted diff hunks with configurable context lines (0–20). Use to compare versions of prompts, configs, code sni Inputs: a, b, context |
embedding_similarity | Compute text similarity using local algorithms (Bag of Words, TF-IDF, Character N-grams). No API key needed — runs entirely in-process. NOT real embeddings: for true semantic similarity with vector embeddings, use run_semantic_tests with mo Inputs: text_a, text_b, batch, methods |
env_parse | Parse a .env file content into a JSON object. Handles quoted values (single and double), inline comments, export prefix, and escaped sequences (\n, \t inside double quotes). Returns all key-value pairs. Use in CI/CD pipelines, agent config Inputs: input |
escape_html | Escape HTML special characters (&, <, >, ", ') to their safe HTML entities. ALWAYS call this before inserting any user-provided or LLM-generated content into an HTML template to prevent cross-site scripting (XSS) attacks. Inputs: input |
estimate_llm_cost | Estimate the API cost in USD for a given model and token counts. Supports all major 2024–2026 models: GPT-4o, GPT-4.1, o3, o4-mini, Claude Opus 4, Claude Sonnet 4/4.5, Gemini 2.5 Pro/Flash, DeepSeek V3/R1, Grok 3, and legacy models. Inputs: model, input_tokens, output_tokens |
extract_json_from_text | Extract the first valid JSON object or array embedded in chaotic LLM output (surrounded by markdown fences, prose, or explanatory text). Handles ```json blocks and inline JSON. Call this whenever an LLM returns structured data mixed with ex Inputs: input |
extract_json_path | Extract a value from a JSON string using dot-notation path (e.g., "user.address.city", "items.0.name", "meta.tags"). Supports array index access via numeric path segments. Inputs: input, path |
extract_links | Extract all URLs, email addresses, and domain names from text. Returns categorized and deduplicated results. Useful for content auditing, link checking, and web scraping validation. Inputs: input, types |
extract_todos | Extract TODO, FIXME, HACK, BUG, NOTE, OPTIMIZE, and custom tags from any source code or text. Returns line numbers, tag types, and message text. Essential for technical debt auditing. Inputs: input, tags, include_context |
fetch_confluence_page | Fetch a Confluence page and return its content as clean Markdown. Accepts a numeric page_id or a full page URL. Optionally lists direct child pages. BYOK — credentials transit in-memory only, never stored. Inputs: page_id, page_url, confluence_base_url, confluence_email, confluence_token, include_children |
fetch_jira_issue, fetch_veille_feed, few_shot_formatter, find_tool, fix_gherkin, flatten_json, format_bytes, format_json, format_table, function_call_validate, generate_ci_workflow, generate_curl, generate_eval_yaml, generate_hmac, generate_html_report, generate_json_ld, generate_password, generate_slug, generate_test_cases, generate_uuid, get_testing_guidelines, guardrail_test, hallucination_check, hash_text, html_to_markdown, http_status_lookup, identify_caller, jira_to_test_suite, json_diff, json_schema_generate, json_schema_validate, json_to_csv, json_to_yaml, latency_benchmark, levenshtein_distance, lint_commit_message, list_llm_models, list_local_tests, llm_fit_finder, llm_format_check, llm_generate, llm_json_schema_check, llm_output_validator, lorem_ipsum, mcp_schema_lint, mcp_server_evaluate, mcp_server_health_check, merge_json, metamorphic_check, minify_js, mock_from_schema, model_info, multimodal_eval_guide, needle_haystack_generate, normalize_vector, normalize_whitespace, number_base_convert, openapi_validate, optimize_prompt_tokens, parse_csv, parse_http_headers, post_jira_comment, pr_gatekeeper, prompt_injection_scan, prompt_template_fill, prompt_test_suite, rag_relevance_rank, rate_tool, redact_pii, regex_test, rerank_evaluate, response_quality_score, run_eval_contract, run_pr_gate_pipeline, run_semantic_tests, run_vlm_test_suite, run_vlm_test_suite_batch, sandbox_scenario, score_geo_signals, search_jira_issues, secret_scan, security_headers_check, shield_analyze, similarity_score, sort_lines, split_chunks, ssl_certificate_check, strip_markdown, system_prompt_builder, test_skill, text_stats, timestamp_convert, token_budget_calculator, toxicity_scan, transform_json_array, truncate_to_tokens, unescape_html, url_decode, url_encode, validate_agent_trajectory, validate_email, validate_mcp_response, validate_url, vector_quantize, vector_similarity, vector_stats, web_security_audit, webhook_endpoint_create, webhook_endpoint_requests, word_frequency, xml_to_json, yaml_to_json
Every block below points at https://www.ia-qa.com/mcp. Pick your client and copy.
claude mcp add --transport http ia-qa-152-qa-dev-tools-for-ai-ag https://www.ia-qa.com/mcp
{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.ia-qa.com/mcp"]
}
}
}{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"url": "https://www.ia-qa.com/mcp"
}
}
}{
"servers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"type": "http",
"url": "https://www.ia-qa.com/mcp"
}
}
}{
"context_servers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"url": "https://www.ia-qa.com/mcp"
}
}
}{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"serverUrl": "https://www.ia-qa.com/mcp"
}
}
}{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"url": "https://www.ia-qa.com/mcp"
}
}
}name: IA-QA — 152 QA & Dev Tools for AI Agents
version: 0.0.1
schema: v1
mcpServers:
- name: IA-QA — 152 QA & Dev Tools for AI Agents
type: streamable-http
url: https://www.ia-qa.com/mcp{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"httpUrl": "https://www.ia-qa.com/mcp"
}
}
}{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"type": "http",
"url": "https://www.ia-qa.com/mcp"
}
}
}{
"mcpServers": {
"ia-qa-152-qa-dev-tools-for-ai-ag": {
"url": "https://www.ia-qa.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fwww.ia-qa.com%2Fmcp&type=streamable_http&id=ia-qa-152-qa-dev-tools-for-ai-ag&name=IA-QA%20%E2%80%94%20152%20QA%20%26%20Dev%20Tools%20for%20AI%20Agents
It answered our last check on 20 October 2026 in 328 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
152, as returned by the server's own tools/list on 12 September 2026: ab_test_report, analyze_diff_bugs, analyze_responses, base64_decode, base64_encode, bias_detect, bm25_score, build_rag_prompt, and 144 more.
It answered our last check on 20 October 2026 in 328 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://www.ia-qa.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.jcjamet. Endpoint host: www.ia-qa.com. ARD identifier: urn:air:io.github.jcjamet:mcp:ia-qa-toolbox.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.