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.
@@ -3898,7 +3898,7 @@ const tools: OpenApiTool[] = [
3898
3898
  "readOnlyHint": false,
3899
3899
  "destructiveHint": false
3900
3900
  },
3901
- "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.",
3901
+ "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.",
3902
3902
  "method": "POST",
3903
3903
  "path": "/api/domains/v1/portfolio/{domain}/setup",
3904
3904
  "inputSchema": {
@@ -11567,7 +11567,7 @@ const tools: OpenApiTool[] = [
11567
11567
  "readOnlyHint": true,
11568
11568
  "destructiveHint": false
11569
11569
  },
11570
- "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.",
11570
+ "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.",
11571
11571
  "method": "GET",
11572
11572
  "path": "/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}",
11573
11573
  "inputSchema": {
@@ -14335,6 +14335,72 @@ const tools: OpenApiTool[] = [
14335
14335
  ],
14336
14336
  "group": "reach"
14337
14337
  },
14338
+ {
14339
+ "name": "reach_integrations_disconnect-ecommerce-store",
14340
+ "title": "Disconnect Ecommerce store",
14341
+ "annotations": {
14342
+ "title": "Disconnect Ecommerce store",
14343
+ "readOnlyHint": false,
14344
+ "destructiveHint": true,
14345
+ "idempotentHint": true
14346
+ },
14347
+ "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.",
14348
+ "method": "DELETE",
14349
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores/{storeId}",
14350
+ "inputSchema": {
14351
+ "type": "object",
14352
+ "properties": {
14353
+ "profileUuid": {
14354
+ "type": "string",
14355
+ "description": "Profile uuid parameter"
14356
+ },
14357
+ "storeId": {
14358
+ "type": "string",
14359
+ "description": "Hostinger eCommerce store ID, as returned by the eCommerce stores list"
14360
+ }
14361
+ },
14362
+ "required": [
14363
+ "profileUuid",
14364
+ "storeId"
14365
+ ]
14366
+ },
14367
+ "security": [
14368
+ {
14369
+ "apiToken": []
14370
+ }
14371
+ ],
14372
+ "group": "reach"
14373
+ },
14374
+ {
14375
+ "name": "reach_integrations_list-ecommerce-stores",
14376
+ "title": "List Ecommerce stores",
14377
+ "annotations": {
14378
+ "title": "List Ecommerce stores",
14379
+ "readOnlyHint": true,
14380
+ "destructiveHint": false
14381
+ },
14382
+ "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.",
14383
+ "method": "GET",
14384
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores",
14385
+ "inputSchema": {
14386
+ "type": "object",
14387
+ "properties": {
14388
+ "profileUuid": {
14389
+ "type": "string",
14390
+ "description": "Profile uuid parameter"
14391
+ }
14392
+ },
14393
+ "required": [
14394
+ "profileUuid"
14395
+ ]
14396
+ },
14397
+ "security": [
14398
+ {
14399
+ "apiToken": []
14400
+ }
14401
+ ],
14402
+ "group": "reach"
14403
+ },
14338
14404
  {
14339
14405
  "name": "reach_templates_list-email",
14340
14406
  "title": "List email templates",
@@ -14343,7 +14409,7 @@ const tools: OpenApiTool[] = [
14343
14409
  "readOnlyHint": true,
14344
14410
  "destructiveHint": false
14345
14411
  },
14346
- "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.",
14412
+ "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.",
14347
14413
  "method": "GET",
14348
14414
  "path": "/api/reach/v1/profiles/{profileUuid}/templates",
14349
14415
  "inputSchema": {
@@ -14404,6 +14470,168 @@ const tools: OpenApiTool[] = [
14404
14470
  ],
14405
14471
  "group": "reach"
14406
14472
  },
14473
+ {
14474
+ "name": "reach_templates_email",
14475
+ "title": "Get email template",
14476
+ "annotations": {
14477
+ "title": "Get email template",
14478
+ "readOnlyHint": true,
14479
+ "destructiveHint": false
14480
+ },
14481
+ "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.",
14482
+ "method": "GET",
14483
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates/{templateUuid}",
14484
+ "inputSchema": {
14485
+ "type": "object",
14486
+ "properties": {
14487
+ "profileUuid": {
14488
+ "type": "string",
14489
+ "description": "Profile uuid parameter"
14490
+ },
14491
+ "templateUuid": {
14492
+ "type": "string",
14493
+ "description": "Template uuid parameter"
14494
+ }
14495
+ },
14496
+ "required": [
14497
+ "profileUuid",
14498
+ "templateUuid"
14499
+ ]
14500
+ },
14501
+ "security": [
14502
+ {
14503
+ "apiToken": []
14504
+ }
14505
+ ],
14506
+ "group": "reach"
14507
+ },
14508
+ {
14509
+ "name": "reach_integrations_list-connected-websites",
14510
+ "title": "List connected websites",
14511
+ "annotations": {
14512
+ "title": "List connected websites",
14513
+ "readOnlyHint": true,
14514
+ "destructiveHint": false
14515
+ },
14516
+ "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.",
14517
+ "method": "GET",
14518
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites",
14519
+ "inputSchema": {
14520
+ "type": "object",
14521
+ "properties": {
14522
+ "profileUuid": {
14523
+ "type": "string",
14524
+ "description": "Profile uuid parameter"
14525
+ }
14526
+ },
14527
+ "required": [
14528
+ "profileUuid"
14529
+ ]
14530
+ },
14531
+ "security": [
14532
+ {
14533
+ "apiToken": []
14534
+ }
14535
+ ],
14536
+ "group": "reach"
14537
+ },
14538
+ {
14539
+ "name": "reach_integrations_connect-ai-website-builder-site",
14540
+ "title": "Connect AI Website Builder site",
14541
+ "annotations": {
14542
+ "title": "Connect AI Website Builder site",
14543
+ "readOnlyHint": false,
14544
+ "destructiveHint": false
14545
+ },
14546
+ "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.",
14547
+ "method": "POST",
14548
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14549
+ "inputSchema": {
14550
+ "type": "object",
14551
+ "properties": {
14552
+ "profileUuid": {
14553
+ "type": "string",
14554
+ "description": "Profile uuid parameter"
14555
+ },
14556
+ "domain": {
14557
+ "type": "string",
14558
+ "description": "domain parameter"
14559
+ }
14560
+ },
14561
+ "required": [
14562
+ "profileUuid",
14563
+ "domain"
14564
+ ]
14565
+ },
14566
+ "security": [
14567
+ {
14568
+ "apiToken": []
14569
+ }
14570
+ ],
14571
+ "group": "reach"
14572
+ },
14573
+ {
14574
+ "name": "reach_integrations_disconnect-ai-website-builder-site",
14575
+ "title": "Disconnect AI Website Builder site",
14576
+ "annotations": {
14577
+ "title": "Disconnect AI Website Builder site",
14578
+ "readOnlyHint": false,
14579
+ "destructiveHint": true,
14580
+ "idempotentHint": true
14581
+ },
14582
+ "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.",
14583
+ "method": "DELETE",
14584
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14585
+ "inputSchema": {
14586
+ "type": "object",
14587
+ "properties": {
14588
+ "profileUuid": {
14589
+ "type": "string",
14590
+ "description": "Profile uuid parameter"
14591
+ }
14592
+ },
14593
+ "required": [
14594
+ "profileUuid"
14595
+ ]
14596
+ },
14597
+ "security": [
14598
+ {
14599
+ "apiToken": []
14600
+ }
14601
+ ],
14602
+ "group": "reach"
14603
+ },
14604
+ {
14605
+ "name": "reach_integrations_disconnect-wordpress-site",
14606
+ "title": "Disconnect WordPress site",
14607
+ "annotations": {
14608
+ "title": "Disconnect WordPress site",
14609
+ "readOnlyHint": false,
14610
+ "destructiveHint": true,
14611
+ "idempotentHint": true
14612
+ },
14613
+ "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.",
14614
+ "method": "DELETE",
14615
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/wordpress",
14616
+ "inputSchema": {
14617
+ "type": "object",
14618
+ "properties": {
14619
+ "profileUuid": {
14620
+ "type": "string",
14621
+ "description": "Profile uuid parameter"
14622
+ }
14623
+ },
14624
+ "required": [
14625
+ "profileUuid"
14626
+ ]
14627
+ },
14628
+ "security": [
14629
+ {
14630
+ "apiToken": []
14631
+ }
14632
+ ],
14633
+ "group": "reach"
14634
+ },
14407
14635
  {
14408
14636
  "name": "vps_data-centers_list",
14409
14637
  "title": "Get data center list",
@@ -990,7 +990,7 @@ export default [
990
990
  "readOnlyHint": false,
991
991
  "destructiveHint": false
992
992
  },
993
- "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.",
993
+ "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.",
994
994
  "method": "POST",
995
995
  "path": "/api/domains/v1/portfolio/{domain}/setup",
996
996
  "inputSchema": {
@@ -1006,7 +1006,7 @@ const tools: OpenApiTool[] = [
1006
1006
  "readOnlyHint": false,
1007
1007
  "destructiveHint": false
1008
1008
  },
1009
- "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.",
1009
+ "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.",
1010
1010
  "method": "POST",
1011
1011
  "path": "/api/domains/v1/portfolio/{domain}/setup",
1012
1012
  "inputSchema": {
@@ -133,7 +133,7 @@ export default [
133
133
  "readOnlyHint": true,
134
134
  "destructiveHint": false
135
135
  },
136
- "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.",
136
+ "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.",
137
137
  "method": "GET",
138
138
  "path": "/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}",
139
139
  "inputSchema": {
@@ -2901,6 +2901,72 @@ export default [
2901
2901
  ],
2902
2902
  "group": "reach"
2903
2903
  },
2904
+ {
2905
+ "name": "reach_integrations_disconnect-ecommerce-store",
2906
+ "title": "Disconnect Ecommerce store",
2907
+ "annotations": {
2908
+ "title": "Disconnect Ecommerce store",
2909
+ "readOnlyHint": false,
2910
+ "destructiveHint": true,
2911
+ "idempotentHint": true
2912
+ },
2913
+ "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.",
2914
+ "method": "DELETE",
2915
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores/{storeId}",
2916
+ "inputSchema": {
2917
+ "type": "object",
2918
+ "properties": {
2919
+ "profileUuid": {
2920
+ "type": "string",
2921
+ "description": "Profile uuid parameter"
2922
+ },
2923
+ "storeId": {
2924
+ "type": "string",
2925
+ "description": "Hostinger eCommerce store ID, as returned by the eCommerce stores list"
2926
+ }
2927
+ },
2928
+ "required": [
2929
+ "profileUuid",
2930
+ "storeId"
2931
+ ]
2932
+ },
2933
+ "security": [
2934
+ {
2935
+ "apiToken": []
2936
+ }
2937
+ ],
2938
+ "group": "reach"
2939
+ },
2940
+ {
2941
+ "name": "reach_integrations_list-ecommerce-stores",
2942
+ "title": "List Ecommerce stores",
2943
+ "annotations": {
2944
+ "title": "List Ecommerce stores",
2945
+ "readOnlyHint": true,
2946
+ "destructiveHint": false
2947
+ },
2948
+ "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.",
2949
+ "method": "GET",
2950
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores",
2951
+ "inputSchema": {
2952
+ "type": "object",
2953
+ "properties": {
2954
+ "profileUuid": {
2955
+ "type": "string",
2956
+ "description": "Profile uuid parameter"
2957
+ }
2958
+ },
2959
+ "required": [
2960
+ "profileUuid"
2961
+ ]
2962
+ },
2963
+ "security": [
2964
+ {
2965
+ "apiToken": []
2966
+ }
2967
+ ],
2968
+ "group": "reach"
2969
+ },
2904
2970
  {
2905
2971
  "name": "reach_templates_list-email",
2906
2972
  "title": "List email templates",
@@ -2909,7 +2975,7 @@ export default [
2909
2975
  "readOnlyHint": true,
2910
2976
  "destructiveHint": false
2911
2977
  },
2912
- "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.",
2978
+ "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.",
2913
2979
  "method": "GET",
2914
2980
  "path": "/api/reach/v1/profiles/{profileUuid}/templates",
2915
2981
  "inputSchema": {
@@ -2969,5 +3035,167 @@ export default [
2969
3035
  }
2970
3036
  ],
2971
3037
  "group": "reach"
3038
+ },
3039
+ {
3040
+ "name": "reach_templates_email",
3041
+ "title": "Get email template",
3042
+ "annotations": {
3043
+ "title": "Get email template",
3044
+ "readOnlyHint": true,
3045
+ "destructiveHint": false
3046
+ },
3047
+ "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.",
3048
+ "method": "GET",
3049
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates/{templateUuid}",
3050
+ "inputSchema": {
3051
+ "type": "object",
3052
+ "properties": {
3053
+ "profileUuid": {
3054
+ "type": "string",
3055
+ "description": "Profile uuid parameter"
3056
+ },
3057
+ "templateUuid": {
3058
+ "type": "string",
3059
+ "description": "Template uuid parameter"
3060
+ }
3061
+ },
3062
+ "required": [
3063
+ "profileUuid",
3064
+ "templateUuid"
3065
+ ]
3066
+ },
3067
+ "security": [
3068
+ {
3069
+ "apiToken": []
3070
+ }
3071
+ ],
3072
+ "group": "reach"
3073
+ },
3074
+ {
3075
+ "name": "reach_integrations_list-connected-websites",
3076
+ "title": "List connected websites",
3077
+ "annotations": {
3078
+ "title": "List connected websites",
3079
+ "readOnlyHint": true,
3080
+ "destructiveHint": false
3081
+ },
3082
+ "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.",
3083
+ "method": "GET",
3084
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites",
3085
+ "inputSchema": {
3086
+ "type": "object",
3087
+ "properties": {
3088
+ "profileUuid": {
3089
+ "type": "string",
3090
+ "description": "Profile uuid parameter"
3091
+ }
3092
+ },
3093
+ "required": [
3094
+ "profileUuid"
3095
+ ]
3096
+ },
3097
+ "security": [
3098
+ {
3099
+ "apiToken": []
3100
+ }
3101
+ ],
3102
+ "group": "reach"
3103
+ },
3104
+ {
3105
+ "name": "reach_integrations_connect-ai-website-builder-site",
3106
+ "title": "Connect AI Website Builder site",
3107
+ "annotations": {
3108
+ "title": "Connect AI Website Builder site",
3109
+ "readOnlyHint": false,
3110
+ "destructiveHint": false
3111
+ },
3112
+ "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.",
3113
+ "method": "POST",
3114
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
3115
+ "inputSchema": {
3116
+ "type": "object",
3117
+ "properties": {
3118
+ "profileUuid": {
3119
+ "type": "string",
3120
+ "description": "Profile uuid parameter"
3121
+ },
3122
+ "domain": {
3123
+ "type": "string",
3124
+ "description": "domain parameter"
3125
+ }
3126
+ },
3127
+ "required": [
3128
+ "profileUuid",
3129
+ "domain"
3130
+ ]
3131
+ },
3132
+ "security": [
3133
+ {
3134
+ "apiToken": []
3135
+ }
3136
+ ],
3137
+ "group": "reach"
3138
+ },
3139
+ {
3140
+ "name": "reach_integrations_disconnect-ai-website-builder-site",
3141
+ "title": "Disconnect AI Website Builder site",
3142
+ "annotations": {
3143
+ "title": "Disconnect AI Website Builder site",
3144
+ "readOnlyHint": false,
3145
+ "destructiveHint": true,
3146
+ "idempotentHint": true
3147
+ },
3148
+ "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.",
3149
+ "method": "DELETE",
3150
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
3151
+ "inputSchema": {
3152
+ "type": "object",
3153
+ "properties": {
3154
+ "profileUuid": {
3155
+ "type": "string",
3156
+ "description": "Profile uuid parameter"
3157
+ }
3158
+ },
3159
+ "required": [
3160
+ "profileUuid"
3161
+ ]
3162
+ },
3163
+ "security": [
3164
+ {
3165
+ "apiToken": []
3166
+ }
3167
+ ],
3168
+ "group": "reach"
3169
+ },
3170
+ {
3171
+ "name": "reach_integrations_disconnect-wordpress-site",
3172
+ "title": "Disconnect WordPress site",
3173
+ "annotations": {
3174
+ "title": "Disconnect WordPress site",
3175
+ "readOnlyHint": false,
3176
+ "destructiveHint": true,
3177
+ "idempotentHint": true
3178
+ },
3179
+ "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.",
3180
+ "method": "DELETE",
3181
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/wordpress",
3182
+ "inputSchema": {
3183
+ "type": "object",
3184
+ "properties": {
3185
+ "profileUuid": {
3186
+ "type": "string",
3187
+ "description": "Profile uuid parameter"
3188
+ }
3189
+ },
3190
+ "required": [
3191
+ "profileUuid"
3192
+ ]
3193
+ },
3194
+ "security": [
3195
+ {
3196
+ "apiToken": []
3197
+ }
3198
+ ],
3199
+ "group": "reach"
2972
3200
  }
2973
3201
  ];