# National Compute > Burst GPU capacity, allocated in real time by price. You declare how > many GPUs you want and the most you'll pay per GPU-hour; each auction > tick decides what you hold and bills the clearing price — never > above your ceiling. Capacity is granted and priced in whole nodes. Two capacity surfaces, both authenticated with an org API token (`Authorization: Bearer `, minted by a human on the portal's Getting Started page — ask yours to save it to a file you can read, never into chat or shell history). With the token, `GET /api/whoami` returns your org (`org_id`, `org_display`, `org_kind`), your scopes, and every cluster you can address ({name, kind, gpu_vendor, gpu_model}: the GPU class each one trades and its maker). `org_kind: public_research` names a per user research organization (created at first sign in for a `.edu`, `.mil` or `.gov` address that matches no join rule and belongs to no organization yet) with no clusters; its members get whole nodes from Marshall instead. Discover the target there. Do not ask a human for it: - VM clusters: `PUT /api/vm/capacity` declares `max_gpus` (a multiple of `gpus_per_node` — capacity is granted as whole nodes) and `max_price_per_gpu_hour` (USD). Granted nodes are yours over ssh until the market reclaims them or you scale down. - Kubernetes clusters: pending GPU pods create demand by themselves; the only knob is the limit price. `PUT /api/k8s/bid` sets the most you'll pay per GPU-hour. It buys only capacity BEYOND what the cluster already holds: idle reserved or granted nodes seat pods first, and only the remainder bids — check the nodes before setting a price. The pricing pitfall that wastes the most ticks: a bid too low to ever clear the market. What wins is read off the market's own numbers — the price to win ladder (`GET /api/k8s/market/ladder`) quotes the entry cost per job size right now, and the ticks carry the recent clearing range. A ceiling that can never clear is refused at write time (`422 bid-too-low`); when market conditions move past a STANDING bid, the limit price read (`GET /api/k8s/bid`) echoes `bid_too_low: true` and priced-out pods carry a `BidTooLow` Warning event (plus `marketplace.nationalcompute.com/status=bid-too-low`). Nodes sell whole — prefer full-node pods. A cluster with reservation packing enabled also runs pods smaller than one node on your reservation. Such pods never bid. A `CapacityUnavailable` Warning event (status=capacity-unavailable) is different: the site's provider is out of stock for the class you need. Raising the limit price will not start the workload sooner; the system retries automatically and it starts when capacity returns. The VM capacity GET reports the same verdict as `declared.capacity_unavailable`. Prices come back on the market feed: `GET /api/market/ticks` publishes assessed rates per auction tick in USD per NODE-hour (divide by `gpus_per_node`; `null` = nothing cleared), and every capacity read echoes your declared ceiling. Set your true limit price once — assessment is second-price, and small upward probes only re-price the nodes you already hold. ## Docs - [FIRST-JOB.md](/FIRST-JOB.md): the human's first job, agent shaped — connect, price, launch and watch a training, serving or custom job on a Kubernetes, VM or Slurm cluster - [starter recipes](https://access.nationalcompute.com/first-job/): FIRST-JOB.md's sample manifests as a JSON catalog — each recipe's cluster kind, category, description, default file and vendor variants (no auth needed) - [AGENTS.md](/AGENTS.md): orientation for agents driving this API: what to collect from your human (token, cluster, spending authority), reading the order book, setting limit prices that clear, and what a Marshall workspace remembers (a private note tree and an organization note tree) against an agent on its own machine, which keeps no notes - [/docs/](/docs/): the full documentation — market mechanics, cluster kinds, billing, the API reference (no auth needed; humans read the same pages at docs.nationalcompute.com). Same paths as the browser site, e.g. `/docs/authentication/`. The docs host serves every page as markdown too: the page URL minus the trailing slash plus `.md` (`https://docs.nationalcompute.com/market.md`), with [docs.nationalcompute.com/llms.txt](https://docs.nationalcompute.com/llms.txt) indexing every page that way and [llms-full.txt](https://docs.nationalcompute.com/llms-full.txt) the whole site in one file - [VM capacity OpenAPI](/api/vm/openapi.json): the machine-readable contract — endpoints, fields, and the error catalog (no auth needed) - [k8s limit price OpenAPI](/api/k8s/openapi.json): the limit price contract for Kubernetes clusters (no auth needed) - [market feed OpenAPI](/api/market/openapi.json): the clearing-price feed contract, shared by both kinds (no auth needed) - [billing OpenAPI](/api/billing/openapi.json): your organization's ledger (charges per node, daily totals, the balance with the hourly burn rate and its history, unit prices), the hosted checkout and card setup pages you hand to your human, a spend limit you may only tighten, and the self service invoices for organizations that pay by card (`GET /api/billing/invoices`, `GET /api/billing/invoices/{id}.pdf`). Marshall model usage bills to the same credits after a free $100 per member (no auth needed for the contract) - [organization OpenAPI](/api/org/openapi.json): your organization's roster, join rules, invitations, and API token metadata; each token's activity trail; a token can revoke itself (no auth needed) ## MCP server - [MCP endpoint](https://nationalcompute.com/mcp): the whole tenant surface as MCP tools over Streamable HTTP — market data, capacity and limit prices, billing, and server-side Kubernetes access. OAuth browser sign-in (your human signs in; no API token); spending tools are two-phase (preview + single-use confirm_token, 300 s); a preview that spends money or destroys data (vm_swap; a vm declaration that releases granted nodes; PersistentVolumeClaim, Namespace, VolumeSnapshot, VolumeSnapshotContent and cascading StatefulSet deletes; a StatefulSet apply that deletes its claims; a PersistentVolume delete is refused today) also carries human_confirmation {required, reason}, which your human answers in person. Guide: [docs.nationalcompute.com/api/mcp](https://docs.nationalcompute.com/api/mcp/)