vtimestamp-mcp-write
Enables AI agents to create document timestamps on a VerusID, writing directly to the Verus blockchain via a local or remote daemon.
README
vtimestamp-mcp-write
MCP server for creating vtimestamp proofs on the Verus blockchain.
Enables AI agents (Claude Desktop, VS Code, etc.) to create document timestamps on a VerusID — writing directly to the Verus blockchain via a local or remote daemon.
Looking for the read-only server? See vtimestamp-mcp — no daemon or wallet required.
Prerequisites
- Node.js 18+
- Verus daemon (
verusd) running with:- The identity's private key imported into the wallet
- RPC access enabled (default on localhost)
Installation
Claude Code
claude mcp add --transport stdio --scope user vtimestamp-write -- npx vtimestamp-mcp-write@latest
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"vtimestamp-write": {
"command": "npx",
"args": ["-y", "vtimestamp-mcp-write@latest"]
}
}
}
That's it — the server auto-detects your RPC credentials from VRSC.conf (see Configuration below).
VS Code
Add to your VS Code MCP settings:
{
"mcp": {
"servers": {
"vtimestamp-write": {
"command": "npx",
"args": ["-y", "vtimestamp-mcp-write@latest"]
}
}
}
}
Configuration
The server automatically reads RPC credentials from your local VRSC.conf file. No manual configuration is needed for most users.
Auto-detected VRSC.conf paths:
- macOS:
~/Library/Application Support/Komodo/VRSC/VRSC.conf - Linux:
~/.komodo/VRSC/VRSC.conf - Windows:
%AppData%\Roaming\Komodo\VRSC\VRSC.conf
Environment Variables
All optional — only needed for non-standard setups or remote daemons.
| Variable | Description |
|---|---|
VERUS_CONF_PATH |
Custom path to VRSC.conf |
VERUS_RPC_URL |
Override: daemon RPC URL (for remote daemons) |
VERUS_RPC_USER |
Override: RPC username (for remote daemons) |
VERUS_RPC_PASSWORD |
Override: RPC password (for remote daemons) |
Tools
vtimestamp_create
Create a new timestamp on a VerusID. Provide either a file path or text — the server computes the SHA-256 hash automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
identity |
string | Yes | VerusID name (e.g., alice@) |
file_path |
string | One of | Path to a file to hash and timestamp |
text |
string | One of | Text to hash and timestamp (e.g., an attestation or report) |
title |
string | Yes | Title for the timestamp |
description |
string | No | Description of the content |
filename |
string | No | Original filename (auto-detected when using file_path) |
filesize |
number | No | File size in bytes (auto-detected when using file_path) |
sourceoffunds |
string | No | Funding address (R-address, z-address, or ID@) |
feeoffer |
number | No | Fee offer in VRSC (default: 0.0001) |
Either file_path or text must be provided (mutually exclusive).
Example prompts:
- "Timestamp the file at /path/to/report.pdf on alice@"
- "Timestamp this text on alice@: I attest that invoice #4521 was approved"
Success response:
{
"success": true,
"identity": "alice@",
"hash": "a7f3b2c1...",
"title": "Q4 Report",
"transaction_id": "abc123...",
"message": "Timestamp created successfully"
}
Error cases:
- Identity not found → error with identity name
- Duplicate hash → error with existing block height and txid
- File not found →
InvalidParamserror - RPC failure → error with daemon message
How It Works
The server connects to your Verus daemon (local or remote) to create on-chain timestamps. The daemon must have the identity's private key in its wallet to sign the updateidentity transaction.
AI Agent (Claude Desktop, VS Code, etc.)
│ stdio (JSON-RPC)
▼
vtimestamp-mcp-write (local)
│ HTTP (JSON-RPC 1.0, with auth)
▼
Your Verus Daemon (verusd)
├── Has identity's private key in wallet
├── Signs and broadcasts updateidentity tx
└── Local (127.0.0.1) or remote (VPS)
On-chain storage shape
As of v1.2.0, this server writes timestamps as public-encrypted entries under the VerusID's contentmultimap. Each timestamp produces a single entry under the proof.basic outer key (iJvkQ3uTKmRoFiE3rtP8YJxryLBKu8enmX) using the daemon's {data: {...}} envelope shorthand. The daemon expands that to an on-chain DataDescriptor with flags: 13 (HAS_OBJECTDATA | ENCRYPTED | HAS_IVK) — ciphertext in objectdata, plus published epk and ivk fields.
The metadata (sha256, title, description, filename, filesize) is JSON-stringified into a single message before encryption, so one decrypt call recovers all fields. Because the IVK is published on-chain (public-encrypted mode), anyone can decrypt these entries — no key sharing or wallet access is required for readers. See vtimestamp-mcp for the read side.
What this means for inspection:
- Inspecting the cmm via any read RPC (
getidentity,getidentityhistory,getidentitycontent) returns the ciphertext descriptor, not readable strings. - Recovering the original fields requires a
decryptdatacall passing the descriptor + the originating txid +retrieve: true. The daemon stores ciphertext as an indirect reference back to the writing transaction — the txid is part of the decrypt input. - Verifying a hash against an identity does not require a wallet — only daemon RPC access to a node that has
decryptdatawhitelisted.
Legacy entries continue to work. Timestamps written by 1.1.x and earlier (plaintext per-field DataDescriptors with flags: 0) remain on-chain forever (cmm is append-only), and vtimestamp-mcp@1.2.0+ reads both shapes transparently.
For background, see How to Publish Encrypted Data on an Identity.
Daemon Setup
Local daemon
The simplest setup — verusd runs on the same machine as the MCP server. No configuration needed — credentials are auto-detected from VRSC.conf.
Remote daemon (VPS)
You can point the MCP server at a verusd instance running on another machine (e.g., a VPS). The daemon needs two config changes in its VRSC.conf:
- Allow your IP: Add
rpcallowip=<your-ip>(the daemon only accepts localhost by default) - Open the port: Ensure the RPC port (27486) is reachable through any firewalls
Then set the env var overrides (VERUS_RPC_URL, VERUS_RPC_USER, VERUS_RPC_PASSWORD) in your MCP config.
Important: RPC credentials are sent over plain HTTP. If connecting over the open internet (not a local network), use an SSH tunnel to secure the connection:
ssh -L 27486:127.0.0.1:27486 user@your-vps
Then use VERUS_RPC_URL=http://127.0.0.1:27486 as if it were local — the tunnel handles the rest.
Security Notes
- This server reads your
VRSC.confto auto-detect RPC credentials — no secrets are copied or stored elsewhere - This server performs on-chain writes that cost a small transaction fee (default 0.0001 VRSC)
- The server only connects to your local daemon (or the URL you configure) — no data is sent elsewhere
- If connecting to a remote daemon, use an SSH tunnel rather than exposing the RPC port directly
- The
sourceoffundsparameter can be used to control which address pays fees
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。