Install
This page is for standalone MCP tool handlers you own directly. If MCP is being surfaced through OpenAI Agents or another higher-level SDK, use that native adapter page instead.
Net-new VerifiedX code
This is the actual VerifiedX delta in an existing MCP server.That is the important part. The rest of your MCP server stays the same: your
listTools() output, transport, server wiring, and request routing do not need to be redesigned.wrapMcpTool(...) is a thin adapter over VerifiedX core boundary wrappers. It uses the same preflight, decision-receipt, execution-report, and runtime-loopback path as the rest of the product.Full example
Do not use raw
bindHarness(...) for this path. The TypeScript MCP surface is wrapMcpTool(...).Composed systems
If this MCP tool call is part of a larger multi-agent or agent+human workflow, pass upstream context into VerifiedX so the current tool invocation has better system and situational awareness before it takes a high-impact action. This is useful when a supervisor agent, parent workflow, or human reviewer already has context that the current MCP tool should use before taking action. VerifiedX does not require a fixed schema for this. Pass the upstream context you already have in any JSON-serializable shape.Upstream context is supporting workflow context from outside the current tool invocation. It is not proof that this tool already executed any local action.
What the wrapper already does
Once wrapped, VerifiedX handles the MCP tool boundary directly. That includes:- Injecting
_meta.verifiedxinto request params and result payloads - Recording retrieval-like tools into run history as support inputs
- Preflighting high-impact tools before the handler runs
- Observing tool-result ingress with
sourceUri: "mcp://<toolName>" - Emitting MCP tool-result events with
sourceLineage: ["mcp_tool"]
callTool(...).
What gets preflighted
VerifiedX infers the protected boundary from the MCP tool name and params. That includes:memory_writeexternal_message_sendrecord_mutationsystem_change
search_memoriesrecords retrieval historyadd_memorywithnamespace,key, andvaluepreflights asmemory_write- message-like tools such as
send_emailinferexternal_message_send - record-like tools such as
update_customer_recordinferrecord_mutation - internal update tools such as
set_workflow_statusinfersystem_change
The explicit
policyScope override is mainly for durable memory writes today. Other action classes are inferred from the MCP tool name and params shape.What to expect at runtime
Protected MCP boundaries can return:allowallow_with_warningreplan_requiredgoal_fail_terminal
ok: falseblocked: trueboundary_outcomesafe_next_stepsdecision_receipt
Validation coverage
The standalone TypeScript MCP wrapper is directly covered in this repo. That includes:- A dedicated MCP wrapper test where
search_memoriesis recorded as retrieval history andadd_memoryis preflighted asmemory_write - A fixture app that wraps an MCP tool with
wrapMcpTool(...) - Additional MCP
listTools()andcallTool(...)coverage inside the OpenAI Agents TypeScript integration, including hosted MCP approval requests
Pricing note
One protected action check equals one real boundary preflight. Taint, event ingest, execution reports, and decision reads are all included at that price. The Free Sandbox includes every language, provider, framework, and adapter. VerifiedX does not replace your MCP server or orchestration. It returns receipts your system can keep local, route downstream, or pass upstream.For the full raw runtime reference, see the TypeScript SDK. If your MCP tools are being used through OpenAI Agents, see the OpenAI Agents SDK page.