hostinger-api-mcp 3.26.0 → 3.27.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@ Generated at release time from the diff between the previous and current
4
4
  build. Tool changes are listed individually; everything else is summarised
5
5
  by area.
6
6
 
7
+ ## v3.27.1 — 2026-11-03
8
+
9
+ ### Also in this release
10
+
11
+ - Bundled agent skills: `skills/headless/VERSION`
12
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
13
+
14
+ ## v3.27.0 — 2026-11-03
15
+
16
+ ### Operations
17
+
18
+ - Added `gpu_catalog_pool-groups` — Get pool groups
19
+ - Added `gpu_catalog_pool-instance-types` — Get pool instance types
20
+ - Added `gpu_catalog_pool-os-templates` — Get pool OS templates
21
+ - Added `gpu_catalog_pool` — Get pool list
22
+
23
+ ### Also in this release
24
+
25
+ - Documentation: `README.md`
26
+ - Dependencies: `package-lock.json`, `package.json`
27
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
28
+ - Build and packaging: `types.d.ts`
29
+ - Server entry points: `src/servers/gpu.js`, `src/servers/gpu.ts`
30
+
7
31
  ## v3.26.0 — 2026-11-03
8
32
 
9
33
  ### Also in this release
package/README.md CHANGED
@@ -69,13 +69,14 @@ pnpm update -g @hostinger/mcp
69
69
 
70
70
  This package installs the following MCP server commands:
71
71
 
72
- - `hostinger-api-mcp` — unified server over every operation (408 total)
72
+ - `hostinger-api-mcp` — unified server over every operation (412 total)
73
73
  - `hostinger-agency-hosting-mcp` — 43 operations for agency-hosting
74
74
  - `hostinger-agent-readiness-mcp` — 4 operations for agent-readiness
75
75
  - `hostinger-billing-mcp` — 10 operations for billing
76
76
  - `hostinger-dns-mcp` — 9 operations for dns
77
77
  - `hostinger-domains-mcp` — 43 operations for domains
78
78
  - `hostinger-ecommerce-mcp` — 30 operations for ecommerce
79
+ - `hostinger-gpu-mcp` — 5 operations for gpu
79
80
  - `hostinger-horizons-mcp` — 7 operations for horizons
80
81
  - `hostinger-hosting-mcp` — 57 operations for hosting
81
82
  - `hostinger-mail-mcp` — 39 operations for mail
@@ -1740,6 +1741,60 @@ store currency. Returns the created variant.
1740
1741
  - **Method**: `POST`
1741
1742
  - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants`
1742
1743
 
1744
+ ### `hostinger-gpu-mcp`
1745
+
1746
+ #### changelog_list-entries
1747
+
1748
+ What's new and what's coming at Hostinger: list entries of the public Hostinger changelog (release notes, product updates, recent changes, new features and improvements) and of the public roadmap (upcoming features not released yet). Released entries come newest first; upcoming items come soonest expected release first. Reads released changelog entries by default; pick upcoming for the roadmap or all for both. Filter by product or date. Each entry has its title, summary, product, URL, status (released or upcoming), and plan when the entry states one; released entries have their date, upcoming items their expected release date when set. Needs no API token.
1749
+
1750
+ - **Method**: `custom`
1751
+ - **Path**: `custom`
1752
+
1753
+ #### gpu_catalog_pool-groups
1754
+
1755
+ Retrieve GPU pool groups, ordered by name.
1756
+
1757
+ Each group bundles the pools of one GPU model and lists its currently available pools,
1758
+ whether any of them is available and the lowest hourly price among its instance types.
1759
+ The price is returned even when the group is out of stock.
1760
+
1761
+ Use this endpoint to show which GPU models can be ordered and from what price.
1762
+
1763
+ - **Method**: `GET`
1764
+ - **Path**: `/api/gpu/v1/pools/groups`
1765
+
1766
+ #### gpu_catalog_pool-instance-types
1767
+
1768
+ Retrieve the instance types offered by a specified GPU pool, ordered by CPU core count.
1769
+
1770
+ Each instance type describes its CPU, memory and storage, and its hourly price.
1771
+ Only instance types that can currently be ordered are returned.
1772
+
1773
+ Use this endpoint to choose the `pool_instance_id` for a new GPU instance.
1774
+
1775
+ - **Method**: `GET`
1776
+ - **Path**: `/api/gpu/v1/pools/{poolId}/instances`
1777
+
1778
+ #### gpu_catalog_pool-os-templates
1779
+
1780
+ Retrieve the OS templates that can be installed on a specified GPU pool instance type.
1781
+
1782
+ Use this endpoint to choose the `os_template_id` for a new GPU instance.
1783
+
1784
+ - **Method**: `GET`
1785
+ - **Path**: `/api/gpu/v1/pools/{poolId}/instances/{poolInstanceId}/os-templates`
1786
+
1787
+ #### gpu_catalog_pool
1788
+
1789
+ Retrieve all available GPU pools, ordered by name.
1790
+
1791
+ A pool serves GPU accelerators of one model from a single region.
1792
+
1793
+ Use this endpoint to choose a pool before listing its instance types.
1794
+
1795
+ - **Method**: `GET`
1796
+ - **Path**: `/api/gpu/v1/pools`
1797
+
1743
1798
  ### `hostinger-horizons-mcp`
1744
1799
 
1745
1800
  #### changelog_list-entries
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.26.0",
3
+ "version": "3.27.1",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.26.0",
3
+ "version": "3.27.1",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
@@ -25,6 +25,7 @@
25
25
  "hostinger-dns-mcp": "./src/servers/dns.js",
26
26
  "hostinger-domains-mcp": "./src/servers/domains.js",
27
27
  "hostinger-ecommerce-mcp": "./src/servers/ecommerce.js",
28
+ "hostinger-gpu-mcp": "./src/servers/gpu.js",
28
29
  "hostinger-horizons-mcp": "./src/servers/horizons.js",
29
30
  "hostinger-hosting-mcp": "./src/servers/hosting.js",
30
31
  "hostinger-mail-mcp": "./src/servers/mail.js",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "3.26.0",
9
+ "version": "3.27.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.26.0",
14
+ "version": "3.27.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -1,3 +1,3 @@
1
- version=3.26.0
2
- commit=dfa3d353b2a7
1
+ version=3.27.1
2
+ commit=f845254a4bae
3
3
  built=2026-11-03
@@ -62,7 +62,7 @@ const GetSkillRequestSchema = z.object({
62
62
 
63
63
  /**
64
64
  * MCP Server for Hostinger API
65
- * Generated from OpenAPI spec version 2.6.2
65
+ * Generated from OpenAPI spec version 2.7.0
66
66
  */
67
67
  class MCPServer {
68
68
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -357,6 +357,8 @@ class MCPServer {
357
357
 
358
358
  // System directories and the roots of the home directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
359
359
  systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library',
360
+ // Container secrets (Docker's /run/secrets, the Kubernetes service-account token under /var/run/secrets) and runtime state.
361
+ '/run', '/var/run', '/private/var/run',
360
362
  // Every user's home directory, whatever the current home is (root's is /root, a container's can be /).
361
363
  '/home', '/Users', ...(process.platform === 'win32' ? [path.join(process.env.SystemDrive || 'C:', 'Users')] : [])];
362
364
 
@@ -397,10 +399,32 @@ class MCPServer {
397
399
  // browser profiles and tokens; .claude-worktrees holds Claude Code's git worktrees.
398
400
  const top = path.relative(fold(home), fold(real)).split(path.sep)[0];
399
401
  const inHomeData = inHome && top !== '.claude-worktrees' && (top.startsWith('.') || top === fold('Library') || top === fold('AppData') || top === 'snap');
402
+ // A profile reached outside the home roots (WSL's /mnt/c/Users/me, a home on a mounted disk): the top-level data
403
+ // of a directory under a Users or home directory, and a profile, or a directory holding profiles (/mnt/c/Users,
404
+ // /mnt/c), that has the data of one; a project's own users/ or home/ deploys.
405
+ const looksLikeProfile = (dir) => ['AppData', 'Library', '.ssh', '.aws', '.gnupg', '.kube'].some((name) => fs.existsSync(path.join(dir, name)));
406
+ const holdsProfiles = (dir) => {
407
+ try {
408
+ return fs.readdirSync(dir, { withFileTypes: true }).some((entry) => entry.isDirectory() && looksLikeProfile(path.join(dir, entry.name)));
409
+ } catch (error) {
410
+ return false;
411
+ }
412
+ };
413
+ const segments = real.split(path.sep);
414
+ const inProfile = !inHome && (holdsProfiles(path.join(real, 'Users')) || segments.some((segment, i) => {
415
+ if (!['users', 'home'].includes(segment.toLowerCase())) {
416
+ return false;
417
+ }
418
+ const top = segments[i + 2];
419
+ if (top === undefined) {
420
+ return i + 1 < segments.length ? looksLikeProfile(real) : holdsProfiles(real);
421
+ }
422
+ return top !== '.claude-worktrees' && (top.startsWith('.') || ['library', 'appdata', 'snap'].includes(top.toLowerCase()));
423
+ }));
400
424
  const inSystem = !inHome && this.systemDirectories.some((dir) => inside(dir, real));
401
425
  // Windows drops trailing dots and spaces from a name: .ssh. is .ssh.
402
426
  const inCredentials = real.split(path.sep).some((segment) => this.credentialDirectories.includes((process.platform === 'win32' ? segment.replace(/[. ]+$/, '') : segment).toLowerCase()));
403
- if (inside(real, home) || otherHome || inHomeData || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
427
+ if (inside(real, home) || otherHome || inHomeData || inProfile || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
404
428
  throw new Error('Refusing to deploy ' + localPath + ': it is, or contains, a home, system or credentials location. Pass the project directory or archive.');
405
429
  }
406
430
  }
@@ -94,7 +94,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
94
94
 
95
95
  /**
96
96
  * MCP Server for Hostinger API
97
- * Generated from OpenAPI spec version 2.6.2
97
+ * Generated from OpenAPI spec version 2.7.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -389,6 +389,8 @@ class MCPServer {
389
389
 
390
390
  // System directories and the roots of the home directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
391
391
  private systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library',
392
+ // Container secrets (Docker's /run/secrets, the Kubernetes service-account token under /var/run/secrets) and runtime state.
393
+ '/run', '/var/run', '/private/var/run',
392
394
  // Every user's home directory, whatever the current home is (root's is /root, a container's can be /).
393
395
  '/home', '/Users', ...(process.platform === 'win32' ? [path.join(process.env.SystemDrive || 'C:', 'Users')] : [])];
394
396
 
@@ -429,10 +431,32 @@ class MCPServer {
429
431
  // browser profiles and tokens; .claude-worktrees holds Claude Code's git worktrees.
430
432
  const top = path.relative(fold(home), fold(real)).split(path.sep)[0];
431
433
  const inHomeData = inHome && top !== '.claude-worktrees' && (top.startsWith('.') || top === fold('Library') || top === fold('AppData') || top === 'snap');
434
+ // A profile reached outside the home roots (WSL's /mnt/c/Users/me, a home on a mounted disk): the top-level data
435
+ // of a directory under a Users or home directory, and a profile, or a directory holding profiles (/mnt/c/Users,
436
+ // /mnt/c), that has the data of one; a project's own users/ or home/ deploys.
437
+ const looksLikeProfile = (dir: string): boolean => ['AppData', 'Library', '.ssh', '.aws', '.gnupg', '.kube'].some((name: string) => fs.existsSync(path.join(dir, name)));
438
+ const holdsProfiles = (dir: string): boolean => {
439
+ try {
440
+ return fs.readdirSync(dir, { withFileTypes: true }).some((entry) => entry.isDirectory() && looksLikeProfile(path.join(dir, entry.name)));
441
+ } catch (error) {
442
+ return false;
443
+ }
444
+ };
445
+ const segments = real.split(path.sep);
446
+ const inProfile = !inHome && (holdsProfiles(path.join(real, 'Users')) || segments.some((segment: string, i: number) => {
447
+ if (!['users', 'home'].includes(segment.toLowerCase())) {
448
+ return false;
449
+ }
450
+ const top = segments[i + 2];
451
+ if (top === undefined) {
452
+ return i + 1 < segments.length ? looksLikeProfile(real) : holdsProfiles(real);
453
+ }
454
+ return top !== '.claude-worktrees' && (top.startsWith('.') || ['library', 'appdata', 'snap'].includes(top.toLowerCase()));
455
+ }));
432
456
  const inSystem = !inHome && this.systemDirectories.some((dir: string) => inside(dir, real));
433
457
  // Windows drops trailing dots and spaces from a name: .ssh. is .ssh.
434
458
  const inCredentials = real.split(path.sep).some((segment: string) => this.credentialDirectories.includes((process.platform === 'win32' ? segment.replace(/[. ]+$/, '') : segment).toLowerCase()));
435
- if (inside(real, home) || otherHome || inHomeData || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
459
+ if (inside(real, home) || otherHome || inHomeData || inProfile || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
436
460
  throw new Error('Refusing to deploy ' + localPath + ': it is, or contains, a home, system or credentials location. Pass the project directory or archive.');
437
461
  }
438
462
  }
@@ -6362,6 +6362,173 @@ export default [
6362
6362
  ],
6363
6363
  "group": "ecommerce"
6364
6364
  },
6365
+ {
6366
+ "name": "gpu_catalog_pool-groups",
6367
+ "title": "Get pool groups",
6368
+ "annotations": {
6369
+ "title": "Get pool groups",
6370
+ "readOnlyHint": true,
6371
+ "destructiveHint": false
6372
+ },
6373
+ "description": "Retrieve GPU pool groups, ordered by name.\n\nEach group bundles the pools of one GPU model and lists its currently available pools,\nwhether any of them is available and the lowest hourly price among its instance types.\nThe price is returned even when the group is out of stock.\n\nUse this endpoint to show which GPU models can be ordered and from what price.",
6374
+ "method": "GET",
6375
+ "path": "/api/gpu/v1/pools/groups",
6376
+ "inputSchema": {
6377
+ "type": "object",
6378
+ "properties": {
6379
+ "currency": {
6380
+ "type": "string",
6381
+ "description": "Currency of the returned prices, `USD` by default",
6382
+ "enum": [
6383
+ "USD",
6384
+ "ARS",
6385
+ "AMD",
6386
+ "AUD",
6387
+ "AZN",
6388
+ "BDT",
6389
+ "BRL",
6390
+ "BTC",
6391
+ "BYN",
6392
+ "CAD",
6393
+ "CHF",
6394
+ "CLP",
6395
+ "CNY",
6396
+ "COP",
6397
+ "CZK",
6398
+ "DKK",
6399
+ "EGP",
6400
+ "EUR",
6401
+ "GBP",
6402
+ "GEL",
6403
+ "HKD",
6404
+ "HRK",
6405
+ "HUF",
6406
+ "IDR",
6407
+ "ILS",
6408
+ "INR",
6409
+ "JPY",
6410
+ "KGS",
6411
+ "KRW",
6412
+ "KZT",
6413
+ "MAD",
6414
+ "MXN",
6415
+ "MYR",
6416
+ "NGN",
6417
+ "NOK",
6418
+ "NZD",
6419
+ "PEN",
6420
+ "PHP",
6421
+ "PKR",
6422
+ "PLN",
6423
+ "SEK",
6424
+ "SGD",
6425
+ "THB",
6426
+ "TJS",
6427
+ "TRY",
6428
+ "TWD",
6429
+ "UAH",
6430
+ "VND",
6431
+ "ZAR"
6432
+ ]
6433
+ }
6434
+ },
6435
+ "required": []
6436
+ },
6437
+ "security": [
6438
+ {
6439
+ "apiToken": []
6440
+ }
6441
+ ],
6442
+ "group": "gpu"
6443
+ },
6444
+ {
6445
+ "name": "gpu_catalog_pool-instance-types",
6446
+ "title": "Get pool instance types",
6447
+ "annotations": {
6448
+ "title": "Get pool instance types",
6449
+ "readOnlyHint": true,
6450
+ "destructiveHint": false
6451
+ },
6452
+ "description": "Retrieve the instance types offered by a specified GPU pool, ordered by CPU core count.\n\nEach instance type describes its CPU, memory and storage, and its hourly price.\nOnly instance types that can currently be ordered are returned.\n\nUse this endpoint to choose the `pool_instance_id` for a new GPU instance.",
6453
+ "method": "GET",
6454
+ "path": "/api/gpu/v1/pools/{poolId}/instances",
6455
+ "inputSchema": {
6456
+ "type": "object",
6457
+ "properties": {
6458
+ "poolId": {
6459
+ "type": "integer",
6460
+ "description": "GPU pool ID"
6461
+ }
6462
+ },
6463
+ "required": [
6464
+ "poolId"
6465
+ ]
6466
+ },
6467
+ "security": [
6468
+ {
6469
+ "apiToken": []
6470
+ }
6471
+ ],
6472
+ "group": "gpu"
6473
+ },
6474
+ {
6475
+ "name": "gpu_catalog_pool-os-templates",
6476
+ "title": "Get pool OS templates",
6477
+ "annotations": {
6478
+ "title": "Get pool OS templates",
6479
+ "readOnlyHint": true,
6480
+ "destructiveHint": false
6481
+ },
6482
+ "description": "Retrieve the OS templates that can be installed on a specified GPU pool instance type.\n\nUse this endpoint to choose the `os_template_id` for a new GPU instance.",
6483
+ "method": "GET",
6484
+ "path": "/api/gpu/v1/pools/{poolId}/instances/{poolInstanceId}/os-templates",
6485
+ "inputSchema": {
6486
+ "type": "object",
6487
+ "properties": {
6488
+ "poolId": {
6489
+ "type": "integer",
6490
+ "description": "GPU pool ID"
6491
+ },
6492
+ "poolInstanceId": {
6493
+ "type": "integer",
6494
+ "description": "GPU pool instance type ID"
6495
+ }
6496
+ },
6497
+ "required": [
6498
+ "poolId",
6499
+ "poolInstanceId"
6500
+ ]
6501
+ },
6502
+ "security": [
6503
+ {
6504
+ "apiToken": []
6505
+ }
6506
+ ],
6507
+ "group": "gpu"
6508
+ },
6509
+ {
6510
+ "name": "gpu_catalog_pool",
6511
+ "title": "Get pool list",
6512
+ "annotations": {
6513
+ "title": "Get pool list",
6514
+ "readOnlyHint": true,
6515
+ "destructiveHint": false
6516
+ },
6517
+ "description": "Retrieve all available GPU pools, ordered by name.\n\nA pool serves GPU accelerators of one model from a single region.\n\nUse this endpoint to choose a pool before listing its instance types.",
6518
+ "method": "GET",
6519
+ "path": "/api/gpu/v1/pools",
6520
+ "inputSchema": {
6521
+ "type": "object",
6522
+ "properties": {},
6523
+ "required": []
6524
+ },
6525
+ "security": [
6526
+ {
6527
+ "apiToken": []
6528
+ }
6529
+ ],
6530
+ "group": "gpu"
6531
+ },
6365
6532
  {
6366
6533
  "name": "horizons_websites_clone",
6367
6534
  "title": "Clone website",
@@ -6379,6 +6379,173 @@ const tools: OpenApiTool[] = [
6379
6379
  ],
6380
6380
  "group": "ecommerce"
6381
6381
  },
6382
+ {
6383
+ "name": "gpu_catalog_pool-groups",
6384
+ "title": "Get pool groups",
6385
+ "annotations": {
6386
+ "title": "Get pool groups",
6387
+ "readOnlyHint": true,
6388
+ "destructiveHint": false
6389
+ },
6390
+ "description": "Retrieve GPU pool groups, ordered by name.\n\nEach group bundles the pools of one GPU model and lists its currently available pools,\nwhether any of them is available and the lowest hourly price among its instance types.\nThe price is returned even when the group is out of stock.\n\nUse this endpoint to show which GPU models can be ordered and from what price.",
6391
+ "method": "GET",
6392
+ "path": "/api/gpu/v1/pools/groups",
6393
+ "inputSchema": {
6394
+ "type": "object",
6395
+ "properties": {
6396
+ "currency": {
6397
+ "type": "string",
6398
+ "description": "Currency of the returned prices, `USD` by default",
6399
+ "enum": [
6400
+ "USD",
6401
+ "ARS",
6402
+ "AMD",
6403
+ "AUD",
6404
+ "AZN",
6405
+ "BDT",
6406
+ "BRL",
6407
+ "BTC",
6408
+ "BYN",
6409
+ "CAD",
6410
+ "CHF",
6411
+ "CLP",
6412
+ "CNY",
6413
+ "COP",
6414
+ "CZK",
6415
+ "DKK",
6416
+ "EGP",
6417
+ "EUR",
6418
+ "GBP",
6419
+ "GEL",
6420
+ "HKD",
6421
+ "HRK",
6422
+ "HUF",
6423
+ "IDR",
6424
+ "ILS",
6425
+ "INR",
6426
+ "JPY",
6427
+ "KGS",
6428
+ "KRW",
6429
+ "KZT",
6430
+ "MAD",
6431
+ "MXN",
6432
+ "MYR",
6433
+ "NGN",
6434
+ "NOK",
6435
+ "NZD",
6436
+ "PEN",
6437
+ "PHP",
6438
+ "PKR",
6439
+ "PLN",
6440
+ "SEK",
6441
+ "SGD",
6442
+ "THB",
6443
+ "TJS",
6444
+ "TRY",
6445
+ "TWD",
6446
+ "UAH",
6447
+ "VND",
6448
+ "ZAR"
6449
+ ]
6450
+ }
6451
+ },
6452
+ "required": []
6453
+ },
6454
+ "security": [
6455
+ {
6456
+ "apiToken": []
6457
+ }
6458
+ ],
6459
+ "group": "gpu"
6460
+ },
6461
+ {
6462
+ "name": "gpu_catalog_pool-instance-types",
6463
+ "title": "Get pool instance types",
6464
+ "annotations": {
6465
+ "title": "Get pool instance types",
6466
+ "readOnlyHint": true,
6467
+ "destructiveHint": false
6468
+ },
6469
+ "description": "Retrieve the instance types offered by a specified GPU pool, ordered by CPU core count.\n\nEach instance type describes its CPU, memory and storage, and its hourly price.\nOnly instance types that can currently be ordered are returned.\n\nUse this endpoint to choose the `pool_instance_id` for a new GPU instance.",
6470
+ "method": "GET",
6471
+ "path": "/api/gpu/v1/pools/{poolId}/instances",
6472
+ "inputSchema": {
6473
+ "type": "object",
6474
+ "properties": {
6475
+ "poolId": {
6476
+ "type": "integer",
6477
+ "description": "GPU pool ID"
6478
+ }
6479
+ },
6480
+ "required": [
6481
+ "poolId"
6482
+ ]
6483
+ },
6484
+ "security": [
6485
+ {
6486
+ "apiToken": []
6487
+ }
6488
+ ],
6489
+ "group": "gpu"
6490
+ },
6491
+ {
6492
+ "name": "gpu_catalog_pool-os-templates",
6493
+ "title": "Get pool OS templates",
6494
+ "annotations": {
6495
+ "title": "Get pool OS templates",
6496
+ "readOnlyHint": true,
6497
+ "destructiveHint": false
6498
+ },
6499
+ "description": "Retrieve the OS templates that can be installed on a specified GPU pool instance type.\n\nUse this endpoint to choose the `os_template_id` for a new GPU instance.",
6500
+ "method": "GET",
6501
+ "path": "/api/gpu/v1/pools/{poolId}/instances/{poolInstanceId}/os-templates",
6502
+ "inputSchema": {
6503
+ "type": "object",
6504
+ "properties": {
6505
+ "poolId": {
6506
+ "type": "integer",
6507
+ "description": "GPU pool ID"
6508
+ },
6509
+ "poolInstanceId": {
6510
+ "type": "integer",
6511
+ "description": "GPU pool instance type ID"
6512
+ }
6513
+ },
6514
+ "required": [
6515
+ "poolId",
6516
+ "poolInstanceId"
6517
+ ]
6518
+ },
6519
+ "security": [
6520
+ {
6521
+ "apiToken": []
6522
+ }
6523
+ ],
6524
+ "group": "gpu"
6525
+ },
6526
+ {
6527
+ "name": "gpu_catalog_pool",
6528
+ "title": "Get pool list",
6529
+ "annotations": {
6530
+ "title": "Get pool list",
6531
+ "readOnlyHint": true,
6532
+ "destructiveHint": false
6533
+ },
6534
+ "description": "Retrieve all available GPU pools, ordered by name.\n\nA pool serves GPU accelerators of one model from a single region.\n\nUse this endpoint to choose a pool before listing its instance types.",
6535
+ "method": "GET",
6536
+ "path": "/api/gpu/v1/pools",
6537
+ "inputSchema": {
6538
+ "type": "object",
6539
+ "properties": {},
6540
+ "required": []
6541
+ },
6542
+ "security": [
6543
+ {
6544
+ "apiToken": []
6545
+ }
6546
+ ],
6547
+ "group": "gpu"
6548
+ },
6382
6549
  {
6383
6550
  "name": "horizons_websites_clone",
6384
6551
  "title": "Clone website",