qai-consultant-mcp
The QAI Consultant MCP server acts as a local, keyless QA Architect, grounding AI assistants in established QA standards and providing deterministic planning, document review, and test analysis tools — no external LLM calls required.
retrieve_qa_knowledge: Search and retrieve grounding chunks from a built-in knowledge base covering ISTQB, OWASP, IEEE, ISO standards, testing methodologies, audit/evaluation frameworks, and the EU AI Act — filterable by category and configurable result count (1–20 chunks).list_kb_sources: Get a full inventory of every document in the knowledge base, grouped by category, along with the KB version and total document count.estimate_qa_effort: Generate a deterministic PERT-based QA effort estimate given project details (type, tech stack, team sizes, timeline, methodology, risks, compliance) — returns baseline, multipliers, PERT activities, capacity analysis, risk buffer, final effort range, and a confidence score.review_qa_document: Score an existing Test Plan, Test Strategy, or test case list against a six-dimension ISTQB/IEEE-829 rubric (structure completeness, objectives & scope clarity, entry/exit criteria, traceability, measurability, risk coverage) — returns an overall 0–100 score, dimension scores, and findings with KB citations.analyze_test_results: Extract deterministic health metrics from JUnit XML or CSV test execution data — identifies flaky tests, ever-failing, never-run, slowest tests, and failure clusters, with configurable flakiness thresholds.
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 and Test Results Analysis for evaluating what already exists. Also available as an MCP server so Claude Code, Claude Desktop, and claude.ai can ground their own QA work in the same standards and numbers.
🌐 Live demo: quality-ai-consultant.streamlit.app
🔌 New: QAI Consultant is now also an 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)

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 |
All outputs are saved as Markdown files and available for PDF download.
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
🤖 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 v2.0 runs on cloud APIs — no local GPU or Ollama required.
You need four API keys in a .env file (all have free tiers):
Key | Where to get it |
| console.mistral.ai → API Keys |
| |
| 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 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 Mistral API as the primary provider, with OpenRouter as automatic fallback.
Interfaces
Web UI (Browser — recommended)
streamlit run src/app.pyOr use the live hosted version: quality-ai-consultant.streamlit.app
CLI (Terminal)
python src/cli.pyMCP Server (for Claude Code, Claude Desktop, claude.ai)
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 same knowledge base and exposes deterministic
QA effort estimation, so your own AI coding assistant can ground its QA
planning directly, no separate LLM call needed.

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 (ISTQB, OWASP, IEEE, ISO, EU AI Act), filterable by category |
| 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 |
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: usage telemetry is off by default. Set QAI_TELEMETRY=1 to opt in; even then, only tool name/success/duration/category and an anonymous install ID are sent — 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
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, always-green-by-construction nightly workflow exercising real Pinecone/Mistral/OpenRouter contract tests, isolated from the blocking PR checks
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 importsv4.0 Remote MCP + distribution — hosted server connectable from claude.ai, registry submissions
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 |
"Both Mistral API and OpenRouter are unavailable" | Check API keys are valid and have credits |
📖 Full troubleshooting guide: INSTALL.md
Available Tools
5 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 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 columns: required name/classname/status (passed|failed|error|skipped), optional run_id/duration_s/message. reference_tests, if given, is a list of test identities ("classname::name") expected to have run — any absent from the results are reported under never_run. Flaky = pass_rate strictly between flaky_min and flaky_max with at least 3 executions; fewer executions is reported as insufficient data, not flaky. Malformed/oversized input never raises — it returns a structured {"error": "invalid_argument", ...}. Returns the full ResultsAnalysis as JSON (runs, total_tests, executions, overall_pass_rate, flaky, ever_failing, never_run, slowest, failure_clusters, per_run, warnings).
| 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 no annotations, the description fully discloses behavioral traits: no LLM in call path, deterministic results, how flaky thresholds work, handling of malformed/oversized input returning an error struct, and the never_run logic for reference_tests. Provides clear expectations for the agent.
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 lengthy but every sentence adds value. It front-loads the core purpose and constraints, then details input formats and behaviors. Slightly verbose but justified by complexity; no wasted words.
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 the tool's complexity (multiple input formats, flakiness analysis, reference tests) and no output schema, the description provides complete coverage: input formats, output structure (ResultsAnalysis JSON), error handling, and edge cases like insufficient data for flaky detection. Fully equips an agent to use the tool correctly.
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 0% description coverage, but the description compensates thoroughly: explains junit_xml format (string vs JSON array), csv_text columns (name/classname/status/optional fields), flaky_min/max defaults, and reference_tests format ('classname::name'). Adds meaning far beyond the bare 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 it provides 'Deterministic test-results health metrics' with a specific list of outputs (flaky, ever-failing, never-run, slowest, failure clustering). It immediately distinguishes itself from unrelated sibling tools (retrieve_qa_knowledge, etc.) by focusing on test execution data analysis.
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?
Explicitly instructs to provide exactly one of junit_xml or csv_text, explains how to handle multiple runs via JSON array, and describes the optional reference_tests parameter. While it doesn't explicitly state when not to use this tool, the sibling tools are in a different domain, so the usage context is clear.
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. Success returns the full EstimationData as JSON (baseline, multipliers, pert_activities, capacity, risk_buffer_days, final_effort_min/max, confidence_level/confidence_score).
| Name | Required | Description | Default |
|---|---|---|---|
| timeline | Yes | ||
| tech_stack | Yes | ||
| known_risks | Yes | ||
| methodology | Yes | ||
| project_name | Yes | ||
| project_type | Yes | ||
| team_qa_size | Yes | ||
| team_dev_size | Yes | ||
| additional_context | No | ||
| existing_automation | Yes | ||
| project_description | Yes | ||
| compliance_requirements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of disclosing behavior. It states the tool is deterministic, never crashes, returns a structured error on validation failure, and on success returns a comprehensive JSON structure (listing all components). This is complete and clear behavioral disclosure.
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 paragraph that efficiently packs purpose, behavior, and output information. It is reasonably concise, though the dense listing of output fields could be slightly more structured. Overall, every sentence adds value.
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 the tool's complexity (12 params, no output schema), the description covers error handling and output structure but omits parameter details and does not explain the return values beyond listing field names. More context on how to interpret the output (e.g., what each field means) would improve completeness.
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 schema has 12 parameters with no descriptions (0% coverage). The description only broadly states that fields mirror the app's project-intake dialogue, but provides no specifics about individual parameters (e.g., format for timeline, allowed values for project_type). This leaves the agent with insufficient guidance for correct input construction.
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 the tool provides a deterministic QA effort estimate using PERT, complexity multipliers, team capacity, and confidence score. It also explicitly contrasts with LLM narrative, making the tool's unique value clear. The sibling tools are all about knowledge retrieval and test analysis, so this estimation tool is well-distinguished.
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?
The description explains the tool's deterministic nature and that it returns raw numbers for the user to write their own narrative. It also describes validation behavior. However, it doesn't explicitly state when to use this tool over alternatives, though the siblings are not directly competing (they are for knowledge and analysis, not estimation). The context is largely implied.
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 QA knowledge base (ISTQB, OWASP, IEEE, ISO standards; testing methodologies; audit/evaluation frameworks; the EU AI Act). Returns {"chunks": [{"source", "category", "text", "score"}], "kb_version"}. category, if given, must be one of: Standard, Methodology, Article, Expert Knowledge, Audit/Evaluation — an unrecognized value 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that unrecognized category values return a structured error, and k is clamped to [1,20]. It does not cover optional behavioral traits like read-only hint or rate limits, but the given details are specific and accurate.
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 concise and well-structured: first the purpose, then the return format, then parameter constraints. Every sentence provides valuable information without redundancy.
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 the tool's complexity (retrieval with filtering, error handling, clamping) and no output schema, the description covers the return format, error case, parameter constraints, and example categories. This is sufficient for an agent to correctly select and invoke the tool.
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 description coverage is 0%, so the description must compensate. It explains the category values and their valid set, error behavior for invalid input, k clamping, and the full return format with fields. This adds substantial meaning beyond the raw 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 it retrieves grounding chunks from a QA knowledge base, listing example sources and which domains are covered. It implicitly distinguishes from siblings like list_kb_sources (lists sources, not chunks) and review_qa_document (single document review).
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?
The description explains what the tool does but provides no explicit guidance on when to use it vs. alternatives (e.g., list_kb_sources). The context of grounding suggests usage for retrieval in RAG, but no exclusions or alternatives are mentioned.
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. 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. Returns {doc_type, overall_score, dimension_scores, findings, stats, 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 no annotations provided, the description fully discloses behavioral traits: determinism, no LLM involvement, auto-classification behavior, error handling for invalid doc_type, handling of short documents, and how kb_citations are resolved. This leaves no ambiguity about the tool's operation.
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 detailed and well-structured, with the main purpose front-loaded. Each sentence adds value, but it is somewhat verbose. Considering the complexity of the tool, it achieves good conciseness while covering all necessary information.
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 the absence of an output schema and annotations, the description covers all aspects: input parameters, behavior, edge cases, error handling, and return structure. It is fully complete for an AI agent to use the tool correctly.
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 schema has 0% description coverage, but the description compensates fully by explaining the doc_type parameter's values, default, and auto behavior, as well as the document_text parameter's role. It adds critical meaning about valid inputs, error cases, and special conditions like the length threshold.
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 the tool reviews an existing QA document against a six-dimension ISTQB/IEEE-829-grounded rubric. It specifies acceptable document types and distinguishes itself from sibling tools like retrieve_qa_knowledge or estimate_qa_effort, which serve different purposes.
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?
The description provides detailed usage guidance for the doc_type parameter, including valid values, the behavior of 'auto', and error handling for unrecognized values. It also mentions edge cases like short documents. However, it does not explicitly contrast with sibling tools to indicate when to use this tool versus alternatives.
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. Dates show when Glama detected each change.
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
Each tool has a clearly distinct purpose: knowledge retrieval, source listing, effort estimation, document review, and test result analysis. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., retrieve_qa_knowledge, estimate_qa_effort), making them predictable and easy to understand.
With five tools, the server is well-scoped for a QA consultant offering knowledge retrieval, estimation, document review, and test analysis. No unnecessary tools.
The tools cover the core QA consultant workflows: knowledge base access, effort estimation, document review, and test analysis. Missing features like knowledge base updates or test case management are minor gaps.
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.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
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
- AlicenseAqualityAmaintenanceLocal-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.115Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server that brings senior-QA discipline to AI coding assistants, enabling test planning, TDD, mutation testing, and code review.486Apache 2.0
- FlicenseBqualityCmaintenanceMCP server for AI-powered QA analysis. It enables analyzing test failures, identifying root causes, suggesting fixes, classifying defects, detecting flaky tests, and generating test cases and bug reports.10-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gvasile29/qai-consultant'
If you have feedback or need assistance with the MCP directory API, please join our Discord server