Wire 30 AI trading signals into your Bedrock agent in 5 minutes
Every signal is a pay-per-call API endpoint gated by the x402 micropayment protocol. Your Bedrock agent pays in USDC on Base mainnet — no API keys, no subscriptions, no rate limits.
| Signal | Price | What it returns |
|---|---|---|
| apex_alpha_score ★ | $10.00/call | 8-pillar composite score 0-100. Returns DEPLOY/WAIT/REDUCE/AVOID with full component breakdown — replaces 7 separate calls. |
| grid_health_score | $5.00/call | Live trading telemetry from Kraken, Coinbase, and Hyperliquid grid bots. Composite health score, cycle velocity, PnL/24h. |
| regime_confluence | $4.00/call | BTC + ETH + SOL regime agreement score. STRONG confluence (3/3) = highest-conviction autonomous entry signal. |
| cross_exchange_spread | $3.00/call | Real-time Kraken vs Hyperliquid arb spread for BTC and ETH. Net spread %, direction, viability vs 0.35% threshold. |
| liquidation_pressure | $3.00/call | HL cascade risk score 0-100 for BTC/ETH/SOL. LONG_SQUEEZE / SHORT_SQUEEZE / BALANCED. Fires cascade_alert at risk ≥ 50. |
| ...and 25 more at apexrunner.ai/signals/docs/ — from $0.05/call (fear_greed) to $3.00/call (liquidation_pressure). | ||
pip install boto3
aws configure or environment variables AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY
bedrock-agentcore.amazonaws.com as trusted principal — see Section 7 for the minimal policy
import boto3 client = boto3.client( 'bedrock-agentcore-control', region_name='us-east-1' ) # Step 1: Create the gateway gateway = client.create_gateway( name='apex-signals-gateway', description='APEX Runner crypto trading signals via x402', roleArn='<YOUR_GATEWAY_ROLE_ARN>', protocolType='MCP', authorizerType='NONE' ) gateway_id = gateway['gatewayId'] print(f"Gateway created: {gateway_id}") # Step 2: Add APEX Signals as MCP target target = client.create_gateway_target( gatewayIdentifier=gateway_id, name='apex-signals', description='30 AI crypto trading signals — pay per call via x402 USDC on Base', targetConfiguration={ 'mcp': { 'serverConfig': { 'url': 'https://apexrunner.ai/mcp', 'transport': 'STREAMABLE_HTTP' }, 'listingMode': 'DEFAULT' } } ) print(f"Target ID: {target['targetId']}") print(f"Your endpoint: https://{gateway_id}.gateway.us-east-1.amazonaws.com/mcp")
# Step 1: Create the gateway GATEWAY_ID=$(aws bedrock-agentcore-control create-gateway \ --name apex-signals-gateway \ --description "APEX Runner crypto trading signals via x402" \ --role-arn <YOUR_GATEWAY_ROLE_ARN> \ --protocol-type MCP \ --authorizer-type NONE \ --region us-east-1 \ --query 'gatewayId' \ --output text) echo "Gateway ID: $GATEWAY_ID" # Step 2: Add APEX Signals as MCP target aws bedrock-agentcore-control create-gateway-target \ --gateway-identifier "$GATEWAY_ID" \ --name apex-signals \ --description "30 AI crypto trading signals — pay per call via x402 USDC on Base" \ --target-configuration '{ "mcp": { "serverConfig": { "url": "https://apexrunner.ai/mcp", "transport": "STREAMABLE_HTTP" }, "listingMode": "DEFAULT" } }' \ --region us-east-1 echo "Endpoint: https://$GATEWAY_ID.gateway.us-east-1.amazonaws.com/mcp"
APEX's MCP endpoint serves the tool list dynamically from catalog.json. When new signals go live, run SynchronizeGatewayTargets to add them to your gateway automatically.
# Sync when new signals launch — picks up additions from catalog.json client.synchronize_gateway_targets( gatewayIdentifier=gateway_id, ) print("Gateway targets synchronized — new signals now available")
SynchronizeGatewayTargets after launch to add them to your gateway automatically.
After gateway creation, your agent issues a tools/list call and receives the full signal catalog. Sample response (abridged):
{
"tools": [
{
"name": "apex_alpha_score",
"description": "8-pillar composite trading signal",
"price": "$10.00/call"
},
{
"name": "regime_confluence",
"description": "Cross-exchange regime confirmation",
"price": "$4.00/call"
},
{
"name": "fear_greed",
"description": "Real-time Fear and Greed index",
"price": "$0.05/call"
}
// ... 27 more tools
],
"total": "30 tools",
"payment": "x402 USDC on Base mainnet per tool call"
}
Your agent calls any tool by name. APEX verifies the x402 payment and returns the signal JSON. Unpaid calls return HTTP 402 with payment terms — the x402 client library handles the round-trip automatically.
The roleArn parameter requires an IAM role that trusts bedrock-agentcore.amazonaws.com and has the minimum permissions to manage gateway resources.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock-agentcore:CreateGateway",
"bedrock-agentcore:CreateGatewayTarget",
"bedrock-agentcore:GetGateway",
"bedrock-agentcore:GetGatewayTarget",
"bedrock-agentcore:SynchronizeGatewayTargets"
],
"Resource": "*"
}
]
}
# Create the role with the trust policy aws iam create-role \ --role-name ApexSignalsGatewayRole \ --assume-role-policy-document file://trust-policy.json # Attach the permission policy aws iam put-role-policy \ --role-name ApexSignalsGatewayRole \ --policy-name ApexSignalsGatewayPolicy \ --policy-document file://permission-policy.json # Get the ARN to use in create_gateway() aws iam get-role \ --role-name ApexSignalsGatewayRole \ --query 'Role.Arn' \ --output text