capix-mcp 2.1.1 → 2.2.0

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 (41) hide show
  1. package/README.md +51 -72
  2. package/dist/prompts.d.ts +6 -1
  3. package/dist/prompts.d.ts.map +1 -1
  4. package/dist/prompts.js +41 -75
  5. package/dist/prompts.js.map +1 -1
  6. package/dist/route-families.d.ts +47 -0
  7. package/dist/route-families.d.ts.map +1 -0
  8. package/dist/route-families.js +96 -0
  9. package/dist/route-families.js.map +1 -0
  10. package/dist/server.d.ts +5 -5
  11. package/dist/server.js +8 -8
  12. package/dist/server.js.map +1 -1
  13. package/dist/tools/define-tool.d.ts +6 -0
  14. package/dist/tools/define-tool.d.ts.map +1 -1
  15. package/dist/tools/define-tool.js +1 -0
  16. package/dist/tools/define-tool.js.map +1 -1
  17. package/dist/tools/factory.d.ts +42 -0
  18. package/dist/tools/factory.d.ts.map +1 -0
  19. package/dist/tools/factory.js +363 -0
  20. package/dist/tools/factory.js.map +1 -0
  21. package/dist/tools/generate.d.ts +108 -0
  22. package/dist/tools/generate.d.ts.map +1 -0
  23. package/dist/tools/generate.js +149 -0
  24. package/dist/tools/generate.js.map +1 -0
  25. package/dist/tools/infra-context.d.ts +15 -11
  26. package/dist/tools/infra-context.d.ts.map +1 -1
  27. package/dist/tools/infra-context.js +43 -92
  28. package/dist/tools/infra-context.js.map +1 -1
  29. package/dist/tools/memes.d.ts +31 -0
  30. package/dist/tools/memes.d.ts.map +1 -0
  31. package/dist/tools/memes.js +175 -0
  32. package/dist/tools/memes.js.map +1 -0
  33. package/dist/tools.d.ts +47 -7
  34. package/dist/tools.d.ts.map +1 -1
  35. package/dist/tools.js +341 -891
  36. package/dist/tools.js.map +1 -1
  37. package/dist/types.d.ts +17 -2
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js +0 -2
  40. package/dist/types.js.map +1 -1
  41. package/package.json +3 -3
package/README.md CHANGED
@@ -15,7 +15,9 @@ That's it. Your AI agent can now deploy models, manage compute, and build websit
15
15
 
16
16
  ## How it works
17
17
 
18
- Capix MCP exposes **59 tools** grouped into seven scopes. The server speaks stdio (for local agent integration) and streamable HTTP (for remote/hosted use). Authentication is handled via OAuth PKCE (through the `@capix/auth-broker`) or a simple `CAPIX_API_KEY` environment variable.
18
+ Capix MCP exposes **37 tools** grouped into six scopes. The server speaks stdio (for local agent integration) and streamable HTTP (for remote/hosted use). Authentication is handled via OAuth PKCE (through the `@capix/auth-broker`) or a simple `CAPIX_API_KEY` environment variable.
19
+
20
+ Every registered tool targets a route family that exists in the Capix control plane; a registry-level gate test (`src/tools/registry.test.ts`) asserts each tool's canonical path against an audited allowlist of real route families, so the tool list below is the true surface — no phantom routes.
19
21
 
20
22
  Read-only tools auto-run after authentication. Billable tools require a bound `approvalToken` — the agent obtains this after quoting the cost upstream, so no spend happens without explicit user consent.
21
23
 
@@ -130,103 +132,80 @@ Or with streamable HTTP:
130
132
  capix-mcp server --http 8080 --token <service-token>
131
133
  ```
132
134
 
133
- ## Tools (59)
135
+ ## Tools (37)
134
136
 
135
137
  All tools are prefixed with `capix_`. Read-only tools auto-run after authentication. Billable tools require a bound `approvalToken`.
136
138
 
137
- ### Discovery (9) — read-only
139
+ ### Discovery (7) — read-only
138
140
 
139
141
  | Tool | Description |
140
142
  |---|---|
141
- | `capix_account` | Inspect the authenticated account: wallet, balance, limits, active deployments/agents |
142
- | `capix_balance` | Get the cash balance (available / held / total) for the account |
143
- | `capix_projects` | List projects visible to the authenticated account |
144
- | `capix_compute_catalog` | List the live compute capability catalog (provider / region / tier / price) |
145
- | `capix_model_catalog` | List the live model endpoint catalog (model id, context length, price) |
146
- | `capix_network_status` | Inspect network and gateway status (provider health, lanes, emergency flags) |
147
- | `capix_deployments` | List deployments with phase + allocation state |
148
- | `capix_receipts` | List work receipts for the account |
149
- | `capix_attestations` | List attestation records for the account |
150
-
151
- ### Planning (6) — read-only
143
+ | `capix_account` | Inspect the authenticated account (id, email, wallet, billing status, identities, devices) |
144
+ | `capix_balance` | Get the account ledger balances (SOL / USDC), USD valuation, and recent transactions |
145
+ | `capix_compute_catalog` | List the enabled compute capability catalog (workload types, providers, regions) |
146
+ | `capix_network_status` | Inspect service health and live feature gates |
147
+ | `capix_deployments` | List deployments with phase + allocation state (status/cursor filters) |
148
+ | `capix_receipts` | List work receipts for the account (approval-status/agent filters) |
149
+ | `capix_meme_templates` | List the meme template + vibe catalog and AI-canvas availability (free) |
150
+
151
+ ### Planning (2) read-only
152
152
 
153
153
  | Tool | Description |
154
154
  |---|---|
155
- | `capix_compute_plan` | Plan a compute deployment (matching models to offers) |
156
- | `capix_compute_quote` | Get a canonical quote for a compute deployment |
157
- | `capix_model_plan` | Plan a model endpoint deployment |
158
- | `capix_model_quote` | Get a canonical quote for a model endpoint plan |
159
- | `capix_stack_validate` | Validate a multi-component stack definition |
160
- | `capix_stack_plan` | Plan a multi-component stack deployment |
155
+ | `capix_compute_quote` | Get a canonical quote for a compute workload (15-minute TTL) |
156
+ | `capix_model_quote` | Get a canonical quote for a private model endpoint |
161
157
 
162
- ### Lifecycle (7) — billable, requires approval
158
+ ### Lifecycle (19) — billable, requires approval
163
159
 
164
160
  | Tool | Description |
165
161
  |---|---|
166
- | `capix_deploy` | Deploy a resource (compute or model endpoint) from a quote |
167
- | `capix_start` | Start a stopped deployment |
168
- | `capix_stop` | Stop a running deployment |
169
- | `capix_restart` | Restart a deployment (stop + start cycle) |
170
- | `capix_delete` | Delete a deployment permanently |
171
- | `capix_extend` | Extend a deployment's lifetime |
172
- | `capix_cancel` | Cancel an in-progress operation |
173
-
174
- ### Networking (8) billable, requires approval
162
+ | `capix_deploy` | Deploy a workload from a canonical quote |
163
+ | `capix_delete` | Terminate a deployment and settle early termination |
164
+ | `capix_cancel` | Cancel an in-flight operation |
165
+ | `capix_job_submit` | Submit a durable batch job (image + command) |
166
+ | `capix_job_list` | List durable jobs |
167
+ | `capix_job_get` | Get a job by id |
168
+ | `capix_job_logs` | Fetch job log chunks with an `after` cursor |
169
+ | `capix_job_cancel` | Request cooperative cancellation of a job |
170
+ | `capix_job_rerun` | Re-enqueue a terminal job |
171
+ | `capix_training_submit` | Submit a LoRA fine-tuning run |
172
+ | `capix_training_list` | List training runs |
173
+ | `capix_training_get` | Get a training run by id |
174
+ | `capix_training_deploy` | Deploy a finished training run (returns a handoff deep-link) |
175
+ | `capix_agent_deploy` | Deploy a hosted agent runtime (openclaw / hermes / custom) |
176
+ | `capix_agent_list` | List agent deployments |
177
+ | `capix_agent_get` | Get an agent deployment by id |
178
+ | `capix_agent_destroy` | Destroy an agent deployment (refund settles) |
179
+ | `capix_meme` | Generate a meme from a topic (template captions, or AI-canvas image at 2x price when `templateId` is omitted) |
180
+ | `capix_image_gen` | Generate an image from a text prompt (fixed per-image charge) |
181
+
182
+ ### Verification (1) — read-only
175
183
 
176
184
  | Tool | Description |
177
185
  |---|---|
178
- | `capix_create_vpc` | Create a VPC for a project |
179
- | `capix_create_endpoint` | Create a network endpoint for a deployment |
180
- | `capix_expose_port` | Expose a port on a deployment |
181
- | `capix_close_port` | Close a previously exposed port |
182
- | `capix_inspect_routes` | Inspect the routing table for a deployment |
183
- | `capix_create_private_connection` | Create a private connection between deployments |
184
- | `capix_request_dedicated_ip` | Request a dedicated IP for a deployment |
185
- | `capix_port_forward` | Set up port forwarding for a deployment |
186
+ | `capix_inspect_receipt` | Inspect a signed route receipt (placement, price, cost basis, fees, margin) |
186
187
 
187
- ### Testing (6) — mixed
188
+ ### Website (6)
188
189
 
189
190
  | Tool | Description |
190
191
  |---|---|
191
- | `capix_create_test_env` | Create an isolated test environment |
192
- | `capix_run_health_checks` | Run health checks against a deployment |
193
- | `capix_run_bounded_command` | Run a bounded shell command inside a deployment |
194
- | `capix_inspect_logs` | Inspect deployment logs |
195
- | `capix_inspect_metrics` | Inspect deployment metrics |
196
- | `capix_destroy_task_resources` | Destroy resources created by a specific task |
192
+ | `capix_website_create` | Create a website from a source ref (clone → detect → build → preview) |
193
+ | `capix_website_list` | List websites with their latest releases |
194
+ | `capix_website_get` | Get a website (status, URLs, releases, 50-line build log tail) |
195
+ | `capix_website_promote` | Promote a built release to production |
196
+ | `capix_website_rollback` | Roll back to a previous built release |
197
+ | `capix_website_destroy` | Destroy a website (soft delete) |
197
198
 
198
- ### Verification (6) — read-only
199
+ ### Infra-context (2) — read-only
199
200
 
200
201
  | Tool | Description |
201
202
  |---|---|
202
- | `capix_fetch_attestation` | Fetch an attestation record |
203
- | `capix_verify_attestation` | Verify an attestation against its expected measurements |
204
- | `capix_fetch_proof` | Fetch a zkVM proof artifact for a workload |
205
- | `capix_verify_proof` | Verify a zkVM proof artifact against its public inputs |
206
- | `capix_inspect_measurement` | Inspect the measurement of a workload |
207
- | `capix_inspect_receipt` | Inspect a work receipt in detail |
203
+ | `capix_marketplace_browse` | Browse live GPU marketplace offers (region, trust tier, capability, price) |
204
+ | `capix_model_list` | List deployable models (public catalog + owned private endpoints) |
208
205
 
209
- ### Website (17)
206
+ ### Removed scopes
210
207
 
211
- | Tool | Description |
212
- |---|---|
213
- | `capix_website_project_string_check` | Check a website project string for validity |
214
- | `capix_website_create` | Create a new website project |
215
- | `capix_website_detect` | Auto-detect website framework from a repository |
216
- | `capix_website_plan` | Plan a website deployment (build + hosting plan) |
217
- | `capix_website_quote` | Get a canonical quote for a website deploy |
218
- | `capix_website_deploy` | Deploy a website (build + host) |
219
- | `capix_website_preview` | Create a preview deployment |
220
- | `capix_website_promote` | Promote a preview to production |
221
- | `capix_website_rollback` | Rollback a website to a previous deployment |
222
- | `capix_website_get` | Get a website project descriptor |
223
- | `capix_website_deployments` | List deployments for a website |
224
- | `capix_website_logs` | Inspect build/runtime logs for a website |
225
- | `capix_website_metrics` | Inspect request/bandwidth metrics for a website |
226
- | `capix_website_domain_add` | Add a custom domain to a website |
227
- | `capix_website_domain_verify` | Verify DNS ownership for a pending custom domain |
228
- | `capix_website_domain_remove` | Remove a custom domain from a website |
229
- | `capix_website_destroy` | Destroy a website and all its resources |
208
+ The pre-repair registry advertised networking (8), testing (6), and attestation/zkVM (5) tools, plus website sub-tools (domains, metrics, preview, detect, quote) and planning/lifecycle stubs — all targeting route families the control plane never implemented. They were removed in the 2026-07 repair and return when the backend ships (networking roadmap N1–N5; Secured Cloud TEE/zkVM deferred). See `src/route-families.ts` for the audited allowlist of real route families.
230
209
 
231
210
  ## Configuration
232
211
 
package/dist/prompts.d.ts CHANGED
@@ -4,8 +4,13 @@
4
4
  * Prompts are parameterised, server-side message templates the MCP client can
5
5
  * list and instantiate. Each prompt returns a short multi-message transcript
6
6
  * that guides an agent through a common Capix workflow (deploy, diagnose,
7
- * preview, plan, cleanup) — always ending with an assistant reminder that
7
+ * ship a website, cleanup) — always ending with an assistant reminder that
8
8
  * billable tools require a bound approval token before they will execute.
9
+ *
10
+ * 2026-07 repair: every prompt references only tools that exist in the
11
+ * post-repair registry. The plan_stack prompt was removed (no stack backend)
12
+ * and create_preview became ship_website (website previews are implicit per
13
+ * release; there is no preview-trigger route).
9
14
  */
10
15
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
16
  /** Static prompt descriptor surfaced via prompts/list. */
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EA6CtC,CAAC;AAKF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwKvD"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EAmCtC,CAAC;AAKF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqIvD"}
package/dist/prompts.js CHANGED
@@ -4,48 +4,44 @@
4
4
  * Prompts are parameterised, server-side message templates the MCP client can
5
5
  * list and instantiate. Each prompt returns a short multi-message transcript
6
6
  * that guides an agent through a common Capix workflow (deploy, diagnose,
7
- * preview, plan, cleanup) — always ending with an assistant reminder that
7
+ * ship a website, cleanup) — always ending with an assistant reminder that
8
8
  * billable tools require a bound approval token before they will execute.
9
+ *
10
+ * 2026-07 repair: every prompt references only tools that exist in the
11
+ * post-repair registry. The plan_stack prompt was removed (no stack backend)
12
+ * and create_preview became ship_website (website previews are implicit per
13
+ * release; there is no preview-trigger route).
9
14
  */
10
15
  import { z } from "zod";
11
16
  export const CAPIX_PROMPTS = [
12
17
  {
13
18
  name: "deploy_repository",
14
- description: "Plan, quote, and deploy a repository as a Capix workload (compute or website).",
19
+ description: "Quote and deploy a workload on Capix compute, then track the operation.",
15
20
  arguments: [
16
- { name: "repoUrl", description: "Git repository URL.", required: true },
17
- { name: "branch", description: "Branch to deploy (default: main)." },
18
- { name: "region", description: "Preferred region." },
19
- { name: "workloadType", description: "Workload type, e.g. replicated_service.v1." },
21
+ { name: "workloadType", description: "Workload type, e.g. replicated_service.v1.", required: true },
22
+ { name: "region", description: "Preferred region (eu | us | asia | global)." },
20
23
  ],
21
24
  },
22
25
  {
23
26
  name: "diagnose_deployment",
24
- description: "Diagnose a failing deployment: pull logs, metrics, and health checks.",
27
+ description: "Diagnose a failing deployment: inspect phase, placement receipt, and settlement.",
25
28
  arguments: [
26
29
  { name: "deploymentId", description: "Deployment to diagnose.", required: true },
27
30
  ],
28
31
  },
29
32
  {
30
- name: "create_preview",
31
- description: "Create a preview deployment of a website from a branch.",
33
+ name: "ship_website",
34
+ description: "Create a website from a source ref, wait for the build, and promote it to production.",
32
35
  arguments: [
33
- { name: "siteId", description: "Website project id.", required: true },
34
- { name: "branch", description: "Branch to preview.", required: true },
35
- ],
36
- },
37
- {
38
- name: "plan_stack",
39
- description: "Validate and plan a multi-service stack from a manifest URL or inline spec.",
40
- arguments: [
41
- { name: "manifestUrl", description: "Stack manifest URL or inline spec.", required: true },
36
+ { name: "name", description: "Site name.", required: true },
37
+ { name: "sourceRef", description: "Source reference (repository/archive URL).", required: true },
42
38
  ],
43
39
  },
44
40
  {
45
41
  name: "cleanup_task",
46
- description: "Destroy all resources scoped to a completed task (§18 cleanup gate).",
42
+ description: "Destroy the resources created for a completed task (§18 cleanup gate).",
47
43
  arguments: [
48
- { name: "taskId", description: "Task-scoped resource id.", required: true },
44
+ { name: "taskId", description: "Task label for the cleanup summary.", required: true },
49
45
  ],
50
46
  },
51
47
  ];
@@ -60,10 +56,8 @@ export function registerPrompts(server) {
60
56
  server.registerPrompt("deploy_repository", {
61
57
  description: CAPIX_PROMPTS[0].description,
62
58
  argsSchema: {
63
- repoUrl: z.string().describe("Git repository URL."),
64
- branch: z.string().optional().describe("Branch to deploy (default: main)."),
65
- region: z.string().optional().describe("Preferred region."),
66
- workloadType: z.string().optional().describe("Workload type, e.g. replicated_service.v1."),
59
+ workloadType: z.string().describe("Workload type, e.g. replicated_service.v1."),
60
+ region: z.string().optional().describe("Preferred region (eu | us | asia | global)."),
67
61
  },
68
62
  }, async (args) => ({
69
63
  messages: [
@@ -72,15 +66,14 @@ export function registerPrompts(server) {
72
66
  content: {
73
67
  type: "text",
74
68
  text: [
75
- `Deploy the repository ${args.repoUrl} (branch ${args.branch ?? "main"}) as a Capix workload.`,
69
+ `Deploy a ${args.workloadType} workload on Capix.`,
76
70
  args.region ? `Target region: ${args.region}.` : "Region: auto-select cheapest feasible.",
77
- args.workloadType ? `Workload type: ${args.workloadType}.` : "",
78
71
  "Steps:",
79
- "1. capix_compute_planplan the deployment shape.",
80
- "2. capix_compute_quote — obtain a canonical quote.",
72
+ "1. capix_compute_catalogconfirm the workload type is enabled and pick a provider/region.",
73
+ "2. capix_compute_quote — obtain a canonical quote (15-minute TTL).",
81
74
  "3. capix_deploy — provision against the quote (requires approvalToken).",
82
- "4. capix_run_health_checksverify readiness.",
83
- ].filter(Boolean).join("\n"),
75
+ "4. capix_deploymentstrack the deployment phase until ready.",
76
+ ].join("\n"),
84
77
  },
85
78
  },
86
79
  {
@@ -103,10 +96,10 @@ export function registerPrompts(server) {
103
96
  type: "text",
104
97
  text: [
105
98
  `Diagnose deployment ${args.deploymentId}:`,
106
- "1. capix_inspect_logsrecent log lines.",
107
- "2. capix_inspect_metricsresource metrics.",
108
- "3. capix_run_health_checksprobe results.",
109
- "Summarise the failure mode and propose remediation (restart vs redeploy vs rollback).",
99
+ "1. capix_deploymentslocate the deployment, its phase, and its allocations.",
100
+ "2. capix_inspect_receiptreview the signed route receipt (placement + pricing evidence) behind it.",
101
+ "3. capix_receiptscheck the account's work receipts for related failures.",
102
+ "Summarise the failure mode and propose remediation (redeploy vs terminate).",
110
103
  ].join("\n"),
111
104
  },
112
105
  },
@@ -119,12 +112,12 @@ export function registerPrompts(server) {
119
112
  },
120
113
  ],
121
114
  }));
122
- // create_preview
123
- server.registerPrompt("create_preview", {
115
+ // ship_website
116
+ server.registerPrompt("ship_website", {
124
117
  description: CAPIX_PROMPTS[2].description,
125
118
  argsSchema: {
126
- siteId: z.string().describe("Website project id."),
127
- branch: z.string().describe("Branch to preview."),
119
+ name: z.string().describe("Site name."),
120
+ sourceRef: z.string().describe("Source reference (repository/archive URL)."),
128
121
  },
129
122
  }, async (args) => ({
130
123
  messages: [
@@ -133,9 +126,10 @@ export function registerPrompts(server) {
133
126
  content: {
134
127
  type: "text",
135
128
  text: [
136
- `Create a preview deployment for website ${args.siteId}, branch ${args.branch}.`,
137
- "1. capix_website_previewbuild a preview (requires approvalToken).",
138
- "2. Return the preview URL.",
129
+ `Ship the website ${args.name} from ${args.sourceRef}.`,
130
+ "1. capix_website_createcreate + build (requires approvalToken).",
131
+ "2. capix_website_get — poll until the latest release is built (check its status/step/logTail).",
132
+ "3. Return the preview URL, then capix_website_promote — promote to production (requires approvalToken).",
139
133
  ].join("\n"),
140
134
  },
141
135
  },
@@ -145,40 +139,11 @@ export function registerPrompts(server) {
145
139
  },
146
140
  ],
147
141
  }));
148
- // plan_stack
149
- server.registerPrompt("plan_stack", {
150
- description: CAPIX_PROMPTS[3].description,
151
- argsSchema: {
152
- manifestUrl: z.string().describe("Stack manifest URL or inline spec."),
153
- },
154
- }, async (args) => ({
155
- messages: [
156
- {
157
- role: "user",
158
- content: {
159
- type: "text",
160
- text: [
161
- `Validate and plan the stack manifest at ${args.manifestUrl}.`,
162
- "1. capix_stack_validate — check the manifest.",
163
- "2. capix_stack_plan — produce a service plan graph + aggregate quote.",
164
- "Report feasibility and per-service cost.",
165
- ].join("\n"),
166
- },
167
- },
168
- {
169
- role: "assistant",
170
- content: {
171
- type: "text",
172
- text: "Stack planning tools are read-only and may auto-run; no approval token required.",
173
- },
174
- },
175
- ],
176
- }));
177
142
  // cleanup_task
178
143
  server.registerPrompt("cleanup_task", {
179
- description: CAPIX_PROMPTS[4].description,
144
+ description: CAPIX_PROMPTS[3].description,
180
145
  argsSchema: {
181
- taskId: z.string().describe("Task-scoped resource id."),
146
+ taskId: z.string().describe("Task label for the cleanup summary."),
182
147
  },
183
148
  }, async (args) => ({
184
149
  messages: [
@@ -187,9 +152,10 @@ export function registerPrompts(server) {
187
152
  content: {
188
153
  type: "text",
189
154
  text: [
190
- `Destroy all task-scoped resources for ${args.taskId} (§18 cleanup gate).`,
191
- "1. capix_destroy_task_resourcesrelease allocations (requires approvalToken).",
192
- "2. capix_receiptsconfirm final settlement.",
155
+ `Destroy all resources created for ${args.taskId} (§18 cleanup gate).`,
156
+ "1. capix_deployments / capix_agent_list / capix_website_list enumerate what is still running.",
157
+ "2. capix_delete / capix_agent_destroy / capix_website_destroy release each one (requires approvalToken).",
158
+ "3. capix_receipts — confirm final settlement.",
193
159
  ].join("\n"),
194
160
  },
195
161
  },
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Capix MCP Server — the allowlist of REAL control-plane route families.
3
+ *
4
+ * Encoded from the 2026-07 live audit of the protocol repo
5
+ * (app/api/v1/* in CapIX-Protocol): every entry below is backed by a route
6
+ * handler that exists in the control plane today. The registry gate
7
+ * (tools/registry.test.ts) asserts that every registered tool's `routePath`
8
+ * starts with one of these families — this is the anti-regression guard that
9
+ * keeps phantom tools (tools pointing at routes the backend never
10
+ * implemented) out of the MCP surface.
11
+ *
12
+ * When the control plane ships a new route family, add it here WITH the
13
+ * backend evidence (route file path) in the comment, then add the tool.
14
+ *
15
+ * Evidence pointers are relative to the protocol repo root.
16
+ */
17
+ export interface RouteFamily {
18
+ /** Canonical path prefix, e.g. "/api/v1/jobs". */
19
+ prefix: string;
20
+ /** Route file(s) in the protocol repo proving the family exists. */
21
+ evidence: string;
22
+ }
23
+ export declare const REAL_ROUTE_FAMILIES: readonly RouteFamily[];
24
+ /**
25
+ * Route families that were advertised by pre-repair tools but DO NOT EXIST
26
+ * in the control plane (verified 2026-07 against app/api/v1/). Tools were
27
+ * removed from the registry; they return when the backend ships. Listed here
28
+ * so the gate test can also assert no tool regresses onto them.
29
+ *
30
+ * /api/v1/website (singular) — real family is /api/v1/websites (plural)
31
+ * /api/v1/networking, /api/v1/vpc — networking roadmap N1–N5, not built
32
+ * /api/v1/verification, /api/v1/attestations — Secured Cloud (TEE/zkVM) deferred
33
+ * /api/v1/testing — disposable test envs, not built
34
+ * /api/v1/planning — superseded by /api/v1/quotes
35
+ * /api/v1/lifecycle — superseded by /api/v1/deployments (+PATCH)
36
+ * /api/v1/projects — no projects list route exists
37
+ * /api/v1/catalog/compute, /api/v1/catalog/models — real: catalog/capabilities, models
38
+ * /api/v1/network/status — real: /api/v1/health
39
+ * /api/v1/account/balance — real: /api/v1/billing
40
+ * /api/v1/nodes/status, /api/v1/earnings — only nodes/[id]/earnings exists
41
+ */
42
+ export declare const REMOVED_ROUTE_FAMILIES: readonly string[];
43
+ /** True when `path` (may contain :params) targets a real route family. */
44
+ export declare function isRealRoutePath(path: string): boolean;
45
+ /** True when `path` targets a family removed because the backend never existed. */
46
+ export declare function isRemovedRoutePath(path: string): boolean;
47
+ //# sourceMappingURL=route-families.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-families.d.ts","sourceRoot":"","sources":["../src/route-families.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAmC5C,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAgB1C,CAAC;AAEX,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIxD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Capix MCP Server — the allowlist of REAL control-plane route families.
3
+ *
4
+ * Encoded from the 2026-07 live audit of the protocol repo
5
+ * (app/api/v1/* in CapIX-Protocol): every entry below is backed by a route
6
+ * handler that exists in the control plane today. The registry gate
7
+ * (tools/registry.test.ts) asserts that every registered tool's `routePath`
8
+ * starts with one of these families — this is the anti-regression guard that
9
+ * keeps phantom tools (tools pointing at routes the backend never
10
+ * implemented) out of the MCP surface.
11
+ *
12
+ * When the control plane ships a new route family, add it here WITH the
13
+ * backend evidence (route file path) in the comment, then add the tool.
14
+ *
15
+ * Evidence pointers are relative to the protocol repo root.
16
+ */
17
+ export const REAL_ROUTE_FAMILIES = [
18
+ // GET /api/v1/account re-exports GET /api/v1/me (account/route.ts).
19
+ { prefix: "/api/v1/account", evidence: "app/api/v1/account/route.ts" },
20
+ // GET /api/v1/billing — balances, valuation, transactions (billing/route.ts).
21
+ { prefix: "/api/v1/billing", evidence: "app/api/v1/billing/route.ts" },
22
+ // GET /api/v1/catalog/capabilities — workload types + providers (public).
23
+ { prefix: "/api/v1/catalog/capabilities", evidence: "app/api/v1/catalog/capabilities/route.ts" },
24
+ // GET/POST /api/v1/deployments, GET/PATCH/DELETE /api/v1/deployments/[id].
25
+ { prefix: "/api/v1/deployments", evidence: "app/api/v1/deployments/route.ts + [id]/route.ts" },
26
+ // GET /api/v1/health — service status + feature gates (public).
27
+ { prefix: "/api/v1/health", evidence: "app/api/v1/health/route.ts" },
28
+ // POST /api/v1/images — text-to-image (billable).
29
+ { prefix: "/api/v1/images", evidence: "app/api/v1/images/route.ts" },
30
+ // POST/GET /api/v1/jobs (+ [id]/cancel, [id]/logs, [id]/rerun).
31
+ { prefix: "/api/v1/jobs", evidence: "app/api/v1/jobs/route.ts + [id]/{cancel,logs,rerun}/route.ts" },
32
+ // GET /api/v1/marketplace/offers — provider-anonymized capacity offers (public).
33
+ { prefix: "/api/v1/marketplace/offers", evidence: "app/api/v1/marketplace/offers/route.ts" },
34
+ // GET/POST /api/v1/memes, GET /api/v1/memes/[id].
35
+ { prefix: "/api/v1/memes", evidence: "app/api/v1/memes/route.ts + [id]/route.ts" },
36
+ // GET /api/v1/models — public catalog + owned private endpoints.
37
+ { prefix: "/api/v1/models", evidence: "app/api/v1/models/route.ts" },
38
+ // GET/POST /api/v1/operations/[id] (POST = cancel), GET [id]/events.
39
+ { prefix: "/api/v1/operations", evidence: "app/api/v1/operations/[id]/route.ts" },
40
+ // GET/POST /api/v1/quotes (GET requires ?quoteId=).
41
+ { prefix: "/api/v1/quotes", evidence: "app/api/v1/quotes/route.ts" },
42
+ // GET/POST /api/v1/receipts — work receipts (list/create only; no [id] route).
43
+ { prefix: "/api/v1/receipts", evidence: "app/api/v1/receipts/route.ts" },
44
+ // GET /api/v1/route-receipts/[id] — signed placement receipt (by-id only).
45
+ { prefix: "/api/v1/route-receipts", evidence: "app/api/v1/route-receipts/[id]/route.ts" },
46
+ // POST/GET /api/v1/training, GET [id], POST [id]/deploy.
47
+ { prefix: "/api/v1/training", evidence: "app/api/v1/training/route.ts + [id]/{route,deploy/route}.ts" },
48
+ // POST/GET /api/v1/agent-deploys, GET/DELETE [id].
49
+ { prefix: "/api/v1/agent-deploys", evidence: "app/api/v1/agent-deploys/route.ts + [id]/route.ts" },
50
+ // POST/GET /api/v1/websites, GET/DELETE [id], POST [id]/promote|rollback.
51
+ { prefix: "/api/v1/websites", evidence: "app/api/v1/websites/route.ts + [id]/route.ts" },
52
+ ];
53
+ /**
54
+ * Route families that were advertised by pre-repair tools but DO NOT EXIST
55
+ * in the control plane (verified 2026-07 against app/api/v1/). Tools were
56
+ * removed from the registry; they return when the backend ships. Listed here
57
+ * so the gate test can also assert no tool regresses onto them.
58
+ *
59
+ * /api/v1/website (singular) — real family is /api/v1/websites (plural)
60
+ * /api/v1/networking, /api/v1/vpc — networking roadmap N1–N5, not built
61
+ * /api/v1/verification, /api/v1/attestations — Secured Cloud (TEE/zkVM) deferred
62
+ * /api/v1/testing — disposable test envs, not built
63
+ * /api/v1/planning — superseded by /api/v1/quotes
64
+ * /api/v1/lifecycle — superseded by /api/v1/deployments (+PATCH)
65
+ * /api/v1/projects — no projects list route exists
66
+ * /api/v1/catalog/compute, /api/v1/catalog/models — real: catalog/capabilities, models
67
+ * /api/v1/network/status — real: /api/v1/health
68
+ * /api/v1/account/balance — real: /api/v1/billing
69
+ * /api/v1/nodes/status, /api/v1/earnings — only nodes/[id]/earnings exists
70
+ */
71
+ export const REMOVED_ROUTE_FAMILIES = [
72
+ "/api/v1/website",
73
+ "/api/v1/networking",
74
+ "/api/v1/vpc",
75
+ "/api/v1/verification",
76
+ "/api/v1/attestations",
77
+ "/api/v1/testing",
78
+ "/api/v1/planning",
79
+ "/api/v1/lifecycle",
80
+ "/api/v1/projects",
81
+ "/api/v1/catalog/compute",
82
+ "/api/v1/catalog/models",
83
+ "/api/v1/network",
84
+ "/api/v1/account/balance",
85
+ "/api/v1/nodes",
86
+ "/api/v1/earnings",
87
+ ];
88
+ /** True when `path` (may contain :params) targets a real route family. */
89
+ export function isRealRoutePath(path) {
90
+ return REAL_ROUTE_FAMILIES.some(({ prefix }) => path === prefix || path.startsWith(`${prefix}/`));
91
+ }
92
+ /** True when `path` targets a family removed because the backend never existed. */
93
+ export function isRemovedRoutePath(path) {
94
+ return REMOVED_ROUTE_FAMILIES.some((prefix) => path === prefix || path.startsWith(`${prefix}/`));
95
+ }
96
+ //# sourceMappingURL=route-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-families.js","sourceRoot":"","sources":["../src/route-families.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,oEAAoE;IACpE,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,6BAA6B,EAAE;IACtE,8EAA8E;IAC9E,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,6BAA6B,EAAE;IACtE,0EAA0E;IAC1E,EAAE,MAAM,EAAE,8BAA8B,EAAE,QAAQ,EAAE,0CAA0C,EAAE;IAChG,2EAA2E;IAC3E,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,iDAAiD,EAAE;IAC9F,gEAAgE;IAChE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACpE,kDAAkD;IAClD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACpE,gEAAgE;IAChE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,8DAA8D,EAAE;IACpG,iFAAiF;IACjF,EAAE,MAAM,EAAE,4BAA4B,EAAE,QAAQ,EAAE,wCAAwC,EAAE;IAC5F,kDAAkD;IAClD,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE;IAClF,iEAAiE;IACjE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACpE,qEAAqE;IACrE,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,qCAAqC,EAAE;IACjF,oDAAoD;IACpD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACpE,+EAA+E;IAC/E,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,8BAA8B,EAAE;IACxE,2EAA2E;IAC3E,EAAE,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,yCAAyC,EAAE;IACzF,yDAAyD;IACzD,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,6DAA6D,EAAE;IACvG,mDAAmD;IACnD,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAClG,0EAA0E;IAC1E,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,8CAA8C,EAAE;CAChF,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,iBAAiB;IACjB,oBAAoB;IACpB,aAAa;IACb,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,yBAAyB;IACzB,wBAAwB;IACxB,iBAAiB;IACjB,yBAAyB;IACzB,eAAe;IACf,kBAAkB;CACV,CAAC;AAEX,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,CAAC,IAAI,CAC7B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,sBAAsB,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAC7D,CAAC;AACJ,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Capix MCP Server — the McpServer assembly + transport wiring.
3
3
  *
4
- * `createCapixMcpServer(client)` builds an {@link McpServer} with all 64
5
- * tools, the capix:// resources, and the guided prompts registered. Each tool
6
- * registration wires:
4
+ * `createCapixMcpServer(client)` builds an {@link McpServer} with every tool
5
+ * in the registry (TOOL_COUNT), the capix:// resources, and the guided
6
+ * prompts registered. Each tool registration wires:
7
7
  * - inputSchema → the tool's Zod raw shape (validated by the SDK)
8
8
  * - outputSchema → the tool's Zod raw output shape
9
9
  * - annotations → readOnlyHint / destructiveHint / idempotentHint derived
@@ -32,8 +32,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
32
32
  import type { CapixClient } from "./client.js";
33
33
  import type { ToolDef, ToolScope } from "./types.js";
34
34
  /**
35
- * Build a fully-wired McpServer. All 64 tools, resources, and prompts are
36
- * registered before returning; the caller just attaches a transport.
35
+ * Build a fully-wired McpServer. All registered tools, resources, and prompts
36
+ * are wired before returning; the caller just attaches a transport.
37
37
  */
38
38
  export declare function createCapixMcpServer(client: CapixClient, opts?: {
39
39
  version?: string;