@verifiedstate/mcp
Official MCP bridge for VerifiedState — connect Claude Code, Cursor, Windsurf, and other MCP clients to verified memory and Proof Meter.
This package runs a local stdio MCP server that proxies tool calls to the hosted endpoint. Your API key never leaves your machine except as Authorization: Bearer to VerifiedState.
Hosted MCP server
| Item | Value |
|---|---|
| MCP URL | https://mcp.verifiedstate.ai/mcp |
| Discovery (Agent Card) | https://mcp.verifiedstate.ai/.well-known/agent-card.json |
| Dashboard & keys | verifiedstate.ai · API keys |
Clients that support remote HTTP MCP can point directly at the URL above and send:
Authorization: Bearer vs_live_...
Tools (13)
| Tool | Description |
|---|---|
memory_ingest |
Ingest content into verified memory; returns artifact_id. |
memory_query |
Semantic search over verified memory with ranked assertions and receipts. |
memory_verify |
Run verification on an assertion; produces a signed receipt. |
memory_health |
Namespace health: counts, verification ratio, stale/expired, conflicts. |
meter_authorize |
Create a Proof Meter capability with a spend budget. |
meter_spend |
Record spend against a capability; returns a hash-chained receipt. |
meter_budget |
Remaining budget and spend summary for a capability. |
meter_settle |
Settle receipts into a Merkle-rooted batch. |
meter_verify |
Cryptographically verify a spend receipt. |
meter_receipts |
List and filter spend receipts for a namespace. |
session_save |
Persist session state (summary, files, decisions, next steps). |
session_load |
Load the last saved session for a project. |
session_end |
End session with optional summary (sessions also auto-persist). |
Install
npm install @verifiedstate/mcp
Or use without installing:
npx -y @verifiedstate/mcp
Environment
| Variable | Required | Description |
|---|---|---|
VERIFIEDSTATE_API_KEY |
Yes (for tools/call) |
API key from verifiedstate.ai/keys |
VERIFIEDSTATE_NAMESPACE_ID |
No | Default namespace_id injected into tool arguments when omitted |
MCP configuration
Cursor
Add to your MCP config (e.g. Cursor Settings → MCP), replacing the placeholder key:
{
"mcpServers": {
"verifiedstate": {
"command": "npx",
"args": ["-y", "@verifiedstate/mcp"],
"env": {
"VERIFIEDSTATE_API_KEY": "vs_live_YOUR_KEY_HERE",
"VERIFIEDSTATE_NAMESPACE_ID": "optional-default-namespace-uuid"
}
}
}
}
Claude Code
Same shape as Cursor — merge into your Claude Code MCP configuration:
{
"mcpServers": {
"verifiedstate": {
"command": "npx",
"args": ["-y", "@verifiedstate/mcp"],
"env": {
"VERIFIEDSTATE_API_KEY": "vs_live_YOUR_KEY_HERE"
}
}
}
}
Windsurf
Use the equivalent MCP server entry in Windsurf’s config (stdio command + env):
{
"mcpServers": {
"verifiedstate": {
"command": "npx",
"args": ["-y", "@verifiedstate/mcp"],
"env": {
"VERIFIEDSTATE_API_KEY": "vs_live_YOUR_KEY_HERE"
}
}
}
}
Remote HTTP (if your client supports it)
Point the client at https://mcp.verifiedstate.ai/mcp and configure Bearer authentication with your API key. The exact JSON shape depends on the product; refer to your client’s docs for “remote MCP” or “SSE/HTTP MCP”.
Programmatic config helper
import { getConfig } from '@verifiedstate/mcp';
const config = getConfig('vs_live_...', 'optional-namespace-id');
// => { mcpServers: { verifiedstate: { command, args, env } } }
License
MIT — see LICENSE.
Contributing
See CONTRIBUTING.md.