hostinger-api-mcp 3.11.1 → 3.12.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,38 @@ 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.12.1 — 2026-10-27
8
+
9
+ ### Operations
10
+
11
+ - Changed the description of `domains_portfolio_complete-setup`
12
+
13
+ ### Also in this release
14
+
15
+ - Documentation: `README.md`
16
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
17
+ - Build and packaging: `types.d.ts`
18
+
19
+ ## v3.12.0 — 2026-10-27
20
+
21
+ ### Operations
22
+
23
+ - Added `reach_integrations_disconnect-ecommerce-store` — Disconnect Ecommerce store
24
+ - Added `reach_integrations_list-ecommerce-stores` — List Ecommerce stores
25
+ - Added `reach_templates_email` — Get email template
26
+ - Added `reach_integrations_list-connected-websites` — List connected websites
27
+ - Added `reach_integrations_connect-ai-website-builder-site` — Connect AI Website Builder site
28
+ - Added `reach_integrations_disconnect-ai-website-builder-site` — Disconnect AI Website Builder site
29
+ - Added `reach_integrations_disconnect-wordpress-site` — Disconnect WordPress site
30
+ - Changed the description of `reach_campaigns_get`
31
+ - Changed the description of `reach_templates_list-email`
32
+
33
+ ### Also in this release
34
+
35
+ - Documentation: `README.md`
36
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
37
+ - Build and packaging: `types.d.ts`
38
+
7
39
  ## v3.11.1 — 2026-10-27
8
40
 
9
41
  ### Operations
package/README.md CHANGED
@@ -69,7 +69,7 @@ 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 (409 total)
72
+ - `hostinger-api-mcp` — unified server over every operation (416 total)
73
73
  - `hostinger-agency-hosting-mcp` — 42 operations for agency-hosting
74
74
  - `hostinger-agent-readiness-mcp` — 3 operations for agent-readiness
75
75
  - `hostinger-billing-mcp` — 9 operations for billing
@@ -79,7 +79,7 @@ This package installs the following MCP server commands:
79
79
  - `hostinger-horizons-mcp` — 6 operations for horizons
80
80
  - `hostinger-hosting-mcp` — 66 operations for hosting
81
81
  - `hostinger-mail-mcp` — 38 operations for mail
82
- - `hostinger-reach-mcp` — 62 operations for reach
82
+ - `hostinger-reach-mcp` — 69 operations for reach
83
83
  - `hostinger-vps-mcp` — 67 operations for vps
84
84
  - `hostinger-wordpress-mcp` — 40 operations for wordpress
85
85
 
@@ -1284,8 +1284,8 @@ common reason a domain is left awaiting setup. Create one with `Create WHOIS pro
1284
1284
  Some TLDs require `additional_details`. These are validated before setup, so a missing or
1285
1285
  invalid value is rejected without any registration being attempted.
1286
1286
 
1287
- The domain is set up with the default nameservers and without privacy protection. Use
1288
- `Update domain nameservers` and `Enable privacy protection` afterwards to change either.
1287
+ The domain is set up with the default nameservers and with privacy protection. Use
1288
+ `Update domain nameservers` and `Disable privacy protection` afterwards to change either.
1289
1289
 
1290
1290
  A successful response means the setup request was accepted, not that the domain is already
1291
1291
  registered. Poll `Get domain list` for the outcome, the domain appears in `Get domain details`
@@ -3035,7 +3035,8 @@ Get a single campaign with its sender, subject, template reference, targeting an
3035
3035
  progress.
3036
3036
 
3037
3037
  This describes how the campaign was set up and how far it has got. For opens, clicks and
3038
- unsubscribes use the campaign statistics endpoint.
3038
+ unsubscribes use the campaign statistics endpoint. The email content is not included: pass
3039
+ `template_uuid` to the get email template endpoint to read its HTML.
3039
3040
 
3040
3041
  - **Method**: `GET`
3041
3042
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}`
@@ -3690,13 +3691,41 @@ a connected domain cannot be changed here. Returns the settings after the change
3690
3691
  - **Method**: `PATCH`
3691
3692
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/settings`
3692
3693
 
3694
+ #### reach_integrations_disconnect-ecommerce-store
3695
+
3696
+ Disconnect an eCommerce store from the profile.
3697
+
3698
+ Reach stops receiving the store's customers and orders, and its products and coupons are
3699
+ removed from Reach; contacts and past orders stay. Take `store_id` from the list eCommerce
3700
+ stores endpoint; for a store that is `connected_to_other_profile`, call this with that
3701
+ profile. Also succeeds when the store is not connected to this profile, so success is not
3702
+ proof that anything was disconnected. Confirm the store and the plan with the customer
3703
+ before calling.
3704
+
3705
+ - **Method**: `DELETE`
3706
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/ecommerce/stores/{storeId}`
3707
+
3708
+ #### reach_integrations_list-ecommerce-stores
3709
+
3710
+ Get all of the customer's Hostinger eCommerce stores, each with its `store_id` and
3711
+ `connection_status` for the profile in the path.
3712
+
3713
+ A store is connected to at most one profile. `connected_to_other_profile` does not name that
3714
+ profile - call this for each profile to find it. The list is empty, not an error, when the
3715
+ eCommerce service cannot be reached. Pass `store_id` to the disconnect eCommerce store
3716
+ endpoint. Connecting an AI Website Builder site connects the store selling on it.
3717
+
3718
+ - **Method**: `GET`
3719
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/ecommerce/stores`
3720
+
3693
3721
  #### reach_templates_list-email
3694
3722
 
3695
3723
  Get a list of the email templates in a profile, most recently updated first.
3696
3724
 
3697
3725
  Templates are the reusable email bodies a campaign is built from. The list is not paginated
3698
- and only the metadata is returned - the template content itself is not exposed. Use the
3699
- `uuid` of a template as the `template_uuid` when creating a campaign.
3726
+ and only the metadata is returned, without the HTML content. Use the `uuid` of a template
3727
+ as the `template_uuid` when creating a campaign. To read one template's HTML use the get
3728
+ email template endpoint, and only when the content itself is needed.
3700
3729
 
3701
3730
  - **Method**: `GET`
3702
3731
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/templates`
@@ -3712,6 +3741,71 @@ reference it as the `template_uuid` of a campaign.
3712
3741
  - **Method**: `POST`
3713
3742
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/templates`
3714
3743
 
3744
+ #### reach_templates_email
3745
+
3746
+ Get one email template of the profile with its full HTML in `template_content`.
3747
+
3748
+ A campaign's email content is its template: to read what a campaign sends, get the campaign
3749
+ and pass its `template_uuid` here. The HTML can be large, so fetch it only when the content
3750
+ itself is needed, never to browse or pick templates - the list email templates endpoint does
3751
+ that without content. Personalization tags such as `{{name}}` come back unrendered.
3752
+
3753
+ - **Method**: `GET`
3754
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/templates/{templateUuid}`
3755
+
3756
+ #### reach_integrations_list-connected-websites
3757
+
3758
+ Get the websites connected to the profile, each with its `domain` and `platform_type`.
3759
+
3760
+ A domain is connected to at most one profile, so to find which plan a site is on, call this
3761
+ for each profile. Only connected sites are listed, not every website the customer owns, and
3762
+ eCommerce stores are not included - use the list eCommerce stores endpoint for those. Pass
3763
+ `domain` to the disconnect WordPress site or disconnect AI Website Builder site endpoint.
3764
+
3765
+ - **Method**: `GET`
3766
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/websites`
3767
+
3768
+ #### reach_integrations_connect-ai-website-builder-site
3769
+
3770
+ Connect an AI Website Builder site the customer built manually to the profile, so its
3771
+ subscribers flow into Reach.
3772
+
3773
+ Fails with not found when the customer owns no AI Website Builder site with that domain.
3774
+ Fails with `DOMAIN_ALREADY_EXISTS` when the domain is connected to any profile - to move a
3775
+ site to another plan, disconnect it from the old profile first - and with
3776
+ `WEBSITE_CONNECTION_ALREADY_EXISTS` when this profile already has an AI Website Builder site.
3777
+ The eCommerce store selling on the site, if it is not connected anywhere, is connected too.
3778
+ WordPress sites and sites made with the agentic AI Website Builder cannot be connected here.
3779
+
3780
+ - **Method**: `POST`
3781
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/websites/website-builder`
3782
+
3783
+ #### reach_integrations_disconnect-ai-website-builder-site
3784
+
3785
+ Disconnect an AI Website Builder site from the profile; the site stops sending subscribers
3786
+ to Reach.
3787
+
3788
+ Take `domain` from the list connected websites endpoint. Works for a site that was already
3789
+ deleted in the builder. Fails with not found when the domain is not connected to this
3790
+ profile. Contacts and any connected eCommerce store stay. The site stays disconnected until
3791
+ it is connected again, so confirm the site and the plan with the customer before calling.
3792
+
3793
+ - **Method**: `DELETE`
3794
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/websites/website-builder`
3795
+
3796
+ #### reach_integrations_disconnect-wordpress-site
3797
+
3798
+ Disconnect a WordPress site from the profile.
3799
+
3800
+ The Reach plugin on the site stops sending subscribers and store data, and the site's
3801
+ products and coupons are removed from Reach; contacts and past orders stay. Take `domain`
3802
+ from the list connected websites endpoint. Fails with not found when the domain is not
3803
+ connected to this profile. This cannot be undone through the API - the customer reconnects
3804
+ from the WordPress plugin - so confirm the site and the plan with the customer before calling.
3805
+
3806
+ - **Method**: `DELETE`
3807
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/websites/wordpress`
3808
+
3715
3809
  ### `hostinger-vps-mcp`
3716
3810
 
3717
3811
  #### vps_data-centers_list
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.11.1",
3
+ "version": "3.12.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.11.1",
3
+ "version": "3.12.1",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
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.11.1",
9
+ "version": "3.12.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.11.1",
14
+ "version": "3.12.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -66,7 +66,7 @@ const GetSkillRequestSchema = z.object({
66
66
 
67
67
  /**
68
68
  * MCP Server for Hostinger API
69
- * Generated from OpenAPI spec version 2.3.0
69
+ * Generated from OpenAPI spec version 2.4.1
70
70
  */
71
71
  class MCPServer {
72
72
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -97,7 +97,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
97
97
 
98
98
  /**
99
99
  * MCP Server for Hostinger API
100
- * Generated from OpenAPI spec version 2.3.0
100
+ * Generated from OpenAPI spec version 2.4.1
101
101
  */
102
102
  class MCPServer {
103
103
  private readonly name: string;
@@ -3882,7 +3882,7 @@ export default [
3882
3882
  "readOnlyHint": false,
3883
3883
  "destructiveHint": false
3884
3884
  },
3885
- "description": "Register a domain you have already paid for but which has not been set up yet.\n\nUse this endpoint when an order completed without registering the domain, for example when\n`Purchase new domain` returned `202 Accepted` and the domain was added to your account without\nbeing registered, or when an earlier setup attempt failed. No new order is placed and no payment\nis taken: the subscription you already own is used, for the period you already paid for.\n\nA domain is left awaiting setup when the details needed to register it were missing or invalid\nas the order completed. Domains ordered elsewhere can be awaiting setup for the same reason.\nComplete the missing information, then call this endpoint. If the order itself has not completed\nyet, the domain is not on your account, wait until it appears in `Get domain list`.\n\nIf `domain_contacts` is omitted, the default WHOIS profile of that TLD is used for all four\nroles. The profile must exist and be complete for the TLD, an incomplete profile is the most\ncommon reason a domain is left awaiting setup. Create one with `Create WHOIS profile`.\n\nSome TLDs require `additional_details`. These are validated before setup, so a missing or\ninvalid value is rejected without any registration being attempted.\n\nThe domain is set up with the default nameservers and without privacy protection. Use\n`Update domain nameservers` and `Enable privacy protection` afterwards to change either.\n\nA successful response means the setup request was accepted, not that the domain is already\nregistered. Poll `Get domain list` for the outcome, the domain appears in `Get domain details`\nonly once it is registered.\n\nUse this endpoint to finish registering a domain that is awaiting setup on your account.",
3885
+ "description": "Register a domain you have already paid for but which has not been set up yet.\n\nUse this endpoint when an order completed without registering the domain, for example when\n`Purchase new domain` returned `202 Accepted` and the domain was added to your account without\nbeing registered, or when an earlier setup attempt failed. No new order is placed and no payment\nis taken: the subscription you already own is used, for the period you already paid for.\n\nA domain is left awaiting setup when the details needed to register it were missing or invalid\nas the order completed. Domains ordered elsewhere can be awaiting setup for the same reason.\nComplete the missing information, then call this endpoint. If the order itself has not completed\nyet, the domain is not on your account, wait until it appears in `Get domain list`.\n\nIf `domain_contacts` is omitted, the default WHOIS profile of that TLD is used for all four\nroles. The profile must exist and be complete for the TLD, an incomplete profile is the most\ncommon reason a domain is left awaiting setup. Create one with `Create WHOIS profile`.\n\nSome TLDs require `additional_details`. These are validated before setup, so a missing or\ninvalid value is rejected without any registration being attempted.\n\nThe domain is set up with the default nameservers and with privacy protection. Use\n`Update domain nameservers` and `Disable privacy protection` afterwards to change either.\n\nA successful response means the setup request was accepted, not that the domain is already\nregistered. Poll `Get domain list` for the outcome, the domain appears in `Get domain details`\nonly once it is registered.\n\nUse this endpoint to finish registering a domain that is awaiting setup on your account.",
3886
3886
  "method": "POST",
3887
3887
  "path": "/api/domains/v1/portfolio/{domain}/setup",
3888
3888
  "inputSchema": {
@@ -11551,7 +11551,7 @@ export default [
11551
11551
  "readOnlyHint": true,
11552
11552
  "destructiveHint": false
11553
11553
  },
11554
- "description": "Get a single campaign with its sender, subject, template reference, targeting and delivery\nprogress.\n\nThis describes how the campaign was set up and how far it has got. For opens, clicks and\nunsubscribes use the campaign statistics endpoint.",
11554
+ "description": "Get a single campaign with its sender, subject, template reference, targeting and delivery\nprogress.\n\nThis describes how the campaign was set up and how far it has got. For opens, clicks and\nunsubscribes use the campaign statistics endpoint. The email content is not included: pass\n`template_uuid` to the get email template endpoint to read its HTML.",
11555
11555
  "method": "GET",
11556
11556
  "path": "/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}",
11557
11557
  "inputSchema": {
@@ -14319,6 +14319,72 @@ export default [
14319
14319
  ],
14320
14320
  "group": "reach"
14321
14321
  },
14322
+ {
14323
+ "name": "reach_integrations_disconnect-ecommerce-store",
14324
+ "title": "Disconnect Ecommerce store",
14325
+ "annotations": {
14326
+ "title": "Disconnect Ecommerce store",
14327
+ "readOnlyHint": false,
14328
+ "destructiveHint": true,
14329
+ "idempotentHint": true
14330
+ },
14331
+ "description": "Disconnect an eCommerce store from the profile.\n\nReach stops receiving the store's customers and orders, and its products and coupons are\nremoved from Reach; contacts and past orders stay. Take `store_id` from the list eCommerce\nstores endpoint; for a store that is `connected_to_other_profile`, call this with that\nprofile. Also succeeds when the store is not connected to this profile, so success is not\nproof that anything was disconnected. Confirm the store and the plan with the customer\nbefore calling.",
14332
+ "method": "DELETE",
14333
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores/{storeId}",
14334
+ "inputSchema": {
14335
+ "type": "object",
14336
+ "properties": {
14337
+ "profileUuid": {
14338
+ "type": "string",
14339
+ "description": "Profile uuid parameter"
14340
+ },
14341
+ "storeId": {
14342
+ "type": "string",
14343
+ "description": "Hostinger eCommerce store ID, as returned by the eCommerce stores list"
14344
+ }
14345
+ },
14346
+ "required": [
14347
+ "profileUuid",
14348
+ "storeId"
14349
+ ]
14350
+ },
14351
+ "security": [
14352
+ {
14353
+ "apiToken": []
14354
+ }
14355
+ ],
14356
+ "group": "reach"
14357
+ },
14358
+ {
14359
+ "name": "reach_integrations_list-ecommerce-stores",
14360
+ "title": "List Ecommerce stores",
14361
+ "annotations": {
14362
+ "title": "List Ecommerce stores",
14363
+ "readOnlyHint": true,
14364
+ "destructiveHint": false
14365
+ },
14366
+ "description": "Get all of the customer's Hostinger eCommerce stores, each with its `store_id` and\n`connection_status` for the profile in the path.\n\nA store is connected to at most one profile. `connected_to_other_profile` does not name that\nprofile - call this for each profile to find it. The list is empty, not an error, when the\neCommerce service cannot be reached. Pass `store_id` to the disconnect eCommerce store\nendpoint. Connecting an AI Website Builder site connects the store selling on it.",
14367
+ "method": "GET",
14368
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores",
14369
+ "inputSchema": {
14370
+ "type": "object",
14371
+ "properties": {
14372
+ "profileUuid": {
14373
+ "type": "string",
14374
+ "description": "Profile uuid parameter"
14375
+ }
14376
+ },
14377
+ "required": [
14378
+ "profileUuid"
14379
+ ]
14380
+ },
14381
+ "security": [
14382
+ {
14383
+ "apiToken": []
14384
+ }
14385
+ ],
14386
+ "group": "reach"
14387
+ },
14322
14388
  {
14323
14389
  "name": "reach_templates_list-email",
14324
14390
  "title": "List email templates",
@@ -14327,7 +14393,7 @@ export default [
14327
14393
  "readOnlyHint": true,
14328
14394
  "destructiveHint": false
14329
14395
  },
14330
- "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
14396
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned, without the HTML content. Use the `uuid` of a template\nas the `template_uuid` when creating a campaign. To read one template's HTML use the get\nemail template endpoint, and only when the content itself is needed.",
14331
14397
  "method": "GET",
14332
14398
  "path": "/api/reach/v1/profiles/{profileUuid}/templates",
14333
14399
  "inputSchema": {
@@ -14388,6 +14454,168 @@ export default [
14388
14454
  ],
14389
14455
  "group": "reach"
14390
14456
  },
14457
+ {
14458
+ "name": "reach_templates_email",
14459
+ "title": "Get email template",
14460
+ "annotations": {
14461
+ "title": "Get email template",
14462
+ "readOnlyHint": true,
14463
+ "destructiveHint": false
14464
+ },
14465
+ "description": "Get one email template of the profile with its full HTML in `template_content`.\n\nA campaign's email content is its template: to read what a campaign sends, get the campaign\nand pass its `template_uuid` here. The HTML can be large, so fetch it only when the content\nitself is needed, never to browse or pick templates - the list email templates endpoint does\nthat without content. Personalization tags such as `{{name}}` come back unrendered.",
14466
+ "method": "GET",
14467
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates/{templateUuid}",
14468
+ "inputSchema": {
14469
+ "type": "object",
14470
+ "properties": {
14471
+ "profileUuid": {
14472
+ "type": "string",
14473
+ "description": "Profile uuid parameter"
14474
+ },
14475
+ "templateUuid": {
14476
+ "type": "string",
14477
+ "description": "Template uuid parameter"
14478
+ }
14479
+ },
14480
+ "required": [
14481
+ "profileUuid",
14482
+ "templateUuid"
14483
+ ]
14484
+ },
14485
+ "security": [
14486
+ {
14487
+ "apiToken": []
14488
+ }
14489
+ ],
14490
+ "group": "reach"
14491
+ },
14492
+ {
14493
+ "name": "reach_integrations_list-connected-websites",
14494
+ "title": "List connected websites",
14495
+ "annotations": {
14496
+ "title": "List connected websites",
14497
+ "readOnlyHint": true,
14498
+ "destructiveHint": false
14499
+ },
14500
+ "description": "Get the websites connected to the profile, each with its `domain` and `platform_type`.\n\nA domain is connected to at most one profile, so to find which plan a site is on, call this\nfor each profile. Only connected sites are listed, not every website the customer owns, and\neCommerce stores are not included - use the list eCommerce stores endpoint for those. Pass\n`domain` to the disconnect WordPress site or disconnect AI Website Builder site endpoint.",
14501
+ "method": "GET",
14502
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites",
14503
+ "inputSchema": {
14504
+ "type": "object",
14505
+ "properties": {
14506
+ "profileUuid": {
14507
+ "type": "string",
14508
+ "description": "Profile uuid parameter"
14509
+ }
14510
+ },
14511
+ "required": [
14512
+ "profileUuid"
14513
+ ]
14514
+ },
14515
+ "security": [
14516
+ {
14517
+ "apiToken": []
14518
+ }
14519
+ ],
14520
+ "group": "reach"
14521
+ },
14522
+ {
14523
+ "name": "reach_integrations_connect-ai-website-builder-site",
14524
+ "title": "Connect AI Website Builder site",
14525
+ "annotations": {
14526
+ "title": "Connect AI Website Builder site",
14527
+ "readOnlyHint": false,
14528
+ "destructiveHint": false
14529
+ },
14530
+ "description": "Connect an AI Website Builder site the customer built manually to the profile, so its\nsubscribers flow into Reach.\n\nFails with not found when the customer owns no AI Website Builder site with that domain.\nFails with `DOMAIN_ALREADY_EXISTS` when the domain is connected to any profile - to move a\nsite to another plan, disconnect it from the old profile first - and with\n`WEBSITE_CONNECTION_ALREADY_EXISTS` when this profile already has an AI Website Builder site.\nThe eCommerce store selling on the site, if it is not connected anywhere, is connected too.\nWordPress sites and sites made with the agentic AI Website Builder cannot be connected here.",
14531
+ "method": "POST",
14532
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14533
+ "inputSchema": {
14534
+ "type": "object",
14535
+ "properties": {
14536
+ "profileUuid": {
14537
+ "type": "string",
14538
+ "description": "Profile uuid parameter"
14539
+ },
14540
+ "domain": {
14541
+ "type": "string",
14542
+ "description": "domain parameter"
14543
+ }
14544
+ },
14545
+ "required": [
14546
+ "profileUuid",
14547
+ "domain"
14548
+ ]
14549
+ },
14550
+ "security": [
14551
+ {
14552
+ "apiToken": []
14553
+ }
14554
+ ],
14555
+ "group": "reach"
14556
+ },
14557
+ {
14558
+ "name": "reach_integrations_disconnect-ai-website-builder-site",
14559
+ "title": "Disconnect AI Website Builder site",
14560
+ "annotations": {
14561
+ "title": "Disconnect AI Website Builder site",
14562
+ "readOnlyHint": false,
14563
+ "destructiveHint": true,
14564
+ "idempotentHint": true
14565
+ },
14566
+ "description": "Disconnect an AI Website Builder site from the profile; the site stops sending subscribers\nto Reach.\n\nTake `domain` from the list connected websites endpoint. Works for a site that was already\ndeleted in the builder. Fails with not found when the domain is not connected to this\nprofile. Contacts and any connected eCommerce store stay. The site stays disconnected until\nit is connected again, so confirm the site and the plan with the customer before calling.",
14567
+ "method": "DELETE",
14568
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14569
+ "inputSchema": {
14570
+ "type": "object",
14571
+ "properties": {
14572
+ "profileUuid": {
14573
+ "type": "string",
14574
+ "description": "Profile uuid parameter"
14575
+ }
14576
+ },
14577
+ "required": [
14578
+ "profileUuid"
14579
+ ]
14580
+ },
14581
+ "security": [
14582
+ {
14583
+ "apiToken": []
14584
+ }
14585
+ ],
14586
+ "group": "reach"
14587
+ },
14588
+ {
14589
+ "name": "reach_integrations_disconnect-wordpress-site",
14590
+ "title": "Disconnect WordPress site",
14591
+ "annotations": {
14592
+ "title": "Disconnect WordPress site",
14593
+ "readOnlyHint": false,
14594
+ "destructiveHint": true,
14595
+ "idempotentHint": true
14596
+ },
14597
+ "description": "Disconnect a WordPress site from the profile.\n\nThe Reach plugin on the site stops sending subscribers and store data, and the site's\nproducts and coupons are removed from Reach; contacts and past orders stay. Take `domain`\nfrom the list connected websites endpoint. Fails with not found when the domain is not\nconnected to this profile. This cannot be undone through the API - the customer reconnects\nfrom the WordPress plugin - so confirm the site and the plan with the customer before calling.",
14598
+ "method": "DELETE",
14599
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/wordpress",
14600
+ "inputSchema": {
14601
+ "type": "object",
14602
+ "properties": {
14603
+ "profileUuid": {
14604
+ "type": "string",
14605
+ "description": "Profile uuid parameter"
14606
+ }
14607
+ },
14608
+ "required": [
14609
+ "profileUuid"
14610
+ ]
14611
+ },
14612
+ "security": [
14613
+ {
14614
+ "apiToken": []
14615
+ }
14616
+ ],
14617
+ "group": "reach"
14618
+ },
14391
14619
  {
14392
14620
  "name": "vps_data-centers_list",
14393
14621
  "title": "Get data center list",