{"serverId":"mcp-registry/dev.workers.3labsio.policy-gate/policy-gate","tools":[{"name":"policy_check","fixed":{"name":"policy_check","description":"Evaluate a proposed agent action against a policy and return allow / require_approval / deny with the matched rule and rationale. Paid per call via x402 ($0.005 USDC on Base); returns signing instructions when unpaid.","inputSchema":{"type":"object","required":["request"],"properties":{"ledger":{"type":"object","properties":{"unknown_usd":{"type":"number","description":"Dispatched and never resolved. Any value above zero denies with unresolved_intent, regardless of headroom: the system has lost track of this quantity. It closes by observing the target, never by a clock."},"intended_usd":{"type":"number","description":"Dispatched and not yet confirmed. Counts toward the bound, so a burst in flight is not invisible to it."},"committed_usd":{"type":"number","description":"Spend already known to have happened in the window"}},"description":"Optional cumulative exposure for the window. A per-action gate cannot see repetition: 49 payments of $40 each pass a $50 rule individually. Omit it and any policy declaring a cumulative bound returns deny with ledger_required — a cap you can skip by omitting state is decorative. Explicit zeros are an answer; an absent object is not."},"policy":{"type":"object","description":"Your own policy document, evaluated instead of ours"},"request":{"type":"object","required":["action"],"properties":{"actor":{"type":"string"},"action":{"type":"string","description":"Dotted action id, e.g. payments.send"},"params":{"type":"object"}}},"policy_id":{"type":"string","description":"Built-in policy id; see policy_rules. \"default-action-tiers-capped\" adds a cumulative spend bound."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":463,"tokensAfter":463}],"toolsChanged":1,"tokensSaved":0,"todo":[{"tool":"policy_check","params":["request"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}