Skip to main content
Glama
vdappdev2

vtimestamp-mcp

by vdappdev2

vtimestamp-mcp

MCP server for verifying and querying vtimestamp proofs on the Verus blockchain.

Enables AI agents (Claude Desktop, VS Code, etc.) to verify document timestamps and list all timestamps on a VerusID — directly from the blockchain.

Looking for the write server? See vtimestamp-mcp-write — needs a local daemon and a wallet with the identity's private key.

Installation

Claude Code

claude mcp add --transport stdio --scope user vtimestamp-read -- npx vtimestamp-mcp@latest

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "vtimestamp": {
      "command": "npx",
      "args": ["-y", "vtimestamp-mcp@latest"]
    }
  }
}

Using yarn:

{
  "mcpServers": {
    "vtimestamp": {
      "command": "yarn",
      "args": ["dlx", "vtimestamp-mcp"]
    }
  }
}

Using pnpm:

{
  "mcpServers": {
    "vtimestamp": {
      "command": "pnpm",
      "args": ["dlx", "vtimestamp-mcp"]
    }
  }
}

VS Code

Add to your VS Code MCP settings:

{
  "mcp": {
    "servers": {
      "vtimestamp": {
        "command": "npx",
        "args": ["-y", "vtimestamp-mcp@latest"]
      }
    }
  }
}

Related MCP server: otskit-mcp

Tools

vtimestamp_verify

Verify whether a file or text has been timestamped on a VerusID. Provide either a file path or text — the server computes the SHA-256 hash and checks it against the on-chain record.

Parameter

Type

Required

Description

identity

string

Yes

VerusID name (e.g., alice@)

file_path

string

One of

Path to a file to verify

text

string

One of

Text string to verify

Either file_path or text must be provided (mutually exclusive).

Example prompts:

  • "Check if the file at /path/to/report.pdf has been timestamped on alice@"

  • "Verify this text was timestamped on bob@: I attest that invoice #4521 was approved"

vtimestamp_list

List all timestamps recorded on a VerusID.

Parameter

Type

Required

Description

identity

string

Yes

VerusID name (e.g., alice@)

Example: "What documents has alice@ timestamped?"

vtimestamp_info

Get information about the vtimestamp service.

No parameters.

Example: "What is vtimestamp?"

How It Works

By default, the server queries a public Verus mainnet RPC endpoint. No wallet, no API keys, no authentication required.

AI Agent (Claude Desktop, VS Code, etc.)
    │ stdio (JSON-RPC)
    ▼
vtimestamp-mcp (local)
    │ HTTPS (JSON-RPC 1.0)
    ▼
Public Verus Mainnet RPC (rpc.vrsc.syncproof.net, fallback api.verus.services)

You can also point this server at your own daemon — useful for testnet (where no public RPC supports decryption), high-volume agents, custom chains, or anyone who'd rather not have their inspections hit a public RPC. See Configuration below.

On-chain storage shape

vtimestamps are stored under a VerusID's contentmultimap and read via getidentityhistory (one history entry per updateidentity). This server handles two on-chain shapes transparently:

  • Public-encrypted (flags: 13, written by vtimestamp-mcp-write@1.2.0+) — the daemon's {data:{}} envelope produces a single ciphertext DataDescriptor with epk and ivk published on-chain. Reading these requires decryptdata + the originating txid + retrieve: true. Because the IVK is on-chain (public-encrypted mode), anyone can decrypt — no key sharing.

  • Legacy plaintext (flags: 0, written by vtimestamp-mcp-write@1.1.x and earlier) — per-field DataDescriptors (sha256, title, description, filename, filesize) under labeled keys. Read directly without decryptdata.

The reader branches on each entry's flags. Mixed identities (legacy entries from older writes alongside new encrypted entries) are handled correctly — both surface in vtimestamp_list output.

For background, see How to Publish Encrypted Data on an Identity.

Public RPC requirement

decryptdata is a daemon RPC method that public Verus RPCs do not all whitelist. As of writing:

Endpoint

Chain

decryptdata

Notes

https://rpc.vrsc.syncproof.net

VRSC mainnet

✅ enabled

This server's primary endpoint.

https://api.verus.services

VRSC mainnet

❌ disabled

Fallback only. Encrypted entries fail to decrypt here, but legacy plaintext reads still work.

https://api.verustest.net

VRSCTEST

❌ disabled

No public testnet RPC supports decryptdata. Testnet encrypted reads require a local daemon.

If syncproof is unreachable and the call falls back to api.verus.services, encrypted entries will gracefully surface as un-decryptable rather than crashing.

Configuration

For default public-RPC use, no configuration is needed. To point the server at your own daemon (required for testnet, recommended for high-volume use), set environment variables.

Environment Variables

All optional. Setting any of these switches the server from public-RPC mode to local-daemon mode.

Variable

Description

VERUS_RPC_URL

Daemon RPC URL (e.g., http://127.0.0.1:27486 for mainnet, http://127.0.0.1:18843 for testnet)

VERUS_CONF_PATH

Path to a VRSC.conf / vrsctest.conf file. Auto-derives URL (http://127.0.0.1:<rpcport>) and credentials.

VERUS_RPC_USER

Override: RPC username

VERUS_RPC_PASSWORD

Override: RPC password

Behavior:

  • (no env vars) → public RPC pair (rpc.vrsc.syncproof.net primary, api.verus.services fallback). Mainnet only.

  • VERUS_RPC_URL set → single local endpoint at that URL. Auth from VERUS_RPC_USER + VERUS_RPC_PASSWORD, or auto-derived from VERUS_CONF_PATH if those are missing.

  • VERUS_CONF_PATH set (without VERUS_RPC_URL) → URL = http://127.0.0.1:<rpcport> from the conf, with credentials from the conf.

Local daemon example (testnet)

{
  "mcpServers": {
    "vtimestamp": {
      "command": "npx",
      "args": ["-y", "vtimestamp-mcp@latest"],
      "env": {
        "VERUS_CONF_PATH": "/Users/you/Library/Application Support/Komodo/vrsctest/vrsctest.conf"
      }
    }
  }
}

Or pin everything explicitly:

{
  "mcpServers": {
    "vtimestamp": {
      "command": "npx",
      "args": ["-y", "vtimestamp-mcp@latest"],
      "env": {
        "VERUS_RPC_URL": "http://127.0.0.1:18843",
        "VERUS_RPC_USER": "rpc-user-from-conf",
        "VERUS_RPC_PASSWORD": "rpc-password-from-conf"
      }
    }
  }
}

Requirements

  • Node.js 18+

  • For default operation: nothing else — uses public mainnet RPC.

  • For testnet or local-daemon mode: a running verusd (or verusd -chain=vrsctest) on the host you point at.

License

MIT

Available Tools

3 tools
vtimestamp_infoB

Get information about the vtimestamp service — what it is, how it works, and supported features.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a read operation ('Get information'), which is helpful, but doesn't cover other traits like authentication needs, rate limits, error handling, or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the key action ('Get information') and specifies the scope ('vtimestamp service — what it is, how it works, and supported features'). There's no wasted text, making it easy to parse, though it could be slightly more structured for clarity.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate as a basic informational tool. It explains the purpose but lacks details on behavioral traits and usage context. Without annotations or output schema, it should ideally provide more on what information is returned or how to interpret results, leaving some gaps.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description appropriately doesn't discuss parameters, focusing on the tool's purpose instead. A baseline score of 4 is applied as it compensates well for the lack of parameters by explaining what the tool does.

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 clearly states the tool's purpose with a specific verb ('Get information') and resource ('vtimestamp service'), explaining it provides details about what the service is, how it works, and its features. However, it doesn't explicitly differentiate from sibling tools like vtimestamp_list or vtimestamp_verify, which likely list or verify timestamps rather than describe the service itself.

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 provides no guidance on when to use this tool versus its siblings (vtimestamp_list, vtimestamp_verify). It implies usage for learning about the service, but lacks explicit context, prerequisites, or alternatives, leaving the agent to infer based on tool names alone.

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

vtimestamp_listC

List all timestamps recorded on a VerusID. Returns an array of timestamps with hash, title, metadata, and blockchain proof details.

ParametersJSON Schema
NameRequiredDescriptionDefault
identityYesVerusID name (e.g., "alice@")

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return format ('array of timestamps with hash, title, metadata, and blockchain proof details'), which is helpful, but fails to address critical aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or error conditions. The description adds some value but leaves significant gaps for a tool with no 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.

Conciseness4/5

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

The description is concise and front-loaded, consisting of two sentences that efficiently state the action and return value. There is no wasted text, but it could be slightly improved by integrating usage context or sibling differentiation without sacrificing brevity.

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

Completeness3/5

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

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and return format, but lacks details on behavioral traits, usage guidelines, and error handling. For a simple list tool, this is acceptable but leaves room for improvement 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?

The input schema has 100% description coverage, clearly documenting the single required parameter 'identity' as a VerusID name. The description does not add any additional meaning beyond what the schema provides, such as examples of valid formats beyond 'alice@' or edge cases. Baseline score of 3 is appropriate since the schema does the heavy lifting.

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 clearly states the tool's purpose with a specific verb ('List') and resource ('timestamps recorded on a VerusID'), and it distinguishes the scope by mentioning 'all timestamps'. However, it doesn't explicitly differentiate from sibling tools like 'vtimestamp_info' or 'vtimestamp_verify', which might provide more detailed or verification-focused functionality.

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 provides no guidance on when to use this tool versus its siblings ('vtimestamp_info' and 'vtimestamp_verify'). It lacks context on prerequisites, such as whether the VerusID must exist or be accessible, and offers no explicit alternatives or exclusions for usage.

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

vtimestamp_verifyA

Verify whether a file or text has been timestamped on a VerusID. Provide either a file_path or text — the server computes the SHA-256 hash and checks it against the on-chain record. Returns blockchain proof details if found.

ParametersJSON Schema
NameRequiredDescriptionDefault
identityYesVerusID name (e.g., "alice@")
file_pathNoPath to a file to verify. Mutually exclusive with text.
textNoText string to verify. Mutually exclusive with file_path.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: the server computes SHA-256 hash, checks against on-chain records, and returns blockchain proof details. However, it doesn't mention error conditions, rate limits, authentication requirements, or what happens when no timestamp is found.

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 perfectly front-loaded with the core purpose in the first sentence, followed by implementation details. Every sentence earns its place by adding necessary information about parameters and return values. No wasted words or redundancy.

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 verification tool with no annotations and no output schema, the description does well by explaining the verification process and return values. However, it could be more complete by mentioning error cases, what 'blockchain proof details' includes, or whether this is a read-only operation.

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%, so the schema already documents all parameters thoroughly. The description adds marginal value by explaining the mutual exclusivity of file_path and text parameters and mentioning the SHA-256 hash computation, but doesn't provide additional semantic context beyond what's in 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 clearly states the specific action ('verify'), the resource ('a file or text'), and the verification target ('has been timestamped on a VerusID'). It distinguishes from sibling tools (vtimestamp_info, vtimestamp_list) by focusing on verification rather than information listing.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool (to verify timestamping) and specifies the mutually exclusive parameter options (file_path or text). However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.1.1
    • First observedvtimestamp_info
    • First observedvtimestamp_list
    • First observedvtimestamp_verify

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: vtimestamp_info provides service information, vtimestamp_list retrieves recorded timestamps, and vtimestamp_verify checks for timestamp existence. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with the prefix 'vtimestamp_' (e.g., vtimestamp_info, vtimestamp_list, vtimestamp_verify). This uniformity ensures predictable and readable naming across the toolset.

Tool Count5/5

With 3 tools, the server is well-scoped for its purpose of timestamping and verification on VerusID. Each tool serves a distinct and essential function (info, list, verify), and there are no extraneous or missing tools for this focused domain.

Completeness4/5

The toolset covers core operations: getting service info, listing timestamps, and verifying timestamps. A minor gap exists in the lack of a tool to create or record new timestamps, but agents can still perform key workflows with the provided tools.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to sign decisions with post-quantum cryptographic proofs and maintain secure audit trails for compliance. It provides tools for stamping events, verifying chain integrity, and exporting audit data across industries like finance and healthcare.
    4
    87
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Stamp, upgrade, and verify Bitcoin timestamps via AI agents using the OpenTimestamps protocol. No API keys required.
    8
    123
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to certify documents, prove agreements, and verify counterparty claims with on-chain receipts on Hedera Hashgraph. Provides tools for document certification, two-party attestation, and agent registration with zero-config setup.
    6
    67
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vdappdev2/vtimestamp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server