@spacelr/mcp 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +236 -100
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3537,8 +3537,143 @@ function registerCronJobTools(server, api) {
|
|
|
3537
3537
|
);
|
|
3538
3538
|
}
|
|
3539
3539
|
|
|
3540
|
-
// libs/mcp-server/src/tools/
|
|
3540
|
+
// libs/mcp-server/src/tools/schedules.ts
|
|
3541
3541
|
import { z as z10 } from "zod";
|
|
3542
|
+
var STATUS_VALUES = ["scheduled", "fired", "failed", "cancelled"];
|
|
3543
|
+
function registerScheduleTools(server, api) {
|
|
3544
|
+
server.registerTool(
|
|
3545
|
+
"schedules_list",
|
|
3546
|
+
{
|
|
3547
|
+
description: "List one-shot scheduled function invocations for a project",
|
|
3548
|
+
inputSchema: {
|
|
3549
|
+
projectId: z10.string(),
|
|
3550
|
+
functionId: z10.string().optional(),
|
|
3551
|
+
status: z10.enum(STATUS_VALUES).optional(),
|
|
3552
|
+
limit: z10.number().int().min(1).max(200).optional(),
|
|
3553
|
+
offset: z10.number().int().min(0).optional()
|
|
3554
|
+
}
|
|
3555
|
+
},
|
|
3556
|
+
async ({ projectId, functionId, status, limit, offset }) => {
|
|
3557
|
+
try {
|
|
3558
|
+
const result = await api.get(
|
|
3559
|
+
`/projects/${encodeURIComponent(projectId)}/schedules`,
|
|
3560
|
+
{ params: { functionId, status, limit, offset } }
|
|
3561
|
+
);
|
|
3562
|
+
return {
|
|
3563
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
3564
|
+
};
|
|
3565
|
+
} catch (error) {
|
|
3566
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3567
|
+
return {
|
|
3568
|
+
content: [{ type: "text", text: `Failed to list schedules: ${message}` }],
|
|
3569
|
+
isError: true
|
|
3570
|
+
};
|
|
3571
|
+
}
|
|
3572
|
+
}
|
|
3573
|
+
);
|
|
3574
|
+
server.registerTool(
|
|
3575
|
+
"schedules_get",
|
|
3576
|
+
{
|
|
3577
|
+
description: "Get a single scheduled invocation by ID",
|
|
3578
|
+
inputSchema: {
|
|
3579
|
+
projectId: z10.string(),
|
|
3580
|
+
scheduleId: z10.string()
|
|
3581
|
+
}
|
|
3582
|
+
},
|
|
3583
|
+
async ({ projectId, scheduleId }) => {
|
|
3584
|
+
try {
|
|
3585
|
+
const result = await api.get(
|
|
3586
|
+
`/projects/${encodeURIComponent(projectId)}/schedules/${encodeURIComponent(scheduleId)}`
|
|
3587
|
+
);
|
|
3588
|
+
return {
|
|
3589
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
3590
|
+
};
|
|
3591
|
+
} catch (error) {
|
|
3592
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3593
|
+
return {
|
|
3594
|
+
content: [{ type: "text", text: `Failed to get schedule: ${message}` }],
|
|
3595
|
+
isError: true
|
|
3596
|
+
};
|
|
3597
|
+
}
|
|
3598
|
+
}
|
|
3599
|
+
);
|
|
3600
|
+
server.registerTool(
|
|
3601
|
+
"schedules_create",
|
|
3602
|
+
{
|
|
3603
|
+
description: "Schedule a one-shot function invocation. `executeAt` must be ISO-8601 within the configured max-delay window (default 90 days). Repeating with the same `idempotencyKey` returns the existing schedule.",
|
|
3604
|
+
inputSchema: {
|
|
3605
|
+
projectId: z10.string(),
|
|
3606
|
+
functionId: z10.string().regex(/^[a-f0-9]{24}$/i),
|
|
3607
|
+
executeAt: z10.string().describe("ISO-8601 timestamp"),
|
|
3608
|
+
payload: z10.record(z10.string(), z10.unknown()).optional(),
|
|
3609
|
+
idempotencyKey: z10.string().min(1).max(256).optional(),
|
|
3610
|
+
maxAttempts: z10.number().int().min(0).max(10).optional()
|
|
3611
|
+
}
|
|
3612
|
+
},
|
|
3613
|
+
async ({
|
|
3614
|
+
projectId,
|
|
3615
|
+
functionId,
|
|
3616
|
+
executeAt,
|
|
3617
|
+
payload,
|
|
3618
|
+
idempotencyKey,
|
|
3619
|
+
maxAttempts
|
|
3620
|
+
}) => {
|
|
3621
|
+
try {
|
|
3622
|
+
const body = { functionId, executeAt };
|
|
3623
|
+
if (payload !== void 0) body.payload = payload;
|
|
3624
|
+
if (idempotencyKey !== void 0) body.idempotencyKey = idempotencyKey;
|
|
3625
|
+
if (maxAttempts !== void 0) body.maxAttempts = maxAttempts;
|
|
3626
|
+
const result = await api.post(
|
|
3627
|
+
`/projects/${encodeURIComponent(projectId)}/schedules`,
|
|
3628
|
+
{ body }
|
|
3629
|
+
);
|
|
3630
|
+
return {
|
|
3631
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
3632
|
+
};
|
|
3633
|
+
} catch (error) {
|
|
3634
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3635
|
+
return {
|
|
3636
|
+
content: [{ type: "text", text: `Failed to create schedule: ${message}` }],
|
|
3637
|
+
isError: true
|
|
3638
|
+
};
|
|
3639
|
+
}
|
|
3640
|
+
}
|
|
3641
|
+
);
|
|
3642
|
+
server.registerTool(
|
|
3643
|
+
"schedules_cancel",
|
|
3644
|
+
{
|
|
3645
|
+
description: "Cancel a scheduled invocation. Idempotent \u2014 returns the existing record if already in a terminal state (fired/failed/cancelled).",
|
|
3646
|
+
inputSchema: {
|
|
3647
|
+
projectId: z10.string(),
|
|
3648
|
+
scheduleId: z10.string()
|
|
3649
|
+
}
|
|
3650
|
+
},
|
|
3651
|
+
async ({ projectId, scheduleId }) => {
|
|
3652
|
+
try {
|
|
3653
|
+
const result = await api.delete(
|
|
3654
|
+
`/projects/${encodeURIComponent(projectId)}/schedules/${encodeURIComponent(scheduleId)}`
|
|
3655
|
+
);
|
|
3656
|
+
return {
|
|
3657
|
+
content: [
|
|
3658
|
+
{
|
|
3659
|
+
type: "text",
|
|
3660
|
+
text: result ? JSON.stringify(result, null, 2) : "Schedule cancelled"
|
|
3661
|
+
}
|
|
3662
|
+
]
|
|
3663
|
+
};
|
|
3664
|
+
} catch (error) {
|
|
3665
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3666
|
+
return {
|
|
3667
|
+
content: [{ type: "text", text: `Failed to cancel schedule: ${message}` }],
|
|
3668
|
+
isError: true
|
|
3669
|
+
};
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3672
|
+
);
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3675
|
+
// libs/mcp-server/src/tools/webhooks.ts
|
|
3676
|
+
import { z as z11 } from "zod";
|
|
3542
3677
|
var WEBHOOK_EVENT_TYPES = [
|
|
3543
3678
|
"user.created",
|
|
3544
3679
|
"user.updated",
|
|
@@ -3562,7 +3697,7 @@ function registerWebhookTools(server, api) {
|
|
|
3562
3697
|
{
|
|
3563
3698
|
description: "List all webhooks for a project",
|
|
3564
3699
|
inputSchema: {
|
|
3565
|
-
projectId:
|
|
3700
|
+
projectId: z11.string()
|
|
3566
3701
|
}
|
|
3567
3702
|
},
|
|
3568
3703
|
async ({ projectId }) => {
|
|
@@ -3585,8 +3720,8 @@ function registerWebhookTools(server, api) {
|
|
|
3585
3720
|
{
|
|
3586
3721
|
description: "Get a single webhook by ID",
|
|
3587
3722
|
inputSchema: {
|
|
3588
|
-
projectId:
|
|
3589
|
-
webhookId:
|
|
3723
|
+
projectId: z11.string(),
|
|
3724
|
+
webhookId: z11.string()
|
|
3590
3725
|
}
|
|
3591
3726
|
},
|
|
3592
3727
|
async ({ projectId, webhookId }) => {
|
|
@@ -3609,12 +3744,12 @@ function registerWebhookTools(server, api) {
|
|
|
3609
3744
|
{
|
|
3610
3745
|
description: "Create a new webhook for a project. WARNING: The response includes a secret that will be visible in the conversation context. Events include: user.created, user.updated, user.deleted, user.login, user.email_verified, user.password_reset_requested, user.password_reset, user.2fa_verified, database.insert, database.update, database.delete, storage.upload, storage.delete, project.created, project.updated.",
|
|
3611
3746
|
inputSchema: {
|
|
3612
|
-
projectId:
|
|
3613
|
-
url:
|
|
3614
|
-
events:
|
|
3615
|
-
description:
|
|
3616
|
-
headers:
|
|
3617
|
-
active:
|
|
3747
|
+
projectId: z11.string(),
|
|
3748
|
+
url: z11.string().url(),
|
|
3749
|
+
events: z11.array(z11.enum(WEBHOOK_EVENT_TYPES)).min(1),
|
|
3750
|
+
description: z11.string().optional(),
|
|
3751
|
+
headers: z11.record(z11.string(), z11.string()).optional(),
|
|
3752
|
+
active: z11.boolean().optional()
|
|
3618
3753
|
}
|
|
3619
3754
|
},
|
|
3620
3755
|
async ({ projectId, url, events, description, headers, active }) => {
|
|
@@ -3641,13 +3776,13 @@ function registerWebhookTools(server, api) {
|
|
|
3641
3776
|
{
|
|
3642
3777
|
description: "Update an existing webhook",
|
|
3643
3778
|
inputSchema: {
|
|
3644
|
-
projectId:
|
|
3645
|
-
webhookId:
|
|
3646
|
-
url:
|
|
3647
|
-
events:
|
|
3648
|
-
description:
|
|
3649
|
-
headers:
|
|
3650
|
-
active:
|
|
3779
|
+
projectId: z11.string(),
|
|
3780
|
+
webhookId: z11.string(),
|
|
3781
|
+
url: z11.string().url().optional(),
|
|
3782
|
+
events: z11.array(z11.enum(WEBHOOK_EVENT_TYPES)).min(1).optional(),
|
|
3783
|
+
description: z11.string().optional(),
|
|
3784
|
+
headers: z11.record(z11.string(), z11.string()).optional(),
|
|
3785
|
+
active: z11.boolean().optional()
|
|
3651
3786
|
}
|
|
3652
3787
|
},
|
|
3653
3788
|
async ({ projectId, webhookId, url, events, description, headers, active }) => {
|
|
@@ -3682,8 +3817,8 @@ function registerWebhookTools(server, api) {
|
|
|
3682
3817
|
{
|
|
3683
3818
|
description: "Delete a webhook",
|
|
3684
3819
|
inputSchema: {
|
|
3685
|
-
projectId:
|
|
3686
|
-
webhookId:
|
|
3820
|
+
projectId: z11.string(),
|
|
3821
|
+
webhookId: z11.string()
|
|
3687
3822
|
}
|
|
3688
3823
|
},
|
|
3689
3824
|
async ({ projectId, webhookId }) => {
|
|
@@ -3706,8 +3841,8 @@ function registerWebhookTools(server, api) {
|
|
|
3706
3841
|
{
|
|
3707
3842
|
description: "Send a test ping to a webhook",
|
|
3708
3843
|
inputSchema: {
|
|
3709
|
-
projectId:
|
|
3710
|
-
webhookId:
|
|
3844
|
+
projectId: z11.string(),
|
|
3845
|
+
webhookId: z11.string()
|
|
3711
3846
|
}
|
|
3712
3847
|
},
|
|
3713
3848
|
async ({ projectId, webhookId }) => {
|
|
@@ -3730,10 +3865,10 @@ function registerWebhookTools(server, api) {
|
|
|
3730
3865
|
{
|
|
3731
3866
|
description: "List webhook delivery logs for a project",
|
|
3732
3867
|
inputSchema: {
|
|
3733
|
-
projectId:
|
|
3734
|
-
webhookId:
|
|
3735
|
-
limit:
|
|
3736
|
-
offset:
|
|
3868
|
+
projectId: z11.string(),
|
|
3869
|
+
webhookId: z11.string().optional(),
|
|
3870
|
+
limit: z11.number().int().min(1).max(100).optional(),
|
|
3871
|
+
offset: z11.number().int().min(0).optional()
|
|
3737
3872
|
}
|
|
3738
3873
|
},
|
|
3739
3874
|
async ({ projectId, webhookId, limit, offset }) => {
|
|
@@ -3756,8 +3891,8 @@ function registerWebhookTools(server, api) {
|
|
|
3756
3891
|
{
|
|
3757
3892
|
description: "Retry a failed webhook delivery",
|
|
3758
3893
|
inputSchema: {
|
|
3759
|
-
projectId:
|
|
3760
|
-
deliveryId:
|
|
3894
|
+
projectId: z11.string(),
|
|
3895
|
+
deliveryId: z11.string()
|
|
3761
3896
|
}
|
|
3762
3897
|
},
|
|
3763
3898
|
async ({ projectId, deliveryId }) => {
|
|
@@ -3778,14 +3913,14 @@ function registerWebhookTools(server, api) {
|
|
|
3778
3913
|
}
|
|
3779
3914
|
|
|
3780
3915
|
// libs/mcp-server/src/tools/notifications.ts
|
|
3781
|
-
import { z as
|
|
3916
|
+
import { z as z12 } from "zod";
|
|
3782
3917
|
function registerNotificationTools(server, api) {
|
|
3783
3918
|
server.registerTool(
|
|
3784
3919
|
"notification_templates_list",
|
|
3785
3920
|
{
|
|
3786
3921
|
description: "List all notification templates for a project (includes system defaults)",
|
|
3787
3922
|
inputSchema: {
|
|
3788
|
-
projectId:
|
|
3923
|
+
projectId: z12.string()
|
|
3789
3924
|
}
|
|
3790
3925
|
},
|
|
3791
3926
|
async ({ projectId }) => {
|
|
@@ -3808,7 +3943,7 @@ function registerNotificationTools(server, api) {
|
|
|
3808
3943
|
{
|
|
3809
3944
|
description: "Get a single notification template by ID",
|
|
3810
3945
|
inputSchema: {
|
|
3811
|
-
id:
|
|
3946
|
+
id: z12.string()
|
|
3812
3947
|
}
|
|
3813
3948
|
},
|
|
3814
3949
|
async ({ id }) => {
|
|
@@ -3831,15 +3966,15 @@ function registerNotificationTools(server, api) {
|
|
|
3831
3966
|
{
|
|
3832
3967
|
description: "Create a new project-specific notification template. Variables use Handlebars syntax in titleTemplate and bodyTemplate.",
|
|
3833
3968
|
inputSchema: {
|
|
3834
|
-
projectId:
|
|
3835
|
-
type:
|
|
3836
|
-
name:
|
|
3837
|
-
titleTemplate:
|
|
3838
|
-
bodyTemplate:
|
|
3839
|
-
icon:
|
|
3840
|
-
defaultUrl:
|
|
3841
|
-
variables:
|
|
3842
|
-
isActive:
|
|
3969
|
+
projectId: z12.string(),
|
|
3970
|
+
type: z12.string(),
|
|
3971
|
+
name: z12.string(),
|
|
3972
|
+
titleTemplate: z12.string(),
|
|
3973
|
+
bodyTemplate: z12.string(),
|
|
3974
|
+
icon: z12.string().optional(),
|
|
3975
|
+
defaultUrl: z12.string().optional(),
|
|
3976
|
+
variables: z12.array(z12.string()).optional(),
|
|
3977
|
+
isActive: z12.boolean().optional()
|
|
3843
3978
|
}
|
|
3844
3979
|
},
|
|
3845
3980
|
async ({ projectId, type, name, titleTemplate, bodyTemplate, icon, defaultUrl, variables, isActive }) => {
|
|
@@ -3867,14 +4002,14 @@ function registerNotificationTools(server, api) {
|
|
|
3867
4002
|
{
|
|
3868
4003
|
description: "Update an existing notification template",
|
|
3869
4004
|
inputSchema: {
|
|
3870
|
-
id:
|
|
3871
|
-
name:
|
|
3872
|
-
titleTemplate:
|
|
3873
|
-
bodyTemplate:
|
|
3874
|
-
icon:
|
|
3875
|
-
defaultUrl:
|
|
3876
|
-
variables:
|
|
3877
|
-
isActive:
|
|
4005
|
+
id: z12.string(),
|
|
4006
|
+
name: z12.string().optional(),
|
|
4007
|
+
titleTemplate: z12.string().optional(),
|
|
4008
|
+
bodyTemplate: z12.string().optional(),
|
|
4009
|
+
icon: z12.string().optional(),
|
|
4010
|
+
defaultUrl: z12.string().optional(),
|
|
4011
|
+
variables: z12.array(z12.string()).optional(),
|
|
4012
|
+
isActive: z12.boolean().optional()
|
|
3878
4013
|
}
|
|
3879
4014
|
},
|
|
3880
4015
|
async ({ id, name, titleTemplate, bodyTemplate, icon, defaultUrl, variables, isActive }) => {
|
|
@@ -3911,7 +4046,7 @@ function registerNotificationTools(server, api) {
|
|
|
3911
4046
|
{
|
|
3912
4047
|
description: "Delete a project notification template override (reverts to system default)",
|
|
3913
4048
|
inputSchema: {
|
|
3914
|
-
id:
|
|
4049
|
+
id: z12.string()
|
|
3915
4050
|
}
|
|
3916
4051
|
},
|
|
3917
4052
|
async ({ id }) => {
|
|
@@ -3934,9 +4069,9 @@ function registerNotificationTools(server, api) {
|
|
|
3934
4069
|
{
|
|
3935
4070
|
description: "Preview a compiled notification template with Handlebars variables applied",
|
|
3936
4071
|
inputSchema: {
|
|
3937
|
-
titleTemplate:
|
|
3938
|
-
bodyTemplate:
|
|
3939
|
-
variables:
|
|
4072
|
+
titleTemplate: z12.string(),
|
|
4073
|
+
bodyTemplate: z12.string(),
|
|
4074
|
+
variables: z12.record(z12.string(), z12.string())
|
|
3940
4075
|
}
|
|
3941
4076
|
},
|
|
3942
4077
|
async ({ titleTemplate, bodyTemplate, variables }) => {
|
|
@@ -3959,7 +4094,7 @@ function registerNotificationTools(server, api) {
|
|
|
3959
4094
|
{
|
|
3960
4095
|
description: "Get push notification provider configuration for a project (VAPID, FCM, APNS). WARNING: Response may include sensitive credentials that will be visible in the conversation context.",
|
|
3961
4096
|
inputSchema: {
|
|
3962
|
-
projectId:
|
|
4097
|
+
projectId: z12.string()
|
|
3963
4098
|
}
|
|
3964
4099
|
},
|
|
3965
4100
|
async ({ projectId }) => {
|
|
@@ -3982,24 +4117,24 @@ function registerNotificationTools(server, api) {
|
|
|
3982
4117
|
{
|
|
3983
4118
|
description: "Update push notification provider configuration. Supports VAPID, FCM, and APNS providers. WARNING: privateKey and serviceAccountJson values are sensitive credentials that will be visible in the conversation context.",
|
|
3984
4119
|
inputSchema: {
|
|
3985
|
-
projectId:
|
|
3986
|
-
vapid:
|
|
3987
|
-
publicKey:
|
|
3988
|
-
privateKey:
|
|
3989
|
-
subject:
|
|
3990
|
-
enabled:
|
|
4120
|
+
projectId: z12.string(),
|
|
4121
|
+
vapid: z12.object({
|
|
4122
|
+
publicKey: z12.string().optional(),
|
|
4123
|
+
privateKey: z12.string().optional(),
|
|
4124
|
+
subject: z12.string().optional(),
|
|
4125
|
+
enabled: z12.boolean().optional()
|
|
3991
4126
|
}).optional(),
|
|
3992
|
-
fcm:
|
|
3993
|
-
serviceAccountJson:
|
|
3994
|
-
enabled:
|
|
4127
|
+
fcm: z12.object({
|
|
4128
|
+
serviceAccountJson: z12.string().optional(),
|
|
4129
|
+
enabled: z12.boolean().optional()
|
|
3995
4130
|
}).optional(),
|
|
3996
|
-
apns:
|
|
3997
|
-
keyId:
|
|
3998
|
-
teamId:
|
|
3999
|
-
privateKey:
|
|
4000
|
-
bundleId:
|
|
4001
|
-
production:
|
|
4002
|
-
enabled:
|
|
4131
|
+
apns: z12.object({
|
|
4132
|
+
keyId: z12.string().optional(),
|
|
4133
|
+
teamId: z12.string().optional(),
|
|
4134
|
+
privateKey: z12.string().optional(),
|
|
4135
|
+
bundleId: z12.string().optional(),
|
|
4136
|
+
production: z12.boolean().optional(),
|
|
4137
|
+
enabled: z12.boolean().optional()
|
|
4003
4138
|
}).optional()
|
|
4004
4139
|
}
|
|
4005
4140
|
},
|
|
@@ -4033,8 +4168,8 @@ function registerNotificationTools(server, api) {
|
|
|
4033
4168
|
{
|
|
4034
4169
|
description: "Delete push notification provider configuration. Specify a provider to delete only that one, or omit to delete all.",
|
|
4035
4170
|
inputSchema: {
|
|
4036
|
-
projectId:
|
|
4037
|
-
provider:
|
|
4171
|
+
projectId: z12.string(),
|
|
4172
|
+
provider: z12.enum(["vapid", "fcm", "apns"]).optional()
|
|
4038
4173
|
}
|
|
4039
4174
|
},
|
|
4040
4175
|
async ({ projectId, provider }) => {
|
|
@@ -4078,12 +4213,12 @@ function registerNotificationTools(server, api) {
|
|
|
4078
4213
|
{
|
|
4079
4214
|
description: "Send a push notification to selected users",
|
|
4080
4215
|
inputSchema: {
|
|
4081
|
-
projectId:
|
|
4082
|
-
userIds:
|
|
4083
|
-
title:
|
|
4084
|
-
body:
|
|
4085
|
-
icon:
|
|
4086
|
-
url:
|
|
4216
|
+
projectId: z12.string(),
|
|
4217
|
+
userIds: z12.array(z12.string()).min(1),
|
|
4218
|
+
title: z12.string(),
|
|
4219
|
+
body: z12.string(),
|
|
4220
|
+
icon: z12.string().optional(),
|
|
4221
|
+
url: z12.string().optional()
|
|
4087
4222
|
}
|
|
4088
4223
|
},
|
|
4089
4224
|
async ({ projectId, userIds, title, body: notifBody, icon, url }) => {
|
|
@@ -4109,11 +4244,11 @@ function registerNotificationTools(server, api) {
|
|
|
4109
4244
|
{
|
|
4110
4245
|
description: "Broadcast a push notification to all subscribed users in a project",
|
|
4111
4246
|
inputSchema: {
|
|
4112
|
-
projectId:
|
|
4113
|
-
title:
|
|
4114
|
-
body:
|
|
4115
|
-
icon:
|
|
4116
|
-
url:
|
|
4247
|
+
projectId: z12.string(),
|
|
4248
|
+
title: z12.string(),
|
|
4249
|
+
body: z12.string(),
|
|
4250
|
+
icon: z12.string().optional(),
|
|
4251
|
+
url: z12.string().optional()
|
|
4117
4252
|
}
|
|
4118
4253
|
},
|
|
4119
4254
|
async ({ projectId, title, body: notifBody, icon, url }) => {
|
|
@@ -4137,20 +4272,20 @@ function registerNotificationTools(server, api) {
|
|
|
4137
4272
|
}
|
|
4138
4273
|
|
|
4139
4274
|
// libs/mcp-server/src/tools/auditLogs.ts
|
|
4140
|
-
import { z as
|
|
4275
|
+
import { z as z13 } from "zod";
|
|
4141
4276
|
function registerAuditLogTools(server, api) {
|
|
4142
4277
|
server.registerTool(
|
|
4143
4278
|
"audit_logs_list",
|
|
4144
4279
|
{
|
|
4145
4280
|
description: "List audit logs for a project. Filter by entity type, action, and date range.",
|
|
4146
4281
|
inputSchema: {
|
|
4147
|
-
projectId:
|
|
4148
|
-
entityType:
|
|
4149
|
-
action:
|
|
4150
|
-
startDate:
|
|
4151
|
-
endDate:
|
|
4152
|
-
limit:
|
|
4153
|
-
offset:
|
|
4282
|
+
projectId: z13.string(),
|
|
4283
|
+
entityType: z13.enum(["user", "client", "project", "auth", "database", "storage"]).optional(),
|
|
4284
|
+
action: z13.string().optional(),
|
|
4285
|
+
startDate: z13.string().datetime().optional(),
|
|
4286
|
+
endDate: z13.string().datetime().optional(),
|
|
4287
|
+
limit: z13.number().int().min(1).max(100).optional(),
|
|
4288
|
+
offset: z13.number().int().min(0).optional()
|
|
4154
4289
|
}
|
|
4155
4290
|
},
|
|
4156
4291
|
async ({ projectId, entityType, action, startDate, endDate, limit, offset }) => {
|
|
@@ -4175,8 +4310,8 @@ function registerAuditLogTools(server, api) {
|
|
|
4175
4310
|
{
|
|
4176
4311
|
description: "Get a single audit log entry by ID",
|
|
4177
4312
|
inputSchema: {
|
|
4178
|
-
projectId:
|
|
4179
|
-
logId:
|
|
4313
|
+
projectId: z13.string(),
|
|
4314
|
+
logId: z13.string()
|
|
4180
4315
|
}
|
|
4181
4316
|
},
|
|
4182
4317
|
async ({ projectId, logId }) => {
|
|
@@ -4207,13 +4342,14 @@ function registerAllTools(server, api) {
|
|
|
4207
4342
|
registerFunctionTools(server, api);
|
|
4208
4343
|
registerEmailTemplateTools(server, api);
|
|
4209
4344
|
registerCronJobTools(server, api);
|
|
4345
|
+
registerScheduleTools(server, api);
|
|
4210
4346
|
registerWebhookTools(server, api);
|
|
4211
4347
|
registerNotificationTools(server, api);
|
|
4212
4348
|
registerAuditLogTools(server, api);
|
|
4213
4349
|
}
|
|
4214
4350
|
|
|
4215
4351
|
// libs/mcp-server/src/prompts/database.ts
|
|
4216
|
-
import { z as
|
|
4352
|
+
import { z as z14 } from "zod";
|
|
4217
4353
|
function registerDatabasePrompts(server) {
|
|
4218
4354
|
server.registerPrompt(
|
|
4219
4355
|
"setup-collection",
|
|
@@ -4221,9 +4357,9 @@ function registerDatabasePrompts(server) {
|
|
|
4221
4357
|
title: "Setup Database Collection",
|
|
4222
4358
|
description: "Guide for creating a new database collection with proper security rules. Collections MUST have rules defined before data can be inserted.",
|
|
4223
4359
|
argsSchema: {
|
|
4224
|
-
projectId:
|
|
4225
|
-
collectionName:
|
|
4226
|
-
access:
|
|
4360
|
+
projectId: z14.string().describe("Project ID"),
|
|
4361
|
+
collectionName: z14.string().describe("Name of the collection to create"),
|
|
4362
|
+
access: z14.enum(["public-read", "authenticated", "admin-only"]).optional().describe("Access level (default: admin-only)")
|
|
4227
4363
|
}
|
|
4228
4364
|
},
|
|
4229
4365
|
async ({ projectId, collectionName, access }) => {
|
|
@@ -4288,7 +4424,7 @@ function registerDatabasePrompts(server) {
|
|
|
4288
4424
|
title: "Database Workflow Guide",
|
|
4289
4425
|
description: "Explains how the Spacelr database system works: rules-first approach, collection lifecycle, and security model.",
|
|
4290
4426
|
argsSchema: {
|
|
4291
|
-
projectId:
|
|
4427
|
+
projectId: z14.string().describe("Project ID")
|
|
4292
4428
|
}
|
|
4293
4429
|
},
|
|
4294
4430
|
async ({ projectId }) => {
|
|
@@ -4337,7 +4473,7 @@ function registerDatabasePrompts(server) {
|
|
|
4337
4473
|
}
|
|
4338
4474
|
|
|
4339
4475
|
// libs/mcp-server/src/prompts/functions.ts
|
|
4340
|
-
import { z as
|
|
4476
|
+
import { z as z15 } from "zod";
|
|
4341
4477
|
function registerFunctionPrompts(server) {
|
|
4342
4478
|
server.registerPrompt(
|
|
4343
4479
|
"deploy-function",
|
|
@@ -4345,9 +4481,9 @@ function registerFunctionPrompts(server) {
|
|
|
4345
4481
|
title: "Deploy a Serverless Function",
|
|
4346
4482
|
description: "Step-by-step guide for creating, deploying, and testing a serverless function. Covers the full lifecycle from creation to execution.",
|
|
4347
4483
|
argsSchema: {
|
|
4348
|
-
projectId:
|
|
4349
|
-
name:
|
|
4350
|
-
useCase:
|
|
4484
|
+
projectId: z15.string().describe("Project ID"),
|
|
4485
|
+
name: z15.string().describe("Function name"),
|
|
4486
|
+
useCase: z15.string().optional().describe('What the function should do (e.g. "fetch data from API and store in DB")')
|
|
4351
4487
|
}
|
|
4352
4488
|
},
|
|
4353
4489
|
async ({ projectId, name, useCase }) => {
|