{"schema_version":"1.0","positioning":"Compute infrastructure for AI agents","runtime_self_check":"https://cloudgpu.app/v1/public/agent-self-check","task_fit_endpoint":"https://cloudgpu.app/v1/public/task-fit","capability_source":"https://cloudgpu.app/v1/public/compute-capabilities","authentication":{"public_read_only":["/v1/public/agent-self-check","/v1/public/task-fit","/v1/public/gpu-catalog","/v1/models"],"connect":"connect_account -> owner signs in with Google (email alternative) -> reviews balance and tops up if needed -> explicitly approves limits -> finish_connect","google_login_is_spending_approval":false,"device_code_ttl_seconds":1800,"pending_connection":"Stored privately on the MCP client, bound to API origin and expiry; no key shown in browser or tool output","top_up_link":"POST /v1/billing/top-up-link creates a link only, not a checkout or charge","credited_funds":"GET /v1/gpu/account: funded, balance_usd and last_top_up_at; payment return does not prove credit or authorize a Job"},"gpu_billing":{"currency":"USD","price_label_unit":"GPU hour; does not determine billing period","supported_increment_seconds":[60,3600],"minimum_seconds":"same as the source-specific increment","hourly":"Starts at resource allocation; each started hour charged in full; no voluntary refund within charged hour","minute":"One-hour preauthorization; actual usage rounded up to minutes; unused prepaid minutes refunded on destroy","final_rental_quote":"POST /v1/gpu/billing-quote, exact configuration and explicit billing_accepted=true required","job_quote":"POST /v1/quotes; check supports_jobs; estimate is not rental billing approval"},"jobs":{"scope":"One bounded command, provision/run/persist explicit outputs/release; reusable sequential steps may share one reviewed allocation","required":["stable Idempotency-Key","max_minutes","max_spend_usd","quote and user approval"],"hourly_supplier_recovery":"Linked running Jobs resume through the existing worker. Sources with durable receipt recovery bind the Job alias before creation and independently query upstream presence; unresolved intents or provider needs_attention never authorize replacement creation. Submit billing_quote_id plus billing_accepted=true, budget >= minimum; expired quotes fail without a GPU. Real restart fault-injection evidence is isolated, not a commercial SLA.","unknown_create_result":"Reconcile the same request/instance; never blindly create another GPU","full_vm_kernel_nested_virtualization_resale":"Not a standard supported guarantee","batch_scheduler":"POST /v1/job-batches atomically persists 1–32 child Jobs with total_budget_usd and one Idempotency-Key; GET /v1/job-batches/{batch_id} and POST /{batch_id}/cancel. Queue survives server/client restart; each child reserves its own budget and waits for account/key execution slots. No automatic retry of failed commands; existing conservative provisioning recovery applies. Existing client run_job_batch remains non-atomic.","automatic_model_preparation_timeout_seconds":600,"large_model_warning":"Byte-size eligibility does not guarantee loading within 600 seconds; a 9.8GB Wan case exceeded this deadline on the measured link. Use a verified prepared image or separately approved bounded download command; do not silently extend billing."},"storage":{"authoritative_account_terms":"Authenticated GET /v1/storage","included_bytes":1000000000,"eligibility":"Existing real-top-up qualification; bonus balance alone is not a real top-up","monthly_overage_usd_per_decimal_gb":"0.05","daily_billing":"UTC actual daily peak above included bytes /30; upload reservations are not billed","retention_days":30,"retention_start":"upload completion; active Jobs defer deletion","paid_budget":"Feature-gated: explicit quote/confirmation moves available wallet funds into a separate storage budget; actual usage consumes it. Transfers are not revenue. Unused surplus can return to wallet after existing usage/upload coverage. Capacity depends on budget, not a fixed 5GB paid tier. GET account and runtime capabilities determine rollout.","coverage_days":31,"automatic_wallet_refill":false,"limited_agent_keys":"Cannot move wallet funds or consent to paid storage; owner uses Web or unrestricted key","single_file_technical_max_bytes":671088640000,"multipart_part_bytes":67108864,"multipart_ticket_ttl_seconds":86400,"signed_url_ttl_seconds":900,"resume":"GET /v1/files/{id}/upload lists completed parts; renew failed part URLs on the same reservation. Resume downloads only with verified 206 Content-Range.","restore_renewal":"Feature-gated file-scoped read-only leases, 6h deadline, 1200 renewals per plan; no general API key on GPU","workspace_limits":{"restored_files":100,"plan_bytes":48000},"not_supported":["mounted POSIX volume","automatic full-disk backup","paid retention extension","infinite single-file size or request volume"],"technical_max_files":1000,"current_list_response_max_files":500,"runtime_terms_available":true},"results":{"disk_erased_on_release":true,"automatic_collection":"Only when automatic_output_collection=true; explicit outputs under $CLOUDGPU_OUTPUT_DIR, then inspect output_collection and download ready file IDs","saving_log_tail":"Not a full output backup; never save logs with credentials","collection_failure":"May still release GPU; inspect partial outputs, never infer success or rerun automatically","network_fallback":{"trigger":"Allowlisted object-storage connection/time-out/transient failures; not auth or output-validation rejection","maximum_total_bytes":8388608,"chunk_bytes":1048576,"maximum_concurrent_relays":1,"maximum_relay_seconds":30,"local_disk_spooling":false,"same_upload_reservation":true,"integrity":"Full SHA-256 before committing; temporary relay payload cleared after use","larger_outputs":"Direct object-store transfer remains bounded to 100 MiB. If GPU egress cannot reach storage and outputs exceed 8 MiB, collection fails safely; use another verified provider or an explicitly reviewed export plan.","billing":"GPU time remains billable; fallback stops at the approved Job time limit, creates no GPU and reuses the existing storage reservation."},"automatic_collection_max_bytes":104857600,"task_fit_output_size_field":"When needs_persistent_outputs=true, supply expected_output_bytes; larger-than-fallback outputs require verified direct provider connectivity."},"evidence":"https://cloudgpu.app/agent-evidence.json","known_issues_source":"https://cloudgpu.app/v1/public/agent-self-check","rules":"https://cloudgpu.app/aup"}