configure_budget
Set spending limits for Bitcoin Lightning Network payments, controlling maximum satoshis per request and per session to manage autonomous transaction costs.
Instructions
Set spending limits for the session.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| per_request | No | Maximum satoshis per individual request | |
| per_session | No | Maximum total satoshis for the entire session |
Implementation Reference
- The actual implementation of the 'configure_budget' tool, which handles the validation and setting of spending limits via the BudgetManager.
async def configure_budget( per_request: int = 1000, per_session: int = 10000, budget_manager: "BudgetManager | None" = None, ) -> str: """ Set spending limits for the session. Args: per_request: Maximum satoshis per individual request per_session: Maximum total satoshis for the entire session budget_manager: Budget manager instance Returns: JSON with confirmation of limits set """ if not budget_manager: return json.dumps( {"success": False, "error": "Budget manager not initialized"} ) try: # Validate inputs if per_request <= 0: return json.dumps( {"success": False, "error": "per_request must be positive"} ) if per_session <= 0: return json.dumps( {"success": False, "error": "per_session must be positive"} ) if per_request > per_session: return json.dumps( { "success": False, "error": "per_request cannot exceed per_session", } ) # Update limits limits = budget_manager.configure( per_request=per_request, per_session=per_session, ) # Get current status status = budget_manager.get_status() result = { "success": True, "limits": { "per_request": limits.per_request, "per_session": limits.per_session, }, "current_status": { "spent": status["spent"], "remaining": status["remaining"], "payment_count": status["payment_count"], }, "message": ( f"Budget configured: {limits.per_request} sats per request, " f"{limits.per_session} sats per session. " f"Remaining: {status['remaining']} sats." ), } return json.dumps(result, indent=2) except Exception as e: logger.exception("Error configuring budget") return json.dumps({"success": False, "error": sanitize_error(str(e))})