vtimestamp-mcp
Click on "Install 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., "@vtimestamp-mcpList all document timestamps for the VerusID alice@"
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.
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@latestClaude 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 |
| string | Yes | VerusID name (e.g., |
| string | One of | Path to a file to verify |
| 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 |
| string | Yes | VerusID name (e.g., |
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 byvtimestamp-mcp-write@1.2.0+) — the daemon's{data:{}}envelope produces a single ciphertext DataDescriptor withepkandivkpublished on-chain. Reading these requiresdecryptdata+ 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 byvtimestamp-mcp-write@1.1.xand earlier) — per-field DataDescriptors (sha256, title, description, filename, filesize) under labeled keys. Read directly withoutdecryptdata.
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 |
| Notes |
| VRSC mainnet | ✅ enabled | This server's primary endpoint. |
| VRSC mainnet | ❌ disabled | Fallback only. Encrypted entries fail to decrypt here, but legacy plaintext reads still work. |
| VRSCTEST | ❌ disabled | No public testnet RPC supports |
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 |
| Daemon RPC URL (e.g., |
| Path to a |
| Override: RPC username |
| Override: RPC password |
Behavior:
(no env vars) → public RPC pair (
rpc.vrsc.syncproof.netprimary,api.verus.servicesfallback). Mainnet only.VERUS_RPC_URLset → single local endpoint at that URL. Auth fromVERUS_RPC_USER+VERUS_RPC_PASSWORD, or auto-derived fromVERUS_CONF_PATHif those are missing.VERUS_CONF_PATHset (withoutVERUS_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(orverusd -chain=vrsctest) on the host you point at.
License
MIT
Available Tools
3 toolsvtimestamp_infoB
Get information about the vtimestamp service — what it is, how it works, and supported features.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| identity | Yes | VerusID name (e.g., "alice@") |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| identity | Yes | VerusID name (e.g., "alice@") | |
| file_path | No | Path to a file to verify. Mutually exclusive with text. | |
| text | No | Text string to verify. Mutually exclusive with file_path. |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v1.1.1- First observed
vtimestamp_info - First observed
vtimestamp_list - First observed
vtimestamp_verify
TDQS
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.
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.
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.
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
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
Verify VerixID proof-of-existence records and optionally prove ownership.
Tamper-evident proof creation and verification for AI agents via MCP, A2A, and REST.
Proof primitive for AI agents on MultiversX. Anchor file hashes on-chain as verifiable proofs.
Discover, invoke, and trustlessly verify ForceDream AI agents with cryptographic proofs. 17 tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.487MIT
- AlicenseAqualityAmaintenanceStamp, upgrade, and verify Bitcoin timestamps via AI agents using the OpenTimestamps protocol. No API keys required.81231MIT
- AlicenseAqualityDmaintenanceEnables 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.667MIT
- AlicenseAqualityDmaintenanceEnables AI agents to certify their creations with verifiable, timestamped proof anchored to Bitcoin, and to verify certificates.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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