agent-evidence-mcp
OfficialClick 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., "@agent-evidence-mcpverify whether this claim holds against the evidence bytes I supplied"
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.
agent-evidence-mcp
An offline, read-only MCP server that decides whether a claim about an AI system holds against evidence bytes you supply, and replays the agent-evidence conformance vectors.
It's for agent builders, auditors and platform engineers who want their assistant to check evidence instead of trusting a report.
Install the released package: pip install agent-evidence-mcp==0.2.0. It pins probity-verify==0.1.1, agent-evidence-vectors==0.23.0, agent-evidence-vocabulary==0.6.0, agent-evidence-admission==0.1.2 and jcs-admit==0.1.0 exactly. The last one carries the jcs-admit and dsse Rust crates as wheels.
Quick start
Add it to Claude Code, then ask the assistant to run the sample claim:
claude mcp add agent-evidence -- uvx agent-evidence-mcp@0.2.0Or install the Claude Code plugin: /plugin install agent-evidence --marketplace probityai/agent-evidence-mcp.
Or call a tool from Python, with no client installed beyond the package:
uvx --from agent-evidence-mcp==0.2.0 python - <<'PY'
import asyncio
from mcp.client import Client
from mcp.client.stdio import StdioServerParameters
async def main():
async with Client(StdioServerParameters(command="agent-evidence-mcp")) as client:
result = await client.call_tool("verify_sample", {"scenario": "contradicted"})
print(result.structured_content["decision"], result.structured_content["reason"])
asyncio.run(main())
PYIt prints:
contradicted selected_span_missing_from_recordA passage the report quotes is missing from the source capture, so the claim is contradicted. Use supported or not_established as the scenario for the other two decisions.
Related MCP server: deepbom
Tools
Nine tools, all read-only, offline and bounded: verify_claim, verify_sample, list_vector_corpora, run_vectors, explain_vector, lookup_term and check_artifact_digest, canonicalize_json and verify_dsse. Nothing is fetched, written or sent.
Status
Version 0.2.0. The tests run every tool through a real MCP client against the shipped corpus, and a mutation check confirms they fail when a tool's output is broken.
Documentation
page | read it for |
every tool, its arguments and what it returns | |
Claude Code, Gemini CLI, Docker and plain stdio | |
a short index for agents using the server | |
the commands to run and what never to hand-edit |
License
Apache-2.0.
Available Tools
9 toolscanonicalize_jsonCanonicalize JSON under RFC 8785CRead-onlyIdempotent
Admit one JSON document and return its RFC 8785 canonical bytes, with the jcs-admit crate.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | rfc8785 | |
| document | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds nothing beyond that — no error behavior for invalid JSON, no note on output format (bytes escaped how?), and 'admit' is unexplained jargon.
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?
A single front-loaded sentence with no padding, which is good, but 'Admit one JSON document' is awkward phrasing and 'with the jcs-admit crate' is an implementation detail that consumes words without guiding invocation.
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?
An output schema exists so return values need no explanation, but with 2 parameters at 0% schema coverage and no usage or error guidance, the description leaves the unexplained 'profile' option and input expectations unaddressed for a transformation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does not: it only implies the 'document' input. The 'profile' parameter (defaulting to rfc8785) is never mentioned, leaving an agent unaware that alternate profiles exist.
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?
Specific verb+resource: canonicalizing one JSON document into RFC 8785 canonical bytes, and the title reinforces the standard. It does not need sibling differentiation since no sibling tool does canonicalization, though the phrase 'with the jcs-admit crate' is noise rather than clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus other verification tools (check_artifact_digest, verify_dsse), no prerequisites (valid JSON input?), and no exclusions. The agent must infer usage entirely from the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_artifact_digestCheck an artifact digest against a documentBRead-onlyIdempotent
Check that an artifact has a digest a TEA, CycloneDX or in-toto document names.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | ||
| artifact_text | No | ||
| artifact_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds the useful behavioral fact that the tool reads digests declared inside external document formats rather than computing/scanning anything, but says nothing about mismatch behavior (error vs. negative result) or return shape beyond what the output schema provides.
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?
One compact sentence with the key constraint (document types) front-loaded and no filler. It is efficient, though the garbled syntax slightly undermines first-read clarity.
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?
An output schema exists so return values need not be described, but the inputs are critically underspecified: an agent cannot tell whether 'document' expects raw document text, a file path, or base64, nor when to use artifact_text versus artifact_base64. For a comparison/verification tool this leaves the call shape ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden and it does not. It never explains that 'document' is the required document payload, nor the mutually exclusive purpose of artifact_text vs artifact_base64 — the single most important ambiguity for calling this tool correctly.
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 names a specific verb (check) and resource (artifact digest) and scopes it to three document standards (TEA, CycloneDX, in-toto), which clearly separates it from generic verify_claim/verify_dsse siblings. The phrasing is awkward ('a digest a ... document names') but the intent is recoverable.
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?
Naming the supported document formats implies the situation in which to use it (when you have an SBOM/attestation-style document and want to confirm an artifact is listed). However, it never says when not to use it, nor points to verify_dsse/verify_claim/verify_sample as alternatives for adjacent verification tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_vectorExplain one conformance vectorCRead-onlyIdempotent
Return one vector: its manifest entry, the conditions it tests, and its input bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| corpus | No | vectors | |
| vector_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the payload composition (manifest entry, conditions, input bytes), but says nothing about behavior on a missing vector_id or how the default corpus is applied.
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?
A single front-loaded sentence with no filler; the key object ('one vector') comes first and the three returned components are listed inline. It is efficient, though the terseness leaves the gaps noted elsewhere unaddressed.
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?
An output schema exists, so return values needn't be spelled out, yet the 0%-coverage input schema is not compensated for: neither corpus nor vector_id is explained, and there is no error or not-found behavior. For a lookup tool with an undocumented scoping parameter, the description does too little.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never explains either parameter. The 'corpus' parameter, which defaults to 'vectors' and scopes the lookup, is entirely undocumented in both places — a real gap for an agent that must know whether to pass it.
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 ('Return') and resource ('one vector') and enumerates what comes back: the manifest entry, the tested conditions, and the input bytes. It is distinguishable from list_vector_corpora and run_vectors by its single-vector scope, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of the alternatives (list_vector_corpora for enumeration, run_vectors for execution). 'One vector' implies a single-item lookup, but the agent must infer why it would choose this over the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vector_corporaList conformance vector corporaARead-onlyIdempotent
Name every shipped corpus with its suite revision and vector counts where it declares them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds a useful behavioral caveat that vector counts are included only where the corpus declares them, but it does not discuss ordering, pagination, or other operational details beyond what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every clause contributes: the action, the scope ('shipped'), and the returned fields.
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 zero-parameter listing tool with rich annotations and an output schema, the description is complete enough to invoke correctly. It specifies the corpus scope and return content, while the output schema carries the detailed return structure.
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 tool takes zero parameters, so there are no parameter semantics to explain and the baseline is 4. The description correctly does not invent parameter 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?
The description uses a specific verb and resource: it names every shipped corpus and indicates the returned fields (suite revision and vector counts where declared). This clearly distinguishes it from sibling verification tools such as verify_dsse, verify_claim, and run_vectors, which operate on artifacts rather than enumerate corpora.
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 usage is implied: an agent can infer this is the discovery tool for available corpora, likely useful before run_vectors or explain_vector. However, the description does not explicitly state when to use it versus those siblings or mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_termLook up a vocabulary termARead-onlyIdempotent
Look a term up in the released vocabulary by exact key; otherwise suggest close keys.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, closed-world. The description adds genuinely new behavior: on a miss it does not fail but returns close keys, which changes how an agent should interpret a result. It says nothing about match scoring or limits on suggestions, but with annotations doing the safety work this is solid.
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?
A single sentence, front-loaded with the primary lookup and the fallback behavior appended. No redundant restatement of the title or name.
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?
An output schema exists, so return shape need not be described, and annotations cover the safety profile. The only remaining gap is the notion of 'released vocabulary' and key format, which a careful agent would still have to guess.
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?
One required parameter with 0% schema description coverage, so the schema says only 'Term'. The description compensates partially by indicating the value must be an exact key, but gives no format, casing, or namespacing detail for what a valid key looks like.
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 (look up) and resource (term in the released vocabulary) and pins down the matching mode as exact-key. The sibling list contains nothing overlapping, so differentiation is moot, but 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?
The sentence implies the use case (exact key lookup with a suggestion fallback), but there is no explicit guidance on when to prefer it over other lookups or what happens if the term is empty/ambiguous. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_vectorsReplay a conformance vector corpusBRead-onlyIdempotent
Replay one corpus with the bundled reference verifier; per-vector rows come back in pages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| corpus | No | vectors | |
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds two useful facts — the verifier is bundled/reference (local, deterministic) and results are paged per-vector rows — but says nothing about truncation, ordering, or failure handling.
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?
A single compact sentence with the action front-loaded and no filler. It is efficient, though arguably too terse for a tool whose parameters are entirely undocumented.
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?
An output schema exists so return values needn't be explained, and annotations cover the safety profile. But with three undocumented parameters and 0% schema coverage, the agent still cannot tell what a valid corpus value looks like or how paging should be driven — a real gap for an otherwise 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 0%, so the schema supplies no meaning for corpus, limit, or offset. The description only gestures at them ('one corpus', 'come back in pages') without explaining what corpus accepts (name vs. path), what the limit default of 50 means, or how offset behaves.
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: 'Replay one corpus with the bundled reference verifier.' That's clear enough to distinguish from list_vector_corpora and explain_vector, though the description never names the alternatives to sharpen the contrast.
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?
Usage is only implied — you gather that this is the execution/conformance step of a vector workflow — but there is no explicit 'use this when you want to validate a corpus' or any exclusion against verify_* or explain_vector siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_claimVerify a claim against evidenceCRead-onlyIdempotent
Decide one claim against evidence bytes the caller supplies, with probity-verify.
| Name | Required | Description | Default |
|---|---|---|---|
| case | Yes | ||
| policy | Yes | ||
| artifacts | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the description does not need to repeat those traits. It adds that the operation evaluates one claim against caller-supplied evidence, but it does not describe validation behavior, failure modes, or how case and policy affect the decision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient, though its extreme brevity leaves important semantics unstated; 'with probity-verify' is the only potentially expendable phrase.
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?
The tool has three parameters, two required nested objects, and 0% schema description coverage, so the description needs to carry significant input semantics. It does not do so, and although an output schema exists and annotations cover safety, the agent still lacks enough information to populate case, policy, and artifacts correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, including two required nested objects. The description mentions 'claim' and 'evidence bytes,' which loosely gestures at the domain, but it never explains the required case or policy objects and only vaguely suggests artifacts.
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 gives a specific verb and resource: 'Decide one claim against evidence bytes the caller supplies.' This clearly identifies a verification operation on a single claim, but it does not distinguish the tool from sibling verifiers such as verify_dsse or verify_sample.
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 sentence implies that the caller supplies evidence bytes, but it gives no explicit when-to-use guidance, no prerequisites, and no comparison to alternatives. In a family containing verify_dsse and verify_sample, the agent is left to infer which verifier applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_dsseVerify a DSSE envelopeCRead-onlyIdempotent
Verify a DSSE envelope against Ed25519 keys the caller trusts, with the dsse crate.
| Name | Required | Description | Default |
|---|---|---|---|
| envelope | Yes | ||
| threshold | No | ||
| trusted_keys | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds one genuinely new fact not in structured data: key material is constrained to Ed25519. It says nothing about failure behavior (error vs. result) or how multiple signatures/threshold interplay is reported.
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?
One tight sentence with the verb and key constraint front-loaded and no filler. The trailing 'with the dsse crate' is implementation detail of minimal decision value for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a security-critical verification call with a threshold parameter the description omits too much. Nothing explains threshold semantics or the trusted_keys structure, which are exactly what a caller must get right.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and parameter titles are bare, yet the description explains none of the three inputs. It does not say what form the envelope takes, what threshold counts (signatures required?), or the shape of trusted_keys objects, leaving the caller to guess at the most error-prone part of the call.
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 (verify a DSSE envelope) plus the key type accepted, so the action is unambiguous. It does not compare itself to sibling verifiers like verify_claim or check_artifact_digest, so an agent must infer which verification tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the sibling verify tools, no prerequisites, and no exclusions. The only contextual cue is 'keys the caller trusts', which is a condition of correctness rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_sampleRun a bundled sample claimCRead-onlyIdempotent
Run a bundled sample claim: contradicted, not_established or supported.
| Name | Required | Description | Default |
|---|---|---|---|
| scenario | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description's only added context is the outcome space (contradicted, not_established, supported), which is useful but largely duplicated by the output schema. It says nothing about whether state changes, what sample is used, or what the scenario selection affects.
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?
A single short, front-loaded sentence with no filler. It is efficient, though the compression is part of why the parameter meaning remains ambiguous.
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?
Output schema exists, so return values need not be explained, but the one required input is undocumented and there is no guidance on when this tool applies versus its many verification siblings. For a tool whose entire purpose is to be a canned demonstration, the description should say that plainly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required 'scenario' parameter, so the description must compensate. The three listed values ('contradicted', 'not_established', 'supported') plausibly are the legal scenario names, which adds real meaning, but the sentence never explicitly labels them as such — it reads equally as return values, so an agent cannot be confident what to pass.
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 verb+resource phrase 'Run a bundled sample claim' is specific enough to convey that this exercises a canned example rather than a user-supplied claim, but the description never states what 'run' means (verification? classification?) nor distinguishes it explicitly from the sibling verify_claim. The trailing list appears to be possible outcomes, which helps but is left unlabeled and ambiguous.
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?
There is no statement of when to use this tool, when not to, or why one would pick it over verify_claim, verify_dsse, or run_vectors. An agent must infer from the word 'bundled' that this is a demo/smoke-test path rather than real verification.
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.
9 tool updates
v0.2.0- First observed
canonicalize_json - First observed
check_artifact_digest - First observed
explain_vector - First observed
list_vector_corpora - First observed
lookup_term - First observed
run_vectors - First observed
verify_claim - First observed
verify_dsse - First observed
verify_sample
TDQS
Scored across 9 tools
Most tools have clearly distinct roles: digest checking, JSON canonicalization, DSSE verification, claim verification, vector corpus operations, and term lookup. The only mild overlap is between verify_claim, verify_sample, and run_vectors, since all involve running verification logic, but their descriptions distinguish live claims, bundled samples, and corpus replay.
All tool names use consistent snake_case with a verb_noun or verb_object pattern: check_artifact_digest, canonicalize_json, verify_dsse, verify_claim, verify_sample, list_vector_corpora, run_vectors, explain_vector, lookup_term. There are no mixed conventions or vague standalone names.
Nine tools is a well-scoped set for a focused evidence-verification server. Each tool maps to a distinct operation across canonicalization, verification, vector replay, and vocabulary lookup without excessive surface area.
The server covers core verification workflows: digest checking, JSON canonicalization, DSSE and claim verification, sample checks, vector corpus inspection/replay, and vocabulary lookup. Minor gaps may exist around artifact fetching/parsing or signing/generation, but the verification lifecycle is largely covered.
Maintenance
Related MCP Connectors
Read-only verifier for 25 ProofRelay MCP tools and non-confidential evidence bundles.
One-stop claim verification for AI agents: verdicts with confidence, evidence, signed receipts.
Tamper-evident proof creation and verification for AI agents via MCP, A2A, and REST.
Browser-local and CLI static evidence for deployed AI model artifacts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to verify claims with evidence-based truth scores and confidence levels by running a deterministic pipeline of evidence lanes and adversarial checks.26MIT
- AlicenseNot gradedqualityBmaintenanceEnables local inspection of AI model deployment artifacts without executing model code, returning SHA-256, structure, defect analysis, and evidence-gap findings in Gemini CLI conversations.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP-capable agents to verify C2PA Content Credentials entirely offline from base64 file bytes, returning validation state, signer chain, hard-binding results, actions, issues, and portable provenance cards without any upload or network calls.7 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables deterministic verification of AI agent decisions and actions, providing PASS/FAIL/ABSTAIN verdicts with replayable proofs and an optional signed receipt ledger.3 npmApache 2.0