MCP & tool verification
Your project keeps a registry of the tools and MCP servers agents are allowed to touch. Every tool call is resolved against it: unknown tools are auto-registered as unapproved (and blocked by default policy), unapproved MCP servers raise warnings, and each entry tracks usage and risk.
Registering tools
# Approve the tools your agents are supposed to use:
curl -X POST https://www.proofledger.dev/api/tools \
-H "authorization: Bearer $PROOFLEDGER_API_KEY" \
-H "content-type: application/json" \
-d '{ "name": "refund_lookup", "type": "function",
"provider": "internal", "approved": true, "riskLevel": "low" }'
# MCP servers carry their URL:
curl -X POST https://www.proofledger.dev/api/tools \
-H "authorization: Bearer $PROOFLEDGER_API_KEY" \
-H "content-type: application/json" \
-d '{ "name": "github_mcp", "type": "mcp",
"mcpServerUrl": "mcp://github-mcp.internal",
"approved": true, "riskLevel": "medium" }'Or use the dashboard's Tools & MCP page — one-click approve/revoke, risk levels, and per-tool usage counts. Restrict a tool to specific agents with allowedAgents.
What happens to unknown tools
await ProofLedger.logToolCall({ toolName: "crypto_wallet_tool" });
// Pipeline response:
// policy.decision = "block" (default "Block unknown tools" policy)
// security events = unknown_tool (high) + blocked_action + policy_violation
// trust = 100 → 77
// registry = crypto_wallet_tool auto-registered, approved: false,
// riskLevel: "high" — visible in the dashboard for reviewThe call is never silently dropped — it is recorded, blocked, scored, and surfaced. An operator can then approve the tool (turning future calls into allow) or leave it blocked.
MCP calls
await ProofLedger.logToolCall({
toolName: "market_data_mcp",
toolType: "mcp",
mcpServer: "mcp://data-scraper.example.net",
workflowId,
});
// Registered but NOT approved MCP server → decision "warn" +
// an unknown_tool security event. Approved → "allow".Production
Before switching to enforce mode, register and approve every tool your agents legitimately use — the quickest way is to run in monitor mode for a day and approve what shows up under Tools & MCP.