Skip to main content
Glama

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.

CI License Python Version PyPI Built with Claude


Screenshots

Web UI (Streamlit)

Streamlit Intro Streamlit MCP announcement in sidebar Streamlit Project Discovery dialogue Streamlit Risk Register Streamlit Effort Estimation Streamlit Test Strategy Streamlit Test Plan

CLI

CLI Banner CLI Project Discovery dialogue


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

MISTRAL_API_KEY

console.mistral.ai → API Keys

OPENROUTER_API_KEY

openrouter.ai/keys

PINECONE_API_KEY

pinecone.io → API Keys

PINECONE_INDEX_NAME

Name of your Pinecone index (e.g. qai-consultant, dimensions: 384, metric: cosine)

cp .env.example .env
# Edit .env and fill in all four values

Architecture

QAI Consultant Architecture

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 download

LLM calls use Mistral API as the primary provider, with OpenRouter as automatic fallback.


Interfaces

streamlit run src/app.py

Or use the live hosted version: quality-ai-consultant.streamlit.app

CLI (Terminal)

python src/cli.py

MCP Server (for Claude Code, Claude Desktop, claude.ai)

qai-consultant MCP server qai-consultant MCP server MCP Registry Awesome MCP Servers

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.

qai-consultant-mcp answering a retrieve_qa_knowledge call in MCP Inspector

uvx qai-consultant-mcp

Claude Code:

claude mcp add qai-consultant -- uvx qai-consultant-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "qai-consultant": {
      "command": "uvx",
      "args": ["qai-consultant-mcp"]
    }
  }
}

Tools:

Tool

What it does

retrieve_qa_knowledge

Grounding chunks from the KB (ISTQB, OWASP, IEEE, ISO, EU AI Act), filterable by category

list_kb_sources

Every document in the KB, grouped by category

estimate_qa_effort

Deterministic PERT-based effort estimate (no LLM narrative — you write your own from the numbers)

review_qa_document

Deterministic 0–100 quality score for an existing Test Plan/Strategy/test case list across six ISTQB/IEEE-829 dimensions, with findings + KB citations

analyze_test_results

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-ingestion

  • Partially → 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 studies

  • v2.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-name marker to README_MCP.md (PyPI long description) — a prerequisite for listing qai-consultant-mcp in the official Anthropic MCP registry; no functional change

  • v3.1.5 ✅ Fix — qai-consultant-mcp failed to start (ModuleNotFoundError: mcp.server.fastmcp) after the upstream mcp SDK's breaking 2.0.0 release removed the FastMCP module the server depends on; mcp is now pinned to >=1.8.0,<2.0.0

  • v3.1.6 ✅ Fix — qai-consultant-mcp could 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 to initialize); the full index build is now lazy, deferred until the first real request

  • v3.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-mcp could intermittently fail to attach in Claude Desktop because 4 of its 6 runtime dependencies had loose version bounds, letting uv re-resolve and reinstall on any unrelated upstream release; all dependencies are now exact-pinned

  • v3.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-mcp could 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 imports

  • v4.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 .env or Streamlit Cloud secrets

"Missing required secret: 'PINECONE_API_KEY'"

Add your Pinecone key to .env

"Knowledge base is empty"

Run python src/ingest.py to push documents to Pinecone

"Both Mistral API and OpenRouter are unavailable"

Check API keys are valid and have credits

📖 Full troubleshooting guide: INSTALL.md

Available Tools

5 tools
analyze_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_textNo
flaky_maxNo
flaky_minNo
junit_xmlNo
reference_testsNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
timelineYes
tech_stackYes
known_risksYes
methodologyYes
project_nameYes
project_typeYes
team_qa_sizeYes
team_dev_sizeYes
additional_contextNo
existing_automationYes
project_descriptionYes
compliance_requirementsYes

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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].

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
queryYes
categoryNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_typeNoauto
document_textYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 5 tool updatesv3.1.4
    • First observedanalyze_test_results
    • First observedestimate_qa_effort
    • First observedlist_kb_sources
    • First observedretrieve_qa_knowledge
    • First observedreview_qa_document

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: knowledge retrieval, source listing, effort estimation, document review, and test result analysis. No overlap or ambiguity.

Naming Consistency5/5

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.

Tool Count5/5

With five tools, the server is well-scoped for a QA consultant offering knowledge retrieval, estimation, document review, and test analysis. No unnecessary tools.

Completeness4/5

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

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    AI 規格大師 — 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.
    18
    2
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    MCP 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

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