VerifyAX MCP
OfficialThe VerifyAX MCP Server acts as a bridge, giving AI tools secure, real‑time access to the VerifyAX platform through natural language. You can manage agents, generate scenarios, run evaluations, and monitor usage.
Agent Management
Register agents (A2A, API, DirectLine/Copilot Studio, MCP) with optional authentication and connectivity checks.
List agents, filter by connector type.
Delete agents permanently.
Scenario Generation
List compatible skill tags for info_exchange or interview scenarios.
Generate scenarios with tags and optional context, including batch creation of up to 50 scenarios.
List scenarios, filter by type or status.
Delete scenarios (fails if referenced by a run).
Evaluation & Simulation
Evaluate an agent against a scenario – previews cost, runs the simulation, and returns scores.
List recent simulation runs with filters for status, agent, scenario, date range, and more.
Fetch full run details including scores and results.
Usage & Cost Tracking
Preview estimated credit cost for a run before triggering it.
Get a usage summary over a time range or per simulation, with a breakdown by product area and total spend.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VerifyAX MCPShow me the latest evaluation results for my agent"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
The official VerifyAX MCP Server is a bridge between your MCP-compatible AI client and the VerifyAX agent-evaluation platform. Once configured, it lets you register agents, generate scenarios, run simulations, and read evaluations in natural language — without writing API scripts.
With the VerifyAX MCP Server, you can:
Register and test agents (A2A or API) and confirm connectivity before evaluation.
Generate scenarios from skill tags and wait for completion in one tool call.
Run evaluations and read scores, transcripts, and credit usage without manual polling.
It complements (does not replace) the verifyax-api skill:
the skill is for developers writing code; the MCP server is for conversational workflows.
Contents
Related MCP server: Verix API MCP Server
Supported clients
The VerifyAX MCP Server works with MCP-compatible clients that support Streamable HTTP or stdio:
Client | Setup reference |
OpenAI ChatGPT | |
Claude (Claude.ai, Desktop, and Code) | |
Cursor | |
Visual Studio Code (GitHub Copilot) | |
GitHub Copilot CLI | |
Google Gemini CLI | |
Amazon Quick Suite |
Any client that can connect via mcp-remote can also
use the hosted endpoint at https://mcp.verifyax.com/mcp.
For step-by-step Claude setup and how this compares to the VerifyAX skill and SDK, seedocs/using-verifyax-with-claude.md.
Supported tools
Twelve tools mapped to user intents. Blocking tools poll internally and return only when work completes (typically 30s–5min).
Area | Tools | Blocking |
Agents |
| — |
Scenarios |
| yes ( |
Evaluation |
| yes ( |
Usage |
| — |
For tool descriptions (what Claude reads to pick a tool) and rationale, seedocs/tool-descriptions.md. Package-level reference:
packages/mcp-server/README.md.
Before you start
Requirements depend on how you connect.
Remote HTTP (hosted at mcp.verifyax.com)
A VerifyAX API key (Settings → API Keys in the console)
An MCP client with Streamable HTTP support, or Node.js 18+ to run the
mcp-remoteproxy
Local stdio (verifyax-mcp-server via npx)
Node.js ≥ 20
A VerifyAX API key in your client config (
VERIFYAX_API_KEY)
The npm package exposes two binaries (verifyax-mcp-server and verifyax-mcp-server-http); pass
the stdio binary name explicitly when using npx.
Install the MCP server
Remote HTTP (recommended)
Hosted endpoint:
https://mcp.verifyax.com/mcpSend your VerifyAX API key on the initialize request. The hosted server does not store keys — each client session brings its own.
Cursor (native URL — v0.48+):
{
"mcpServers": {
"verifyax": {
"url": "https://mcp.verifyax.com/mcp",
"headers": {
"Authorization": "Bearer sk-ver-api-..."
}
}
}
}Do not add a transport field — Cursor detects Streamable HTTP from the URL. You can also use
"X-VerifyAX-API-Key": "sk-ver-api-..." instead of Authorization.
Claude Desktop / clients without native HTTP (mcp-remote):
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"verifyax": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.verifyax.com/mcp",
"--transport",
"http-only",
"--header",
"Authorization:${VERIFYAX_AUTH}"
],
"env": {
"VERIFYAX_AUTH": "Bearer sk-ver-api-..."
}
}
}
}Use --transport http-only because this server speaks Streamable HTTP only (no legacy SSE). You
can also pass X-VerifyAX-API-Key: sk-ver-api-... via --header instead of Authorization.
Restart your MCP client after changing config.
Local stdio
Claude Code:
claude mcp add verifyax --env VERIFYAX_API_KEY=sk-ver-api-... -- npx -y -p @verifyax/mcp-server verifyax-mcp-serverClaude Desktop:
{
"mcpServers": {
"verifyax": {
"command": "npx",
"args": ["-y", "-p", "@verifyax/mcp-server", "verifyax-mcp-server"],
"env": { "VERIFYAX_API_KEY": "sk-ver-api-..." }
}
}
}Restart the client after changing config, then describe what you want in natural language.
How it works
Architecture and communication
Your MCP client connects to
https://mcp.verifyax.com/mcp(remote HTTP) or spawnsnpx -p @verifyax/mcp-server verifyax-mcp-server(local stdio).The client sends your VerifyAX API key on initialize (
Authorization: Bearer …orX-VerifyAX-API-Keyfor HTTP;VERIFYAX_API_KEYenv for stdio).The server calls the VerifyAX API on your behalf. Blocking tools (
generate_scenario,evaluate_agent) poll job status internally and return only when work finishes.
Permission and billing
Actions are scoped to the workspace tied to your API key.
Usage and credits are billed to your VerifyAX workspace, not to the MCP server operator.
The hosted server sends no telemetry and does not persist API keys between sessions.
Self-hosting
Run the same HTTP server on your own infrastructure (e.g. Google Cloud Run). See
deploy/gcp/README.md.
Example workflows
Once connected, describe tasks in natural language — the client picks the tool.
Agent setup
Register: "Register my A2A agent at https://my-agent.example.com and confirm it's reachable."
List: "What agents are registered in my workspace?"
Scenario authoring
Discover tags: "List the skill tags I can use for an interview scenario."
Generate: "Generate an info_exchange scenario tagged empathy and coordination."
Evaluation
Run eval: "Evaluate agent X against scenario Y and summarize the scores."
Review history: "Show details for my most recent simulation run."
Usage and cost
Preview: "How many credits will it cost to run this scenario against my agent?"
Summary: "What did my last 5 simulation runs cost?"
Blocking tools can take 30s–5min. Do not call them repeatedly — wait for the result.
Tips and tricks
Add defaults to AGENTS.md
Reduce discovery calls and bad tag combinations by adding this to an AGENTS.md file in your
project root (see the AGENTS.md convention for the format):
## VerifyAX MCP
When connected to verifyax:
- **MUST** call `list_compatible_tags` before `generate_scenario`
- **MUST NOT** combine QnA tags with other tags (QnA must be the sole tag)
- **MUST** use `preview_run_cost` when the user asks about credits before `evaluate_agent`
- Blocking tools (`generate_scenario`, `evaluate_agent`) take 30s–5min — do not retry manuallyUse the skill for code workflows
For scripts, CI, or custom multi-step logic, use the
verifyax-api skill or
@verifyax/sdk instead of MCP tools.
Data and security
All traffic to the hosted endpoint uses HTTPS (TLS).
API key authentication; every action respects your VerifyAX workspace permissions.
The hosted server does not store API keys — each session supplies its own.
The MCP server sends no telemetry; it talks only to the VerifyAX API.
Destructive tools (
delete_agent,delete_scenario) permanently remove resources — confirm with the user before calling them.
API keys are managed in the VerifyAX console (Settings → API Keys). Revoke a key there to cut off access immediately.
Troubleshooting
"VERIFYAX_API_KEY is not set" — the key isn't reaching the server. Check the
envblock (stdio) orAuthorization/X-VerifyAX-API-Keyheader (HTTP).Authentication failed — the key is invalid, revoked, or from the wrong environment. Mint a fresh one in the console.
Tool calls don't appear — MCP clients load tools at startup; restart the client (or start a new session) after adding the server.
HTTP connection fails in Cursor — try
mcp-remotewith--transport http-only, or verify the URL ends with/mcp.Want logs? Set
VERIFYAX_MCP_LOG_LEVEL=debug. Logs are structured JSON on stderr; stdout is reserved for the MCP protocol.
Support and feedback
This project is maintained by the VerifyAX team at Conscium.
Bugs and feature requests: open an issue
Development reference:
CONTRIBUTING.md(maintainers and forks)External pull requests aren't accepted — issues are the best way to reach us
Disclaimer
MCP clients can register agents, generate scenarios, run evaluations, and delete resources using your VerifyAX API key and workspace credits. Use least privilege (scoped keys, minimal workspace access), review high-impact actions before confirming, and revoke keys you no longer need.
Model Context Protocol connects AI agents to external tools, which creates powerful workflows but also structural risks. Large language models can be vulnerable to prompt injection and related attacks. Only use trusted MCP clients and servers, and review which tools each agent can access.
For developers
This repository is a pnpm monorepo with two packages:
Package | Description |
Typed TypeScript client for the VerifyAX REST API | |
MCP server (12 tools) built on the SDK |
Requires Node ≥ 20 and pnpm 10.
pnpm install # install workspace dependencies
pnpm build # build all packages (topological order)
pnpm test # run unit tests
pnpm lint # lint
pnpm format # format with prettierNetwork-dependent suites: pnpm test:integration (live API, needs VERIFYAX_TEST_KEY) and
pnpm test:conformance (spawns the built MCP server over stdio).
MCP Inspector:
docs/debugging-mcp-inspector.mdExecution plan:
docs/PLAN.mdArchitecture decisions:
CLAUDE.mdCloud Run deploy:
deploy/gcp/README.md
License
Apache-2.0. See LICENSE.
Available Tools
12 toolsdelete_agentDelete agentADestructiveIdempotentInspect
Permanently deletes an agent from your VerifyAX workspace by its uuid. This cannot be undone. Returns confirmation of the deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_uuid | Yes | The uuid of the agent to permanently delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the destructive hint with 'permanently deletes' and 'cannot be undone', and adds that it returns a confirmation. It does not contradict the idempotent hint, though it does not explain idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the key information. Every word adds value, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and no output schema, the description is sufficiently complete. It could specify the format of the confirmation, but the current text is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage with a description for agent_uuid. The description adds 'by its uuid', which is redundant. No additional parameter meaning is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (permanently deletes), resource (agent), and method (by uuid). It distinguishes well from sibling tools like evaluate_agent or list_recent_runs, none of which involve deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you want to permanently delete an agent) and notes the irreversible nature, but does not explicitly state when not to use or list alternatives. However, given the unique deletion purpose among siblings, this is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_scenarioDelete scenarioADestructiveIdempotentInspect
Permanently deletes a scenario from your VerifyAX workspace by its uuid. This cannot be undone and fails if simulation runs still reference the scenario. Returns confirmation of the deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| scenario_uuid | Yes | The uuid of the scenario to permanently delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds value by specifying irreversibility and the failure condition, and notes that a confirmation is returned. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding value: action, constraints, and return behavior. No wasted words, front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter, the description covers irreversibility, precondition, and return. Without an output schema, mentioning confirmation is helpful. Could elaborate on what the confirmation contains, but it's adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and the parameter description already included in the schema, the tool description adds minimal new information about the parameter. The schema already describes 'The uuid of the scenario to permanently delete.' Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'permanently deletes a scenario' with the specific identifier 'by its uuid', which distinguishes it from sibling tools like generate_scenario or list_compatible_tags. The verb and resource are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides important usage context: the deletion is permanent and 'fails if simulation runs still reference the scenario'. This tells the agent when not to use it (if referenced). It could be improved by stating when to use it, but the prerequisite is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_agentEvaluate agentAInspect
Runs an agent against a scenario and evaluates the result end to end. Typically takes 30s–30min; task-capable MCP clients receive a pollable task handle immediately, while others block until the evaluation completes. Give it an agent uuid and a scenario uuid; it previews cost, runs the simulation, waits for it, and returns the evaluation scores. Optional timeout_minutes (1–240) overrides the scenario default for this run.
| Name | Required | Description | Default |
|---|---|---|---|
| num_runs | No | Parallel repetitions, 1-10 (default 1). | |
| agent_uuid | Yes | The agent to evaluate. | |
| scenario_uuid | Yes | The scenario to run the agent against. | |
| timeout_minutes | No | Wall-clock budget in minutes for this run (overrides scenario default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the sparse annotations: discloses runtime duration (30s–30min), the dual execution model (task-capable clients get a pollable task handle; others block), and the internal sequence of operations (preview cost → run simulation → wait → return scores). This is exactly the kind of context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with purpose and runtime expectation before parameter guidance. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a long-running, potentially blocking operation, the description covers runtime, client-dependent execution model (critical for avoiding timeouts), the internal workflow, and required inputs. Nothing essential for correct invocation is missing despite the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented in the schema. The description calls out timeout_minutes's override semantics and its 1–240 range, which mirrors the schema, and adds no new meaning for num_runs or the uuids. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Runs an agent against a scenario and evaluates the result end to end'), and distinguishes itself from siblings like preview_run_cost and get_run_details by covering the full execute-then-evaluate flow. An agent can immediately tell this is the end-to-end evaluation entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by stating the required inputs ('Give it an agent uuid and a scenario uuid') but never explicitly says when to use this vs. preview_run_cost or get_run_details, nor when-not to use it. Context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_scenarioGenerate scenarioAInspect
Generates a new test scenario of a given type (info_exchange or interview) with optional skill tags and context. Typically takes 30s–2min; task-capable MCP clients receive a pollable task handle immediately, while others block until generation finishes. Set num_scenarios greater than 1 for batch mode (requires tag_pool). Returns the new scenario’s uuid, or batch uuids when batching, or a structured error with details if generation fails (e.g. incompatible tags).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workspace-unique scenario name. | |
| tags | No | Skill tag names (use list_compatible_tags to pick valid ones). | |
| tag_pool | No | Required when num_scenarios > 1; universe of tag names to sample from. | |
| total_tags | No | Batch only; tags drawn per scenario from tag_pool. | |
| include_tags | No | Batch only; tags required in every scenario (subset of tag_pool). | |
| num_scenarios | No | Batch size. 1 = single scenario (default). Greater than 1 requires tag_pool. | |
| scenario_type | Yes | ||
| context_prompt | No | ||
| max_tags_per_npc | No | Batch only; caps tags per NPC. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing latency (30s–2min), the dual execution model (pollable task handle for task-capable clients vs blocking for others), batch semantics, and the failure mode (structured error, e.g. incompatible tags). Annotations only say it is a non-read, non-destructive write, so the description carries meaningful extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler: capability, execution timing/model, and return/error behavior. It is dense but each clause carries information; the batch detail is arguably the only overloaded part.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining return values (uuid, batch uuids, structured error). For a 9-parameter tool it leaves context_prompt and name semantics to the schema, but the critical complexity (batching, task handling, failure) is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78% and parameters like name, context_prompt, and scenario_type already carry their own descriptions, so the schema does the heavy lifting. The description restates the num_scenarios/tag_pool relationship rather than adding new meaning, which is the expected baseline when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Generates a new test scenario") and enumerates the two valid scenario types, so the action is unambiguous. It does not, however, differentiate itself from siblings like list_scenarios or preview_run_cost, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: single vs batch mode, the tag_pool prerequisite for num_scenarios > 1, and points to list_compatible_tags when picking tags. There are no explicit when-not-to-use statements or sibling routing, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_detailsGet run detailsARead-onlyInspect
Fetches the full details of a single simulation run by its uuid, including its status and the evaluation results when they are available. Use after a run to inspect scores and outcome.
| Name | Required | Description | Default |
|---|---|---|---|
| simulation_uuid | Yes | The run’s uuid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, consistent with a fetch operation. Description adds that it includes status and evaluation results when available, but doesn't elaborate on other behavioral traits like idempotency or lack of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary purpose, and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could benefit from more detail about the structure of the returned details. It only mentions status and evaluation results, leaving other 'full details' unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter. The description adds no additional meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches full details of a single simulation run, distinguishing it from sibling tools like list_recent_runs which lists runs, and evaluate_agent which evaluates agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Use after a run to inspect scores and outcome,' giving clear context for when to use. Lacks explicit alternatives or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_summaryGet usage summaryARead-onlyInspect
Summarizes VerifyAX usage events over an optional time range or for a specific simulation, scenario, or job. Paginates across all matching events (up to a cap) and returns the total event count, a breakdown by product area, and total platform spend in USD when the API reports it.
| Name | Required | Description | Default |
|---|---|---|---|
| failed | No | ||
| job_uuid | No | Filter by async job UUID. | |
| max_events | No | Cap on events to summarize (default 10000). | |
| product_area | No | ||
| scenario_uuid | No | ||
| event_start_to | No | ISO 8601 end of the window. | |
| simulation_uuid | No | ||
| event_start_from | No | ISO 8601 start of the window. | |
| evaluation_job_uuid | No | Filter by evaluation job UUID. | |
| simulation_job_uuid | No | Filter by simulation job UUID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description builds on that by detailing pagination, a cap on events, and the return fields (total count, product area breakdown, spend). It also notes that spend is conditional on API reporting. This adds meaningful behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences covering purpose, filters, pagination, and return values. No fluff, front-loaded with key information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 optional parameters and no output schema, the description explains the main return values and pagination behavior. It misses details on some filters (e.g., 'failed', 'product_area') but overall provides a sufficient understanding of what the tool does and returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description groups parameters into categories (time range, simulation, scenario, job) but does not explain individual parameters like 'failed' or 'product_area' beyond what the schema already provides. With schema description coverage at 60%, the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool summarizes VerifyAX usage events with optional filters, using a specific verb and resource. It distinguishes itself from siblings like list_scenarios or get_run_details by focusing on aggregation (count, breakdown, spend) rather than listing raw events or runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: for a summary over a time range or for specific simulations, scenarios, or jobs. It does not explicitly state when not to use or name alternatives, but the context is clear. No exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsList agentsARead-onlyInspect
Lists the AI agents registered in your VerifyAX workspace, optionally filtered by connector type (A2A, API, DIRECTLINE, EXTENSION, or MCP). Returns each agent’s uuid, name, type, and URL.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| agent_type | No | Filter to a single agent type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns by describing a read-only list operation. It adds context on return fields, which is useful. No further behavioral details are needed given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover purpose, filtering, and return fields. No redundant information, and the key points are front-loaded. Every part is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (3 optional params, no output schema), the description covers the main functionality and return fields. Lacks explicit pagination explanation, but the schema parameters imply it. Overall sufficient for the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the agent_type parameter and its enum values, but does not mention limit or offset parameters. With schema description coverage at 33%, the description partially compensates but could be more complete on pagination context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists AI agents in the workspace, with an optional filter by connector type. It specifies the return fields (uuid, name, type, URL), making it distinct from sibling tools like register_agent or delete_scenario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to list agents, optionally filtered), but does not explicitly provide when-not-to-use or alternatives. It lacks guidance on pagination or cost implications, but the context is clear enough for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_compatible_tagsList compatible skill tagsARead-onlyInspect
Lists the skill tags that can be used to generate a scenario of a given type (info_exchange or interview). Use this before generating a scenario to pick valid tags. Returns each tag’s name, category, and description, and flags QnA tags that must be the only tag.
| Name | Required | Description | Default |
|---|---|---|---|
| scenario_type | Yes | The kind of scenario the tags will be used for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds value by detailing the return structure (name, category, description) and special flag for QnA tags. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action. Every sentence adds meaningful information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, annotations, and description covering output structure and special behavior, the description is fully adequate for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the only parameter scenario_type having a clear description. The description does not add any additional semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists skill tags for a given scenario type (info_exchange or interview). It uses a specific verb ('lists') and resource ('skill tags'), and the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this before generating a scenario to pick valid tags,' providing clear when-to-use guidance. It does not list when not to use or alternatives, but the sibling generate_scenario is an obvious counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_runsList recent runsARead-onlyInspect
Lists recent simulation runs in your VerifyAX workspace, optionally filtered by status, agent, scenario, date range, search text, or run group. Returns each run’s uuid, status, agent, scenario, and evaluation handle.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| search | No | Free-text search across run metadata. | |
| status | No | Filter by run status. Known values: CREATED, IN_PROGRESS, COMPLETED, FAILED, CANCELLED (open enum — the API may add statuses, which are forwarded rather than rejected). | |
| date_to | No | ISO 8601 end of the created-at window. | |
| date_from | No | ISO 8601 start of the created-at window. | |
| agent_uuid | No | ||
| scenario_uuid | No | ||
| run_group_uuid | No | Filter to runs in a linked run group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so description's 'lists' is consistent. Description adds filter options and return fields but does not mention pagination behavior, default ordering, or rate limits. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading the core purpose and available filters. No fluff, every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema, the description covers the main filters and returned fields. However, it omits pagination details (limit/offset) and default sort order, which are useful for an agent to know for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 56%; description summarizes filter categories (status, agent, etc.) but does not explain individual parameters like limit/offset beyond what is in the schema. Adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Directly states the function: listing simulation runs with optional filters and specifies the returned fields. Clearly distinguishes from siblings like get_run_details (single run) and list_agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists available filters but does not explicitly guide when to use this tool versus siblings (e.g., get_run_details for a single run, preview_run_cost for cost estimation). No when-not or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scenariosList scenariosARead-onlyInspect
Lists the test scenarios in your VerifyAX workspace, optionally filtered by type (info_exchange or interview) and status. Returns each scenario’s uuid, name, type, and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | Filter by scenario status. Known values: INIT, PROCESSING, SUCCESS, FAILED, CANCELLED (open enum — the API may add statuses, which are forwarded rather than rejected). | |
| scenario_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so description of read-only nature is redundant. Adds return fields but lacks details on pagination, rate limits, or sorting. Adequate but minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no wasted words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers return values (uuid, name, type, status). For a simple list tool, it provides essential context. Missing pagination behavior, but overall complete for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description adds meaning for scenario_type and status filters beyond schema (only status has description). However, limit and offset are not explained; schema coverage is 25%, so description partially compensates but misses pagination details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists test scenarios in a workspace with optional filters and specifies returned fields (uuid, name, type, status). Distinguishes from sibling tools like list_recent_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains optional filtering by type and status, providing clear context. No explicit when-not-to-use or contrast with siblings, but the description is sufficient for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_run_costPreview run costARead-onlyInspect
Estimates the credit cost of running an agent against a scenario before triggering it. Returns the estimated credits, your current balance, and any pending committed spend. Optional timeout_minutes (1–240) affects the run-cost estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| num_runs | No | Parallel repetitions (default 1). | |
| agent_uuid | No | The agent that would run (optional). | |
| scenario_uuid | Yes | The scenario the run would use. | |
| timeout_minutes | No | Wall-clock budget in minutes for the estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description reinforces it's only an estimate without executing. Discloses return fields (estimated credits, balance, pending committed spend). No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main purpose, then specific details. Every sentence adds value; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately states what is returned. For a preview tool with read-only semantics and well-documented params, it's sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds limited additional meaning. Reiterates timeout_minutes range (1–240) and its effect on estimate, but other parameters (num_runs, agent_uuid, scenario_uuid) are not elaborated beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it estimates credit cost before running an agent against a scenario. Verb 'estimates' + resource 'credit cost' is specific. Distinguishes from sibling tools like evaluate_agent or get_run_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'before triggering it', indicating when to use. Mentions optional timeout_minutes affects estimate. No explicit when-not or alternatives, but context provides sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentRegister agentAInspect
Registers an AI agent in VerifyAX given its name, connector type (A2A, API, DIRECTLINE for Copilot Studio, or MCP), URL, and optional auth or connector settings. For A2A agents it first verifies the agent card is reachable; DIRECTLINE and MCP agents are probed before creation. Returns the new agent’s uuid and whether connectivity was checked. Note: any token, Direct Line secret, or password passed here transits the conversation — prefer supplying credentials out of band where possible.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp | No | ||
| name | Yes | Workspace-unique agent name. | |
| token | No | Token for bearer/cs auth. Sensitive — see the note in the tool description. | |
| timeout | No | Request timeout in milliseconds. | |
| agent_url | No | Endpoint URL. Required for A2A, API, and MCP (catalogue adapter A2A URL). Optional for DIRECTLINE — derived from region when omitted. | |
| agent_type | No | Defaults to A2A. | |
| directline | No | ||
| auth_method | No | ||
| description | No | ||
| agent_card_url | No | ||
| basic_password | No | Sensitive — see the note in the tool description. | |
| basic_username | No | ||
| agent_card_path | No | ||
| default_output_modes | No | ||
| include_full_context | No | ||
| include_message_history | No | ||
| max_requests_per_minute | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by detailing that A2A agents are verified for reachability and DIRECTLINE/MCP agents are probed before creation. It also warns that credentials transit the conversation. Annotations already indicate a non-read, non-destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3-4 sentences), front-loaded with the main purpose, and efficiently covers probing behavior, return information, and a security note. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (17 parameters, nested objects, no output schema), the description covers essential aspects: purpose, connector-specific behavior, security, and return value. It could be improved by mentioning error conditions or idempotency, but it is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 35% schema description coverage, the description adds some context by explaining connector types and sensitivity of credentials, but it does not individually describe the majority of parameters. The description partially compensates for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Registers an AI agent in VerifyAX given its name, connector type...' providing a specific verb and resource, and distinguishes the tool from sibling tools which focus on scenarios, runs, and evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool (registering agents) and provides context on probing behavior for different connector types. However, it does not explicitly state when not to use it or mention 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.
3 tool updates
v0.3.5- Added
delete_agent - Added
get_usage_summary - Added
list_scenarios
7 tool updates
v1.0.1- Removed
delete_agent - Added
delete_scenario - Added
generate_scenario - Removed
get_usage_summary - Added
list_agents - Removed
list_scenarios - Added
register_agent
8 tool updates
v1.0.0- First observed
delete_agent - First observed
evaluate_agent - First observed
get_run_details - First observed
get_usage_summary - First observed
list_compatible_tags - First observed
list_recent_runs - First observed
list_scenarios - First observed
preview_run_cost
TDQS
Scored across 12 tools
The set cleanly separates three resources (agents, scenarios, runs) plus usage, and list vs get vs delete verbs are clear. The only mild overlap is preview_run_cost vs evaluate_agent, but their descriptions distinguish 'estimate' from 'execute,' so an agent can pick correctly.
Every name is snake_case verb_noun (list_agents, register_agent, evaluate_agent, get_run_details, generate_scenario, etc.). The only stylistic variance is 'register_agent' instead of 'create_agent,' which is still a clear verb and consistent in form.
12 tools is well within the sweet spot for a multi-resource platform (agents, scenarios, runs, billing). Each tool maps to a distinct capability with no filler entries.
Core lifecycle is covered: agents (register/list/delete), scenarios (generate/list/delete), runs (list/get/evaluate), plus cost and usage. Minor gaps remain — no get_agent/get_scenario detail fetch, and no update operations for agents or scenarios — but agents can work around these.
Maintenance
Related MCP Connectors
Test the voice agents you run: scored transcripts, pass/fail verdicts, latency and WER metrics.
Bring professional data and tools to the AI you already use. QVeris helps AI assistants, products, and workflows find services, review supported scope, call them, and audit usage.
- OkareoOAuthcom.okareo
Simulation, evaluation and monitoring for voice agents.
Manage Speko voice-AI agents, sessions, calls, phone numbers, knowledge bases, evals, and docs.
Related MCP Servers
AlicenseAqualityBmaintenanceEnables AI assistants to interact with Coval's evaluation platform for launching and monitoring evaluation runs, managing agents and test sets, and retrieving evaluation metrics.1811 npm1MIT- AlicenseNot gradedqualityBmaintenanceEnables searching Verix records, retrieving record details, and running analysis workflows through natural language via the Verix API.MIT
- AlicenseNot gradedqualityAmaintenanceEnables LLM evaluation and observability by uploading documents, building test sets, running RAG pipelines, and automatically scoring answers for groundedness, hallucination risk, retrieval quality, latency, and cost, with tools exposed to MCP-compatible clients.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables SQL query execution and knowledge base search via RAG agent through two tools.-