ia-qa-com avatar

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

ia-qa-com/mcp

A comprehensive testing toolkit that gives Claude access to over 130 specialized QA and development tools focused on AI safety and evaluation. It exposes operations for testing prompt injection vulnerabilities, evaluating RAG systems, benchmarking vision language models, and validating guardrails. You'd reach for this when you need to systematically probe AI applications for weaknesses, run structured evaluations against your agent pipelines, or automate quality checks that typically require manual testing. The breadth here means you can test multiple AI components from a single integration, from basic prompt fuzzing to multimodal output validation. Runs via streamable HTTP and is completely free to use.

tools
80
transport
HTTP
last updated
Oct 26, 2026

Install

From registry metadata
$ npx add-mcp https://www.ia-qa.com/mcp --name ia-qa-toolbox

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http ia-qa-toolbox https://www.ia-qa.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 80 tools

Verified live against the running server on Nov 6, 2026.

get_testing_guidelinesQuery the IA-QA methodology knowledge base. Returns structured testing guidelines, assertion strategies, thresholds, best practices, and relevant MCP tools for a given topic. Call without a topic to list all available topics. Topics: llm-unit-testing, rag-pipeline, prompt-stab...1 params

Query the IA-QA methodology knowledge base. Returns structured testing guidelines, assertion strategies, thresholds, best practices, and relevant MCP tools for a given topic. Call without a topic to list all available topics. Topics: llm-unit-testing, rag-pipeline, prompt-stab...

Parameters* required
topicstring
The testing topic to retrieve guidelines for. Omit to get the start-here map and the full list of available topics.one of start-here · llm-unit-testing · rag-pipeline · prompt-stability · prompt-ab-testing · embedding-quality
find_toolSearch available MCP tools by keyword or category before calling them. Returns names, descriptions and, on request, inputSchemas. Queries are logged 90 days, screened for credentials and personal data. Categories: data, dev, encoding, eval, integrations, llm, meta, qa, rag, se...4 params

Search available MCP tools by keyword or category before calling them. Returns names, descriptions and, on request, inputSchemas. Queries are logged 90 days, screened for credentials and personal data. Categories: data, dev, encoding, eval, integrations, llm, meta, qa, rag, se...

Parameters* required
categorystring
Optional filter, one of the categories above. Any other value is refused.
max_resultsnumber
Maximum tools to return (default 10, max 50). Best match first.
query*string
Keywords, e.g. "cors", "token", "vector", "json"
with_schemaboolean
Set true to include inputSchema in results (default: false)
generate_test_casesGenerate a set of test cases (valid, edge, invalid, pairwise) for a given feature description. Declared constraints drive the boundaries: a length or numeric bound ("[8-64]", "min 8 chars", "at least 8 characters" — read from inputs, and from the feature prose when a sentence...2 params

Generate a set of test cases (valid, edge, invalid, pairwise) for a given feature description. Declared constraints drive the boundaries: a length or numeric bound ("[8-64]", "min 8 chars", "at least 8 characters" — read from inputs, and from the feature prose when a sentence...

Parameters* required
feature*string
Feature or function to test. Be specific: describe inputs, expected behaviour, context. Constraints stated here ("password must be at least 8 characters") are used when the sentence names exactly o...
inputsstring
Optional: list of input parameters (one per line, e.g. "email: string [required]", "password: string [required, min 8 chars]", "age: number [18-99]")
jira_to_test_suiteTurn a Jira ticket into a test suite: Gherkin scenarios, E2E steps, API tests, test data and the ambiguities to clarify. Pass the issue object, or Jira credentials to fetch it. It never invents: a thin ticket returns an empty suite with verdict INCOMPLETE_SPEC and the question...9 params

Turn a Jira ticket into a test suite: Gherkin scenarios, E2E steps, API tests, test data and the ambiguities to clarify. Pass the issue object, or Jira credentials to fetch it. It never invents: a thin ticket returns an empty suite with verdict INCOMPLETE_SPEC and the question...

Parameters* required
api_key*string
Your LLM provider key.
confluence_pagesarray
Pages from fetch_confluence_page, as documentation.
issueobject
The ticket: key, summary, description, and optionally status, issue_type, priority, labels, comments (fetch_jira_issue returns this shape).
issue_keystring
e.g. "PROJ-123", to fetch with the jira_* fields.
jira_base_urlstring
jira_emailstring
jira_tokenstring
max_tokensinteger
Default 8192.default: 8192
model*string
e.g. "gpt-4o-mini", "claude-haiku-4-5-20251001", "gemini-3.5-flash".
analyze_diff_bugsPattern-based diff linter: flags a fixed set of risky shapes in changed code — query-string interpolation (SQL/Cypher/Mongo injection shape), shell interpolation, eval/new Function, empty catch blocks, regex built from a variable, fewer catch blocks than before, and named auth...3 params

Pattern-based diff linter: flags a fixed set of risky shapes in changed code — query-string interpolation (SQL/Cypher/Mongo injection shape), shell interpolation, eval/new Function, empty catch blocks, regex built from a variable, fewer catch blocks than before, and named auth...

Parameters* required
contextstring
Optional PR title or feature context for better analysis
version1string
Original code (before changes). If omitted, only the new version is analysed.
version2*string
New/modified code (after changes)
run_pr_gate_pipelineReview triage for a pull request. Takes a unified git diff (`git diff HEAD`) and returns: diff-lint findings with the lines that produced them, regression impact areas, a risk score 0–100 with the factors that built it (churn, files touched, sensitive paths, whether any test f...2 params

Review triage for a pull request. Takes a unified git diff (`git diff HEAD`) and returns: diff-lint findings with the lines that produced them, regression impact areas, a risk score 0–100 with the factors that built it (churn, files touched, sensitive paths, whether any test f...

Parameters* required
contextstring
Optional PR title or description for richer analysis
git_diff*string
Unified git diff (output of `git diff HEAD` or copied from GitHub diff view)
diff_mappingsDiff a baseline page mapping against a current one and return a CI-style verdict: PASS / FIX / BLOCK, plus per-element drift (ok, renamed, healable, ambiguous, lost, added, rebound). Pure and deterministic — provide two mappings as JSON with "elements" arrays of {role, name, s...2 params

Diff a baseline page mapping against a current one and return a CI-style verdict: PASS / FIX / BLOCK, plus per-element drift (ok, renamed, healable, ambiguous, lost, added, rebound). Pure and deterministic — provide two mappings as JSON with "elements" arrays of {role, name, s...

Parameters* required
after*object
Current page mapping: same shape as before, captured after the UI change.
before*object
Baseline page mapping: { page, url, capturedAt, elements: [{role, name, selector, context?}] }. Captured before a UI change.
sandbox_scenarioGet a ready-made selector-drift test case with a known-correct answer, for testing this MCP server or an agent workflow end to end. Each scenario is a real DOM capture of a deliberately breakable app, taken before and after one specific UI change (a renamed label, two swapped...2 params

Get a ready-made selector-drift test case with a known-correct answer, for testing this MCP server or an agent workflow end to end. Each scenario is a real DOM capture of a deliberately breakable app, taken before and after one specific UI change (a renamed label, two swapped...

Parameters* required
include_htmlboolean
Include the generated HTML of the mutated page (default false). Only useful if you want to render or re-capture it yourself; the loop does not need it.
scenariostring
Scenario id. Omit to list every available scenario with its expected verdict. Ids: no-change, swap-label, add-testid, duplicate-role-name, remove-element, insert-sibling, rename-label, counter-labe...
prompt_injection_scanScan user input or prompts for prompt injection patterns. Pattern-based: it recognises known phrasings and structures, not intent — an uncovered paraphrase or language reads clean, so clean is not proof of safety. Instruction overrides are covered in 11 languages (EN, FR, ES,...2 params

Scan user input or prompts for prompt injection patterns. Pattern-based: it recognises known phrasings and structures, not intent — an uncovered paraphrase or language reads clean, so clean is not proof of safety. Instruction overrides are covered in 11 languages (EN, FR, ES,...

Parameters* required
input*string
The user input or prompt to scan for injection patterns
sensitivitystring
Detection sensitivity (default: medium)one of low · medium · high
hallucination_checkLexical hallucination check: verifies an LLM answer's words, numbers and polarity against the provided source/context. Fast, deterministic, no API key needed. Each answer sentence is aligned to its best-matching source sentence, so a number only counts as support when it sits...4 params

Lexical hallucination check: verifies an LLM answer's words, numbers and polarity against the provided source/context. Fast, deterministic, no API key needed. Each answer sentence is aligned to its best-matching source sentence, so a number only counts as support when it sits...

Parameters* required
answerstring
The LLM answer to verify (with context).
casesarray
Batch instead of answer + context: one result per case, and the worst gate overall.
contextstring
The source text that should ground it.
strictboolean
Every sentence must be supported (default false).
run_eval_contractRun an IA-EVAL test suite (.ia-eval.yaml contract): call the model per scenario; return passed (true, false, null if undecided) and a verdict (PASS, FAIL, PARTIAL). Expectations are assertions that fail a scenario whatever its score; evaluators give the score. Hosted: pass inl...5 params

Run an IA-EVAL test suite (.ia-eval.yaml contract): call the model per scenario; return passed (true, false, null if undecided) and a verdict (PASS, FAIL, PARTIAL). Expectations are assertions that fail a scenario whatever its score; evaluators give the score. Hosted: pass inl...

Parameters* required
api_keysobject
Your keys per provider. Only Groq falls back to the server key; any other provider needs yours.
contract_pathstring
A .ia-eval.yaml under the server's working directory (local use).
inline_contractobject
The contract as an object: "metadata" ({name, version, model?, provider?}), "expectations", "evaluators" and "scenarios" ([{id, input, expectations?}]). generate_eval_yaml scaffolds one.
overridesobject
Override contract defaults
validate_onlyboolean
Check the contract against the IA-EVAL schema and stop: no model call, no key, deterministic. Returns valid + issues instead of throwing. Gate a PR that edits a contract on valid.
guardrail_testTest an LLM response against a set of guardrail rules: must-include, must-not-include, max length, required format, language, forbidden patterns, and custom regex. Returns pass/fail per rule.2 params

Test an LLM response against a set of guardrail rules: must-include, must-not-include, max length, required format, language, forbidden patterns, and custom regex. Returns pass/fail per rule.

Parameters* required
response*string
The LLM response to test
rules*array
Array of guardrail rules to check
run_semantic_testsSemantic assertion primitive: compare actual vs expected text pairs using cosine similarity + ROUGE-L. Two modes: tfidf (default, free, no API key) or embeddings (OpenAI text-embedding-3-small, BYOK, true semantic similarity). Returns per-case PASS/FAIL verdicts and an overall...5 params

Semantic assertion primitive: compare actual vs expected text pairs using cosine similarity + ROUGE-L. Two modes: tfidf (default, free, no API key) or embeddings (OpenAI text-embedding-3-small, BYOK, true semantic similarity). Returns per-case PASS/FAIL verdicts and an overall...

Parameters* required
api_keystring
OpenAI API key — required only when mode is embeddings.
cases*array
Array of (actual, expected) pairs to evaluate.
modestring
tfidf (default): fast, free, lexical. embeddings: OpenAI text-embedding-3-small, true semantic similarity, requires api_key.one of tfidf · embeddings
require_allboolean
If true (default), all cases must pass for overall PASS. If false, at least one case passing returns PASS.
thresholdsobject
Pass/fail thresholds (defaults: cosine 0.75, rouge_l 0.5).
generate_ci_workflowGenerate a ready-to-commit GitHub Actions workflow that gates a build on IA-QA: "eval_contract" runs a .ia-eval.yaml through ia-qa-com/eval-action@v1 (needs a provider key as a repo secret), "cli_checks" runs deterministic tools via npx @ia-qa/cli and fails the build on their...12 params

Generate a ready-to-commit GitHub Actions workflow that gates a build on IA-QA: "eval_contract" runs a .ia-eval.yaml through ia-qa-com/eval-action@v1 (needs a provider key as a repo secret), "cli_checks" runs deterministic tools via npx @ia-qa/cli and fails the build on their...

Parameters* required
app_base_urlstring
[selector_drift] Default http://127.0.0.1:3000; must match .ia-qa/config.json.
app_start_commandstring
[selector_drift] Boots the app, e.g. "npm run start:ci". Never guessed: omitted, the step is a TODO.
cli_toolsarray
Tools to gate on, e.g. ["secret_scan","prompt_injection_scan"].
contract_pathstring
Default evals/smoke.ia-eval.yaml.
cronstring
For schedule (default '0 6 * * 1').
fail_on_failboolean
Default true; false reports without gating.
gatestring
Default eval_contract. both = CLI checks + eval; all = CLI checks, drift, eval.one of eval_contract · cli_checks · both · selector_drift · all
min_scorenumber
Override the contract min_score (0-100).
node_versionstring
Default "20".
providerstring
Decides which repo secret is wired (default groq).one of groq · openai · anthropic · google
triggersarray
Default push + pull_request.
workflow_namestring
redact_piiAutomatically detect and redact Personally Identifiable Information (PII) from text. Replaces emails, phone numbers, SSNs, IBANs, credit cards, IP addresses, and JWT tokens with [REDACTED_TYPE] placeholders. Safe to use before logging or sending to an LLM.3 params

Automatically detect and redact Personally Identifiable Information (PII) from text. Replaces emails, phone numbers, SSNs, IBANs, credit cards, IP addresses, and JWT tokens with [REDACTED_TYPE] placeholders. Safe to use before logging or sending to an LLM.

Parameters* required
input*string
Text to redact PII from
markerstring
Custom replacement marker (default: "REDACTED"). Result: [REDACTED_EMAIL]
typesstring
Comma-separated types to redact (default: all). Options: email, phone, ssn, iban, credit_card, ip_address, jwt
secret_scanScan text or code for leaked secrets: API keys (AWS, GCP, Azure, OpenAI, Anthropic, Stripe, GitHub, GitLab, Slack, Twilio, SendGrid, HuggingFace), Slack / Teams / Discord webhook URLs, private keys, JWTs, database connection strings, Bearer and Basic auth headers, and hard-cod...2 params

Scan text or code for leaked secrets: API keys (AWS, GCP, Azure, OpenAI, Anthropic, Stripe, GitHub, GitLab, Slack, Twilio, SendGrid, HuggingFace), Slack / Teams / Discord webhook URLs, private keys, JWTs, database connection strings, Bearer and Basic auth headers, and hard-cod...

Parameters* required
input*string | array
Text to scan — or an array of texts / {id, text} for a batch (one result each, worst gate on top).
typesstring
Comma-separated families (default all): aws, gcp, azure, openai, anthropic, huggingface, github, gitlab, stripe, slack, teams, discord, cookie, twilio, sendgrid, jwt, private_key, connection_string...
needle_haystack_generateGenerate a "needle in a haystack" test: embeds a target fact into a large block of filler text at a specified position. Use this to test LLM context window retrieval accuracy. Returns the full haystack, the question to ask, and metadata. No API key needed.4 params

Generate a "needle in a haystack" test: embeds a target fact into a large block of filler text at a specified position. Use this to test LLM context window retrieval accuracy. Returns the full haystack, the question to ask, and metadata. No API key needed.

Parameters* required
needle*string
The fact to hide (e.g. "The secret code is ALPHA-42")
positionstring
Where to insert the needle: "start", "middle", "end", "random" (default: "middle")one of start · middle · end · randomdefault: middle
question*string
The question to ask the LLM (e.g. "What is the secret code?")
tokensinteger
Target haystack size in tokens (default: 5000, max: 100000)default: 5000
list_local_testsDiscover .ia-eval.yaml LLM test suite files in the project directory. Scans CWD and standard sub-directories (evals/, tests/, contracts/). Returns file paths ready to pass to run_eval_contract.1 params

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

Parameters* required
dirstring
Directory to scan (defaults to server CWD)
generate_html_reportConvert a run_eval_contract() LLM Test Runner JSON result into a fully self-contained dark-themed HTML report with Pass/Fail badges, side-by-side Input/Output/Ground-Truth panels, evaluator score bars, and a radar chart. Returns the HTML as a string.1 params

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

Parameters* required
results*object
The JSON object returned by run_eval_contract()
generate_eval_yamlGenerate a complete .ia-eval.yaml evaluation contract from a plain-language description of what your LLM should do. Uses Groq openai/gpt-oss-20b (server-side, no API key needed). Returns ready-to-run YAML for the LLM Test Runner (run_eval_contract). Picks appropriate evaluator...4 params

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

Parameters* required
description*string
Plain-language description of what the LLM under test should do. Be specific: describe inputs, expected behaviour, and constraints.
scenario_countnumber
Number of scenarios to generate (default: 5). Covers happy path + edge cases + adversarial.one of 3 · 5 · 8
system_promptstring
Optional system prompt of the LLM under test. Helps generate more accurate test cases.
task_typestring
Optional task type hint to guide evaluator selection.one of rag · summarization · classification · safety · customer_support · code_gen
validate_agent_trajectoryRun declarative assertions on an agent trace (OpenAI tool calls, Anthropic tool_use, LangChain run trees, ReAct logs). Deterministic, no LLM. Assertions: order (tool A before B), must_call, must_not_call, max/min calls, no_error, recovery (a successful step after the last erro...3 params

Run declarative assertions on an agent trace (OpenAI tool calls, Anthropic tool_use, LangChain run trees, ReAct logs). Deterministic, no LLM. Assertions: order (tool A before B), must_call, must_not_call, max/min calls, no_error, recovery (a successful step after the last erro...

Parameters* required
assertions*array
formatstring
Default auto.one of auto · openai · langchain
trace*value
The trace: JSON (messages array, run tree) or a Thought/Action/Observation text log.
metamorphic_checkReference-free stability check: does an assistant's answer stay the same when the QUESTION is transformed (case, typo, paraphrase, reorder, translation)? You bring the outputs; no model is called (tfidf mode is deterministic and free). Default thresholds: case .95, typo .90, p...7 params

Reference-free stability check: does an assistant's answer stay the same when the QUESTION is transformed (case, typo, paraphrase, reorder, translation)? You bring the outputs; no model is called (tfidf mode is deterministic and free). Default thresholds: case .95, typo .90, p...

Parameters* required
api_keystring
OpenAI key, embeddings mode only.
base*object
The original run.
baseline_guardobject
Floor on the BASE answer; failing it returns INVALID.
modestring
tfidf (default, lexical: gate on case/typo, read paraphrase as a trend) or embeddings (OpenAI, needs api_key; required for translation).one of tfidf · embeddings
require_allboolean
Default true: every gated variant must pass. Keep it for a gate — false lets one easy typo row hold the run at PASS while a paraphrase fails.
thresholdsobject
Per-relation overrides, 0-1. Calibrate on your own data before gating.
variants*array
Answers to transformed versions of the question.
test_skillTest a SKILL.md (Agent Skills format). (1) lint: the spec's frontmatter rules, no model — an error returns BLOCK; gate on lint.valid. (2) triggering: a model sees only the names + descriptions of this skill and its neighbours and picks which to load (temperature 0); trigger_ac...8 params

Test a SKILL.md (Agent Skills format). (1) lint: the spec's frontmatter rules, no model — an error returns BLOCK; gate on lint.valid. (2) triggering: a model sees only the names + descriptions of this skill and its neighbours and picks which to load (temperature 0); trigger_ac...

Parameters* required
api_keystring
Key for the chosen model's provider; not needed for the default.
dir_namestring
Folder holding the SKILL.md; name must match it.
lint_onlyboolean
Format check only: no model, no key. The CI gate for a SKILL.md.
modelstring
e.g. gpt-4o-mini. Default openai/gpt-oss-20b (Groq, server key).
other_skillsarray
The skills installed next to this one. Default: six generic built-ins.
scenario_countnumber
Requests to generate when scenarios is omitted (default 6).one of 4 · 6 · 8 · 10
scenariosarray
Fixed requests, near misses included (should_trigger false). Max 20.
skill_md*string
Full content of the SKILL.md file to test, YAML frontmatter included.
diff_textCompute a unified line-by-line diff between two text strings (LCS algorithm). Returns added/removed/unchanged line counts and formatted diff hunks with configurable context lines (0–20). Use to compare versions of prompts, configs, code snippets, or any text where you need to...3 params

Compute a unified line-by-line diff between two text strings (LCS algorithm). Returns added/removed/unchanged line counts and formatted diff hunks with configurable context lines (0–20). Use to compare versions of prompts, configs, code snippets, or any text where you need to...

Parameters* required
a*string
Original (before) text
b*string
Modified (after) text
contextnumber
Context lines around each change (0–20, default: 3)
validate_mcp_responseValidate that an MCP tool response conforms to expected format, schema, and content rules. Use this to QA-test any MCP server tool. Supply the tool's actual JSON result and a set of checks to perform.8 params

Validate that an MCP tool response conforms to expected format, schema, and content rules. Use this to QA-test any MCP server tool. Supply the tool's actual JSON result and a set of checks to perform.

Parameters* required
actual_latencynumber
Actual measured latency in ms (from the call)
expected_typestring
Expected top-level type: "object", "array", "string", "number"one of object · array · string · number
forbidden_keysstring
Comma-separated list of keys that MUST NOT exist (e.g. "password, secret, token")
max_response_msnumber
Maximum acceptable latency in ms (will be compared if provided)
max_size_bytesnumber
Maximum acceptable response size in bytes
min_itemsnumber
If response is an array, minimum number of items expected
required_keysstring
Comma-separated list of keys that MUST exist in the response (dot-notation for nested: "data.id, data.name")
response*string
The MCP tool result as a JSON string to validate
llm_output_validatorValidate an LLM response against QA criteria: format checks (JSON, code, markdown), content rules (must-include, must-not-include), length constraints, language detection, and safety patterns. Essential for QA testing LLM-powered features.9 params

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

Parameters* required
check_json_schemastring
If expected_format is JSON, provide required keys as comma-separated list to validate the structure
check_safetyboolean
Check for PII patterns (emails, phones, SSN), profanity signals, and prompt leakage
expected_formatstring
Expected output formatone of json · markdown · code · plain · any
expected_languagestring
Expected language of the output (en, fr, es, de…). Checks for common words.
max_lengthnumber
Maximum character length for the output
min_lengthnumber
Minimum character length for the output
must_includestring
Comma-separated strings that MUST appear in the output
must_not_includestring
Comma-separated strings that must NOT appear (e.g. "TODO, FIXME, undefined, NaN")
output*string
The LLM output text to validate
compare_responsesCompare two ALREADY-PRODUCED outputs (e.g. model A vs model B on the same task) side by side. Returns deterministic metrics (token cosine, ROUGE-L, Jaccard, length/structure deltas, JSON diff) and a verdict. If a `reference` (ground truth) is given, scores each output against...9 params

Compare two ALREADY-PRODUCED outputs (e.g. model A vs model B on the same task) side by side. Returns deterministic metrics (token cosine, ROUGE-L, Jaccard, length/structure deltas, JSON diff) and a verdict. If a `reference` (ground truth) is given, scores each output against...

Parameters* required
api_keystring
Optional API key for the judge model (BYOK). Used only for the judge call; never stored.
check_jsonboolean
Try to parse as JSON and compare structurally (keys, types, values)
label_astring
Label for output A (e.g. "GPT-4o", "v1.0")
label_bstring
Label for output B (e.g. "GPT-5-nano", "v1.1")
modelstring
Optional judge model id (BYOK). When set with api_key, an LLM judge picks a qualitative winner.
referencestring
Optional ground-truth / expected answer. If set, each output is scored against it and the closer one wins (deterministic).
response_a*string
First output (e.g. model A's answer)
response_b*string
Second output (e.g. model B's answer)
taskstring
The task/prompt both outputs were answering — used by the LLM judge for context
analyze_responsesSemantically analyze N already-produced model outputs for the SAME task (the MCP counterpart to the LLM Sandbox). Without a reference: computes consensus — pairwise cosine agreement, the most-representative output, and the outlier. With a `reference` (ground truth): also ranks...2 params

Semantically analyze N already-produced model outputs for the SAME task (the MCP counterpart to the LLM Sandbox). Without a reference: computes consensus — pairwise cosine agreement, the most-representative output, and the outlier. With a `reference` (ground truth): also ranks...

Parameters* required
referencestring
Optional ground-truth answer. If set, each output is also ranked by closeness to it and the closest one is named.
responses*array
The outputs to analyze (same task, N models/prompts/versions). Each item is a plain string or { "label": "GPT-4o", "text": "..." }. At least 2 required.
prompt_test_suiteDefine a test suite for a prompt: provide the system prompt, user prompt, and expected output criteria. Returns a test plan with scored rubric — use this as input for manual or automated LLM evaluation.10 params

Define a test suite for a prompt: provide the system prompt, user prompt, and expected output criteria. Returns a test plan with scored rubric — use this as input for manual or automated LLM evaluation.

Parameters* required
adversarial_promptsboolean
Auto-generate adversarial test variants (jailbreak, injection, edge cases)
check_safetyboolean
Include safety/PII checks in the rubric
expected_behaviorstring
Description of what the LLM should do (free text)
expected_formatstring
Expected output formatone of json · markdown · code · plain · any
max_tokensnumber
Max token budget for the test
must_includestring
Required content (comma-separated)
must_not_includestring
Forbidden content (comma-separated)
system_prompt*string
The system prompt under test
temperaturenumber
Temperature to use
user_prompt*string
The user prompt to send
mcp_server_health_checkCheck an MCP server's tool definitions without contacting it — for a server not deployed yet, a stdio server, or a CI gate. Paste the answer to tools/list (raw JSON-RPC or its result), a bare array of tools, one tool definition, or a manifest carrying name/description; input_s...2 params

Check an MCP server's tool definitions without contacting it — for a server not deployed yet, a stdio server, or a CI gate. Paste the answer to tools/list (raw JSON-RPC or its result), a bare array of tools, one tool definition, or a manifest carrying name/description; input_s...

Parameters* required
manifest*string
JSON text: the answer to tools/list (raw JSON-RPC or its result), an array of tools, one tool definition, or a manifest with name/description/tools.
strictboolean
Also require documentation: every description ≥ 20 characters, every parameter with a description and a type.
mcp_server_evaluateCheck that a live MCP server over Streamable HTTP speaks the protocol, 2026-07-28 or earlier: handshake or server/discover, tools/list and its definitions, error codes, one tools/call, structuredContent against outputSchema, latency. Returns PASS/FIX/BLOCK with a 0-100 score,...3 params

Check that a live MCP server over Streamable HTTP speaks the protocol, 2026-07-28 or earlier: handshake or server/discover, tools/list and its definitions, error codes, one tools/call, structuredContent against outputSchema, latency. Returns PASS/FIX/BLOCK with a 0-100 score,...

Parameters* required
test_tool_argsobject
Real arguments, sent to the tested server. Without them, required ones are invented.
test_tool_namestring
Tool to call. Default: a read-only one, preferring no required arg.
url*string
Public URL of the MCP endpoint (e.g. https://mcp.example.com/mcp). An origin alone (https://www.ia-qa.com) tries /mcp, then /.
llm_format_checkValidate that an LLM output matches an expected format: JSON, Markdown, code block, bullet list, numbered list, table, YAML, XML, or custom regex. Essential for structured output testing.3 params

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

Parameters* required
expected_format*string
Expected formatone of json · markdown_heading · code_block · bullet_list · numbered_list · table
output*string
The LLM output to validate
regex_patternstring
Custom regex pattern (only when expected_format is "regex")
consistency_checkCompare multiple LLM responses to the same prompt and detect inconsistencies using Jaccard word-overlap similarity and fact drift (number comparison). Fast, deterministic, no API key needed. Limitations: relies on surface-level word matching — "Paris is the capital of France"...2 params

Compare multiple LLM responses to the same prompt and detect inconsistencies using Jaccard word-overlap similarity and fact drift (number comparison). Fast, deterministic, no API key needed. Limitations: relies on surface-level word matching — "Paris is the capital of France"...

Parameters* required
check_factsboolean
Check for contradictory numbers/facts across responses (default: true)
responses*array
Array of 2+ LLM responses to compare (same prompt, different runs)
llm_json_schema_checkValidate that an LLM JSON output matches a JSON Schema definition. Tests required fields, types, enums, nested objects, and arrays. Critical for function-calling and structured output testing.2 params

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

Parameters* required
output*string
The LLM JSON output (raw string, will be parsed)
schema*object
JSON Schema (draft-07 subset) to validate against
response_quality_scoreScore an LLM response against the criteria you pass: coverage of expected_keywords and compliance with max_length. Returns a 0-100 score over the criteria actually measured — or total_score null with the reason when none is given, because relevance and correctness cannot be re...4 params

Score an LLM response against the criteria you pass: coverage of expected_keywords and compliance with max_length. Returns a 0-100 score over the criteria actually measured — or total_score null with the reason when none is given, because relevance and correctness cannot be re...

Parameters* required
expected_keywordsarray
Keywords a correct answer must contain, as whole words (case-insensitive; a plural in -s/-es counts). Scored as coverage.
max_lengthnumber
Maximum character length. Scored as a proportional penalty beyond it.
question*string
The original question/prompt
response*string
The LLM response to score
toxicity_scanScan text for toxic language, hate speech, bias/stereotype framing, violence, sexual and self-harm content. Lexical + structural pattern matching (identity term + predicate), not a semantic classifier — returns per-category risk plus the named rules that fired, so every findin...2 params

Scan text for toxic language, hate speech, bias/stereotype framing, violence, sexual and self-harm content. Lexical + structural pattern matching (identity term + predicate), not a semantic classifier — returns per-category risk plus the named rules that fired, so every findin...

Parameters* required
categoriesarray
Categories to check (default: all)
text*string
Text to scan
function_call_validateValidate an LLM function call / tool_use output: check that function name is in allowed list, arguments match expected schema (types, enums, ranges), no extra/missing args. Reads the definitions as OpenAI (`parameters`), MCP (`inputSchema`) or Anthropic (`input_schema`) write...2 params

Validate an LLM function call / tool_use output: check that function name is in allowed list, arguments match expected schema (types, enums, ranges), no extra/missing args. Reads the definitions as OpenAI (`parameters`), MCP (`inputSchema`) or Anthropic (`input_schema`) write...

Parameters* required
allowed_functions*array
List of allowed function definitions, in OpenAI, MCP or Anthropic form, or as {name, required_args, optional_args}
function_call*object
The function call object from LLM (e.g. { "name": "get_weather", "arguments": {"city":"Paris"} })
conversation_analyzeAnalyze a multi-turn conversation for context retention, topic drift, instruction following, and repetition. Accepts messages array [{role, content}]. Essential for chatbot QA.1 params

Analyze a multi-turn conversation for context retention, topic drift, instruction following, and repetition. Accepts messages array [{role, content}]. Essential for chatbot QA.

Parameters* required
messages*array
Conversation messages in order
mcp_schema_lintLint one MCP tool definition with the same rules as mcp_server_health_check: errors break the MCP spec (FAIL), documentation_issues are what its strict mode refuses — a parameter without description or type (FIX, never an A) — and suggestions are style only (snake_case) and ch...1 params

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

Parameters* required
tool_definition*object
MCP tool definition object with name, description, inputSchema
cot_analyzerAnalyze a Chain-of-Thought (CoT) or reasoning trace from an LLM. Detects step count, logical flow, conclusion presence, backtracking, and estimates reasoning depth. Useful for o1/o3/DeepSeek-R1 evaluation.2 params

Analyze a Chain-of-Thought (CoT) or reasoning trace from an LLM. Detects step count, logical flow, conclusion presence, backtracking, and estimates reasoning depth. Useful for o1/o3/DeepSeek-R1 evaluation.

Parameters* required
expected_conclusionstring
Expected final answer to check against (optional)
reasoning*string
The CoT / reasoning trace text (e.g. from <think> tags or step-by-step output)
ab_test_reportGenerate an A/B test report comparing two prompts or model configurations. Accepts arrays of scores and returns mean, median, std deviation, improvement percentage, and a Welch t-test at 95 %: `winner` names a variant only when the difference is significant — otherwise "no_sig...2 params

Generate an A/B test report comparing two prompts or model configurations. Accepts arrays of scores and returns mean, median, std deviation, improvement percentage, and a Welch t-test at 95 %: `winner` names a variant only when the difference is significant — otherwise "no_sig...

Parameters* required
variant_a*object
First variant configuration with name and score array
variant_b*object
Second variant configuration with name and score array
similarity_scoreCompute text similarity between reference and hypothesis using multiple metrics: Cosine (BoW, TF-IDF), Jaccard, ROUGE-1, ROUGE-2, ROUGE-L, and BLEU. No API key needed. Ideal for LLM eval (expected vs actual), RAG quality checks, and NLG benchmarking. Supports batch mode.5 params

Compute text similarity between reference and hypothesis using multiple metrics: Cosine (BoW, TF-IDF), Jaccard, ROUGE-1, ROUGE-2, ROUGE-L, and BLEU. No API key needed. Ideal for LLM eval (expected vs actual), RAG quality checks, and NLG benchmarking. Supports batch mode.

Parameters* required
batcharray
Batch mode: array of {reference, hypothesis} pairs.
hypothesisstring
Hypothesis / actual text (LLM output)
metricsarray
Metrics to compute (default: all). Options: "cosine_bow", "cosine_tfidf", "jaccard", "rouge1", "rouge2", "rougeL", "bleu"
referencestring
Reference / expected text (ground truth)
thresholdnumber
Optional pass/fail threshold (0-1). Applies to ROUGE-L F1 score.
bias_detectAnalyse a set of LLM responses generated from the same prompt template but with different demographic variants (gender, origin, age, tone). Returns a bias score (0-100), sentiment analysis per variant, pairwise Jaccard similarity, and a human-readable verdict. No API key neede...1 params

Analyse a set of LLM responses generated from the same prompt template but with different demographic variants (gender, origin, age, tone). Returns a bias score (0-100), sentiment analysis per variant, pairwise Jaccard similarity, and a human-readable verdict. No API key neede...

Parameters* required
responses*array
Array of variant responses to compare for bias
run_vlm_test_suiteTest a vision model (OpenAI, Anthropic or Gemini) on one image: each test case asks a question and asserts on the answer (contains, not_contains, json_format, min_length, max_length, semantic_contains = TF-IDF cosine ≥ 0.4). Returns per-case PASS/FAIL, the pass rate, an overal...8 params

Test a vision model (OpenAI, Anthropic or Gemini) on one image: each test case asks a question and asserts on the answer (contains, not_contains, json_format, min_length, max_length, semantic_contains = TF-IDF cosine ≥ 0.4). Returns per-case PASS/FAIL, the pass rate, an overal...

Parameters* required
api_key*string
Key for the model's provider.
image_base64string
image_mime_typestring
For image_base64 (default image/jpeg).
image_urlstring
Public image URL (or image_base64).
model*string
one of gpt-4o · gpt-4o-mini · claude-sonnet-4-6 · claude-haiku-4-5-20251001 · gemini-3.5-flash · gemini-2.5-flash
system_promptstring
test_cases*array
thresholdnumber
Pass rate for an overall PASS (default 80).
multimodal_eval_guideMultimodal evaluation: action=guide (default) interprets a CLIP/FID/VQA score against reference thresholds; clip_score, fid_score, vqa_accuracy compute the metric (HuggingFace, or your VLM key for VQA); pipeline runs all three.16 params

Multimodal evaluation: action=guide (default) interprets a CLIP/FID/VQA score against reference thresholds; clip_score, fid_score, vqa_accuracy compute the metric (HuggingFace, or your VLM key for VQA); pipeline runs all three.

Parameters* required
actionstring
one of guide · clip_score · fid_score · vqa_accuracy · pipeline
api_keystring
[vqa_accuracy] Key for the model's provider.
clipobject
[pipeline] {image_url, text}
fidobject
[pipeline] {real_images, generated_images}
generated_imagesarray
[fid_score] URLs.
image_base64string
[clip_score, vqa_accuracy]
image_mime_typestring
[clip_score, vqa_accuracy]
image_urlstring
[clip_score, vqa_accuracy] Public image URL.
metricstring
[guide]one of clip_score · fid · vqa_accuracy · all
modelstring
[vqa_accuracy] Default gpt-4o.
real_imagesarray
[fid_score] URLs.
scorenumber
[guide] A score to interpret.
system_promptstring
[vqa_accuracy]
test_casesarray
[vqa_accuracy]
textstring
[clip_score] Text to compare with the image.
vqaobject
[pipeline] Same inputs as vqa_accuracy.
run_vlm_test_suite_batchCompare several vision models on the same image and test cases, in parallel (same assertions as run_vlm_test_suite). Returns per-model PASS/FAIL, pass rates, latency and a comparison table. BYOK: one key per model.8 params

Compare several vision models on the same image and test cases, in parallel (same assertions as run_vlm_test_suite). Returns per-model PASS/FAIL, pass rates, latency and a comparison table. BYOK: one key per model.

Parameters* required
api_keys*object
Model id → API key.
image_base64string
image_mime_typestring
For image_base64 (default image/jpeg).
image_urlstring
Public image URL (or image_base64).
models*array
system_promptstring
test_cases*array
thresholdnumber
Pass rate for an overall PASS (default 80).
shield_analyzeOne-call safety gate for an LLM response: grounding (with source), prompt injection on the response AND the prompt (checks.injection / checks.injection_prompt), toxicity, PII, guardrail rules, quality, plus an LLM review on Groq (server key; model "none" skips it and sends not...5 params

One-call safety gate for an LLM response: grounding (with source), prompt injection on the response AND the prompt (checks.injection / checks.injection_prompt), toxicity, PII, guardrail rules, quality, plus an LLM review on Groq (server key; model "none" skips it and sends not...

Parameters* required
modelstring
LLM review model: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.8-27b (default openai/gpt-oss-20b), or "none".
promptstring
The original prompt — also scanned for injection; pass it whenever you have it.
response*string
The LLM response to check.
rulesarray
Same format as guardrail_test.
sourcestring
Reference text for the grounding check.
security_headers_checkAnalyse the HTTP security headers of a public URL OR of raw response headers you paste in. Grades each header (A–F) for: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection, Cross-Or...2 params

Analyse the HTTP security headers of a public URL OR of raw response headers you paste in. Grades each header (A–F) for: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection, Cross-Or...

Parameters* required
headersvalue
Optional, and sufficient on its own (no url needed). The response headers to grade, either as an object {"strict-transport-security": "max-age=...", ...} or as the raw header block pasted as a stri...
urlstring
Optional. Full public URL to check (e.g. https://example.com). Omit it entirely when using `headers`. The server cannot reach localhost/private IPs.
ssl_certificate_checkAnalyse the SSL/TLS certificate of any HTTPS host. Returns certificate subject, issuer, validity dates, days until expiry, protocol version, cipher suite, key exchange info, and an overall grade (A+, A, B, C, F). Detects expired, self-signed, and weak certificates. Use this to...2 params

Analyse the SSL/TLS certificate of any HTTPS host. Returns certificate subject, issuer, validity dates, days until expiry, protocol version, cipher suite, key exchange info, and an overall grade (A+, A, B, C, F). Detects expired, self-signed, and weak certificates. Use this to...

Parameters* required
host*string
Hostname to check (e.g. example.com). Do not include https:// prefix.
portnumber
Port number (default: 443)
cors_testAudit a URL for CORS misconfigurations across several origins: wildcard with credentials, reflected origin, null origin, subdomain bypass, missing Vary. Returns risk level (safe/low/medium/high/critical) plus per-origin results. "unknown" means nothing was tested: every origin...2 params

Audit a URL for CORS misconfigurations across several origins: wildcard with credentials, reflected origin, null origin, subdomain bypass, missing Vary. Returns risk level (safe/low/medium/high/critical) plus per-origin results. "unknown" means nothing was tested: every origin...

Parameters* required
originstring
Custom Origin header to test (default: tests multiple origins automatically)
url*string
Full URL to test (e.g. https://api.example.com/endpoint)
cors_checkerWould a browser on this origin be allowed to read this URL? Verdict allowed | blocked | unknown, the reason, and the header to add. Only GET and HEAD are really sent: other methods measure the preflight alone. To audit many origins use cors_test.5 params

Would a browser on this origin be allowed to read this URL? Verdict allowed | blocked | unknown, the reason, and the header to add. Only GET and HEAD are really sent: other methods measure the preflight alone. To audit many origins use cors_test.

Parameters* required
credentialsboolean
True for fetch with credentials: "include"
methodstring
Method the page uses (default: GET)
originstring
Origin of the calling page (default: https://yourdomain.com)
request_headersarray
Headers the page sets, e.g. ["Authorization", "Content-Type: application/json"]. Names only are sent.
url*string
Full URL to test, e.g. https://api.example.com/resource
cookie_security_auditAudit the security attributes of cookies set by any URL. Fetches the URL and inspects all Set-Cookie headers for: HttpOnly, Secure, SameSite, Domain scope, Path scope, Max-Age/Expires, __Host-/__Secure- prefixes. Flags insecure patterns: missing HttpOnly on session cookies, mi...1 params

Audit the security attributes of cookies set by any URL. Fetches the URL and inspects all Set-Cookie headers for: HttpOnly, Secure, SameSite, Domain scope, Path scope, Max-Age/Expires, __Host-/__Secure- prefixes. Flags insecure patterns: missing HttpOnly on session cookies, mi...

Parameters* required
url*string
Full URL to audit (e.g. https://example.com/login)
web_security_auditRun a comprehensive web security audit combining headers, SSL, CORS, and cookies checks — then use an LLM to produce a prioritised remediation plan. Orchestrates security_headers_check + ssl_certificate_check + cors_test + cookie_security_audit in parallel, merges all findings...3 params

Run a comprehensive web security audit combining headers, SSL, CORS, and cookies checks — then use an LLM to produce a prioritised remediation plan. Orchestrates security_headers_check + ssl_certificate_check + cors_test + cookie_security_audit in parallel, merges all findings...

Parameters* required
api_keystring
Your Groq or HuggingFace API key. Required to enable AI analysis.
modelstring
LLM model for AI analysis (default: "openai/gpt-oss-20b"). Set to "none" to skip AI analysis.
url*string
Full URL to audit (e.g. https://example.com)
embedding_similarityCompute text similarity using local algorithms (Bag of Words, TF-IDF, Character N-grams). No API key needed — runs entirely in-process. NOT real embeddings: for true semantic similarity with vector embeddings, use run_semantic_tests with mode="embeddings" and your OpenAI API k...4 params

Compute text similarity using local algorithms (Bag of Words, TF-IDF, Character N-grams). No API key needed — runs entirely in-process. NOT real embeddings: for true semantic similarity with vector embeddings, use run_semantic_tests with mode="embeddings" and your OpenAI API k...

Parameters* required
batcharray
Batch mode: array of { text_a, text_b } pairs. Overrides text_a/text_b if provided.
methodsarray
Algorithms to use (default: all three). Options: "bow", "tfidf", "ngram"
text_astring
First text to compare (single-pair mode)
text_bstring
Second text to compare (single-pair mode)
rag_relevance_rankRank an array of text chunks by relevance to a query using TF-IDF scoring. Simulates retrieval ranking for RAG testing without needing embeddings or an API.3 params

Rank an array of text chunks by relevance to a query using TF-IDF scoring. Simulates retrieval ranking for RAG testing without needing embeddings or an API.

Parameters* required
chunks*array
Array of text chunks to rank
query*string
The user query
top_knumber
Return top K results (default: all)
vector_similarityCompute similarity/distance between two float vectors: cosine similarity, dot product, Euclidean and Manhattan distance. Essential for vector DB relevance scoring, embedding evaluation, and nearest-neighbor testing.3 params

Compute similarity/distance between two float vectors: cosine similarity, dot product, Euclidean and Manhattan distance. Essential for vector DB relevance scoring, embedding evaluation, and nearest-neighbor testing.

Parameters* required
metricstring
Distance metric (default: all)one of cosine · dot_product · euclidean · manhattan · all
vector_a*array
First vector as array of floats
vector_b*array
Second vector as array of floats
normalize_vectorL2-normalize a float vector (produce a unit vector with norm=1). Required by many vector DBs (Pinecone, Qdrant cosine). Supports batch normalization of up to 1000 vectors.2 params

L2-normalize a float vector (produce a unit vector with norm=1). Required by many vector DBs (Pinecone, Qdrant cosine). Supports batch normalization of up to 1000 vectors.

Parameters* required
batcharray
Batch of vectors to normalize (overrides vector)
vectorarray
Single vector to normalize
vector_quantizeSimulate int8 or int4 quantization of float32 embedding vectors. Reduces storage by 4x (int8) or 8x (int4). Returns quantized values, scale factor, and precision loss (MSE). Useful for understanding vector DB compression trade-offs.2 params

Simulate int8 or int4 quantization of float32 embedding vectors. Reduces storage by 4x (int8) or 8x (int4). Returns quantized values, scale factor, and precision loss (MSE). Useful for understanding vector DB compression trade-offs.

Parameters* required
bitsnumber
Quantization bits: 8 (int8, default) or 4 (int4)
vector*array
Float32 vector to quantize
vector_statsCompute statistics for a float vector or matrix of vectors: mean, std, L2 norm, min, max, sparsity, top-K indices. Useful for debugging embedding quality and analyzing vector distributions in a vector DB.3 params

Compute statistics for a float vector or matrix of vectors: mean, std, L2 norm, min, max, sparsity, top-K indices. Useful for debugging embedding quality and analyzing vector distributions in a vector DB.

Parameters* required
matrixarray
Matrix of vectors (overrides vector). Returns per-vector + matrix-level stats. Required unless `vector` is given.
top_knumber
Return indices of top K absolute values (default: 5)
vectorarray
Single vector to analyze. Required unless `matrix` is given.
bm25_scoreCompute BM25 relevance score between a query and one or more documents. BM25 is the industry-standard keyword-based ranking algorithm used in Elasticsearch, OpenSearch, and Weaviate hybrid search. Returns ranked results with normalized scores.5 params

Compute BM25 relevance score between a query and one or more documents. BM25 is the industry-standard keyword-based ranking algorithm used in Elasticsearch, OpenSearch, and Weaviate hybrid search. Returns ranked results with normalized scores.

Parameters* required
bnumber
Length normalization factor (default: 0.75)
documents*array
Array of documents to rank
k1number
Term frequency saturation (default: 1.5)
query*string
The search query
top_knumber
Return top K results (default: all)
build_rag_promptAssemble a complete RAG (Retrieval-Augmented Generation) prompt from retrieved context chunks and a user query. Handles token budgeting, citation numbering, system instruction injection, and source attribution.6 params

Assemble a complete RAG (Retrieval-Augmented Generation) prompt from retrieved context chunks and a user query. Handles token budgeting, citation numbering, system instruction injection, and source attribution.

Parameters* required
chunks*array
Retrieved context chunks with .text (required), .source (optional), .score (optional)
cite_sourcesboolean
Add [1], [2] citation numbers (default: true)
languagestring
Response language instruction (e.g. "French", "Spanish")
max_context_tokensnumber
Max tokens for context section (default: 2000)
query*string
The user question to answer
system_instructionstring
Custom system instruction (default: standard RAG grounding instruction)
prompt_template_fillFill a prompt template with variables. Supports {{variable}} syntax and {{#if key}}...{{/if}} conditional blocks. Returns the filled prompt and lists unfilled variables.3 params

Fill a prompt template with variables. Supports {{variable}} syntax and {{#if key}}...{{/if}} conditional blocks. Returns the filled prompt and lists unfilled variables.

Parameters* required
strictboolean
Throw error if any variable is not provided (default: false)
template*string
Prompt template with {{variable}} placeholders
variablesobject
Key-value pairs to fill (e.g. {"name":"Alice","role":"engineer"})
few_shot_formatterFormat few-shot examples for LLM prompts. Converts example pairs into formatted blocks. Supports chat format (User/Assistant), XML tags, Markdown, or plain text.4 params

Format few-shot examples for LLM prompts. Converts example pairs into formatted blocks. Supports chat format (User/Assistant), XML tags, Markdown, or plain text.

Parameters* required
examples*array
Array of {input, output} pairs
formatstring
Output format (default: chat)one of chat · xml · markdown · plain
input_labelstring
Label for input (default: User / <input>)
output_labelstring
Label for output (default: Assistant / <output>)
system_prompt_builderBuild a structured system prompt from components: role, task, constraints, output format, tone, language, and examples. Generates a production-ready system prompt with token estimate.7 params

Build a structured system prompt from components: role, task, constraints, output format, tone, language, and examples. Generates a production-ready system prompt with token estimate.

Parameters* required
constraintsarray
Rules and constraints to follow
examplesstring
Brief examples to include
languagestring
Response language (e.g. "French")
output_formatstring
Expected output format description
role*string
Role/persona (e.g. "Senior QA Engineer", "JSON extraction assistant")
taskstring
Main task or objective
tonestring
Communication toneone of professional · friendly · concise · technical · educational
rerank_evaluateEvaluate RAG retrieval: rank passages against a query, compute Precision@k / Recall@k and a PASS/FAIL verdict from your relevance labels. Modes: (1) give every passage the `score` YOUR reranker produced — deterministic, offline, the mode to gate CI on; (2) no scores, no key —...5 params

Evaluate RAG retrieval: rank passages against a query, compute Precision@k / Recall@k and a PASS/FAIL verdict from your relevance labels. Modes: (1) give every passage the `score` YOUR reranker produced — deterministic, offline, the mode to gate CI on; (2) no scores, no key —...

Parameters* required
api_keystring
NVIDIA key, used only when no passage has a score; never stored.
passages*array
2 to 20 passages.
query*string
thresholdnumber
Minimum Precision@k to PASS (default 0.5).
top_kinteger
Default 3.
count_tokensEstimate the token count of a text string using the cl100k_base approximation (~4 chars/token). Call this BEFORE sending any text to an LLM API to check if it fits within the model context window and to estimate cost. Returns token estimate, character count, and word count.1 params

Estimate the token count of a text string using the cl100k_base approximation (~4 chars/token). Call this BEFORE sending any text to an LLM API to check if it fits within the model context window and to estimate cost. Returns token estimate, character count, and word count.

Parameters* required
input*string
Text to count tokens for
truncate_to_tokensTruncate text to at most N tokens (cl100k_base: ~4 chars/token) to avoid exceeding an LLM context window. Optionally keeps the end of the text instead of the start (useful for keeping recent conversation history). Reports whether truncation occurred and the estimated token count.3 params

Truncate text to at most N tokens (cl100k_base: ~4 chars/token) to avoid exceeding an LLM context window. Optionally keeps the end of the text instead of the start (useful for keeping recent conversation history). Reports whether truncation occurred and the estimated token count.

Parameters* required
from_endboolean
Keep the end of the text instead of the start (default: false)
input*string
Text to truncate
max_tokens*number
Maximum number of tokens to keep
split_chunksSplit text into chunks of at most N tokens (cl100k_base: ~4 chars/token) with optional overlap. Designed for RAG ingestion pipelines.3 params

Split text into chunks of at most N tokens (cl100k_base: ~4 chars/token) with optional overlap. Designed for RAG ingestion pipelines.

Parameters* required
chunk_tokens*number
Maximum tokens per chunk (10–8000)
input*string
Text to split into chunks
overlapnumber
Token overlap between consecutive chunks (default: 0)
extract_json_from_textExtract the first valid JSON object or array embedded in chaotic LLM output (surrounded by markdown fences, prose, or explanatory text). Handles ```json blocks and inline JSON. Call this whenever an LLM returns structured data mixed with explanation text instead of raw JSON.1 params

Extract the first valid JSON object or array embedded in chaotic LLM output (surrounded by markdown fences, prose, or explanatory text). Handles ```json blocks and inline JSON. Call this whenever an LLM returns structured data mixed with explanation text instead of raw JSON.

Parameters* required
input*string
Raw text (e.g., LLM output) that may contain a JSON object or array
estimate_llm_costEstimate the API cost in USD for a given model and token counts, at the price read daily from the provider's own pricing page (prices_as_of, price_status). Any model from list_llm_models.3 params

Estimate the API cost in USD for a given model and token counts, at the price read daily from the provider's own pricing page (prices_as_of, price_status). Any model from list_llm_models.

Parameters* required
input_tokens*number
Number of input/prompt tokens
model*string
Model name, e.g. "gpt-4o", "claude-3.5-sonnet", "deepseek-v3"
output_tokensnumber
Number of output/completion tokens (default: 0)
token_budget_calculatorPlan token allocation across system prompt, user input, context/RAG chunks, and expected output. Warns if budget exceeds the model's context window (any model from list_llm_models).8 params

Plan token allocation across system prompt, user input, context/RAG chunks, and expected output. Warns if budget exceeds the model's context window (any model from list_llm_models).

Parameters* required
contextstring
Actual context text (will estimate tokens)
context_tokensnumber
Token count for RAG context / documents
expected_output_tokensnumber
Expected max output tokens
model*string
Model id from list_llm_models (e.g. gpt-6.1-sol, claude-sonnet-5-5, gemini-3.8-flash)
system_promptstring
Actual system prompt text (will estimate tokens)
system_prompt_tokensnumber
Token count for system prompt
user_inputstring
Actual user input text (will estimate tokens)
user_input_tokensnumber
Token count for user message
context_window_checkGiven an array of message objects [{role, content}], estimate total token usage and check if it fits in the target model's context window. Warns about truncation risk.3 params

Given an array of message objects [{role, content}], estimate total token usage and check if it fits in the target model's context window. Warns about truncation risk.

Parameters* required
max_output_tokensnumber
Reserved tokens for output (default: 4096)
messages*array
Array of messages (system/user/assistant)
model*string
Model id from list_llm_models (e.g. gpt-6.1-sol, claude-sonnet-5-5)
model_infoGet detailed specs for an AI model: context window, pricing per 1K tokens, knowledge cutoff, provider, multimodal support, reasoning capabilities, and feature list. Covers 30+ models from OpenAI, Anthropic, Google, DeepSeek, Meta, Mistral, Cohere, xAI.1 params

Get detailed specs for an AI model: context window, pricing per 1K tokens, knowledge cutoff, provider, multimodal support, reasoning capabilities, and feature list. Covers 30+ models from OpenAI, Anthropic, Google, DeepSeek, Meta, Mistral, Cohere, xAI.

Parameters* required
model*string
Model name (e.g. "gpt-4o", "claude-3.5-sonnet", "gemini-3.1-pro-preview")
compare_modelsPut 2-5 AI models side by side: price per 1k tokens, context window, multimodal, reasoning, provider, pricing page. Facts only: names the cheapest and the largest context, never a "best model" — run your cases on each to choose.1 params

Put 2-5 AI models side by side: price per 1k tokens, context window, multimodal, reasoning, provider, pricing page. Facts only: names the cheapest and the largest context, never a "best model" — run your cases on each to choose.

Parameters* required
models*array
Array of 2-5 model names (e.g. ["gpt-5","claude-sonnet-4-6","gemini-3.5-flash"])
list_llm_modelsList all LLM models available on ia-qa.com with their provider, API endpoint, and capabilities. Filter by provider name (e.g. "Groq", "HuggingFace", "OpenAI") or return the full catalog. Use this to discover which models are available before calling an LLM API, or to compare p...1 params

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

Parameters* required
providerstring
Filter by provider name (case-insensitive). E.g. "Groq", "HuggingFace", "OpenAI", "Anthropic", "Google", "DeepSeek", "xAI", "Ollama". Omit for full catalog.
llm_generateGenerate text with an open-source model hosted on Groq, on the server's key — no API key needed. Models: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.8-27b (default "openai/gpt-oss-20b"). HuggingFace models are not served on the server key. A reasoning model that spends...5 params

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

Parameters* required
max_tokensnumber
Maximum tokens to generate (default: 2048, max: 4096)
modelstring
Model ID (default: "openai/gpt-oss-20b"). Server-keyed whitelist only — Groq: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.8-27b. Other ids from list_llm_models, HuggingFace ones included, a...
prompt*string
The user prompt / instruction to send to the model
systemstring
Optional system prompt to set context or persona
temperaturenumber
Sampling temperature 0.0–1.5 (default: 0.7)
optimize_prompt_tokensCompress an LLM prompt by removing filler words, verbose phrases, duplicate sentences, and unnecessary whitespace. Returns optimized text with token savings breakdown. 100% deterministic, no API key needed.2 params

Compress an LLM prompt by removing filler words, verbose phrases, duplicate sentences, and unnecessary whitespace. Returns optimized text with token savings breakdown. 100% deterministic, no API key needed.

Parameters* required
optionsobject
Toggle optimization steps (all true by default)
text*string
The prompt text to optimize
llm_fit_finderShortlist LLMs on facts, no ranking: cloud models with the features you need within a monthly budget, cheapest first; or local models that fit your VRAM, largest first, with the ollama command. To pick one, run your cases on the shortlist (prompt_test_suite, run_eval_contract).8 params

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

Parameters* required
featuresarray
Required features: vision, function_calling, json_mode, streaming, reasoning
max_budgetnumber
Maximum monthly budget in USD (based on tokens_per_day)
modestring
cloud (API models) or local (Ollama/self-hosted). Default: cloud
quantizationstring
Quantization (only for mode=local): Q4_K_M | Q8_0 | FP16. Default: Q4_K_M
tokens_per_daynumber
Estimated daily token volume (default: 100000)
top_nnumber
Number of models to return (default: 5)
use_casestring
Only "reasoning" filters (requires the feature); chatbot | code | rag | summarization | classification | agents | multilingual rank nothing
vram_gbnumber
GPU VRAM in GB (only for mode=local). Default: 16
post_jira_commentPost the output of jira_to_test_suite as a formatted comment on the source Jira ticket. Converts Gherkin, E2E steps, API tests, and ambiguities into Atlassian Document Format (ADF). STATEFUL — creates a comment on the issue.5 params

Post the output of jira_to_test_suite as a formatted comment on the source Jira ticket. Converts Gherkin, E2E steps, API tests, and ambiguities into Atlassian Document Format (ADF). STATEFUL — creates a comment on the issue.

Parameters* required
issue_key*string
Jira issue key, e.g. "PROJ-123"
jira_base_url*string
Atlassian base URL
jira_email*string
Atlassian account email
jira_token*string
Atlassian API token
test_suite*object
The test_suite object from jira_to_test_suite result
create_confluence_pageCreate a new Confluence page from the output of jira_to_test_suite. Formats Gherkin, E2E steps, API tests, and test data as a properly structured Confluence page with code blocks and tables. STATEFUL — creates a new page in the specified space.9 params

Create a new Confluence page from the output of jira_to_test_suite. Formats Gherkin, E2E steps, API tests, and test data as a properly structured Confluence page with code blocks and tables. STATEFUL — creates a new page in the specified space.

Parameters* required
confluence_base_url*string
Atlassian base URL
confluence_email*string
Atlassian account email
confluence_token*string
Atlassian API token
issue_keystring
Source Jira issue key (for the page title and source link)
issue_urlstring
Source Jira issue URL (added as a link in the page)
parent_page_idstring
Optional parent page ID — page will be created as a child of this page
space_key*string
Confluence space key where the page will be created, e.g. "QA", "ENG"
test_suite*object
The test_suite object from jira_to_test_suite result
titlestring
Page title. Defaults to "Test Plan: {issue_key}"

Sponsors

Readme

IA-QA MCP server

Free QA and LLM-testing tools for AI agents, served over MCP (Streamable HTTP). No account, no API key. Every tool returns a verdict an agent can act on: pass/fail, a score, a diff.

This repository describes the hosted server; it holds no server code. The live tool list is always GET https://www.ia-qa.com/mcp.

Endpoints

EndpointTools listedFor
https://www.ia-qa.com/mcpall 153clients with no tool limit
https://www.ia-qa.com/mcp/security30prompt injection, PII and secret scans, TLS/header/CORS audits, MCP server checks
https://www.ia-qa.com/mcp/eval39hallucination, eval contracts, semantic and RAG tests, tokens and models
https://www.ia-qa.com/mcp/data36JSON/YAML/CSV, schema validation, encoding, text and time utilities

View the full README on GitHub

Details

Repository
github.com/ia-qa-com/mcp
Category
AI & LLM Tools
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related AI & LLM Tools MCP servers

View all
1jerrysrodz avatarGoldholdjerrysrodz/goldhold-mcp-serverPersistent memory for AI agents. Search, store, and recall across sessions.0stars
2loaditoutadmin avatarLoaditoutloaditoutadmin/loaditout-mcp-serverSearch and install 20,000+ security-graded MCP servers and agent skills.0stars
3maco144 avatarNullcone Threat Intelligencemaco144/nullcone-mcpReal-time threat intel for AI agents: 890K+ IOCs incl. prompt-injection & AI-skill threats0stars
4mdfifty50-boop avatarScope Guardmdfifty50-boop/scope-guard-mcpHard scope boundaries to prevent AI agent drift0stars
5meltingpixelsai avatarZero Core Verifymeltingpixelsai/harvey-verifyPost-tx outcome verification via LLM-as-judge. Zero Core Verify.0stars
6mukundakatta avatarPromptbudget Mcpmukundakatta/mcp-stackToken-budget-aware text handling: count, truncate, and chunk for LLM prompts.0stars