bios-mcp 0.1.1-rc.18 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +11 -86
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -41,73 +41,22 @@ not claimed without an explicit acknowledgement from the endpoint.
41
41
  ## Safe inference workflow
42
42
 
43
43
  1. `get_inference_gpu_options` returns inference-fit configurations joined to
44
- authoritative deployment prices and stock. Prefer the MODEL-ADDRESSED form
45
- (`model=<hf_repo_id>`, optionally `revision`/`hf_integration_id`): the
46
- server resolves the model facts (vision-aware) and answers with computed
47
- `min_gpus`, `valid_counts`, and `bookable_counts` — the exact minimums the
48
- create gate enforces, so client-supplied facts can never understate a
49
- minimum. `unknown` is not treated as available; never offer a count below
50
- `min_gpus` or outside `bookable_counts`.
44
+ authoritative deployment prices and stock. `unknown` is not treated as
45
+ available.
51
46
  2. `preflight_inference` validates the exact source, model, GPU, queue, price
52
47
  cap, and wallet-hold terms without creating a deployment or mutating funds.
53
- 3. `create_inference` uses the same request contract, self-validates the
54
- selection against the model-addressed minimums before submitting, and
55
- follows BOOK-BEFORE-REVEAL: a non-queued create answers `202` with a
56
- booking handle while a vendor-accepted GPU is booked (30-40 s typical); the
57
- tool polls the handle and returns the full payload — including the ONE-TIME
58
- `inference_key` only after the GPU is confirmed. A definitive miss
59
- returns the standard `CAPACITY_UNAVAILABLE` error with fresh alternatives
60
- and NO deployment exists (nothing charged). Queueing is opt-in, a maximum
61
- total hourly price is explicit, and a GPU alternative is never selected
62
- without approval. `gpu_priorities` backups (1-5 ranked choices) may be
63
- supplied on ANY create — they form the after-start replacement ladder;
64
- the queue itself stays opt-in.
65
- 4. `get_inference_booking` polls a booking handle from a long-running
66
- `create_inference` (pending → revealed payload → or the standard 409).
67
- 5. `get_inference_status` reports durable queue state, provisioning/loading,
68
- endpoint readiness, price cap, notification summary, and wallet
69
- authorization. An endpoint is live only when the returned status is
70
- `running`. `queued_capacity` means waiting for stock at zero charge —
71
- after a deployment has ever been booked, GPU loss never ends in a
72
- capacity failure; it waits and auto-resumes.
73
- 6. `get_inference_notifications` reports durable lifecycle-email delivery,
48
+ 3. `create_inference` uses the same request contract. Queueing is opt-in, a
49
+ maximum total hourly price is explicit, and a GPU alternative is never
50
+ selected without approval. Its inference key is shown only once.
51
+ 4. `get_inference_status` reports durable queue expiry (including
52
+ `status_reason=queue_expired`), provisioning/loading, endpoint readiness,
53
+ price cap, notification summary, and wallet authorization. An endpoint is
54
+ live only when the returned status is `running`.
55
+ 5. `get_inference_notifications` reports durable lifecycle-email delivery,
74
56
  bounded retries, and operator-visible dead letters.
75
- 7. `update_inference_policy`, `stop_inference`, `resume_inference`,
57
+ 6. `update_inference_policy`, `stop_inference`, `resume_inference`,
76
58
  `restart_inference`, and `delete_inference` manage the lifecycle.
77
59
 
78
- ## Standard capacity error contract
79
-
80
- Training and inference speak ONE capacity rejection shape: HTTP `409` with
81
- `error.code = CAPACITY_UNAVAILABLE` (training also echoes the deprecated
82
- `SELECTED_GPU_UNAVAILABLE` as `legacy_code` for one release). The MCP
83
- transport serializes it as compact JSON in the tool-error text — even when
84
- zero alternatives exist — so an agent can act on it directly:
85
-
86
- ```json
87
- {
88
- "code": "CAPACITY_UNAVAILABLE",
89
- "reason": "insufficient_stock | below_model_minimum | invalid_gpu_count | model_too_large",
90
- "message": "H200 is out of stock",
91
- "recoverable": true,
92
- "instruction": "Retry with one of available_gpus (never below its min_gpus), or resubmit with allow_capacity_queue=true.",
93
- "available_gpus": [
94
- { "gpu_type": "H100_80GB", "gpu_count": 2, "min_gpus": 2, "valid_counts": [2, 4, 8],
95
- "tier": "secure", "price_hour_cents": 598, "available_count": 6 }
96
- ],
97
- "minimum_requirement": {
98
- "selected_gpu_min": 2, "selected_valid_counts": [2, 4, 8],
99
- "per_type": [{ "gpu_type": "H200", "min_gpus": 2, "valid_counts": [2, 4, 8] }]
100
- },
101
- "selected": { "gpu_type": "H200", "gpu_count": 2, "availability_status": "out_of_stock" },
102
- "queue_eligible": false,
103
- "checked_at": "2026-07-19T00:00:00Z"
104
- }
105
- ```
106
-
107
- A `503 ADMISSION_UNAVAILABLE` is a transient market outage, never a capacity
108
- verdict — retry shortly, never conclude out-of-stock from it. See
109
- `get_platform_guide` topic `capacity_errors` for the recovery playbook.
110
-
111
60
  Raw Hugging Face tokens are intentionally excluded from MCP tool inputs. Store
112
61
  the token in a platform Hugging Face integration and pass `hf_integration_id`.
113
62
 
@@ -116,30 +65,6 @@ the token in a platform Hugging Face integration and pass `hf_integration_id`.
116
65
  original acknowledgement instead of creating another job, wallet hold, queue
117
66
  entry, or GPU request. The MCP server generates a fresh key when it is omitted.
118
67
 
119
- ## Training lifecycle (book-before-reveal)
120
-
121
- Like inference, `create_training_job` books a GPU before it reveals a job.
122
- The call blocks while the ranked ladder is booked (~40s typical); a job id and
123
- the "training started" email exist only once a real pod is secured. Read
124
- `status` on the response and from `get_training_status`:
125
-
126
- - `booked` — a GPU is secured (booked == secured); the job then provisions,
127
- downloads, and runs on its own. Money is captured only after this point.
128
- - `securing` — still booking at the deadline; the async tail continues.
129
- Poll `get_training_status` until `booked`/`running` (or a terminal state).
130
- Nothing is charged while securing.
131
- - `queued` — returned only with explicit queue consent; waits for stock at
132
- zero charge and books via the same path.
133
- - A booking-time capacity miss returns the standard `CAPACITY_UNAVAILABLE`
134
- (409) with fresh `available_gpus` and **no job exists** (nothing charged);
135
- a transient `503 ADMISSION_UNAVAILABLE` is a retry, never out-of-stock, and
136
- the platform never auto-substitutes a GPU.
137
-
138
- If a started job loses its pod, it rests at `interrupted` — a self-heal state
139
- distinct from `failed` in which billing is already stopped. Call
140
- `resume_training_job` to continue from the last checkpoint; resume re-books on
141
- secured capacity before reporting resumed, so the same guarantees apply.
142
-
143
68
  Training and deployment share one authoritative GPU-capacity broker. Server
144
69
  priority is evaluated first. Within an equal-priority class, the broker rotates
145
70
  across users and preserves FIFO order within each user's own requests. This
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bios-mcp",
3
- "version": "0.1.1-rc.18",
3
+ "version": "0.1.1",
4
4
  "description": "BIOS MCP server — train and deploy AI models from MCP-compatible automation clients",
5
5
  "license": "MIT",
6
6
  "type": "module",