{"info":{"description":"PREVIEW: the contract may move until launch, when these routes are promoted verbatim to /v1 and /preview becomes a deprecated alias (GMAN-31). Same capability core as the MCP door: each operation names its capability in x-capability, takes the same parameters as the tool's inputSchema (path/query parameters overlay the JSON body), and returns the tool's structuredContent. Auth: the same bearer tokens as the MCP door. Conventions: resources carry an 'object' type discriminator and immutable ids; money crosses the wire as integer micro-dollars (*_usd_micros; dollar floats/strings are display only); the accelerator field is 'chip' (values like \"h100\", \"8xh100\" - named for the accelerator, not the vendor). Workspace binding is per request via ?workspace=<slug>, never ambient. List endpoints page with ?cursor=&limit= returning {object: 'list', items, next_cursor?}. Logs are offset-polled (?offset=), never streamed. Every response carries a request-id header; 429s carry Retry-After; POST /jobs honors the Idempotency-Key header.","title":"givemeanode customer API","version":"preview"},"openapi":"3.1.0","paths":{"/preview/billing":{"get":{"operationId":"get_get_billing","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Billing state: caps, dunning, portal URL","x-capability":"get_billing"}},"/preview/connections":{"get":{"operationId":"get_list_connections","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"The org's data connections, names + scopes only (never material)","x-capability":"list_connections"},"post":{"operationId":"post_create_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Create a connection (material in body, sealed on arrival) [org:write + admin; this door only]","x-capability":"create_connection"}},"/preview/connections/{name}":{"delete":{"operationId":"delete_delete_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Delete a connection (material shredded immediately) [org:write + admin; this door only]","x-capability":"delete_connection"},"get":{"operationId":"get_get_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"One connection: kind, scope, identity - never material [org:write + admin; this door only]","x-capability":"get_connection"}},"/preview/connections/{name}/arm":{"post":{"operationId":"post_arm_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Replace a connection's material (re-key) [org:write + admin; this door only]","x-capability":"arm_connection"}},"/preview/connections/{name}/disable":{"post":{"operationId":"post_disable_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Disable a connection (in-flight imports fail honestly) [org:write + admin; this door only]","x-capability":"disable_connection"}},"/preview/connections/{name}/enable":{"post":{"operationId":"post_enable_connection","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Re-enable a disabled connection [org:write + admin; this door only]","x-capability":"enable_connection"}},"/preview/contexts":{"post":{"operationId":"post_create_context","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Create an upload context for a job","x-capability":"create_context"}},"/preview/contexts/{id}":{"get":{"operationId":"get_get_context","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Context status + a fresh download URL","x-capability":"get_context"}},"/preview/contexts/{id}/finalize":{"post":{"operationId":"post_finalize_context","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Finalize an uploaded context","x-capability":"finalize_context"}},"/preview/jobs":{"get":{"operationId":"get_list_jobs","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"List jobs (paged; ?label=)","x-capability":"list_jobs"},"post":{"operationId":"post_submit_job","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Submit an async job","x-capability":"submit_job"}},"/preview/jobs/sweeps":{"post":{"operationId":"post_submit_jobs","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Submit a sweep: one build, N variants","x-capability":"submit_jobs"}},"/preview/jobs/{id}":{"get":{"operationId":"get_get_job","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Job status + logs (?stream=&offset=&tail=)","x-capability":"get_job"}},"/preview/jobs/{id}/cancel":{"post":{"operationId":"post_cancel_job","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Cancel a job","x-capability":"cancel_job"}},"/preview/nodes":{"get":{"operationId":"get_list_nodes","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"List nodes (paged)","x-capability":"list_nodes"},"post":{"operationId":"post_create_node","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Create a node (never blocks: provisioning or queued)","x-capability":"create_node"}},"/preview/nodes/{name}":{"delete":{"operationId":"delete_delete_node","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Delete a stopped node (crypto-erase, irreversible)","x-capability":"delete_node"},"get":{"operationId":"get_get_node","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"One node: state, rate, queue position","x-capability":"get_node"}},"/preview/nodes/{name}/commands":{"get":{"operationId":"get_list_commands","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"List commands on a node (paged)","x-capability":"list_commands"},"post":{"operationId":"post_run_command","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Run a command (sync, or detach:true)","x-capability":"run_command"}},"/preview/nodes/{name}/commands/{id}":{"get":{"operationId":"get_get_command","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Command status + log (offset-polling)","x-capability":"get_command"}},"/preview/nodes/{name}/commands/{id}/kill":{"post":{"operationId":"post_kill_command","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Kill a detached command","x-capability":"kill_command"}},"/preview/nodes/{name}/endpoints":{"get":{"operationId":"get_list_endpoints","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"The node's exposed endpoints","x-capability":"list_endpoints"},"post":{"operationId":"post_expose_port","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Expose a container port at a public HTTPS URL","x-capability":"expose_port"}},"/preview/nodes/{name}/endpoints/{port}":{"delete":{"operationId":"delete_unexpose_port","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Remove an exposed endpoint","x-capability":"unexpose_port"}},"/preview/nodes/{name}/exports":{"post":{"operationId":"post_export_file","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Export a file/dir to a download URL","x-capability":"export_file"}},"/preview/nodes/{name}/files":{"post":{"operationId":"post_write_file","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Write a file (path in body, utf8 or base64)","x-capability":"write_file"}},"/preview/nodes/{name}/http":{"post":{"operationId":"post_http_request","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"One HTTP request to a (private) container port","x-capability":"http_request"}},"/preview/nodes/{name}/imports":{"post":{"operationId":"post_import_data","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Fetch private data onto the node via a stored connection","x-capability":"import_data"}},"/preview/nodes/{name}/imports/{id}":{"get":{"operationId":"get_get_import","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Import status: running/complete/failed (provider errors verbatim)","x-capability":"get_import"}},"/preview/nodes/{name}/stop":{"post":{"operationId":"post_stop_node","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Stop a node (disk parks; billing stops)","x-capability":"stop_node"}},"/preview/org/invites":{"post":{"operationId":"post_invite_member","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Invite an email [org:write + admin]","x-capability":"invite_member"}},"/preview/org/invites/{id}":{"delete":{"operationId":"delete_revoke_invite","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Revoke an invite [org:write + admin]","x-capability":"revoke_invite"}},"/preview/org/members":{"get":{"operationId":"get_list_team","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"The org roster (admins see invites + caps)","x-capability":"list_team"}},"/preview/org/members/{member}":{"delete":{"operationId":"delete_remove_member","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Remove a member [org:write + admin]","x-capability":"remove_member"},"patch":{"operationId":"patch_set_member_role","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Set a member's role [org:write + admin]","x-capability":"set_member_role"}},"/preview/org/nodes/{id}/stop":{"post":{"operationId":"post_stop_org_node","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Stop any org node by id (org admins; the runaway-node case)","x-capability":"stop_org_node"}},"/preview/projects":{"get":{"operationId":"get_list_projects","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"List projects (paged)","x-capability":"list_projects"},"post":{"operationId":"post_open_project","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Open (create or attach) a project","x-capability":"open_project"}},"/preview/projects/{name}":{"get":{"operationId":"get_get_project","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"The project's receipt: cost, nodes, jobs, verdict","x-capability":"get_project"}},"/preview/projects/{name}/finish":{"post":{"operationId":"post_finish_project","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Declare the project's verdict","x-capability":"finish_project"}},"/preview/referrals":{"get":{"operationId":"get_list_referrals","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Referral codes and their claims","x-capability":"list_referrals"}},"/preview/referrals/claim":{"post":{"operationId":"post_claim_referral_code","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Claim a referral code","x-capability":"claim_referral_code"}},"/preview/storage/buckets":{"get":{"operationId":"get_list_storage_buckets","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"The org's object-storage buckets with sizes","x-capability":"list_storage_buckets"},"post":{"operationId":"post_create_storage_bucket","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Create a bucket (auto-minted as a gmn-storage connection) [org:write + admin; this door only]","x-capability":"create_storage_bucket"}},"/preview/storage/buckets/{name}":{"delete":{"operationId":"delete_delete_storage_bucket","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Delete a bucket (?force= for non-empty; irreversible) [org:write + admin; this door only]","x-capability":"delete_storage_bucket"}},"/preview/storage/{bucket}/objects":{"get":{"operationId":"get_list_storage_objects","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Objects in a bucket (?prefix=)","x-capability":"list_storage_objects"},"post":{"operationId":"post_put_storage_object","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Declare an upload: {key, size_bytes} → a presigned PUT","x-capability":"put_storage_object"}},"/preview/storage/{bucket}/objects/commit":{"post":{"operationId":"post_commit_storage_object","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Commit an upload (the store's size is verified)","x-capability":"commit_storage_object"}},"/preview/storage/{bucket}/objects/delete":{"post":{"operationId":"post_delete_storage_object","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Delete one object ({key} in body)","x-capability":"delete_storage_object"}},"/preview/storage/{bucket}/objects/download":{"post":{"operationId":"post_download_storage_object","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"A presigned GET for one object ({key} in body)","x-capability":"download_storage_object"}},"/preview/tickets":{"get":{"operationId":"get_list_tickets","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"List tickets (?status=)","x-capability":"list_tickets"},"post":{"operationId":"post_file_ticket","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"File a ticket (bug, feedback, question)","x-capability":"file_ticket"}},"/preview/tickets/{id}":{"get":{"operationId":"get_get_ticket","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"One ticket: the thread and refs","x-capability":"get_ticket"}},"/preview/tickets/{id}/replies":{"post":{"operationId":"post_reply_ticket","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Reply on a ticket (close:true ends it)","x-capability":"reply_ticket"}},"/preview/usage":{"get":{"operationId":"get_get_usage","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Spend per node for a month (?month=YYYY-MM)","x-capability":"get_usage"}},"/preview/workspaces":{"get":{"operationId":"get_list_team","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Workspaces of the org (slug, cap, MTD for admins)","x-capability":"list_team"}},"/preview/workspaces/{slug}":{"patch":{"operationId":"patch_set_workspace_cap","responses":{"200":{"description":"The capability's JSON result (same shape as the MCP tool's structuredContent)."},"4XX":{"description":"One error shape: {\"error\": {\"code\", \"message\"}}; the code vocabulary is open."}},"summary":"Set/clear a workspace spend cap [org:write + admin]","x-capability":"set_workspace_cap"}}},"servers":[{"url":"https://givemeanode.com"}]}