jwt.role == "admin"
jwt.role == "reader" && mcp.tool.name != "send_raw_transaction" && mcp.tool.name != "generate_keypair"
jwt.role == "admin"
jwt.role == "reader" && mcp.tool.name != "send_raw_transaction" && mcp.tool.name != "generate_keypair"
jwt.role == "admin"
jwt.role == "reader" && mcp.tool.name != "send_raw_transaction" && mcp.tool.name != "generate_keypair"
localRateLimit: - maxTokens: 10 tokensPerFill: 1 fillInterval: 60s
localRateLimit: - maxTokens: 10 tokensPerFill: 1 fillInterval: 60s
localRateLimit: - maxTokens: 10 tokensPerFill: 1 fillInterval: 60s
python scripts/generate_keys.py # Generate RSA keys + JWT tokens
docker compose up -d # Start bitcoin-mcp + agentgateway + Jaeger
python scripts/generate_keys.py # Generate RSA keys + JWT tokens
docker compose up -d # Start bitcoin-mcp + agentgateway + Jaeger
python scripts/generate_keys.py # Generate RSA keys + JWT tokens
docker compose up -d # Start bitcoin-mcp + agentgateway + Jaeger
# Reader queries block height -- works fine
python scripts/test_rbac.py --user reader --tool get_block_count
# Result: ALLOWED # Reader tries to broadcast a transaction -- blocked
python scripts/test_rbac.py --user reader --tool send_raw_transaction
# Result: DENIED (authorization) # Burst 15 requests -- rate limited after 10
python scripts/test_rbac.py --user reader --tool get_fee_estimates --burst 15
# Summary: 10 allowed, 5 rate-limited
# Reader queries block height -- works fine
python scripts/test_rbac.py --user reader --tool get_block_count
# Result: ALLOWED # Reader tries to broadcast a transaction -- blocked
python scripts/test_rbac.py --user reader --tool send_raw_transaction
# Result: DENIED (authorization) # Burst 15 requests -- rate limited after 10
python scripts/test_rbac.py --user reader --tool get_fee_estimates --burst 15
# Summary: 10 allowed, 5 rate-limited
# Reader queries block height -- works fine
python scripts/test_rbac.py --user reader --tool get_block_count
# Result: ALLOWED # Reader tries to broadcast a transaction -- blocked
python scripts/test_rbac.py --user reader --tool send_raw_transaction
# Result: DENIED (authorization) # Burst 15 requests -- rate limited after 10
python scripts/test_rbac.py --user reader --tool get_fee_estimates --burst 15
# Summary: 10 allowed, 5 rate-limited