sitebay-mcp 0.1.1751179164__py3-none-any.whl → 0.1.1751180311__py3-none-any.whl
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.
- sitebay_mcp/exceptions.py +4 -2
- sitebay_mcp/resources.py +6 -6
- sitebay_mcp/server.py +54 -69
- {sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/METADATA +1 -1
- {sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/RECORD +8 -8
- {sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/WHEEL +0 -0
- {sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/entry_points.txt +0 -0
- {sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/licenses/LICENSE +0 -0
sitebay_mcp/exceptions.py
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
Custom exceptions for SiteBay MCP Server
|
3
3
|
"""
|
4
4
|
|
5
|
+
from typing import Optional, Dict, Any
|
6
|
+
|
5
7
|
|
6
8
|
class SiteBayError(Exception):
|
7
9
|
"""Base exception for SiteBay MCP operations"""
|
@@ -16,7 +18,7 @@ class AuthenticationError(SiteBayError):
|
|
16
18
|
class APIError(SiteBayError):
|
17
19
|
"""Raised when SiteBay API returns an error"""
|
18
20
|
|
19
|
-
def __init__(self, message: str, status_code: int = None, response_data:
|
21
|
+
def __init__(self, message: str, status_code: Optional[int] = None, response_data: Optional[Dict[Any, Any]] = None):
|
20
22
|
super().__init__(message)
|
21
23
|
self.status_code = status_code
|
22
24
|
self.response_data = response_data
|
@@ -25,7 +27,7 @@ class APIError(SiteBayError):
|
|
25
27
|
class ValidationError(SiteBayError):
|
26
28
|
"""Raised when request validation fails"""
|
27
29
|
|
28
|
-
def __init__(self, message: str, field_errors:
|
30
|
+
def __init__(self, message: str, field_errors: Optional[Dict[Any, Any]] = None):
|
29
31
|
super().__init__(message)
|
30
32
|
self.field_errors = field_errors or {}
|
31
33
|
|
sitebay_mcp/resources.py
CHANGED
@@ -23,7 +23,7 @@ async def get_site_config_resource(ctx: Context, site_fqdn: str) -> str:
|
|
23
23
|
JSON formatted site configuration
|
24
24
|
"""
|
25
25
|
try:
|
26
|
-
ctx.
|
26
|
+
await ctx.info(f"Fetching configuration resource for: {site_fqdn}")
|
27
27
|
|
28
28
|
from .server import initialize_client
|
29
29
|
client = await initialize_client()
|
@@ -60,7 +60,7 @@ async def get_site_config_resource(ctx: Context, site_fqdn: str) -> str:
|
|
60
60
|
return json.dumps(config, indent=2)
|
61
61
|
|
62
62
|
except SiteBayError as e:
|
63
|
-
ctx.
|
63
|
+
await ctx.error(f"Error fetching config for {site_fqdn}: {str(e)}")
|
64
64
|
return f"Error: {str(e)}"
|
65
65
|
|
66
66
|
|
@@ -77,7 +77,7 @@ async def get_site_events_resource(ctx: Context, site_fqdn: str, limit: int = 50
|
|
77
77
|
JSON formatted site events
|
78
78
|
"""
|
79
79
|
try:
|
80
|
-
ctx.
|
80
|
+
await ctx.info(f"Fetching events resource for: {site_fqdn}")
|
81
81
|
|
82
82
|
from .server import initialize_client
|
83
83
|
client = await initialize_client()
|
@@ -106,7 +106,7 @@ async def get_site_events_resource(ctx: Context, site_fqdn: str, limit: int = 50
|
|
106
106
|
return json.dumps(formatted_events, indent=2)
|
107
107
|
|
108
108
|
except SiteBayError as e:
|
109
|
-
ctx.
|
109
|
+
await ctx.error(f"Error fetching events for {site_fqdn}: {str(e)}")
|
110
110
|
return f"Error: {str(e)}"
|
111
111
|
|
112
112
|
|
@@ -121,7 +121,7 @@ async def get_account_summary_resource(ctx: Context) -> str:
|
|
121
121
|
JSON formatted account summary
|
122
122
|
"""
|
123
123
|
try:
|
124
|
-
ctx.
|
124
|
+
await ctx.info("Fetching account summary resource")
|
125
125
|
|
126
126
|
from .server import initialize_client
|
127
127
|
client = await initialize_client()
|
@@ -167,5 +167,5 @@ async def get_account_summary_resource(ctx: Context) -> str:
|
|
167
167
|
return json.dumps(summary, indent=2)
|
168
168
|
|
169
169
|
except SiteBayError as e:
|
170
|
-
ctx.
|
170
|
+
await ctx.error(f"Error fetching account summary: {str(e)}")
|
171
171
|
return f"Error: {str(e)}"
|
sitebay_mcp/server.py
CHANGED
@@ -18,7 +18,7 @@ from . import resources
|
|
18
18
|
|
19
19
|
|
20
20
|
# Create the MCP server instance
|
21
|
-
mcp = FastMCP("SiteBay WordPress Hosting")
|
21
|
+
mcp: FastMCP = FastMCP("SiteBay WordPress Hosting")
|
22
22
|
|
23
23
|
|
24
24
|
# Global client instance (will be initialized on startup)
|
@@ -86,19 +86,19 @@ async def sitebay_get_site(ctx: Context, fqdn: str) -> str:
|
|
86
86
|
Detailed site information including status, versions, URLs, and configuration
|
87
87
|
"""
|
88
88
|
try:
|
89
|
-
ctx.
|
89
|
+
await ctx.info(f"Fetching details for site: {fqdn}")
|
90
90
|
|
91
91
|
client = await initialize_client()
|
92
92
|
result = await sites.sitebay_get_site(client, fqdn)
|
93
93
|
|
94
|
-
ctx.
|
94
|
+
await ctx.info(f"Successfully retrieved details for {fqdn}")
|
95
95
|
return result
|
96
96
|
|
97
97
|
except SiteBayError as e:
|
98
|
-
ctx.
|
98
|
+
await ctx.error(f"SiteBay API error for {fqdn}: {str(e)}")
|
99
99
|
return f"❌ SiteBay Error: {str(e)}"
|
100
100
|
except Exception as e:
|
101
|
-
ctx.
|
101
|
+
await ctx.error(f"Unexpected error getting site {fqdn}: {str(e)}")
|
102
102
|
return f"❌ Unexpected error: {str(e)}"
|
103
103
|
|
104
104
|
|
@@ -131,37 +131,32 @@ async def sitebay_create_site(
|
|
131
131
|
Success message with new site details and access information
|
132
132
|
"""
|
133
133
|
try:
|
134
|
-
ctx.
|
134
|
+
await ctx.info(f"Starting site creation for: {fqdn}")
|
135
135
|
|
136
136
|
# Progress reporting
|
137
|
-
progress = ctx.create_progress_token("site-creation")
|
138
|
-
await ctx.report_progress(progress, "Initializing site creation...", 0.1)
|
139
137
|
|
140
138
|
client = await initialize_client()
|
141
139
|
|
142
|
-
await ctx.report_progress(progress, "Validating site configuration...", 0.2)
|
143
140
|
|
144
141
|
# Basic validation
|
145
142
|
if not fqdn or '.' not in fqdn:
|
146
143
|
raise ValueError("Invalid domain name provided")
|
147
144
|
|
148
|
-
await ctx.report_progress(progress, "Submitting site creation request to SiteBay...", 0.4)
|
149
145
|
|
150
146
|
result = await sites.sitebay_create_site(
|
151
147
|
client, fqdn, wp_title, wp_username, wp_password, wp_email,
|
152
148
|
region_name, template_id, team_id
|
153
149
|
)
|
154
150
|
|
155
|
-
await ctx.report_progress(progress, "Site creation submitted successfully!", 1.0)
|
156
151
|
|
157
|
-
ctx.
|
152
|
+
await ctx.info(f"Successfully created site: {fqdn}")
|
158
153
|
return result
|
159
154
|
|
160
155
|
except ValueError as e:
|
161
|
-
ctx.
|
156
|
+
await ctx.error(f"Validation error creating site {fqdn}: {str(e)}")
|
162
157
|
return f"❌ Validation Error: {str(e)}"
|
163
158
|
except ValidationError as e:
|
164
|
-
ctx.
|
159
|
+
await ctx.error(f"SiteBay validation error creating site {fqdn}: {str(e)}")
|
165
160
|
|
166
161
|
# Provide detailed feedback for the agent with field-specific errors
|
167
162
|
error_msg = f"❌ Validation Error - Please check your input:\n{str(e)}\n"
|
@@ -174,10 +169,10 @@ async def sitebay_create_site(
|
|
174
169
|
error_msg += "\nPlease adjust your parameters and try again."
|
175
170
|
return error_msg
|
176
171
|
except SiteBayError as e:
|
177
|
-
ctx.
|
172
|
+
await ctx.error(f"SiteBay API error creating site {fqdn}: {str(e)}")
|
178
173
|
return f"❌ SiteBay Error: {str(e)}"
|
179
174
|
except Exception as e:
|
180
|
-
ctx.
|
175
|
+
await ctx.error(f"Unexpected error creating site {fqdn}: {str(e)}")
|
181
176
|
return f"❌ Unexpected error: {str(e)}"
|
182
177
|
|
183
178
|
|
@@ -399,7 +394,7 @@ async def sitebay_list_teams(ctx: Context) -> str:
|
|
399
394
|
Formatted list of teams with their details and member information
|
400
395
|
"""
|
401
396
|
try:
|
402
|
-
ctx.
|
397
|
+
await ctx.info("Fetching teams from SiteBay")
|
403
398
|
|
404
399
|
client = await initialize_client()
|
405
400
|
teams = await client.list_teams()
|
@@ -420,14 +415,14 @@ async def sitebay_list_teams(ctx: Context) -> str:
|
|
420
415
|
|
421
416
|
result += "\n"
|
422
417
|
|
423
|
-
ctx.
|
418
|
+
await ctx.info("Successfully retrieved teams list")
|
424
419
|
return result
|
425
420
|
|
426
421
|
except SiteBayError as e:
|
427
|
-
ctx.
|
422
|
+
await ctx.error(f"SiteBay API error: {str(e)}")
|
428
423
|
return f"❌ SiteBay Error: {str(e)}"
|
429
424
|
except Exception as e:
|
430
|
-
ctx.
|
425
|
+
await ctx.error(f"Unexpected error listing teams: {str(e)}")
|
431
426
|
return f"❌ Unexpected error: {str(e)}"
|
432
427
|
|
433
428
|
|
@@ -438,7 +433,7 @@ async def sitebay_wordpress_proxy(
|
|
438
433
|
site_fqdn: str,
|
439
434
|
endpoint: str,
|
440
435
|
method: str = "GET",
|
441
|
-
data: dict = None
|
436
|
+
data: Optional[dict] = None
|
442
437
|
) -> str:
|
443
438
|
"""
|
444
439
|
Proxy requests to a WordPress site's REST API.
|
@@ -453,7 +448,7 @@ async def sitebay_wordpress_proxy(
|
|
453
448
|
WordPress API response
|
454
449
|
"""
|
455
450
|
try:
|
456
|
-
ctx.
|
451
|
+
await ctx.info(f"WordPress proxy request to {site_fqdn}{endpoint}")
|
457
452
|
|
458
453
|
client = await initialize_client()
|
459
454
|
proxy_data = {
|
@@ -468,10 +463,10 @@ async def sitebay_wordpress_proxy(
|
|
468
463
|
return f"✅ WordPress API Response:\n```json\n{result}\n```"
|
469
464
|
|
470
465
|
except SiteBayError as e:
|
471
|
-
ctx.
|
466
|
+
await ctx.error(f"WordPress proxy error: {str(e)}")
|
472
467
|
return f"❌ WordPress Proxy Error: {str(e)}"
|
473
468
|
except Exception as e:
|
474
|
-
ctx.
|
469
|
+
await ctx.error(f"Unexpected proxy error: {str(e)}")
|
475
470
|
return f"❌ Unexpected error: {str(e)}"
|
476
471
|
|
477
472
|
|
@@ -482,7 +477,7 @@ async def sitebay_shopify_proxy(
|
|
482
477
|
endpoint: str,
|
483
478
|
access_token: str,
|
484
479
|
method: str = "GET",
|
485
|
-
data: dict = None
|
480
|
+
data: Optional[dict] = None
|
486
481
|
) -> str:
|
487
482
|
"""
|
488
483
|
Proxy requests to a Shopify Admin API.
|
@@ -498,7 +493,7 @@ async def sitebay_shopify_proxy(
|
|
498
493
|
Shopify API response
|
499
494
|
"""
|
500
495
|
try:
|
501
|
-
ctx.
|
496
|
+
await ctx.info(f"Shopify proxy request to {shop_domain}{endpoint}")
|
502
497
|
|
503
498
|
client = await initialize_client()
|
504
499
|
proxy_data = {
|
@@ -514,10 +509,10 @@ async def sitebay_shopify_proxy(
|
|
514
509
|
return f"✅ Shopify API Response:\n```json\n{result}\n```"
|
515
510
|
|
516
511
|
except SiteBayError as e:
|
517
|
-
ctx.
|
512
|
+
await ctx.error(f"Shopify proxy error: {str(e)}")
|
518
513
|
return f"❌ Shopify Proxy Error: {str(e)}"
|
519
514
|
except Exception as e:
|
520
|
-
ctx.
|
515
|
+
await ctx.error(f"Unexpected proxy error: {str(e)}")
|
521
516
|
return f"❌ Unexpected error: {str(e)}"
|
522
517
|
|
523
518
|
|
@@ -540,7 +535,7 @@ async def sitebay_posthog_proxy(
|
|
540
535
|
PostHog API response
|
541
536
|
"""
|
542
537
|
try:
|
543
|
-
ctx.
|
538
|
+
await ctx.info(f"PostHog proxy request to {endpoint}")
|
544
539
|
|
545
540
|
client = await initialize_client()
|
546
541
|
proxy_data = {
|
@@ -554,10 +549,10 @@ async def sitebay_posthog_proxy(
|
|
554
549
|
return f"✅ PostHog API Response:\n```json\n{result}\n```"
|
555
550
|
|
556
551
|
except SiteBayError as e:
|
557
|
-
ctx.
|
552
|
+
await ctx.error(f"PostHog proxy error: {str(e)}")
|
558
553
|
return f"❌ PostHog Proxy Error: {str(e)}"
|
559
554
|
except Exception as e:
|
560
|
-
ctx.
|
555
|
+
await ctx.error(f"Unexpected proxy error: {str(e)}")
|
561
556
|
return f"❌ Unexpected error: {str(e)}"
|
562
557
|
|
563
558
|
|
@@ -579,10 +574,8 @@ async def sitebay_staging_create(
|
|
579
574
|
Staging site creation confirmation
|
580
575
|
"""
|
581
576
|
try:
|
582
|
-
ctx.
|
577
|
+
await ctx.info(f"Creating staging site for {fqdn}")
|
583
578
|
|
584
|
-
progress = ctx.create_progress_token("staging-creation")
|
585
|
-
await ctx.report_progress(progress, "Creating staging environment...", 0.3)
|
586
579
|
|
587
580
|
client = await initialize_client()
|
588
581
|
staging_data = {}
|
@@ -591,16 +584,15 @@ async def sitebay_staging_create(
|
|
591
584
|
|
592
585
|
result = await client.create_staging_site(fqdn, staging_data)
|
593
586
|
|
594
|
-
await ctx.report_progress(progress, "Staging site created successfully!", 1.0)
|
595
587
|
|
596
|
-
ctx.
|
588
|
+
await ctx.info(f"Successfully created staging site for {fqdn}")
|
597
589
|
return f"✅ **Staging Site Created**\n\nStaging environment for {fqdn} is now available for testing changes safely."
|
598
590
|
|
599
591
|
except SiteBayError as e:
|
600
|
-
ctx.
|
592
|
+
await ctx.error(f"Error creating staging site: {str(e)}")
|
601
593
|
return f"❌ Staging Creation Error: {str(e)}"
|
602
594
|
except Exception as e:
|
603
|
-
ctx.
|
595
|
+
await ctx.error(f"Unexpected staging error: {str(e)}")
|
604
596
|
return f"❌ Unexpected error: {str(e)}"
|
605
597
|
|
606
598
|
|
@@ -616,19 +608,19 @@ async def sitebay_staging_delete(ctx: Context, fqdn: str) -> str:
|
|
616
608
|
Staging deletion confirmation
|
617
609
|
"""
|
618
610
|
try:
|
619
|
-
ctx.
|
611
|
+
await ctx.info(f"Deleting staging site for {fqdn}")
|
620
612
|
|
621
613
|
client = await initialize_client()
|
622
614
|
await client.delete_staging_site(fqdn)
|
623
615
|
|
624
|
-
ctx.
|
616
|
+
await ctx.info(f"Successfully deleted staging site for {fqdn}")
|
625
617
|
return f"✅ **Staging Site Deleted**\n\nThe staging environment for {fqdn} has been removed."
|
626
618
|
|
627
619
|
except SiteBayError as e:
|
628
|
-
ctx.
|
620
|
+
await ctx.error(f"Error deleting staging site: {str(e)}")
|
629
621
|
return f"❌ Staging Deletion Error: {str(e)}"
|
630
622
|
except Exception as e:
|
631
|
-
ctx.
|
623
|
+
await ctx.error(f"Unexpected staging error: {str(e)}")
|
632
624
|
return f"❌ Unexpected error: {str(e)}"
|
633
625
|
|
634
626
|
|
@@ -644,24 +636,21 @@ async def sitebay_staging_commit(ctx: Context, fqdn: str) -> str:
|
|
644
636
|
Staging commit confirmation
|
645
637
|
"""
|
646
638
|
try:
|
647
|
-
ctx.
|
639
|
+
await ctx.info(f"Committing staging changes for {fqdn}")
|
648
640
|
|
649
|
-
progress = ctx.create_progress_token("staging-commit")
|
650
|
-
await ctx.report_progress(progress, "Syncing staging to live...", 0.5)
|
651
641
|
|
652
642
|
client = await initialize_client()
|
653
643
|
result = await client.commit_staging_site(fqdn)
|
654
644
|
|
655
|
-
await ctx.report_progress(progress, "Staging committed to live successfully!", 1.0)
|
656
645
|
|
657
|
-
ctx.
|
646
|
+
await ctx.info(f"Successfully committed staging for {fqdn}")
|
658
647
|
return f"✅ **Staging Committed to Live**\n\nChanges from staging have been synchronized to the live site {fqdn}."
|
659
648
|
|
660
649
|
except SiteBayError as e:
|
661
|
-
ctx.
|
650
|
+
await ctx.error(f"Error committing staging: {str(e)}")
|
662
651
|
return f"❌ Staging Commit Error: {str(e)}"
|
663
652
|
except Exception as e:
|
664
|
-
ctx.
|
653
|
+
await ctx.error(f"Unexpected staging error: {str(e)}")
|
665
654
|
return f"❌ Unexpected error: {str(e)}"
|
666
655
|
|
667
656
|
|
@@ -683,7 +672,7 @@ async def sitebay_backup_list_commits(
|
|
683
672
|
List of available backup commits
|
684
673
|
"""
|
685
674
|
try:
|
686
|
-
ctx.
|
675
|
+
await ctx.info(f"Fetching backup commits for {fqdn}")
|
687
676
|
|
688
677
|
client = await initialize_client()
|
689
678
|
commits = await client.get_backup_commits(fqdn, number_to_fetch)
|
@@ -701,14 +690,14 @@ async def sitebay_backup_list_commits(
|
|
701
690
|
result += f" - Status: {'Completed' if commit.get('finished_at') else 'In Progress'}\n"
|
702
691
|
result += "\n"
|
703
692
|
|
704
|
-
ctx.
|
693
|
+
await ctx.info(f"Successfully retrieved backup commits for {fqdn}")
|
705
694
|
return result
|
706
695
|
|
707
696
|
except SiteBayError as e:
|
708
|
-
ctx.
|
697
|
+
await ctx.error(f"Error fetching backup commits: {str(e)}")
|
709
698
|
return f"❌ Backup Error: {str(e)}"
|
710
699
|
except Exception as e:
|
711
|
-
ctx.
|
700
|
+
await ctx.error(f"Unexpected backup error: {str(e)}")
|
712
701
|
return f"❌ Unexpected error: {str(e)}"
|
713
702
|
|
714
703
|
|
@@ -731,10 +720,8 @@ async def sitebay_backup_restore(
|
|
731
720
|
Restore operation confirmation
|
732
721
|
"""
|
733
722
|
try:
|
734
|
-
ctx.
|
723
|
+
await ctx.info(f"Starting point-in-time restore for {fqdn}")
|
735
724
|
|
736
|
-
progress = ctx.create_progress_token("backup-restore")
|
737
|
-
await ctx.report_progress(progress, "Initializing restore operation...", 0.1)
|
738
725
|
|
739
726
|
client = await initialize_client()
|
740
727
|
restore_data = {
|
@@ -742,20 +729,18 @@ async def sitebay_backup_restore(
|
|
742
729
|
"restore_type": restore_type
|
743
730
|
}
|
744
731
|
|
745
|
-
await ctx.report_progress(progress, "Submitting restore request...", 0.3)
|
746
732
|
|
747
733
|
result = await client.create_restore(fqdn, restore_data)
|
748
734
|
|
749
|
-
await ctx.report_progress(progress, "Restore operation initiated!", 1.0)
|
750
735
|
|
751
|
-
ctx.
|
736
|
+
await ctx.info(f"Successfully initiated restore for {fqdn}")
|
752
737
|
return f"✅ **Point-in-Time Restore Initiated**\n\nRestore operation for {fqdn} has been started. The site will be restored to the selected backup point."
|
753
738
|
|
754
739
|
except SiteBayError as e:
|
755
|
-
ctx.
|
740
|
+
await ctx.error(f"Error starting restore: {str(e)}")
|
756
741
|
return f"❌ Restore Error: {str(e)}"
|
757
742
|
except Exception as e:
|
758
|
-
ctx.
|
743
|
+
await ctx.error(f"Unexpected restore error: {str(e)}")
|
759
744
|
return f"❌ Unexpected error: {str(e)}"
|
760
745
|
|
761
746
|
|
@@ -769,7 +754,7 @@ async def sitebay_account_affiliates(ctx: Context) -> str:
|
|
769
754
|
List of users who signed up using your affiliate links
|
770
755
|
"""
|
771
756
|
try:
|
772
|
-
ctx.
|
757
|
+
await ctx.info("Fetching affiliate referrals")
|
773
758
|
|
774
759
|
client = await initialize_client()
|
775
760
|
affiliates = await client.get_affiliate_referrals()
|
@@ -785,14 +770,14 @@ async def sitebay_account_affiliates(ctx: Context) -> str:
|
|
785
770
|
result += f" - Status: {affiliate.get('status', 'Unknown')}\n"
|
786
771
|
result += "\n"
|
787
772
|
|
788
|
-
ctx.
|
773
|
+
await ctx.info("Successfully retrieved affiliate referrals")
|
789
774
|
return result
|
790
775
|
|
791
776
|
except SiteBayError as e:
|
792
|
-
ctx.
|
777
|
+
await ctx.error(f"Error fetching affiliates: {str(e)}")
|
793
778
|
return f"❌ Affiliate Error: {str(e)}"
|
794
779
|
except Exception as e:
|
795
|
-
ctx.
|
780
|
+
await ctx.error(f"Unexpected affiliate error: {str(e)}")
|
796
781
|
return f"❌ Unexpected error: {str(e)}"
|
797
782
|
|
798
783
|
|
@@ -815,7 +800,7 @@ async def sitebay_account_create_checkout(
|
|
815
800
|
Stripe checkout URL
|
816
801
|
"""
|
817
802
|
try:
|
818
|
-
ctx.
|
803
|
+
await ctx.info(f"Creating checkout session for {plan_name} plan")
|
819
804
|
|
820
805
|
client = await initialize_client()
|
821
806
|
checkout_data = {
|
@@ -827,14 +812,14 @@ async def sitebay_account_create_checkout(
|
|
827
812
|
|
828
813
|
result = await client.create_checkout_session(checkout_data)
|
829
814
|
|
830
|
-
ctx.
|
815
|
+
await ctx.info("Successfully created checkout session")
|
831
816
|
return f"✅ **Checkout Session Created**\n\nPlan: {plan_name} ({interval}ly)\nCheckout URL: {result.get('url', 'URL not provided')}"
|
832
817
|
|
833
818
|
except SiteBayError as e:
|
834
|
-
ctx.
|
819
|
+
await ctx.error(f"Error creating checkout: {str(e)}")
|
835
820
|
return f"❌ Checkout Error: {str(e)}"
|
836
821
|
except Exception as e:
|
837
|
-
ctx.
|
822
|
+
await ctx.error(f"Unexpected checkout error: {str(e)}")
|
838
823
|
return f"❌ Unexpected error: {str(e)}"
|
839
824
|
|
840
825
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
sitebay_mcp/__init__.py,sha256=RvWonHPlNJwFvYioSwHvLLRCuvmH0h6nmOR2rB95HKc,386
|
2
2
|
sitebay_mcp/auth.py,sha256=idUbSdtIAMqrSLnzZ17VmhxLHox0SA81cb2ks2YrxUU,1739
|
3
3
|
sitebay_mcp/client.py,sha256=MzEje2tpK0SIlf_znYtaQ2R6V-kdgoEuaO3KIExJFVU,14597
|
4
|
-
sitebay_mcp/exceptions.py,sha256=
|
5
|
-
sitebay_mcp/resources.py,sha256=
|
6
|
-
sitebay_mcp/server.py,sha256=
|
4
|
+
sitebay_mcp/exceptions.py,sha256=3zt40zk8MD-k4-5NwxMzWcQDbexLcVOUsoNIREXwhWg,1157
|
5
|
+
sitebay_mcp/resources.py,sha256=wWJoFlR9rRBxx64t8U_JXSWZ8JC7Z9O3wiZvdMDnnOA,5485
|
6
|
+
sitebay_mcp/server.py,sha256=ssMCobCxWb-KQLPVvVORlAW0NFlDd9LzIbzXTuspL0I,28122
|
7
7
|
sitebay_mcp/tools/__init__.py,sha256=5QxQGl_HgkH-7uFqY3puZmTqeVQkE-yxym43EcRr6zc,108
|
8
8
|
sitebay_mcp/tools/operations.py,sha256=Nus863sqREI_V9OPHOuiO-FOMz6u6MtLcr04LNVcFdk,8797
|
9
9
|
sitebay_mcp/tools/sites.py,sha256=R6SlMr9qdtWnYZ2F0FhoX2cmm-KIS7I1wmCWWjWFMsU,8345
|
10
|
-
sitebay_mcp-0.1.
|
11
|
-
sitebay_mcp-0.1.
|
12
|
-
sitebay_mcp-0.1.
|
13
|
-
sitebay_mcp-0.1.
|
14
|
-
sitebay_mcp-0.1.
|
10
|
+
sitebay_mcp-0.1.1751180311.dist-info/METADATA,sha256=YIMyUXuEdRJ3_XrFqakHo5OTFRrUmvbK4p2CP7r-k0A,8161
|
11
|
+
sitebay_mcp-0.1.1751180311.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
12
|
+
sitebay_mcp-0.1.1751180311.dist-info/entry_points.txt,sha256=kOW3HHmOw1mAqzbDliyWzaHwS-tAwISRFdQHBa9QvRc,56
|
13
|
+
sitebay_mcp-0.1.1751180311.dist-info/licenses/LICENSE,sha256=PjkyMZfBImLXpO5eKb_sI__W1JMf1jL51n1O7H4a1I0,1062
|
14
|
+
sitebay_mcp-0.1.1751180311.dist-info/RECORD,,
|
File without changes
|
{sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/entry_points.txt
RENAMED
File without changes
|
{sitebay_mcp-0.1.1751179164.dist-info → sitebay_mcp-0.1.1751180311.dist-info}/licenses/LICENSE
RENAMED
File without changes
|