
Security News
Anthropic Identifies Biased Reasoning and Recklessness as Drivers of Claude’s PyPI Attack
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.
@torknetwork/mcp-server
Advanced tools
TORK MCP Server - 49 governance tools for AI agents including Memory Integrity, Supply Chain, Cost Controls, and MCP Auditing
Official MCP (Model Context Protocol) server for Tork AI Governance Platform.
Part of the TORK Network - AI governance infrastructure for the agentic era.
npm install @torknetwork/mcp-server
{
"mcpServers": {
"tork-governance": {
"type": "http",
"url": "https://server.smithery.ai/@torknetwork/tork-governance"
}
}
}
Both methods connect to the same Tork governance API. Local gives you zero-latency stdio. Remote gives you one-click setup and works in browser-based MCP clients.
| Tool | Description |
|---|---|
tork_scan_pii | Scan text for PII across 50+ types and 13 countries with regional profiles (v1.1) |
tork_governed_passthrough | Execute tool calls with full governance checks |
tork_check_policy | Check content against governance policies |
tork_audit_stats | Get audit statistics for governance events |
tork_audit_logs | Query audit logs with filtering |
| Tool | Description |
|---|---|
tork_register_tool | Register a tool with governance policy |
tork_validate_tool_call | Validate a tool call before execution |
tork_tool_call_stats | Get statistics on tool calls |
| Tool | Description |
|---|---|
tork_request_approval | Request human approval for an action |
tork_approve_action | Approve a pending action |
tork_reject_action | Reject a pending action |
tork_check_approval | Check approval status |
tork_velocity_alert | Check for slicing attack patterns |
tork_hitl_check_velocity | Check approver velocity metrics |
tork_hitl_create_cooldown | Create a cooldown period |
tork_hitl_check_cooldown | Check if in cooldown |
tork_hitl_detect_slicing | Detect slicing attacks |
tork_hitl_get_config | Get HITL configuration |
| Tool | Description |
|---|---|
tork_memory_snapshot | Create memory fingerprint for integrity verification |
tork_memory_verify | Verify memory against a snapshot |
tork_memory_trust_score | Get/calculate trust score for memory |
tork_memory_track_modification | Record memory changes for audit |
| Tool | Description |
|---|---|
tork_supply_chain_register | Register a dependency |
tork_supply_chain_deps | Get agent dependencies |
tork_supply_chain_verify | Verify a dependency |
tork_supply_chain_vulns | Check for vulnerabilities |
tork_supply_chain_health | Get supply chain health score |
| Tool | Description |
|---|---|
tork_cost_record | Record a cost transaction |
tork_cost_check | Check if spend is allowed within budget |
tork_cost_summary | Get spend summary by period |
tork_cost_alerts | Get cost alerts and warnings |
tork_cost_budget_status | Check budget utilization status |
| Tool | Description |
|---|---|
tork_mcp_log_call | Log a tool invocation for audit |
tork_mcp_get_stats | Get tool usage statistics |
tork_mcp_get_alerts | Get MCP alerts and anomalies |
tork_mcp_analyze | Run anomaly detection on tool usage |
These tools connect to the live Tork Cloud API for centralized governance management. Requires TORK_API_KEY environment variable.
| Tool | Description |
|---|---|
tork_dashboard | Get dashboard statistics |
tork_list_tools | List all registered tools |
tork_list_policies | List all governance policies |
tork_get_policy | Get a specific policy by name |
tork_list_approvals | List pending HITL approval requests |
tork_approve | Approve a pending HITL request |
tork_deny | Deny a pending HITL request |
tork_cloud_audit_logs | Query audit logs with filtering |
tork_create_webhook | Create a webhook for notifications |
tork_list_webhooks | List all configured webhooks |
tork_delete_webhook | Delete a webhook by ID |
tork_governance_check | Real-time policy validation |
Read-only access to the Tork ops handover — how two Claude accounts that share no
conversation memory share an understanding of the estate instead. Requires
SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY; without them this one tool reports
itself unavailable and every other tool is unaffected.
| Tool | Description |
|---|---|
get_handover | Read a handover document: current (intent), system (script-gathered facts), lessons, or project:<name> |
There is no corresponding write tool, by design. Handover rows are written by scripts a human runs on their own machine, so an agent can read the shared history but cannot quietly rewrite what the other account believes.
tork_validate_tool_call refuses tools it has no registered policy for.
The refusal names the tool:
tool not registered: deploy_to_production
Before v1.6.0 it failed open: an unregistered tool was allowed with the
warning "Tool not registered - allowing with warning". Because the tool
registry is an in-memory map that starts empty in every new process, every
tool was unregistered until something called tork_register_tool in that
same process — so the practical default was to permit everything while
reporting that the call had been governed.
Register a policy before the tool is used:
tork_register_tool(tool_name: "deploy_to_production", allowed_agents: [...], requires_hitl: true)
export TORK_MCP_ALLOW_UNREGISTERED=true # default: unset = refuse
Only the exact string true enables it. A server started this way prints a
loud banner to stderr on startup, because in that mode it is not
enforcing tool-call governance.
Every decision — allow and block — is written to three places:
| Destination | What it holds |
|---|---|
POST /api/v1/mcp/tool-calls → mcp_tool_calls | The governance decision: policy_evaluated, policy_action, blocked_reason, validation_time_ms, checks performed |
POST /api/v1/mcp/audit → mcp_audit_log | The tool invocation detail (unchanged from earlier versions) |
POST /api/v1/attestations | The anchored, fingerprinted attestation |
The decision row and its attestation share a correlation_id /
client_event_id, so they can be joined.
Tool argument names are sent; argument values never are.
If the writer is unreachable, the decision still applies. A block stays a
block whether or not the network is up. The unwritten decision is pushed to a
bounded in-memory queue and written to stderr, and the tool's own response
carries governance_row_written: false with the reason — it is never dropped
silently. That queue is process-lifetime only and is a record of what went
unwritten, not a retry mechanism; it does not survive a restart.
tork_governed_passthrough is the gateway: it decides, and then it runs the
tool. Before v1.6.0 its allow branch ended at
{ success: true, message: "Tool call to 'x' validated and would proceed" }
so a caller could not tell a governed execution from a stub, and nothing was
ever executed (register item GOV-N13-MCP-GATEWAY-DOES-NOT-ENFORCE).
The gateway reads its policies from public.admin_tools via
GET /api/v1/tools — the same rows the admin surface edits. There is no
hardcoded list and no in-memory fallback.
If the registry cannot be read, the call is refused, with the read failure as its stated reason. It is never allowed, and it is never decided against a stale snapshot: a cached registry is served only inside its TTL and is dropped, not extended, the moment a refresh fails.
export TORK_MCP_REGISTRY_TTL_MS=30000 # default 30000; 0 disables reuse
tork_register_tool and its in-memory registry are unchanged and still back
tork_validate_tool_call, which is an advisory pre-flight check rather than
the gateway.
outcome: "refused", governed: true — governance said no. reason and
blocked_by name the check that fired.outcome: "refused", governed: false — governance could not be
read. The call was refused, and nothing was recorded as governed: no
mcp_tool_calls row and no attestation, because no policy was evaluated.outcome: "pending_approval" — a HITL gate fired; no human has decided
yet.outcome: "executed" — allowed, and the downstream tool ran. result
holds that tool's real result.outcome: "execution_failed" — allowed, and the tool did not run or ran
and failed. blocked is false: this is not a refusal.outcome is a response discriminator. The governance vocabulary is
unchanged — a decision is still only allow / block / flag on the wire and
allowed / blocked / flagged / modified in the column.
The same separation holds in the table, so a refusal and a failure are never one ambiguous row:
policy_action: blocked, status: blocked — we refused it.
response_error is null; it was never attempted.policy_action: allowed, status: failed — we permitted it and it
broke. response_error carries the error.policy_action: allowed, status: executed — we permitted it and it
ran. executed_at is set.executed_at is set only when a tool actually ran; a validation-only
decision, a block, and a permitted-but-failed call all leave it null. The
downstream tool's output is never stored — response_data stays null, for the
same reason argument values are never sent.
The gateway calls the tool over MCP, using the transport the registry declares
for the server that owns it (public.mcp_servers.server_uri /
transport_type, read through GET /api/v1/mcp). stdio, http and sse
targets are supported. If no downstream can be resolved — no owning server, an
unsupported transport, a target that resolves back to this governance server —
the call fails; it is never reported as executed.
Embedders that host tools themselves can supply their own executor with
setDownstreamExecutor().
Set environment variable:
export TORK_API_KEY=your_api_key
Optional — restores the pre-1.6.0 warn-and-allow behaviour for unregistered tools (see above). Default is to refuse:
export TORK_MCP_ALLOW_UNREGISTERED=true
Optional — how long a successfully-read tool registry may be reused by the gateway before it is re-read. A failed re-read always refuses; it never falls back to the previous snapshot:
export TORK_MCP_REGISTRY_TTL_MS=30000
Optional, and only for get_handover:
export SUPABASE_URL=https://<project>.supabase.co
export SUPABASE_SERVICE_ROLE_KEY=<service_role_key> # full DB access; own the server it runs on
export TORK_API_KEY=tork_live_xxxxxAdd to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
Basic (local mode only):
{
"mcpServers": {
"tork": {
"command": "npx",
"args": ["@torknetwork/mcp-server"]
}
}
}
With Cloud API (recommended):
{
"mcpServers": {
"tork": {
"command": "npx",
"args": ["@torknetwork/mcp-server"],
"env": {
"TORK_API_KEY": "tork_live_your_api_key_here"
}
}
}
}
Once configured, try these prompts with Claude:
Dashboard & Overview:
Memory Integrity (NEW):
Supply Chain (NEW):
Cost Controls (NEW):
MCP Auditing (NEW):
Approvals & HITL:
PII Scanning:
Regional PII Detection (v1.1):
region: ["ae"])region: ["in"], industry: "healthcare")TORK_MCP_ALLOW_UNREGISTERED=true). An unreadable registry refuses too, and is never recorded as a governed decision.mcp_tool_calls; an unreachable writer never softens a decision--force, --no-confirm, --delete-allMIT - see LICENSE
FAQs
TORK MCP Server - 49 governance tools for AI agents including Memory Integrity, Supply Chain, Cost Controls, and MCP Auditing
The npm package @torknetwork/mcp-server receives a total of 35 weekly downloads. As such, @torknetwork/mcp-server popularity was classified as not popular.
We found that @torknetwork/mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.

Research
/Security News
Malicious Chrome and Firefox extensions target Axiom Trade and Padre users, stealing session tokens and wallet data.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.