{"id":"dynamic-penalty","card_id":"card_dynamic_penalty","name":"DynamicPenalty","description":"Computes conservative cooldown and size penalty hints from recent loss streak data.","stage":1,"safety_level":"data_only_read_only","auth":{"type":"hmac-sha256","required_headers":["x-apex-tool-timestamp","x-apex-tool-nonce","x-apex-tool-content-sha256","x-apex-tool-signature"],"canonical_payload":"APEX-TOOL-V1\\n{tool_id}\\n{timestamp}\\n{nonce}\\n{sha256(canonical_json(body))}"},"permissionless":{"enabled":true,"tier":"bounded_public","rate_limit":"Shared 20 calls per IP per hour across permissionless bounded tools plus global agent-write protection","review_required":false,"note":"Anonymous bounded execution is allowed because this is a deterministic DATA ONLY penalty calculation over caller-supplied loss-streak numbers. It never releases source, keys, orders, wallets, private balances, or raw datasets."},"input_schema":{"type":"object","properties":{"consecutive_losses":{"type":"number"},"recent_net_pnl":{"type":"number"}}},"output_schema":{"type":"object","properties":{"size_multiplier":{"type":"number"},"cooldown_sec":{"type":"number"}}},"sample_input":{"consecutive_losses":3,"recent_net_pnl":-2.4},"test_vectors":[{"input":{"consecutive_losses":3,"recent_net_pnl":-2.4},"expected":{"result":{"size_multiplier":0.31,"cooldown_sec":900,"severity":"YELLOW"}},"match":"subset","verified_at":"2026-07-04T06:30:00.000Z"},{"input":{"consecutive_losses":0,"recent_net_pnl":1.5},"expected":{"result":{"size_multiplier":1,"cooldown_sec":0,"severity":"GREEN"}},"match":"subset","verified_at":"2026-07-04T06:30:00.000Z"},{"input":{"consecutive_losses":6,"recent_net_pnl":-12},"expected":{"result":{"size_multiplier":0.2,"cooldown_sec":3600,"severity":"RED"}},"match":"subset","verified_at":"2026-07-04T06:30:00.000Z"}]}