{"name":"cloud-as","description":"Spin up an AWS EC2 instance from an MCP tool call. Free t3.nano per IP per day. Paid larger instances via USDC on Base using x402 v2.","mcp_endpoint":"https://cloud.agentserviceindex.com/mcp","openapi_url":"https://cloud.agentserviceindex.com/openapi.json","authentication":{"method":"EIP-191","headers":["X-Public-Key","X-Signature","X-Timestamp"],"message_format":"timestamp|METHOD|path|body","timestamp_format":"ISO 8601 UTC","max_skew_seconds":300,"skill":"eip191-wallet-identity"},"payment":{"protocol":"x402","version":2,"spec":"https://github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md","headers":{"server_to_client_402":"PAYMENT-REQUIRED","client_to_server_retry":"PAYMENT-SIGNATURE","server_to_client_settled":"PAYMENT-RESPONSE"},"skill":"x402-payments"},"instructions":"Call this MCP server to acquire a real AWS EC2 instance for any compute task you need to perform off the user's machine. Flow:\n\n1. Call list_profiles to see what's available and what it costs.\n2. STRONGLY RECOMMENDED: generate your own SSH keypair locally and pass the public key as ssh_public_key. Example: `ssh-keygen -t ed25519 -f /tmp/k -N \"\"`. If you let the AS generate one, the private key is returned ONCE in the launch response — if your script crashes between launch and persistence, the box is unreachable.\n3. Call launch_instance(profile, hours, ssh_public_key). If you're free-tier eligible (profile=basic, hours<=1, your IP hasn't used free tier today) the instance launches immediately and the response includes ssh_user, public_hostname. Free-tier instances CANNOT be extended later — if you need >1h, launch a paid instance directly.\n4. Otherwise the service responds with HTTP 402 carrying a PAYMENT-REQUIRED header (base64-encoded x402 v2 PaymentRequired object). Decode it, pick an entry from accepts[] (currently one: USDC on Base mainnet), sign an EIP-3009 transferWithAuthorization with your wallet's private key, base64-encode the resulting PaymentPayload, and put it in a PAYMENT-SIGNATURE header on the same request. See the x402-payments skill for the exact signing recipe.\n5. On success, response carries a PAYMENT-RESPONSE header with the on-chain tx hash. Save the SSH private key (chmod 600) and SSH in. extend_lease pushes the timer out (paid instances only); terminate_instance ends the lease (no refund). A lease can be paid at most 15 days into the future — the box auto-terminates at expires_at, so set a reminder to re-up via extend_lease before then if you need it longer.\n6. Outbound TCP 25 (SMTP) is blocked. Public DNS is stable for the instance lifetime.","agent_quickstart":["1. list_profiles — see profiles + prices.","2. Generate an SSH keypair locally (`ssh-keygen -t ed25519 -f /tmp/k -N \"\"`); pass the public key as ssh_public_key to launch_instance.","3. launch_instance(profile, hours, ssh_public_key) — free-tier eligible launches immediately.","4. If HTTP 402 returned, decode the PAYMENT-REQUIRED header, sign an EIP-3009 transferWithAuthorization for the amount in accepts[0], base64-encode the PaymentPayload, set as PAYMENT-SIGNATURE header, retry. See the x402-payments skill.","5. SSH in (chmod 600 the key first). Instance auto-terminates at expires_at. extend_lease (paid instances only) or terminate_instance via wallet identity."],"constraints":["Inbound TCP 22/80/443 open; outbound TCP 25 (SMTP) blocked.","Profiles: basic (nano, free tier), standard (small), compute (medium), gpu_ready (large), heavy (xlarge), dedicated (2xlarge).","'basic' has a high markup — 'standard' or 'compute' offer much better value per dollar.","Free tier: profile=basic, hours<=1, 1/IP/24h, max 50 concurrent service-wide.","If you get a 503 'no compute capacity', all instance slots are full — try again later or a smaller profile.","No refunds for early termination.","Hard cap: a lease can be paid at most 15 days (360h) into the future. The box auto-terminates at expires_at — call extend_lease to re-up before then. To run longer than 15 days, re-up periodically in <=15-day increments."],"tools":[{"name":"list_profiles","description":"List available instance profiles and prices in USDC/hour.","pricing":{"scheme":"free"}},{"name":"launch_instance","description":"Launch an EC2 instance. Returns 200 if free-tier eligible (no payment). Otherwise returns HTTP 402 with a PAYMENT-REQUIRED header; sign and resend with PAYMENT-SIGNATURE to pay via x402 v2. Max lease 15 days (360h) per call — re-up with extend_lease before expires_at to keep the box alive.","pricing":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x64ad18d3cf14f6d56886960ce51e63b9c7756a99","maxTimeoutSeconds":60,"extra":{"name":"USDC","version":"2"},"variable":true,"see_tool":"list_profiles","free_tier":"basic profile (t3.nano), up to 1h, 1/IP/day","per_hour_atomic":{"basic":26000,"standard":62400,"compute":124800,"gpu_ready":208000,"heavy":416000,"dedicated":832000}}},{"name":"get_instance","description":"Get current state. Use to poll until aws_state='running' before SSHing. Requires wallet identity.","pricing":{"scheme":"free"}},{"name":"extend_lease","description":"Extend the auto-terminate timer (paid instances only). Same x402 v2 payment flow as launch. Cannot push expires_at more than 15 days into the future; re-up again later to keep a box alive beyond that.","pricing":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x64ad18d3cf14f6d56886960ce51e63b9c7756a99","maxTimeoutSeconds":60,"extra":{"name":"USDC","version":"2"},"variable":true,"see_tool":"list_profiles","free_tier":"basic profile (t3.nano), up to 1h, 1/IP/day","per_hour_atomic":{"basic":26000,"standard":62400,"compute":124800,"gpu_ready":208000,"heavy":416000,"dedicated":832000}}},{"name":"terminate_instance","description":"Terminate immediately. No refund for unused time. Requires wallet identity.","pricing":{"scheme":"free"}},{"name":"list_leases","description":"List everything you hold (VMs and apps). Requires wallet identity.","pricing":{"scheme":"free"}},{"name":"list_offerings","description":"Unified compute menu: VM profiles (SSH) and scale-to-zero app tiers (URL), with prices and which create-tool to call.","pricing":{"scheme":"free"}},{"name":"deploy_app","description":"Deploy a scale-to-zero containerized HTTP service from a public image; returns a public HTTPS URL. ~$0 idle, flat per-TTL fee via x402 v2. Auto-deletes at expires_at; extend_lease to re-up. Manage by resource_id.","pricing":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x64ad18d3cf14f6d56886960ce51e63b9c7756a99","variable":true,"see_tool":"list_offerings"}}]}