Skip to main content
Glama
clevertech-os

VeriLock MCP

VeriLock MCP

@clevertech-os/verilock-mcp is a read-only Model Context Protocol server for VeriLock document metadata and cryptographic evidence. It connects to the existing https://verilock.online API and never accepts document bytes or returns signature image bytes.

Phase 1 tools

Tool

Upstream route

Authentication

list_documents

GET /api/me

Required

get_document

GET /api/documents/:id

Optional

verify_document_hash

POST /api/verify/hash

Not required

get_audit_events

GET /api/documents/:id/events

Required

get_evidence_manifest

GET /api/documents/:id/evidence-manifest

Required

get_certificate

GET /api/documents/:id/certificate

Not required

get_chain_attestation

GET /api/attestations/status/:txHash

Required

get_signing_status

Derived from GET /api/documents/:id

Optional

Every tool is annotated readOnlyHint: true, destructiveHint: false, idempotentHint: true, and openWorldHint: true. Signing and all mutations remain in the VeriLock application.

Related MCP server: proofrelay

Stdio setup

npm install
npm run build
VERILOCK_TOKEN=your-verilock-session-token npm start

Example client configuration after cloning and building this repository:

{
  "mcpServers": {
    "verilock": {
      "command": "node",
      "args": ["/absolute/path/to/verilock-mcp/dist/stdio.js"],
      "env": { "VERILOCK_TOKEN": "your-verilock-session-token" }
    }
  }
}

The package is prepared for a future npm release as @clevertech-os/verilock-mcp, but Phase 1 is currently distributed from this GitHub repository.

Streamable HTTP setup

npm run build
npm run start:http

The endpoint is POST /mcp; health is GET /healthz. The HTTP entry point forwards only the current request's Authorization: Bearer ... header. It does not use VERILOCK_TOKEN, which is reserved for stdio. Put the endpoint behind HTTPS and an access control layer before exposing it outside a trusted network.

Configuration

Copy .env.example to .env for local use. VERILOCK_API_BASE_URL defaults to https://verilock.online. HTTPS is mandatory except for http://localhost, http://127.0.0.1, and http://[::1]. The base URL is fixed at process startup and cannot be supplied by a tool caller. Request timeouts default to 10 seconds and response bodies default to a 1 MiB limit.

Privacy and security

The server forwards the session token only to the configured VeriLock API and never logs it. Upstream errors are sanitized before being returned to an MCP client. Auth-required calls fail locally when no token is present. Hash verification accepts only a 64-character hexadecimal SHA-256 digest. URL path parameters are encoded as one segment. Keep tokens in environment secrets, use TLS, and grant MCP clients only the access they need.

Deployment

The included Dockerfile runs the HTTP transport on port 8787 as the unprivileged node user. A typical deployment sets VERILOCK_API_BASE_URL, configures a TLS reverse proxy, and restricts /mcp to intended clients. Do not put a long-lived user token in a public URL or image layer.

The container sets VERILOCK_HTTP_HOST=0.0.0.0 so its published port is reachable. The non-container default remains 127.0.0.1 for safer local development.

Development

npm install
npm run format
npm run build
npm test
npm audit --omit=dev

See CONTRIBUTING.md and SECURITY.md.

Available Tools

8 tools
get_audit_eventsGet audit eventsB
Read-onlyIdempotent

Read the private, hash-only evidence event history for a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesVeriLock document id or slug

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the useful behavioral context that the events are 'private' and 'hash-only,' which indicates access restrictions and content type. It does not contradict annotations, but it also does not disclose any other operational traits such as pagination or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that communicates the verb, resource, and key qualifiers without wasted words. It is appropriately sized for a simple read operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one required, fully documented parameter and annotations covering read-only/idempotent behavior, the description provides enough context to invoke it correctly. The absence of an output schema is mitigated by the clear 'evidence event history' phrasing, though explicit details about the returned event shape or ordering would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter documentId is already documented as 'VeriLock document id or slug.' The description mentions 'for a document' but adds no additional meaning beyond the schema. The baseline of 3 applies because the schema carries the full burden and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Read the private, hash-only evidence event history for a document.' It clearly identifies the operation and resource type, and the 'private, hash-only' qualifier gives some differentiation from sibling tools. However, it does not explicitly distinguish itself from get_evidence_manifest or get_certificate, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to choose this tool over alternatives. It does not mention any exclusions, prerequisites, or conditions that would route an agent toward get_evidence_manifest, verify_document_hash, or another sibling. Usage context is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_certificateGet evidence certificateA
Read-onlyIdempotent

Read the public human-readable evidence certificate for a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesVeriLock document id or slug

TDQS

A3.8/5.0
Behavior4/5

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 meaningful behavioral context beyond annotations: the certificate is 'public' and 'human-readable', which informs expectations about access and output format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It immediately identifies the verb, resource, and key qualifiers ('public', 'human-readable'), every word earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter and no output schema, the description is largely sufficient. It names the resource and returns a 'human-readable certificate', which gives the agent a reasonable expectation of the output. However, it does not clarify how this differs from the closely related get_evidence_manifest, leaving a small gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, documentId, is fully documented in the schema as 'VeriLock document id or slug'. The description does not add parameter-level semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read'), resource ('evidence certificate'), and scope ('for a document'), making the purpose clear. It does not explicitly differentiate from the sibling get_evidence_manifest, so it misses full sibling differentiation, but the resource name itself is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a use case: retrieve the public certificate for a document. However, it provides no explicit guidance on when to choose this over siblings like get_evidence_manifest or verify_document_hash, nor any exclusions or alternative conditions. Usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chain_attestationGet chain attestationA
Read-onlyIdempotent

Read the on-chain attestation status for a transaction hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
txHashYesNimiq transaction hash

TDQS

A3.6/5.0
Behavior3/5

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 tool is clearly a safe read. The description adds no behavioral context beyond the annotations, but it is consistent with them and does not introduce contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single eight-word sentence with no filler, front-loading the verb and resource. Every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read operation with strong annotations, the description is mostly sufficient. However, with no output schema, it doesn't indicate the format or possible values of the returned attestation status, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with a description ('Nimiq transaction hash') for the only parameter, txHash. The tool description merely repeats the term 'transaction hash' without adding format, constraints, or examples, so it adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and names a distinct resource ('on-chain attestation status') with a transaction hash input, making the operation clear. It does not explicitly distinguish itself from siblings such as get_signing_status or get_certificate, but the resource is concrete enough to be identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided, and no alternative tools are mentioned. The appropriate context is only implied by the verb/resource combination.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_documentGet a VeriLock documentA
Read-onlyIdempotent

Get public metadata and signing information for a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesVeriLock document id or slug

TDQS

A3.7/5.0
Behavior3/5

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 agent knows this is a safe read operation. The description adds 'public metadata' which implies no special permissions are needed, adding a bit of context beyond the annotations. However, it does not describe what happens if the document doesn't exist or if it's private, or mention any rate limits or authentication requirements beyond public access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, compact sentence that conveys the essential purpose without any extraneous detail. It is front-loaded with the action and object, and every word adds value. This is an excellent example of concise, effective description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and no output schema, the description is adequate. It tells the agent what the tool does and that the data is public. However, given the openWorldHint, it might benefit from clarifying whether it returns data for any document or only those the user has access to, and what constitutes 'public metadata' specifically. Overall, it is sufficient for basic usage but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% - the only parameter, documentId, is clearly described as 'VeriLock document id or slug'. However, the description doesn't clarify the format of that id/slug beyond what the schema says, such as example values or whether it's a URL-encoded string. The description is consistent but adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Get' and resource 'document', and specifies the content: 'public metadata and signing information'. This clearly distinguishes it from siblings like get_certificate or get_audit_events, which focus on other aspects. The title reinforces the purpose, but the description adds the detail about what is retrieved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it is for retrieving metadata and signing info, and the readOnlyHint and idempotentHint suggest safe usage. However, it does not explicitly state when to use this tool versus siblings like get_signing_status or get_evidence_manifest. This is a gap, as the agent might not know if this is the right tool for a specific signing detail query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_evidence_manifestGet evidence manifestB
Read-onlyIdempotent

Read the cryptographic evidence manifest for a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesVeriLock document id or slug

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with annotations (readOnlyHint=true) and does not contradict them. But it adds no behavioral context beyond what the annotations already state: there is no mention of what the manifest contains, whether anything is computed or merely retrieved, or what happens when the document is missing. With annotations carrying the safety profile, the description contributes little extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one clear, front-loaded sentence with no filler. It names the action first and the resource, and every word carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with thorough annotations, the description is minimally sufficient, but since there is no output schema it does not tell the agent what the evidence manifest looks like or how to interpret the response. It also lacks the sibling differentiation that would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the only parameter, documentId, is already described as 'VeriLock document id or slug'. The description says 'for a document', which aligns with the parameter, but does not add extra semantics about slugs, format, or edge cases beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and a specific resource ('cryptographic evidence manifest for a document'), clearly identifying the tool's action. It does not, however, explain what the manifest contains or how it differs from siblings like verify_document_hash or get_certificate, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of get_document, verify_document_hash, get_chain_attestation, or get_certificate. The agent must infer the intended use case solely from the phrase 'evidence manifest' and the sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signing_statusGet signing statusA
Read-onlyIdempotent

Return a compact signing status summary derived only from the document response.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesVeriLock document id or slug

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds meaningful behavioral context with 'derived only from the document response', indicating the status is a computed/local summary rather than an independent external verification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no wasted words, and the core result ('compact signing status summary') plus the key qualifier ('derived only from the document response') are front-loaded. It is appropriately concise for a simple one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity and strong annotations, the description is mostly adequate. However, there is no output schema and the description does not specify what fields or states the 'signing status summary' includes, leaving some ambiguity about the exact return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for the single parameter, including the format ('VeriLock document id or slug'). The tool description adds no additional parameter meaning, so the schema carries the burden, which is acceptable at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and identifies a unique resource ('compact signing status summary') with an explicit derivation source ('from the document response'). This clearly distinguishes it from sibling tools like get_document or verify_document_hash, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of a sibling such as get_document or get_audit_events. The description only states what it returns, leaving the agent to infer when a 'signing status summary' is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_documentsList VeriLock documentsA
Read-onlyIdempotent

List documents available to the authenticated account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only 'available to the authenticated account,' which clarifies data scoping but does not disclose any behavioral traits such as pagination, ordering, or result size. Given the annotations, this is a baseline score with minor added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It is front-loaded with the action 'List documents' and immediately specifies the scope. Every word earns its place, making it appropriately sized and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should clarify what is returned (e.g., full documents, metadata, pagination) to help an agent interpret the result. It only states that documents are listed, which is minimally functional but leaves gaps about the return format and potential filtering. Given the tool's simplicity and annotations, a 3 is fair as it is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and schema coverage is trivially 100%. With 0 params, the baseline is 4 per the rubric. The description does not need to explain parameters and is not missing anything, as there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('documents') with a clear scope ('available to the authenticated account'). It implicitly differentiates from sibling get_document by being plural and general, making it obvious this tool returns a collection rather than a single item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus the seven siblings. It does not state whether to use this before get_document, or when to prefer verify_document_hash, etc. The description gives no context for selection, leaving the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_document_hashVerify a document hashA
Read-onlyIdempotent

Find VeriLock records matching an exact SHA-256 digest. No document bytes are accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
sha256Yes64-character SHA-256 digest in hexadecimal

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context by emphasizing exact matching and rejecting document bytescard. It does not detail return shape or pagination, but the annotations carry most of the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core behavior is front-loaded, and the critical input constraint is stated immediately after.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup tool, the description, schema, and annotations together provide enough information for correct invocation. Return value details are not specified, but no output schema exists and the semantics are simple enough that this is not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents that 'sha256' is a 64-character hexadecimal SHA-256 digest. The description adds modest value by reinforcing 'exact' and explicitly saying no document bytes are accepted, but it does not substantially expand on the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Find'), a clear resource ('VeriLock records'), and a precise criterion ('exact SHA-256 digest'). It clearly distinguishes this tool from the sibling get/list tools because it is a hash-based lookup rather than a document retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence, 'No document bytes are accepted,' explicitly warns against a common misuse and implies the intended use case: call this when you have a SHA-256 digest and want matching records. It does not name sibling alternatives explicitly, but the context and first sentence make the distinction clear enough.

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.

  1. 8 tool updatesv0.1.0
    • First observedget_audit_events
    • First observedget_certificate
    • First observedget_chain_attestation
    • First observedget_document
    • First observedget_evidence_manifest
    • First observedget_signing_status
    • First observedlist_documents
    • First observedverify_document_hash

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes—list, get, verify, and the various evidence artifact retrievals are well separated. There is minor overlap between get_document's signing information and get_signing_status's signing summary, which could cause occasional misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: list_documents, get_document, verify_document_hash, get_audit_events, and so on. The pattern is predictable and makes the group easy to navigate.

Tool Count5/5

Eight tools is well within the ideal range for a document verification/evidence server. Each tool covers a distinct operation needed for verification workflows without being bloated or thin.

Completeness4/5

The server covers the core read-side workflow: listing, retrieving, hash verification, audit events, evidence manifests, certificates, chain attestation, and signing status. A minor gap is the absence of a direct signature or document-binary verification behavior, though the hash-only approach may be intentional.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Read-only ProofRelay MCP verifier for non-confidential evidence bundles. Exposes 22 public-safe tools, 11 resources, and 11 prompts for bundle integrity checks, receipt-chain review, checkpoint recommendations, MCP risk metadata review, and real-estate closing proof-pack readiness.
    5
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Provides a read-only MCP interface to query and retrieve verifiable evidence from a local memory bank, supporting search, dossier, chronology, source, and evidence tools.
    6
    BSD Zero Clause
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a local-first, evidence-backed ledger for physical property, enabling agents to search inventory, prepare capture reviews, and inspect proposals through MCP. Enforces strict boundaries: scoped reads by default, with private write access limited to preparing, not applying, mutations.
    MIT