qai-consultant-mcp
This is a keyless local MCP server that grounds QA work in a bundled knowledge base and five deterministic QA analysis tools (no LLM calls — it returns numbers, you write the narrative).
retrieve_qa_knowledge— semantic search over the local KB (methodologies, IEEE/ISO/OWASP markdown standards, audit frameworks, EU AI Act, AI-SDLC case studies), with scores, strong/moderate/weak match labels, category filter,min_scorethreshold and alow_relevanceflag when nothing really matches.list_kb_sources— enumerate every KB document grouped by category, with doc count andkb_version.estimate_qa_effort— PERT-based QA effort estimate from a 12-field project intake: baseline, complexity multipliers, activities, team capacity, risk buffer, final min/max range and confidence score; invalid input returns structured field errors.review_qa_document— deterministic 0–100 rubric score for an existing Test Plan / Test Strategy / test case list across six ISTQB/IEEE-829 dimensions, with findings and resolved KB citations; auto-detects doc type and handles non-QA, oversize, short and non-English input gracefully.analyze_test_results— test-health metrics from JUnit XML or CSV (single run or multi-run arrays): flaky tests, ever-failing tests, never-run tests vs a reference list, slowest tests, failure clustering, pass rates and per-run breakdown.assess_qa_maturity— indicative TMMi level (1–3 only, never certified 4–5) across 10 process areas from free text, plus a conditional EU AI Act Articles 9–15 readiness score when the input signals an AI/ML system.Operational extras — runs locally over stdio via
uvx qai-consultant-mcpwith pinned deps and an optional telemetry opt-out, and ships prompt templates (qa_project_interview,risk_register_structure,test_strategy_structure,test_plan_structure) to structure client-side generation with citations.
QAI Consultant
An open-source AI agent that acts as a senior QA Architect — automatically generating a Test Strategy, Risk Register, Effort Estimation Report, and Test Plan from a simple project description, plus deterministic QA Document Quality Review, Test Results Analysis, and QA Maturity Assessment for evaluating what already exists. Also available as a local MCP server so Claude Code, Claude Desktop, and other MCP clients can ground their own QA work in the same standards and numbers.
🌐 Live demo: quality-ai-consultant.streamlit.app
🔌 MCP server:
uvx qai-consultant-mcp— no API keys, no Pinecone. See MCP Server below or the package on PyPI.
🤖 Built with Claude Code by Anthropic.
Screenshots
Web UI (Streamlit)
Landing page

MCP panel in the sidebar

Project Discovery dialogue (Web Application template applied)

Executive Readout + generation status

Risk Register (Risk Ledger table)

Effort Estimation

Test Strategy

Test Plan

QA Document Quality Review

QA Maturity Assessment

CLI
Related MCP server: checkyourself
Quick Start
Option A — Use the live app (no setup)
👉 quality-ai-consultant.streamlit.app
Option B — Run locally
# 1. Clone and install
git clone https://github.com/gvasile29/qai-consultant.git
cd qai-consultant
pip install -r requirements.txt
# 2. Set up API keys
cp .env.example .env
# Edit .env and fill in the 4 keys (see Prerequisites below)
# 3. Build the knowledge base (one-time, pushes to Pinecone)
python src/ingest.py
# 4. Run
python src/cli.py # Terminal UI
streamlit run src/app.py # Web UI → http://localhost:8501📖 Full installation guide: INSTALL.md
The Problem
Creating a Test Strategy from scratch is time-consuming and requires deep QA expertise. Most teams either skip it, do it superficially, or spend days researching methodologies.
QAI Consultant eliminates this bottleneck by combining established QA methodologies, industry standards (ISTQB, OWASP, ISO 26262, A-SPICE), and expert knowledge into an AI agent that thinks like a seasoned QA Architect.
Who Is This For?
QA Engineers who need structured guidance on test strategy
Engineering Managers who need effort estimations and resource planning
Development teams without a dedicated QA Architect
QA Consultants who want to accelerate their delivery
What QAI Consultant Generates
From a single 11-question dialogue, QAI Consultant automatically generates four documents:
Document | What it contains |
⚠️ Risk Register | Risk matrix, likelihood/impact analysis, mitigations per risk |
📊 Effort Estimation Report | PERT-based breakdown, team capacity analysis, confidence score |
📋 Test Strategy | ISTQB-aligned strategy tailored to your stack, methodology, and compliance |
📝 Test Plan | IEEE 829-aligned plan with entry/exit criteria, schedule, and AI tool oversight |
Above the four tabs, an Executive Readout summarizes overall risk, the QA effort range, team capacity, confidence, and the top 3 risks — computed deterministically from the Risk Register and Effort Estimation, with no extra LLM call.
All outputs are saved as Markdown files and available for PDF download.
Evaluating what already exists (deterministic, no LLM needed for the scores):
Mode | What it does |
📝 QA Document Quality Review | Scores an existing Test Plan / Strategy / test case list 0–100 across six ISTQB/IEEE 829 dimensions, with findings and knowledge-base citations |
🧪 Test Results Analysis | Flaky, ever-failing, never-run and slowest tests plus failure clustering from JUnit XML/CSV — optionally used to ground the Risk Register in real execution data |
📈 QA Maturity Assessment | Indicative TMMi level (1–3) across 10 process areas from a free-text description, plus an EU AI Act Articles 9–15 readiness check for AI/ML systems |
Knowledge Base
QAI Consultant's recommendations are grounded in real QA standards and methodologies:
📘 ISTQB — 14 certification syllabuses (CTFL, CTAL-TA, CTAL-TM, CTAL-TAE, CT-AI, and more)
🔒 OWASP — WSTG v4.2, MASTG, Top 10 2021
🚗 ISO 26262 — Automotive functional safety (ASIL levels, HARA, V&V)
🏭 A-SPICE — Automotive SPICE process reference model (SWE.4, SWE.5, SWE.6)
📋 IEEE 829 — Test documentation standard
⚙️ ISO/IEC 25010 — Software product quality model
🇪🇺 EU AI Act — risk tiers, provider/deployer obligations, Article 50 transparency, Articles 9–15 testing implications
🧭 Testing methodologies — Agile, BDD/TDD, exploratory, risk-based testing, test pyramid
🔍 Audit & process evaluation — TMMi, CMMI, ISO/IEC 33002, ISO 19011, OWASP ASVS, ISO 27001, SOC 2, plus public failure case studies (Knight Capital, Boeing 737 MAX MCAS, CrowdStrike 2024)
🤖 AI Test Planning — 17 real-world AI SDLC case studies (2024–2025)
🧠 Expert Knowledge — Real QA scenarios and lessons learned from practitioners
Prerequisites
QAI Consultant runs on cloud APIs — no local GPU required.
You need four API keys in a .env file (all have free tiers):
Key | Where to get it |
| console.mistral.ai → API Keys (the default model, |
| openrouter.ai/keys (fallback; uses free models only) |
| pinecone.io → API Keys |
| Name of your Pinecone index (e.g. |
cp .env.example .env
# Edit .env and fill in all four valuesArchitecture
How It Works
You describe your project (11 questions)
↓
QAI retrieves relevant knowledge from Pinecone (parallel RAG, 3 threads)
↓
QAI analyzes risks from your context → Risk Register (Mistral API)
↓
QAI estimates effort using PERT + industry benchmarks → Effort Report
↓
QAI summarizes risk, effort, capacity and top risks → Executive Readout (no LLM)
↓
QAI generates a Test Strategy backed by QA standards → Test Strategy (Mistral API)
↓
QAI generates an IEEE 829-aligned Test Plan → Test Plan (Mistral API)
↓
Four documents ready for Markdown + PDF downloadLLM calls use the Mistral API (ministral-14b-2512) as the primary provider, with OpenRouter free models (Nemotron 3 Super → GLM 5.2) as automatic fallback.
Interfaces
Web UI (Browser — recommended)
streamlit run src/app.pyOr use the live hosted version: quality-ai-consultant.streamlit.app
Besides the Test Strategy flow, the landing page and sidebar offer Review an existing QA document and Assess QA Maturity; test execution results can be attached on the review screen before generating.
CLI (Terminal)
python src/cli.py # interactive Test Strategy flow
python src/cli.py --results run1.xml run2.xml # same flow, grounded in JUnit XML/CSV results
python src/cli.py --review path/to/test_plan.md # QA Document Quality Review
python src/cli.py --maturity path/to/process.txt # QA Maturity AssessmentMCP Server (for Claude Code, Claude Desktop, and other MCP clients)
Listed on the official MCP registry (io.github.gvasile29/qai-consultant-mcp), Glama, and Awesome MCP Servers.
QAI Consultant is also available as a local, fully keyless MCP server —
qai-consultant-mcp. No Pinecone, no Mistral/OpenRouter API keys: it runs a
local embedding index over the knowledge base's Markdown documents (the ISTQB and
OWASP PDFs are not bundled, for licensing reasons) and exposes deterministic QA
effort estimation, document review, test-results analysis and maturity
assessment, so your own AI assistant can ground its QA work directly, with no
separate LLM call. It runs locally over stdio (requires uv);
a hosted version connectable from claude.ai is on the roadmap (v4.0).

uvx qai-consultant-mcpClaude Code:
claude mcp add qai-consultant -- uvx qai-consultant-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"qai-consultant": {
"command": "uvx",
"args": ["qai-consultant-mcp"]
}
}
}Tools:
Tool | What it does |
| Grounding chunks from the KB (standards summaries — OWASP Top 10, IEEE 829, ISO/IEC 25010, ISO 26262, A-SPICE, EU AI Act — plus methodologies, audit/evaluation guides, and case studies), filterable by category; returns |
| Every document in the KB, grouped by category |
| Deterministic PERT-based effort estimate (no LLM narrative, you write your own from the numbers); |
| Deterministic 0–100 quality score for an existing Test Plan/Strategy/test case list across six ISTQB/IEEE-829 dimensions, with findings + KB citations |
| Deterministic health metrics from JUnit XML/CSV test execution data — flaky tests, ever-failing tests, slowest tests, failure clustering |
| Deterministic indicative TMMi process-maturity level (1-3, never a certified 4-5) from a free-text description, plus a conditional EU AI Act Articles 9-15 readiness score when the input signals an AI/ML system |
Prompts: qa_project_interview (the same 11-question intake this app uses), risk_register_structure, test_strategy_structure, test_plan_structure — each grounds the client's generation in retrieve_qa_knowledge with [Source N] citations.
Privacy: anonymous usage telemetry is on by default (since v3.7.0); turn it off with QAI_TELEMETRY=0 or DO_NOT_TRACK=1. Only tool name/success/duration/category, version and OS family are sent, under a random ID that's new for every server run and never stored — never your query text or project details.
Feedback Loop
After each generation, QAI asks: "Was this strategy useful?"
Yes → strategy saved to
knowledge_base/generated_strategies/and included in the next re-ingestionPartially → strategy saved with your improvement notes
No → discarded
This creates a feedback loop where QAI learns from validated real-world outputs over time.
Roadmap
v0.1 ✅ Core agent + CLI + Streamlit Web UI
v0.2 ✅ Feedback loop — validated strategies grow the knowledge base
v0.3 ✅ Risk Register — automatic risk analysis alongside Test Strategy
v0.4 ✅ Effort Estimation Report — PERT-based with team capacity analysis
v0.5 ✅ Auto re-ingest — file watcher + incremental ingest + manifest tracking (the file watcher was removed in v2.0)
v0.6 ✅ Confidence level algorithm — score-based (0-100): PERT spread + capacity gap + data quality + multiplier magnitude
v1.0 ✅ MVP — error handling, input validation, logging, full documentation, tests, Apache 2.0 license
v2.0 ✅ Cloud migration — Ollama → Mistral API + OpenRouter fallback; ChromaDB → Pinecone; deployed to Streamlit Cloud
v2.0.1 ✅ Stability — 27 bugs fixed: PERT normalization, template application, PDF caching, session state, filename sanitization, RAG fallback, per-step exception isolation
v2.0.2 ✅ Stability — release-gate evals (estimate integrity + RAG metrics), 5 estimation/validation defects fixed, session-state crash fix, narrative duplication/truncation fixes, per-step generation isolation from LLM outages
v2.5.0 ✅ In-app Release Notes — sidebar panel + one-time "what's new" banner
v2.5.1 ✅ Knowledge base — new
evaluation_audit/pillar: process/test maturity models, audit methodology, security/compliance audit, real public failure case studiesv2.5.2 ✅ EU AI Act Article 50 transparency patch — sidebar AI-interaction notice + visible "AI-generated content" label on every generated document
v2.6.0 ✅ EU AI Act knowledge base pillar — risk tiers, provider/deployer obligations, Article 50 transparency, Articles 9-15 testing implications, conformity assessment, timeline
v3.0.0 ✅ MCP server MVP — local, keyless
qai-consultant-mcp(standards-grounded retrieval + deterministic effort estimation), in-app announcement, and machine-readable AI-generated marking (EU AI Act Article 50(2))v3.1.0 ✅ Evaluation Package — QA Document Quality Review (deterministic ISTQB/IEEE-829 rubric scoring an existing Test Plan/Strategy/test case list, with an optional AI narrative) and Test Results Analysis (flaky/ever-failing/slowest/failure-clustering metrics from JUnit XML/CSV, grounding the Risk Register in real execution data); available in the web app, CLI (
--review,--results), and the MCP server (review_qa_document,analyze_test_results)v3.1.1 ✅ Visit counter — a running total of app visits now shows in the sidebar, persisted in Pinecone so it survives redeploys
v3.1.2 ✅ Fix — the 3.1.1 visit counter never actually incremented (Pinecone rejected its all-zero placeholder vector); now works correctly
v3.1.3 ✅ Fix — the visit counter's label was in Romanian ("vizite") instead of English; now reads "visits" to match the rest of the app's UI copy
v3.1.4 ✅ Added the
mcp-namemarker toREADME_MCP.md(PyPI long description) — a prerequisite for listingqai-consultant-mcpin the official Anthropic MCP registry; no functional changev3.1.5 ✅ Fix —
qai-consultant-mcpfailed to start (ModuleNotFoundError: mcp.server.fastmcp) after the upstreammcpSDK's breaking 2.0.0 release removed theFastMCPmodule the server depends on;mcpis now pinned to>=1.8.0,<2.0.0v3.1.6 ✅ Fix —
qai-consultant-mcpcould fail to attach in Claude Desktop on a cold cache (a client-side handshake timeout, since the server used to fully embed the whole knowledge base before responding toinitialize); the full index build is now lazy, deferred until the first real requestv3.2 ✅ CI quality gates completion — a separate nightly workflow exercising real Pinecone/Mistral/OpenRouter contract tests, which never blocks a PR
v3.3 ✅ Adopted the EU's official AI-generated-content icon (Code of Practice, AI Act Article 50(4)) in the Streamlit sidebar and all generated-document PDF exports, reinforcing the existing text/metadata disclosure
v3.3.1 ✅ Fix —
qai-consultant-mcpcould intermittently fail to attach in Claude Desktop because 4 of its 6 runtime dependencies had loose version bounds, lettinguvre-resolve and reinstall on any unrelated upstream release; all dependencies are now exact-pinnedv3.4 ✅ App visual redesign ("Calibration Bench") — token-based color/typography system (IBM Plex fonts, no font CDN) and a reusable "Signal Ledger" score/severity component, applied to Document Review, Effort confidence, Results Analysis, Risk Register, and the Project Discovery question list
v3.4.1 ✅ Distribution links (official MCP registry, Glama, Awesome MCP Servers) now shown in the app's own MCP panel, not just the READMEs; landing page redesign started (Phase 1 of 3 — see the CHANGELOG)
v3.4.2 ✅ Interactive flow redesign (Phase 2 of 3 — see the CHANGELOG): the Project Discovery dialogue, review screen, and sidebar now share the landing page's "Power-On Sequence" visual language (animated progress bar, one-time entrance-animated summary tiles, hover feedback)
v3.4.3 ✅ Output screens redesign (Phase 3 of 3, completing the "Power-On Sequence" redesign — see the CHANGELOG): the Test Strategy results view and the document review screen now share the same visual language (live 4-stage sequence status, entrance-animated score tiles, hover feedback), plus a "What you get in ~2 minutes" addendum on the landing screen
v3.4.4 ✅ Fix —
qai-consultant-mcpcould again fail to attach in Claude Desktop, this time from an unpinned transitive dependency (scipy, via scikit-learn) picking up a fresh release mid-cache-miss; the entire resolved dependency tree (~99 entries) is now exact-pinned, not just the 6 direct importsv3.5.0 ✅ QA Maturity Assessment (
assess_qa_maturity) — deterministic TMMi process-maturity signal (10 process areas, indicative level 1-3) plus a conditional EU AI Act Articles 9-15 readiness score for AI/ML projects; available in the web app ("📈 Assess QA Maturity"), CLI (--maturity), and the MCP server (assess_qa_maturity)v3.5.1 Fix: QA Maturity scoring missed paraphrased evidence (requirement traceability described in prose, progress tracking described as "defect triage"/"pass rate") — found via live browser QA. Yanked from PyPI — see v3.5.2, published the same day, for why
v3.5.2 ✅ Fix: the v3.5.1 MCP package could not be installed at all (
torch==2.13.0+cpuunresolvable from plain PyPI) — reverted to a plaintorch==2.13.0pin. This is the first working PyPI publish of theassess_qa_maturityMCP tool, since v3.5.0's own publish step was never completed and v3.5.1 was brokenv3.5.3 ✅
qai-consultant-mcp's local index switched fromsentence-transformers/torchtofastembed(ONNX Runtime) for embeddings — same retrieval quality (evals/local_index_parity.py: recall@5=0.91, MRR=0.86, unchanged), ~3x faster cold import, and a much smaller dependency list. Removed the weekly dependency-drift-canary workflow, no longer justified at the smaller scale. SeeCHANGELOG.mdfor details.v3.5.4 ✅ Reliability fixes from the 2026-09-23 external audit: streaming no longer duplicates output when the primary LLM drops mid-response; the effort estimate's risk buffer now counts actual Risk Matrix rows (it was inflated to the 35% cap by keyword matches); confidence scoring no longer treats precise answers like "None" or "functional safety" as vague. See
CHANGELOG.md.v3.6.0 ✅ Public-app protection and an at-a-glance summary, from the 2026-09-23 external audit: server-side daily generation limits (a global daily cap plus a per-visitor cap, alongside the existing 3-runs-per-session cap) so opening a new tab no longer resets the quota; and an Executive Readout above the four output tabs — overall risk, QA effort range, team capacity, confidence, and the top 3 risks to address first — built deterministically from the Risk Register and Effort Estimation, with no extra LLM call. See
CHANGELOG.md.v3.6.1 ✅ The OpenRouter fallback now uses only free-tier models (Nemotron 3 Super → GLM 5.2, via OpenRouter's
modelsfallback chain), so the fallback no longer accrues charges; an empty AI response now shows a clear error instead of an empty document; the in-app AI notice now warns that submitted text may be logged and used for training by the LLM providers. SeeCHANGELOG.md.v3.6.2 ✅ Primary model switched to Ministral 14B (Mistral Small is rate-limited on Mistral's free plan), output budget raised to 6,500 tokens so documents are no longer cut off, and a bold Risk Matrix header no longer empties the Risk Ledger, Executive Readout and effort risk buffer
v3.6.3 ✅ Fixed the MCP knowledge-base tools crashing with a numpy "inhomogeneous shape" error for installs that cached a briefly broken upstream copy of the embedding model (fastembed 0.8.1) See
CHANGELOG.md.v3.7.1 ✅ MCP telemetry never sends an unrecognized
categoryvalue (it could carry free text),analyze_test_resultsdocs now match how it handles tests with fewer than 3 runs, and a new agent skill (skills/qai-consultant/) tells AI agents when to call each MCP tool. SeeCHANGELOG.md.v3.7.2 ✅
estimate_qa_effortno longer applies a false "No existing automation" +20% when the automation text merely contains "no" inside a word (e.g. "CANoe"); plus Streamlit output-honesty guards (no invented project facts or unverifiable citations, no stray markdown), tile/logo/Enter-to-submit/time-claim fixes.v3.7.0 ✅ Live adoption numbers on the landing page (visits, AI runs, MCP installs, GitHub stars; downloads and usefulness once there's data), download + feedback counters, and MCP telemetry on by default with an opt-out. See
CHANGELOG.md.v3.8.0 ✅ MCP end-to-end QA fixes:
estimate_qa_effortunit/range parsing + warnings,review_qa_documentnot-a-QA-document/test-case/language handling,retrieve_qa_knowledgemin_score/low_relevance,analyze_test_resultstolerant parsing; plus Streamlit effort/sources/download/copy fixes.v3.8.1 ✅ Out-of-stack tool and invented-quantity markers in generated documents, Download-all .zip,
matchstrength labels onretrieve_qa_knowledgechunks, effort narrative can no longer contradict the tables.v3.9.0 ✅
src/restructured into theqai_consultantpackage (wheel tierscommon/core/mcp; same tools and behaviour), tests grouped by level and feature, Executive Readout headlines expected effort and labels the range a planning band.v3.9.1 ✅ Generated documents no longer contradict each other or the deterministic tables (absence guard, Effort narrative, cross-document consistency, unverified regulators flagged); MCP dependency lock refreshed (
mcp1.30.0,urllib32.8.0,pyjwt2.15.0).v3.9.2 ✅ Hosted-app fixes: the zip download works again (Starlette pinned), the Streamlit/CLI paths share the cross-document consistency, PDF tables render, and generation shows a stage progress bar instead of streaming every line.
v3.9.3 ✅ MCP end-user QA fixes: input validation in
estimate_qa_effort, honestassess_qa_maturity/review_qa_documentgating, cleaner retrieval, cleareranalyze_test_resultswarnings.v4.0 Remote MCP — a hosted server connectable from claude.ai, plus server-side usage metrics
Contributing
QAI Consultant is built by the QA community, for the QA community.
Contributions are welcome:
📚 Add new knowledge sources to
knowledge_base/🧠 Share expert knowledge using the prompts in
knowledge_base/expert_knowledge/🐛 Report bugs or suggest features via GitHub Issues
🔧 Submit pull requests
See CONTRIBUTING.md for detailed guidelines.
Troubleshooting
Problem | Solution |
"Missing required secret: 'MISTRAL_API_KEY'" | Add your key to |
"Missing required secret: 'PINECONE_API_KEY'" | Add your Pinecone key to |
"Knowledge base is empty" | Run |
"The AI providers are temporarily unavailable" | Both Mistral and the OpenRouter free models failed — retry in a few minutes; |
Mistral returns | On Mistral's free plan, Mistral Small/Medium are rejected while the Ministral models are served — keep the default |
📖 Full troubleshooting guide: INSTALL.md
Available Tools
6 toolsanalyze_test_resultsA
Deterministic test-results health metrics (flaky / ever-failing /
never-run / slowest / failure clustering) from real test execution
data — no LLM anywhere in this call path; write your own narrative
from the returned numbers. Provide exactly one of junit_xml or
csv_text. junit_xml is normally one JUnit XML report string for one
run (accepts both a and a bare root); to
analyze flakiness across MULTIPLE runs in one call, pass a JSON array
of {"run_id": "...", "xml": "..."} objects
(or simply a JSON array of XML strings, auto-named run-1, run-2, ...;
repeated run_ids are kept as separate runs with a #2/#3 suffix and a
warning) instead — either as a genuine JSON array/list argument, or as a string
starting with "[" (some MCP clients stringify array arguments; both
forms are accepted). csv_text needs a test-name column (name | test_name
| test | testcase | title) and a status column (status | result |
outcome); headers are matched case-insensitively. Status synonyms are
accepted (pass/ok/success, fail/failure/ko, error/err,
skip/ignored/pending). Optional columns: classname (or suite), run_id
(or run/build; default "csv"), duration_s (or duration/time/elapsed, in
seconds; a *_ms header or "350ms" values mean milliseconds), message
(or error/details). Dropped rows and unrecognised columns are listed in
warnings. If NO test could be parsed (wrong columns, empty or
header-only CSV, HTML or non-JUnit XML, malformed XML) the call returns
{"error": "no_tests_found", "message", "warnings"} instead of an empty
0% result. reference_tests, if given, is a list of test identities
("classname::name", or just "name" when there is no classname) expected
to have run — any absent from the results are reported under never_run. A
bare "name" also matches when exactly one executed test has that name
(ambiguous bare names are not guessed; a warning explains).
Skipped tests are NOT failures: they are excluded from pass rates and from
the flaky/ever-failing verdicts and are reported separately (skipped,
skipped_executions). Flaky = pass_rate (over non-skipped executions)
strictly between flaky_min and flaky_max with at least 3 such executions;
ever-failing = zero passes across at least 3 non-skipped executions.
flaky_min/flaky_max must satisfy 0 <= flaky_min < flaky_max <= 1. Tests
with fewer executions are left out of both lists; with fewer than 3 runs a
warning says so, and tests that both passed and failed are listed under
mixed_outcome (needs more runs). An empty flaky list on 1-2 runs means not
enough data, not a stable suite. Malformed/oversized input never raises — it returns
a structured {"error": "invalid_argument" | "no_tests_found", ...}.
Returns the full ResultsAnalysis as JSON (runs, total_tests, executions,
overall_pass_rate, flaky, ever_failing, never_run, slowest,
failure_clusters, per_run, warnings, skipped_executions, skipped,
mixed_outcome).
| Name | Required | Description | Default |
|---|---|---|---|
| csv_text | No | ||
| flaky_max | No | ||
| flaky_min | No | ||
| junit_xml | No | ||
| reference_tests | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden, and it discharges it: it declares determinism, error contracts ("no_tests_found" with message+warnings; "invalid_argument"; "Malformed/oversized input never raises"), warning surfacing for dropped rows/unrecognised columns/duplicate run_ids, and the exact decision rules for flaky (pass_rate strictly between flaky_min and flaky_max with >=3 non-skipped executions) and ever-failing (zero passes over >=3 executions). The skipped-tests rule ('NOT failures') and the 1-2 run caveat prevent two classic misreadings of the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the highest-value facts (deterministic, exactly-one-of, array form for multi-run), but the body is a single ~350-word block with no paragraphing or bullets, and error behavior is restated twice (the no_tests_found paragraph and the closer about 'invalid_argument' | 'no_tests_found'). The length is defensible for a 5-param, 0%-coverage, no-output-schema tool, but the formatting makes scanning harder than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description enumerates the returned fields itself (runs, total_tests, executions, overall_pass_rate, flaky, ever_failing, never_run, slowest, failure_clusters, per_run, warnings, skipped_executions, skipped, mixed_outcome). Combined with the documented error shapes and threshold semantics, an agent has everything needed to call it and interpret the result on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This is the strong point given 0% schema coverage: every one of the five parameters is explained — junit_xml's three accepted shapes including the stringified-'[' client quirk, csv_text's required/accepted column names and status synonyms plus duration unit heuristics, reference_tests' "classname::name" identity format and ambiguous-bare-name handling, and the 0 <= flaky_min < flaky_max <= 1 constraint. It falls short of a 5 only because defaults (0.2/0.8) are left to the schema and column-name semantics are dense enough to require careful reading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — deterministic health metrics (flaky / ever-failing / never-run / slowest / failure clustering) computed from real test execution data — and explicitly distinguishes itself from LLM-based paths ("no LLM anywhere in this call path; write your own narrative"). No sibling tool (list_kb_sources, estimate_qa_effort, etc.) overlaps with this, so an agent can route on the first clause alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit mutual-exclusion rule ("Provide exactly one of junit_xml or csv_text") and then names the alternative mode for the other use case: single run as a plain XML string vs. multiple runs as a JSON array of {run_id, xml} objects or bare XML strings. It also states the fallback behavior when neither form parses, and tells the agent to author its own narrative rather than expecting prose back.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_qa_maturityA
Deterministically assess QA process maturity from a free-text project/
process description (or a pasted existing Test Strategy/Risk Register) —
no LLM anywhere in this call path; write your own narrative from the
returned findings. Scores 10 TMMi process areas (Level 2 Managed + Level 3
Defined) and returns an indicative_tmmi_level (1-3 — NEVER higher; Levels
4-5 require quantitative evidence a text description cannot substantiate,
per TMMi's own no-skip rule — always read the returned disclaimer and
never claim a certified TMMi level yourself). When the description signals
an AI/ML system, also scores 7 EU AI Act Articles 9-15 readiness checks
(ai_act_relevant=true, ai_act_dimension_scores populated); otherwise that
dimension is omitted entirely (ai_act_relevant=false, empty dict) rather
than scored as a false gap. Descriptions under ~200 characters (after
stripping this app's own AI-disclosure front matter/footer) return
indicative_tmmi_level=0 with empty findings rather than an error
(status="insufficient_content"). Input with essentially no software-
testing/QA vocabulary (a recipe, meeting notes) returns
status="not_a_qa_description" with indicative_tmmi_level=null, a message
and no findings; a successful assessment has status="ok". Mentions of AI
that are negated ("no machine learning is used", "AI-free") do not switch
the EU AI Act dimension on. Each
finding carries kb_citations resolved from the knowledge base for its
citation queries — a finding with no resolvable source is returned with
an empty kb_citations list rather than a fabricated one. When
ai_act_relevant=true, ai_act_note carries a fixed caveat that risk-tier
classification (whether the system is legally "high-risk") is a
determination this tool does not make — the user/team must confirm
that independently; ai_act_note is empty when ai_act_relevant=false.
Returns {status, indicative_tmmi_level, tmmi_dimension_scores, ai_act_relevant,
ai_act_dimension_scores, ai_act_note, findings, disclaimer,
detection_caveat, language, language_warning, score_reliable,
keyword_list_warning, stats, kb_version}. Detection is keyword-based and
can under-score paraphrased practices (see detection_caveat); non-English
input sets score_reliable=false.
| Name | Required | Description | Default |
|---|---|---|---|
| project_description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses determinism/no-LLM, the indicative_tmmi_level cap at 3 with the TMMi no-skip rationale, the branch behavior for AI/ML mentions including negated ones, keyword-detection limits, and non-English handling. The three distinct status outcomes (ok, insufficient_content, not_a_qa_description) are spelled out precisely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and every sentence carries substantive information about a non-obvious edge case, so the length is defensible. The structure is a single dense paragraph with heavy parenthetical nesting, which makes the branch conditions harder to scan than they need to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates the full return shape (status, indicative_tmmi_level, both dimension score dicts, notes, findings, disclaimer, caveats, stats, kb_version) and explains the semantics of the conditional fields. An agent has everything needed to call it and interpret the result without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no schema description, so the description must compensate — and it does: it defines what project_description should contain, the ~200-character minimum after stripping AI-disclosure boilerplate, the vocabulary requirement that separates a valid input from a recipe or meeting notes, and the language constraint that flips score_reliable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb+resource: deterministically assess QA process maturity from a free-text project/process description, naming the exact scope (10 TMMi process areas, Level 2 Managed + Level 3 Defined). It explicitly distinguishes itself from the sibling tools by framing the output as findings the caller must narrate themselves, versus review/estimate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the valid input context (a free-text project/process description or a pasted Test Strategy/Risk Register) and the conditions under which it does not apply (under ~200 characters, no QA vocabulary). It does not, however, explicitly compare itself to siblings like review_qa_document or estimate_qa_effort, leaving the agent to infer which to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_qa_effortA
Deterministic QA effort estimate (PERT + complexity multipliers + team capacity + confidence score) — no LLM narrative; write your own from these numbers. Fields mirror the app's project-intake dialogue and are validated with the same rules; a validation failure returns {"error": "validation", "fields": {field: message}}, never a crash; all eleven fields are needed, and a missing or empty one is reported by name in that same shape Success returns the full EstimationData as JSON (baseline, multipliers, pert_activities, capacity, risk_buffer_days, final_effort_min/max, confidence_level/confidence_score, confidence_note, data_quality_score out of data_quality_max=20). Negative team sizes and negative or zero timelines are rejected with a validation error; decimal team sizes ("2.5") are rounded half up to a whole headcount with a warning. capacity_gap = available_person_days - pert_total_expected, so POSITIVE is a surplus and NEGATIVE a deficit; capacity_status ("surplus"/"deficit"/"balanced") and capacity_note state this unambiguously. methodology_note is set only when the methodology does not change the numbers (it is then a label only).
| Name | Required | Description | Default |
|---|---|---|---|
| timeline | No | ||
| tech_stack | No | ||
| known_risks | No | ||
| methodology | No | ||
| project_name | No | ||
| project_type | No | ||
| team_qa_size | No | ||
| team_dev_size | No | ||
| additional_context | No | ||
| existing_automation | No | ||
| project_description | No | ||
| compliance_requirements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it specifies the validation error shape ({"error": "validation", "fields": {...}}), guarantees no crash, rejects negative team sizes and non-positive timelines, rounds decimal headcounts half up with a warning, and defines the sign of capacity_gap and when methodology_note is a label only. That is genuine behavioral disclosure beyond anything structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded well with the deterministic-method summary, but the body is a dense run-on block (a missing period causes 'in that same shape Success returns...' to merge two ideas) and the capacity sign convention is explained twice. The content earns its place; the presentation does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a twelve-parameter tool with no output schema and no annotations, the description compensates by enumerating the return fields (baseline, multipliers, pert_activities, capacity, confidence_score, data_quality_score) and the error contract. What remains missing is input-side completeness: acceptable value formats for the many string fields and the eleven-vs-twelve field discrepancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across twelve bare string fields, and the description only adds semantics for three of them (team_qa_size/team_dev_size, timeline) plus the field-mirrors-intake framing for the rest. Fields like project_type, methodology, existing_automation and compliance_requirements get no hint of accepted values or formats, and the 'all eleven fields' count contradicts the twelve properties in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and method: 'Deterministic QA effort estimate (PERT + complexity multipliers + team capacity + confidence score)'. It also disambiguates itself from narrative-generating behavior ('no LLM narrative; write your own from these numbers'), making its role clear, though no sibling tool is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals how to consume the output ('write your own from these numbers') and states that all fields are needed, but never says when to choose this over assess_qa_maturity or analyze_test_results, nor what situations make an estimate inappropriate. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kb_sourcesA
List every document in the knowledge base, grouped by category. Returns {"categories": {category: [{"source", "title"}]}, "kb_version", "doc_count"}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It accurately describes the return structure (categories mapping, kb_version, doc_count), indicating no side effects or destructive actions. It is transparent about listing all documents, but does not mention limitations like pagination or rate limits, which would be expected for a full list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the action and includes an example of the return format. Every word is meaningful and necessary. It is front-loaded with the core function and immediately useful to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description provides sufficient information: the core action and the return structure. However, it does not clarify the scope of 'knowledge base' (e.g., global or per-user) or mention potential performance implications for large datasets. It is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema coverage is 100%. The description adds value by detailing the output structure, which is not in the schema (no output schema provided). Since there are no parameters, the description effectively compensates for the lack of output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List every document in the knowledge base, grouped by category.' This is a specific verb ('list') and resource ('documents in the knowledge base'), and it distinguishes from sibling tools like 'retrieve_qa_knowledge' which focus on QA, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. While the description is clear, there is no statement about when not to use it or which sibling to prefer in various contexts. The use case is implicitly straightforward but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_qa_knowledgeA
Retrieve grounding chunks from the local QA knowledge base (Markdown guides: testing methodologies, IEEE/ISO/OWASP Markdown standards, audit/evaluation frameworks, AI-SDLC case studies, the EU AI Act). NOT included: the ISTQB and OWASP PDF syllabi (licensing) - so fundamentals such as test design techniques (boundary value analysis), smoke vs sanity or test levels are often absent; the first call after server start may take ~30s while the index builds (usually done in the background by then). Returns {"chunks": [{"source", "category", "text", "score", "match"}], "kb_version", "best_score", "low_relevance"[, "note"][, "warnings"]}; "match" is strong (score >=0.55 AND the chunk contains most of the query's content terms), moderate (>=0.40) or weak, and when even the best chunk is not strong a note says to use only chunks that really answer the question (a 0.45 hit on an unrelated case study is vocabulary overlap). A query that names a source the KB does not ship (e.g. ISTQB) gets a note saying so; an out-of-range k is clamped and reported in "warnings". Chunks scoring below min_score (cosine similarity, default 0.40, 0 disables) are dropped; if nothing reaches it, chunks is empty, low_relevance is true and note says so - then answer from your own knowledge and tell the user the KB had no match (best_score shows how close the best miss was). Near-duplicate overlapping chunks of one document are collapsed. category, if given, must be one of: Standard, Methodology, Article, Expert Knowledge, Audit/Evaluation; an empty query, an unrecognized category or an out-of-range min_score returns a structured {"error": "invalid_argument", ...} rather than raising. k is clamped to [1, 20].
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| query | Yes | ||
| category | No | ||
| min_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: cold-start latency (~30s on first call after server start), a documented return shape including match-tier logic (strong >=0.55 plus content-term overlap, moderate >=0.40, weak), near-duplicate collapse, clamping of k and out-of-range min_score reported in warnings, and structured {error: invalid_argument} instead of raising. These are exactly the operational traits an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most important facts (what corpus, what is missing, cold start) are front-loaded before the return-shape detail, and nearly every clause conveys usable information. It is dense and parenthetical, however, and the return-shape/error discussion runs together rather than being segmented, which costs some scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain return values and failure modes — it documents the chunk fields, best_score, low_relevance, note and warnings, plus the empty-result path. For a 4-parameter retrieval tool with no structured metadata, nothing an agent needs in order to call and interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: k is clamped to [1,20], min_score is cosine similarity with default 0.40 where 0 disables filtering, category must be one of five enumerated values, and an empty query or bad category returns a structured error. This adds real semantics beyond the bare titles in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Retrieve grounding chunks from the local QA knowledge base') and immediately scopes the corpus by enumerating included guide types and explicitly excluded sources (ISTQB/OWASP PDFs). This tells an agent both what the tool returns and where its coverage boundary lies, which sets it apart from list_kb_sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance: when no chunk clears min_score, 'answer from your own knowledge and tell the user the KB had no match', and when the best hit is not strong, use only chunks that really answer the question. It also warns that fundamentals like boundary value analysis are often absent, steering the agent away from futile queries. It does not explicitly contrast itself with list_kb_sources or the analysis siblings, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_qa_documentA
Deterministically review an existing QA document (Test Plan, Test
Strategy, or a test case list) against a six-dimension ISTQB/IEEE-829-
grounded rubric (structure completeness, objectives & scope clarity,
entry/exit criteria, traceability, measurability, risk coverage) — no
LLM anywhere in this call path; write your own narrative from the
returned findings. doc_type must be one of "auto", "test_plan",
"test_strategy", "test_cases" — "auto" runs a cheap heading-keyword
classifier and reports which type it assumed; an unrecognized value
returns a structured {"error": "invalid_argument", ...} rather than
raising. Documents under ~200 characters (after stripping this app's own
AI-disclosure front matter/footer) return doc_type="insufficient_content"
with overall_score=0 rather than an error, unless they carry an explicit QA
signal (test plan/strategy/case wording, "Test N:" lines) and enough words
to score — those get a (low) score with findings. In "auto" mode a weak
but genuine QA document (a QA signal plus a core testing term) is scored as
its most likely type instead of being rejected. Rejections carry a hint
telling you to retry with an explicit doc_type. Each finding carries
kb_citations resolved from the knowledge base for its citation queries —
a finding with no resolvable source is returned with an empty
kb_citations list rather than a fabricated one. Non-QA input returns status="not_a_qa_document" (doc_type equals the
status, no score); oversize input returns status="input_too_large". Non-
English input is still scored but score_reliable=false and language_warning
explains the rubric is English-keyword based. detection_confidence says how
sure the "auto" type guess was. Returns {doc_type, overall_score,
dimension_scores, findings, stats, status, language, language_warning,
score_reliable, detection_confidence, detection_note, hint, kb_version}.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_type | No | auto | |
| document_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden and delivers: no LLM in the call path (determinism), structured errors instead of exceptions for invalid doc_type, short-document handling with overall_score=0, explicit QA-signal exception, non-QA and oversize statuses, non-English scoring with score_reliable=false, and no fabricated citations. Nearly every failure mode an agent could hit is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core purpose and rubric are front-loaded before the edge-case detail, and nearly every sentence carries decision-relevant information. It is, however, a single dense block of considerable length with some hedging qualifiers that could be tightened into a short bulleted edge-case list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the return contract ({doc_type, overall_score, dimension_scores, findings, stats, status, language, language_warning, score_reliable, detection_confidence, detection_note, hint, kb_version}). Combined with status semantics and citation-resolution behavior, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and does: all four doc_type values are enumerated with behavior ('auto' runs a keyword classifier and reports its assumption; invalid values return a structured error). document_text constraints are also implied through the ~200-character threshold and front-matter/footer stripping rule.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — deterministically review an existing QA document (Test Plan, Test Strategy, or test case list) — and names the exact rubric dimensions used. This is unmistakably distinct from siblings like estimate_qa_effort or analyze_test_results, which operate on different inputs and outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use: reviewing an existing document, with the contract that the caller writes its own narrative from the returned findings. Doc_type selection guidance is explicit, including when 'auto' is appropriate. It stops short of naming sibling alternatives or stating when not to use this tool (e.g., versus retrieve_qa_knowledge for source lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v3.9.3- Changed
estimate_qa_effort12 fields changed- added
Input schema / properties / compliance_requirements / defaultAdded value: +"" - added
Input schema / properties / existing_automation / defaultAdded value: +"" - added
Input schema / properties / known_risks / defaultAdded value: +"" - added
Input schema / properties / methodology / defaultAdded value: +"" - added
Input schema / properties / project_description / defaultAdded value: +"" - added
Input schema / properties / project_name / defaultAdded value: +"" - added
Input schema / properties / project_type / defaultAdded value: +"" - added
Input schema / properties / team_dev_size / defaultAdded value: +"" - added
Input schema / properties / team_qa_size / defaultAdded value: +"" - added
Input schema / properties / tech_stack / defaultAdded value: +"" - added
Input schema / properties / timeline / defaultAdded value: +"" - removed
Input schema / requiredRemoved value: -[ - "project_name", - "project_description", - "project_type", - "tech_stack", - "team_qa_size", - "team_dev_size", - "timeline", - "methodology", - "known_risks", - "existing_automation", - "compliance_requirements" -]
1 tool update
- Changed
retrieve_qa_knowledge1 field changed- added
Input schema / properties / min_scoreAdded value: +{ + "default": 0.4, + "title": "Min Score", + "type": "number" +}
1 tool update
v3.5.2- Added
assess_qa_maturity
5 tool updates
v3.1.4- First observed
analyze_test_results - First observed
estimate_qa_effort - First observed
list_kb_sources - First observed
retrieve_qa_knowledge - First observed
review_qa_document
TDQS
Scored across 6 tools
The four analytical tools (estimate_qa_effort, review_qa_document, analyze_test_results, assess_qa_maturity) each target a clearly different input and output, so misselection is unlikely. The only mild overlap is the knowledge-base pair — list_kb_sources (catalog of shipped documents) vs retrieve_qa_knowledge (semantic chunk retrieval) — but the descriptions make the catalog-vs-search split explicit.
Every name follows a strict snake_case verb_noun pattern: list_kb_sources, retrieve_qa_knowledge, estimate_qa_effort, review_qa_document, analyze_test_results, assess_qa_maturity. Verbs are distinct (list/retrieve/estimate/review/analyze/assess) and nouns name the resource acted on.
Six tools sit comfortably in the well-scoped range, and each covers a separate consulting activity: KB discovery, KB retrieval, effort estimation, document review, test-result analysis, and maturity assessment. No tool looks redundant or bolted on.
The surface covers the advisory lifecycle well — ground knowledge, estimate, review artifacts, analyze execution data, assess maturity — with no dead-end workflows for a read-only consultant role. Gaps remain: no tool to generate or draft QA artifacts (test plans, cases, risk registers), and list_kb_sources is a thin companion to retrieval.
Maintenance
Related MCP Connectors
AI governance MCP server for EU AI Act compliance and jurisdiction verification
AI-security knowledge as MCP: standards-mapped tools (OWASP, NIST, MITRE) for AI agents.
Official MCP server for Qase — manage test cases, runs, suites, defects via AI tools.
Independent AI-governance measurement MCP. Free reads + x402 evidence. Measurement not cert.
Related MCP Servers
- AlicenseAqualityDmaintenanceAI 規格大師 — MCP server bridging specs (Linear / JIRA / GitHub Issues / Notion / Markdown / Figma) to tests, with bidirectional traceability and a spec-quality coach. Sibling to mk-qa-master.182MIT
- AlicenseAqualityBmaintenanceLocal-first production-readiness MCP server for AI-built apps. It runs read-only checks, produces an evidence-based readiness score, and guides fixes before launch.117 npm7Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server that brings senior-QA discipline to AI coding assistants, enabling test planning, TDD, mutation testing, and code review.50170 PyPI7Apache 2.0
- FlicenseNot gradedqualityDmaintenanceLocal MCP server for static Python/TypeScript code audits, Playwright test generation, and SDLC health checks with a 0-100 quality score.-