@yawlabs/tailscale-mcp 0.1.6 → 0.2.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/README.md +104 -14
- package/dist/api.js +2 -2
- package/dist/api.js.map +1 -1
- package/dist/index.js +59 -8
- package/dist/index.js.map +1 -1
- package/dist/tools/acl.d.ts +28 -0
- package/dist/tools/acl.js +33 -4
- package/dist/tools/acl.js.map +1 -1
- package/dist/tools/audit.d.ts +14 -0
- package/dist/tools/audit.js +19 -15
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/devices.d.ts +91 -0
- package/dist/tools/devices.js +102 -4
- package/dist/tools/devices.js.map +1 -1
- package/dist/tools/dns.d.ts +56 -0
- package/dist/tools/dns.js +57 -1
- package/dist/tools/dns.js.map +1 -1
- package/dist/tools/invites.d.ts +56 -0
- package/dist/tools/invites.js +59 -9
- package/dist/tools/invites.js.map +1 -1
- package/dist/tools/keys.d.ts +28 -0
- package/dist/tools/keys.js +29 -1
- package/dist/tools/keys.js.map +1 -1
- package/dist/tools/log-streaming.d.ts +90 -0
- package/dist/tools/log-streaming.js +89 -0
- package/dist/tools/log-streaming.js.map +1 -0
- package/dist/tools/network-lock.d.ts +7 -0
- package/dist/tools/network-lock.js +7 -0
- package/dist/tools/network-lock.js.map +1 -1
- package/dist/tools/oauth-clients.d.ts +118 -0
- package/dist/tools/oauth-clients.js +102 -0
- package/dist/tools/oauth-clients.js.map +1 -0
- package/dist/tools/posture.d.ts +35 -0
- package/dist/tools/posture.js +36 -1
- package/dist/tools/posture.js.map +1 -1
- package/dist/tools/services.d.ts +124 -0
- package/dist/tools/services.js +106 -0
- package/dist/tools/services.js.map +1 -0
- package/dist/tools/status.d.ts +7 -0
- package/dist/tools/status.js +7 -0
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/tailnet.d.ts +28 -0
- package/dist/tools/tailnet.js +28 -0
- package/dist/tools/tailnet.js.map +1 -1
- package/dist/tools/users.d.ts +42 -0
- package/dist/tools/users.js +45 -2
- package/dist/tools/users.js.map +1 -1
- package/dist/tools/webhooks.d.ts +42 -0
- package/dist/tools/webhooks.js +43 -1
- package/dist/tools/webhooks.js.map +1 -1
- package/dist/tools/workload-identity.d.ts +118 -0
- package/dist/tools/workload-identity.js +105 -0
- package/dist/tools/workload-identity.js.map +1 -0
- package/package.json +6 -2
package/dist/tools/tailnet.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const tailnetTools: readonly [{
|
|
3
3
|
readonly name: "tailscale_get_tailnet_settings";
|
|
4
4
|
readonly description: "Get your tailnet settings (device approval, key expiry, etc.).";
|
|
5
|
+
readonly annotations: {
|
|
6
|
+
readonly title: "Get tailnet settings";
|
|
7
|
+
readonly readOnlyHint: true;
|
|
8
|
+
readonly destructiveHint: false;
|
|
9
|
+
readonly idempotentHint: true;
|
|
10
|
+
readonly openWorldHint: true;
|
|
11
|
+
};
|
|
5
12
|
readonly inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
13
|
readonly handler: () => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
7
14
|
}, {
|
|
8
15
|
readonly name: "tailscale_update_tailnet_settings";
|
|
9
16
|
readonly description: "Update tailnet settings.";
|
|
17
|
+
readonly annotations: {
|
|
18
|
+
readonly title: "Update tailnet settings";
|
|
19
|
+
readonly readOnlyHint: false;
|
|
20
|
+
readonly destructiveHint: false;
|
|
21
|
+
readonly idempotentHint: true;
|
|
22
|
+
readonly openWorldHint: true;
|
|
23
|
+
};
|
|
10
24
|
readonly inputSchema: z.ZodObject<{
|
|
11
25
|
devicesApprovalOn: z.ZodOptional<z.ZodBoolean>;
|
|
12
26
|
devicesAutoUpdatesOn: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -40,11 +54,25 @@ export declare const tailnetTools: readonly [{
|
|
|
40
54
|
}, {
|
|
41
55
|
readonly name: "tailscale_get_contacts";
|
|
42
56
|
readonly description: "Get the tailnet contact information (security, support, admin emails).";
|
|
57
|
+
readonly annotations: {
|
|
58
|
+
readonly title: "Get contacts";
|
|
59
|
+
readonly readOnlyHint: true;
|
|
60
|
+
readonly destructiveHint: false;
|
|
61
|
+
readonly idempotentHint: true;
|
|
62
|
+
readonly openWorldHint: true;
|
|
63
|
+
};
|
|
43
64
|
readonly inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
44
65
|
readonly handler: () => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
45
66
|
}, {
|
|
46
67
|
readonly name: "tailscale_set_contacts";
|
|
47
68
|
readonly description: "Update tailnet contact information.";
|
|
69
|
+
readonly annotations: {
|
|
70
|
+
readonly title: "Set contacts";
|
|
71
|
+
readonly readOnlyHint: false;
|
|
72
|
+
readonly destructiveHint: false;
|
|
73
|
+
readonly idempotentHint: true;
|
|
74
|
+
readonly openWorldHint: true;
|
|
75
|
+
};
|
|
48
76
|
readonly inputSchema: z.ZodObject<{
|
|
49
77
|
account: z.ZodOptional<z.ZodObject<{
|
|
50
78
|
email: z.ZodString;
|
package/dist/tools/tailnet.js
CHANGED
|
@@ -4,6 +4,13 @@ export const tailnetTools = [
|
|
|
4
4
|
{
|
|
5
5
|
name: "tailscale_get_tailnet_settings",
|
|
6
6
|
description: "Get your tailnet settings (device approval, key expiry, etc.).",
|
|
7
|
+
annotations: {
|
|
8
|
+
title: "Get tailnet settings",
|
|
9
|
+
readOnlyHint: true,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
idempotentHint: true,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
},
|
|
7
14
|
inputSchema: z.object({}),
|
|
8
15
|
handler: async () => {
|
|
9
16
|
return apiGet(`/tailnet/${getTailnet()}/settings`);
|
|
@@ -12,6 +19,13 @@ export const tailnetTools = [
|
|
|
12
19
|
{
|
|
13
20
|
name: "tailscale_update_tailnet_settings",
|
|
14
21
|
description: "Update tailnet settings.",
|
|
22
|
+
annotations: {
|
|
23
|
+
title: "Update tailnet settings",
|
|
24
|
+
readOnlyHint: false,
|
|
25
|
+
destructiveHint: false,
|
|
26
|
+
idempotentHint: true,
|
|
27
|
+
openWorldHint: true,
|
|
28
|
+
},
|
|
15
29
|
inputSchema: z.object({
|
|
16
30
|
devicesApprovalOn: z.boolean().optional().describe("Whether device approval is required"),
|
|
17
31
|
devicesAutoUpdatesOn: z.boolean().optional().describe("Whether auto-updates are enabled"),
|
|
@@ -40,6 +54,13 @@ export const tailnetTools = [
|
|
|
40
54
|
{
|
|
41
55
|
name: "tailscale_get_contacts",
|
|
42
56
|
description: "Get the tailnet contact information (security, support, admin emails).",
|
|
57
|
+
annotations: {
|
|
58
|
+
title: "Get contacts",
|
|
59
|
+
readOnlyHint: true,
|
|
60
|
+
destructiveHint: false,
|
|
61
|
+
idempotentHint: true,
|
|
62
|
+
openWorldHint: true,
|
|
63
|
+
},
|
|
43
64
|
inputSchema: z.object({}),
|
|
44
65
|
handler: async () => {
|
|
45
66
|
return apiGet(`/tailnet/${getTailnet()}/contacts`);
|
|
@@ -48,6 +69,13 @@ export const tailnetTools = [
|
|
|
48
69
|
{
|
|
49
70
|
name: "tailscale_set_contacts",
|
|
50
71
|
description: "Update tailnet contact information.",
|
|
72
|
+
annotations: {
|
|
73
|
+
title: "Set contacts",
|
|
74
|
+
readOnlyHint: false,
|
|
75
|
+
destructiveHint: false,
|
|
76
|
+
idempotentHint: true,
|
|
77
|
+
openWorldHint: true,
|
|
78
|
+
},
|
|
51
79
|
inputSchema: z.object({
|
|
52
80
|
account: z.object({ email: z.string() }).optional().describe("Account contact email"),
|
|
53
81
|
support: z.object({ email: z.string() }).optional().describe("Support contact email"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailnet.js","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tailnet.js","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/users.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const userTools: readonly [{
|
|
3
3
|
readonly name: "tailscale_list_users";
|
|
4
4
|
readonly description: "List all users in your tailnet.";
|
|
5
|
+
readonly annotations: {
|
|
6
|
+
readonly title: "List users";
|
|
7
|
+
readonly readOnlyHint: true;
|
|
8
|
+
readonly destructiveHint: false;
|
|
9
|
+
readonly idempotentHint: true;
|
|
10
|
+
readonly openWorldHint: true;
|
|
11
|
+
};
|
|
5
12
|
readonly inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
13
|
readonly handler: () => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
7
14
|
}, {
|
|
8
15
|
readonly name: "tailscale_get_user";
|
|
9
16
|
readonly description: "Get details for a specific user.";
|
|
17
|
+
readonly annotations: {
|
|
18
|
+
readonly title: "Get user";
|
|
19
|
+
readonly readOnlyHint: true;
|
|
20
|
+
readonly destructiveHint: false;
|
|
21
|
+
readonly idempotentHint: true;
|
|
22
|
+
readonly openWorldHint: true;
|
|
23
|
+
};
|
|
10
24
|
readonly inputSchema: z.ZodObject<{
|
|
11
25
|
userId: z.ZodString;
|
|
12
26
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -20,6 +34,13 @@ export declare const userTools: readonly [{
|
|
|
20
34
|
}, {
|
|
21
35
|
readonly name: "tailscale_approve_user";
|
|
22
36
|
readonly description: "Approve a pending user, granting them access to the tailnet.";
|
|
37
|
+
readonly annotations: {
|
|
38
|
+
readonly title: "Approve user";
|
|
39
|
+
readonly readOnlyHint: false;
|
|
40
|
+
readonly destructiveHint: false;
|
|
41
|
+
readonly idempotentHint: true;
|
|
42
|
+
readonly openWorldHint: true;
|
|
43
|
+
};
|
|
23
44
|
readonly inputSchema: z.ZodObject<{
|
|
24
45
|
userId: z.ZodString;
|
|
25
46
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -33,6 +54,13 @@ export declare const userTools: readonly [{
|
|
|
33
54
|
}, {
|
|
34
55
|
readonly name: "tailscale_suspend_user";
|
|
35
56
|
readonly description: "Suspend a user, immediately revoking their access to the tailnet. Their devices will be disconnected. Can be reversed with tailscale_restore_user.";
|
|
57
|
+
readonly annotations: {
|
|
58
|
+
readonly title: "Suspend user";
|
|
59
|
+
readonly readOnlyHint: false;
|
|
60
|
+
readonly destructiveHint: true;
|
|
61
|
+
readonly idempotentHint: true;
|
|
62
|
+
readonly openWorldHint: true;
|
|
63
|
+
};
|
|
36
64
|
readonly inputSchema: z.ZodObject<{
|
|
37
65
|
userId: z.ZodString;
|
|
38
66
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -46,6 +74,13 @@ export declare const userTools: readonly [{
|
|
|
46
74
|
}, {
|
|
47
75
|
readonly name: "tailscale_restore_user";
|
|
48
76
|
readonly description: "Restore a previously suspended user, re-granting them access to the tailnet.";
|
|
77
|
+
readonly annotations: {
|
|
78
|
+
readonly title: "Restore user";
|
|
79
|
+
readonly readOnlyHint: false;
|
|
80
|
+
readonly destructiveHint: false;
|
|
81
|
+
readonly idempotentHint: true;
|
|
82
|
+
readonly openWorldHint: true;
|
|
83
|
+
};
|
|
49
84
|
readonly inputSchema: z.ZodObject<{
|
|
50
85
|
userId: z.ZodString;
|
|
51
86
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -59,6 +94,13 @@ export declare const userTools: readonly [{
|
|
|
59
94
|
}, {
|
|
60
95
|
readonly name: "tailscale_update_user_role";
|
|
61
96
|
readonly description: "Update a user's role in the tailnet.";
|
|
97
|
+
readonly annotations: {
|
|
98
|
+
readonly title: "Update user role";
|
|
99
|
+
readonly readOnlyHint: false;
|
|
100
|
+
readonly destructiveHint: false;
|
|
101
|
+
readonly idempotentHint: true;
|
|
102
|
+
readonly openWorldHint: true;
|
|
103
|
+
};
|
|
62
104
|
readonly inputSchema: z.ZodObject<{
|
|
63
105
|
userId: z.ZodString;
|
|
64
106
|
role: z.ZodEnum<["owner", "admin", "it-admin", "network-admin", "billing-admin", "auditor", "member"]>;
|
package/dist/tools/users.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { apiGet, apiPost,
|
|
2
|
+
import { apiGet, apiPatch, apiPost, encPath, getTailnet } from "../api.js";
|
|
3
3
|
export const userTools = [
|
|
4
4
|
{
|
|
5
5
|
name: "tailscale_list_users",
|
|
6
6
|
description: "List all users in your tailnet.",
|
|
7
|
+
annotations: {
|
|
8
|
+
title: "List users",
|
|
9
|
+
readOnlyHint: true,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
idempotentHint: true,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
},
|
|
7
14
|
inputSchema: z.object({}),
|
|
8
15
|
handler: async () => {
|
|
9
16
|
return apiGet(`/tailnet/${getTailnet()}/users`);
|
|
@@ -12,6 +19,13 @@ export const userTools = [
|
|
|
12
19
|
{
|
|
13
20
|
name: "tailscale_get_user",
|
|
14
21
|
description: "Get details for a specific user.",
|
|
22
|
+
annotations: {
|
|
23
|
+
title: "Get user",
|
|
24
|
+
readOnlyHint: true,
|
|
25
|
+
destructiveHint: false,
|
|
26
|
+
idempotentHint: true,
|
|
27
|
+
openWorldHint: true,
|
|
28
|
+
},
|
|
15
29
|
inputSchema: z.object({
|
|
16
30
|
userId: z.string().describe("The user ID"),
|
|
17
31
|
}),
|
|
@@ -22,6 +36,13 @@ export const userTools = [
|
|
|
22
36
|
{
|
|
23
37
|
name: "tailscale_approve_user",
|
|
24
38
|
description: "Approve a pending user, granting them access to the tailnet.",
|
|
39
|
+
annotations: {
|
|
40
|
+
title: "Approve user",
|
|
41
|
+
readOnlyHint: false,
|
|
42
|
+
destructiveHint: false,
|
|
43
|
+
idempotentHint: true,
|
|
44
|
+
openWorldHint: true,
|
|
45
|
+
},
|
|
25
46
|
inputSchema: z.object({
|
|
26
47
|
userId: z.string().describe("The user ID to approve"),
|
|
27
48
|
}),
|
|
@@ -32,6 +53,13 @@ export const userTools = [
|
|
|
32
53
|
{
|
|
33
54
|
name: "tailscale_suspend_user",
|
|
34
55
|
description: "Suspend a user, immediately revoking their access to the tailnet. Their devices will be disconnected. Can be reversed with tailscale_restore_user.",
|
|
56
|
+
annotations: {
|
|
57
|
+
title: "Suspend user",
|
|
58
|
+
readOnlyHint: false,
|
|
59
|
+
destructiveHint: true,
|
|
60
|
+
idempotentHint: true,
|
|
61
|
+
openWorldHint: true,
|
|
62
|
+
},
|
|
35
63
|
inputSchema: z.object({
|
|
36
64
|
userId: z.string().describe("The user ID to suspend"),
|
|
37
65
|
}),
|
|
@@ -42,6 +70,13 @@ export const userTools = [
|
|
|
42
70
|
{
|
|
43
71
|
name: "tailscale_restore_user",
|
|
44
72
|
description: "Restore a previously suspended user, re-granting them access to the tailnet.",
|
|
73
|
+
annotations: {
|
|
74
|
+
title: "Restore user",
|
|
75
|
+
readOnlyHint: false,
|
|
76
|
+
destructiveHint: false,
|
|
77
|
+
idempotentHint: true,
|
|
78
|
+
openWorldHint: true,
|
|
79
|
+
},
|
|
45
80
|
inputSchema: z.object({
|
|
46
81
|
userId: z.string().describe("The user ID to restore"),
|
|
47
82
|
}),
|
|
@@ -52,9 +87,17 @@ export const userTools = [
|
|
|
52
87
|
{
|
|
53
88
|
name: "tailscale_update_user_role",
|
|
54
89
|
description: "Update a user's role in the tailnet.",
|
|
90
|
+
annotations: {
|
|
91
|
+
title: "Update user role",
|
|
92
|
+
readOnlyHint: false,
|
|
93
|
+
destructiveHint: false,
|
|
94
|
+
idempotentHint: true,
|
|
95
|
+
openWorldHint: true,
|
|
96
|
+
},
|
|
55
97
|
inputSchema: z.object({
|
|
56
98
|
userId: z.string().describe("The user ID"),
|
|
57
|
-
role: z
|
|
99
|
+
role: z
|
|
100
|
+
.enum(["owner", "admin", "it-admin", "network-admin", "billing-admin", "auditor", "member"])
|
|
58
101
|
.describe("The new role to assign"),
|
|
59
102
|
}),
|
|
60
103
|
handler: async (input) => {
|
package/dist/tools/users.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/webhooks.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const webhookTools: readonly [{
|
|
3
3
|
readonly name: "tailscale_list_webhooks";
|
|
4
4
|
readonly description: "List all webhooks configured for your tailnet.";
|
|
5
|
+
readonly annotations: {
|
|
6
|
+
readonly title: "List webhooks";
|
|
7
|
+
readonly readOnlyHint: true;
|
|
8
|
+
readonly destructiveHint: false;
|
|
9
|
+
readonly idempotentHint: true;
|
|
10
|
+
readonly openWorldHint: true;
|
|
11
|
+
};
|
|
5
12
|
readonly inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
13
|
readonly handler: () => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
7
14
|
}, {
|
|
8
15
|
readonly name: "tailscale_get_webhook";
|
|
9
16
|
readonly description: "Get details for a specific webhook.";
|
|
17
|
+
readonly annotations: {
|
|
18
|
+
readonly title: "Get webhook";
|
|
19
|
+
readonly readOnlyHint: true;
|
|
20
|
+
readonly destructiveHint: false;
|
|
21
|
+
readonly idempotentHint: true;
|
|
22
|
+
readonly openWorldHint: true;
|
|
23
|
+
};
|
|
10
24
|
readonly inputSchema: z.ZodObject<{
|
|
11
25
|
webhookId: z.ZodString;
|
|
12
26
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -20,6 +34,13 @@ export declare const webhookTools: readonly [{
|
|
|
20
34
|
}, {
|
|
21
35
|
readonly name: "tailscale_create_webhook";
|
|
22
36
|
readonly description: "Create a new webhook.";
|
|
37
|
+
readonly annotations: {
|
|
38
|
+
readonly title: "Create webhook";
|
|
39
|
+
readonly readOnlyHint: false;
|
|
40
|
+
readonly destructiveHint: false;
|
|
41
|
+
readonly idempotentHint: false;
|
|
42
|
+
readonly openWorldHint: true;
|
|
43
|
+
};
|
|
23
44
|
readonly inputSchema: z.ZodObject<{
|
|
24
45
|
endpointUrl: z.ZodString;
|
|
25
46
|
subscriptions: z.ZodArray<z.ZodString, "many">;
|
|
@@ -37,6 +58,13 @@ export declare const webhookTools: readonly [{
|
|
|
37
58
|
}, {
|
|
38
59
|
readonly name: "tailscale_update_webhook";
|
|
39
60
|
readonly description: "Update an existing webhook's endpoint URL and/or subscriptions.";
|
|
61
|
+
readonly annotations: {
|
|
62
|
+
readonly title: "Update webhook";
|
|
63
|
+
readonly readOnlyHint: false;
|
|
64
|
+
readonly destructiveHint: false;
|
|
65
|
+
readonly idempotentHint: true;
|
|
66
|
+
readonly openWorldHint: true;
|
|
67
|
+
};
|
|
40
68
|
readonly inputSchema: z.ZodObject<{
|
|
41
69
|
webhookId: z.ZodString;
|
|
42
70
|
endpointUrl: z.ZodOptional<z.ZodString>;
|
|
@@ -58,6 +86,13 @@ export declare const webhookTools: readonly [{
|
|
|
58
86
|
}, {
|
|
59
87
|
readonly name: "tailscale_delete_webhook";
|
|
60
88
|
readonly description: "Delete a webhook. This is irreversible — the webhook secret cannot be recovered.";
|
|
89
|
+
readonly annotations: {
|
|
90
|
+
readonly title: "Delete webhook";
|
|
91
|
+
readonly readOnlyHint: false;
|
|
92
|
+
readonly destructiveHint: true;
|
|
93
|
+
readonly idempotentHint: true;
|
|
94
|
+
readonly openWorldHint: true;
|
|
95
|
+
};
|
|
61
96
|
readonly inputSchema: z.ZodObject<{
|
|
62
97
|
webhookId: z.ZodString;
|
|
63
98
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -71,6 +106,13 @@ export declare const webhookTools: readonly [{
|
|
|
71
106
|
}, {
|
|
72
107
|
readonly name: "tailscale_rotate_webhook_secret";
|
|
73
108
|
readonly description: "Rotate a webhook's secret. Returns the new secret — save it immediately, as it cannot be retrieved again. The old secret is immediately invalidated.";
|
|
109
|
+
readonly annotations: {
|
|
110
|
+
readonly title: "Rotate webhook secret";
|
|
111
|
+
readonly readOnlyHint: false;
|
|
112
|
+
readonly destructiveHint: false;
|
|
113
|
+
readonly idempotentHint: false;
|
|
114
|
+
readonly openWorldHint: true;
|
|
115
|
+
};
|
|
74
116
|
readonly inputSchema: z.ZodObject<{
|
|
75
117
|
webhookId: z.ZodString;
|
|
76
118
|
}, "strip", z.ZodTypeAny, {
|
package/dist/tools/webhooks.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiDelete, apiGet, apiPatch, apiPost, encPath, getTailnet } from "../api.js";
|
|
3
3
|
export const webhookTools = [
|
|
4
4
|
{
|
|
5
5
|
name: "tailscale_list_webhooks",
|
|
6
6
|
description: "List all webhooks configured for your tailnet.",
|
|
7
|
+
annotations: {
|
|
8
|
+
title: "List webhooks",
|
|
9
|
+
readOnlyHint: true,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
idempotentHint: true,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
},
|
|
7
14
|
inputSchema: z.object({}),
|
|
8
15
|
handler: async () => {
|
|
9
16
|
return apiGet(`/tailnet/${getTailnet()}/webhooks`);
|
|
@@ -12,6 +19,13 @@ export const webhookTools = [
|
|
|
12
19
|
{
|
|
13
20
|
name: "tailscale_get_webhook",
|
|
14
21
|
description: "Get details for a specific webhook.",
|
|
22
|
+
annotations: {
|
|
23
|
+
title: "Get webhook",
|
|
24
|
+
readOnlyHint: true,
|
|
25
|
+
destructiveHint: false,
|
|
26
|
+
idempotentHint: true,
|
|
27
|
+
openWorldHint: true,
|
|
28
|
+
},
|
|
15
29
|
inputSchema: z.object({
|
|
16
30
|
webhookId: z.string().describe("The webhook ID"),
|
|
17
31
|
}),
|
|
@@ -22,6 +36,13 @@ export const webhookTools = [
|
|
|
22
36
|
{
|
|
23
37
|
name: "tailscale_create_webhook",
|
|
24
38
|
description: "Create a new webhook.",
|
|
39
|
+
annotations: {
|
|
40
|
+
title: "Create webhook",
|
|
41
|
+
readOnlyHint: false,
|
|
42
|
+
destructiveHint: false,
|
|
43
|
+
idempotentHint: false,
|
|
44
|
+
openWorldHint: true,
|
|
45
|
+
},
|
|
25
46
|
inputSchema: z.object({
|
|
26
47
|
endpointUrl: z.string().describe("The URL to send webhook events to"),
|
|
27
48
|
subscriptions: z
|
|
@@ -38,6 +59,13 @@ export const webhookTools = [
|
|
|
38
59
|
{
|
|
39
60
|
name: "tailscale_update_webhook",
|
|
40
61
|
description: "Update an existing webhook's endpoint URL and/or subscriptions.",
|
|
62
|
+
annotations: {
|
|
63
|
+
title: "Update webhook",
|
|
64
|
+
readOnlyHint: false,
|
|
65
|
+
destructiveHint: false,
|
|
66
|
+
idempotentHint: true,
|
|
67
|
+
openWorldHint: true,
|
|
68
|
+
},
|
|
41
69
|
inputSchema: z.object({
|
|
42
70
|
webhookId: z.string().describe("The webhook ID to update"),
|
|
43
71
|
endpointUrl: z.string().optional().describe("New URL to send webhook events to"),
|
|
@@ -58,6 +86,13 @@ export const webhookTools = [
|
|
|
58
86
|
{
|
|
59
87
|
name: "tailscale_delete_webhook",
|
|
60
88
|
description: "Delete a webhook. This is irreversible — the webhook secret cannot be recovered.",
|
|
89
|
+
annotations: {
|
|
90
|
+
title: "Delete webhook",
|
|
91
|
+
readOnlyHint: false,
|
|
92
|
+
destructiveHint: true,
|
|
93
|
+
idempotentHint: true,
|
|
94
|
+
openWorldHint: true,
|
|
95
|
+
},
|
|
61
96
|
inputSchema: z.object({
|
|
62
97
|
webhookId: z.string().describe("The webhook ID to delete"),
|
|
63
98
|
}),
|
|
@@ -68,6 +103,13 @@ export const webhookTools = [
|
|
|
68
103
|
{
|
|
69
104
|
name: "tailscale_rotate_webhook_secret",
|
|
70
105
|
description: "Rotate a webhook's secret. Returns the new secret — save it immediately, as it cannot be retrieved again. The old secret is immediately invalidated.",
|
|
106
|
+
annotations: {
|
|
107
|
+
title: "Rotate webhook secret",
|
|
108
|
+
readOnlyHint: false,
|
|
109
|
+
destructiveHint: false,
|
|
110
|
+
idempotentHint: false,
|
|
111
|
+
openWorldHint: true,
|
|
112
|
+
},
|
|
71
113
|
inputSchema: z.object({
|
|
72
114
|
webhookId: z.string().describe("The webhook ID whose secret to rotate"),
|
|
73
115
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const workloadIdentityTools: readonly [{
|
|
3
|
+
readonly name: "tailscale_list_workload_identities";
|
|
4
|
+
readonly description: "List all federated workload identity providers configured for your tailnet. Workload identities allow CI/CD pipelines and automated systems to authenticate using OIDC federation.";
|
|
5
|
+
readonly annotations: {
|
|
6
|
+
readonly title: "List workload identities";
|
|
7
|
+
readonly readOnlyHint: true;
|
|
8
|
+
readonly destructiveHint: false;
|
|
9
|
+
readonly idempotentHint: true;
|
|
10
|
+
readonly openWorldHint: true;
|
|
11
|
+
};
|
|
12
|
+
readonly inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
13
|
+
readonly handler: () => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
14
|
+
}, {
|
|
15
|
+
readonly name: "tailscale_get_workload_identity";
|
|
16
|
+
readonly description: "Get details for a specific workload identity provider.";
|
|
17
|
+
readonly annotations: {
|
|
18
|
+
readonly title: "Get workload identity";
|
|
19
|
+
readonly readOnlyHint: true;
|
|
20
|
+
readonly destructiveHint: false;
|
|
21
|
+
readonly idempotentHint: true;
|
|
22
|
+
readonly openWorldHint: true;
|
|
23
|
+
};
|
|
24
|
+
readonly inputSchema: z.ZodObject<{
|
|
25
|
+
providerId: z.ZodString;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
providerId: string;
|
|
28
|
+
}, {
|
|
29
|
+
providerId: string;
|
|
30
|
+
}>;
|
|
31
|
+
readonly handler: (input: {
|
|
32
|
+
providerId: string;
|
|
33
|
+
}) => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
34
|
+
}, {
|
|
35
|
+
readonly name: "tailscale_create_workload_identity";
|
|
36
|
+
readonly description: "Create a new workload identity provider for OIDC federation. Enables CI/CD systems (GitHub Actions, GitLab CI, etc.) to authenticate to your tailnet without static credentials.";
|
|
37
|
+
readonly annotations: {
|
|
38
|
+
readonly title: "Create workload identity";
|
|
39
|
+
readonly readOnlyHint: false;
|
|
40
|
+
readonly destructiveHint: false;
|
|
41
|
+
readonly idempotentHint: false;
|
|
42
|
+
readonly openWorldHint: true;
|
|
43
|
+
};
|
|
44
|
+
readonly inputSchema: z.ZodObject<{
|
|
45
|
+
name: z.ZodString;
|
|
46
|
+
issuerUrl: z.ZodString;
|
|
47
|
+
audience: z.ZodOptional<z.ZodString>;
|
|
48
|
+
claimMappings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
name: string;
|
|
51
|
+
issuerUrl: string;
|
|
52
|
+
audience?: string | undefined;
|
|
53
|
+
claimMappings?: Record<string, string> | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
name: string;
|
|
56
|
+
issuerUrl: string;
|
|
57
|
+
audience?: string | undefined;
|
|
58
|
+
claimMappings?: Record<string, string> | undefined;
|
|
59
|
+
}>;
|
|
60
|
+
readonly handler: (input: {
|
|
61
|
+
name: string;
|
|
62
|
+
issuerUrl: string;
|
|
63
|
+
audience?: string;
|
|
64
|
+
claimMappings?: Record<string, string>;
|
|
65
|
+
}) => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "tailscale_update_workload_identity";
|
|
68
|
+
readonly description: "Update an existing workload identity provider's configuration.";
|
|
69
|
+
readonly annotations: {
|
|
70
|
+
readonly title: "Update workload identity";
|
|
71
|
+
readonly readOnlyHint: false;
|
|
72
|
+
readonly destructiveHint: false;
|
|
73
|
+
readonly idempotentHint: true;
|
|
74
|
+
readonly openWorldHint: true;
|
|
75
|
+
};
|
|
76
|
+
readonly inputSchema: z.ZodObject<{
|
|
77
|
+
providerId: z.ZodString;
|
|
78
|
+
name: z.ZodOptional<z.ZodString>;
|
|
79
|
+
audience: z.ZodOptional<z.ZodString>;
|
|
80
|
+
claimMappings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
providerId: string;
|
|
83
|
+
name?: string | undefined;
|
|
84
|
+
audience?: string | undefined;
|
|
85
|
+
claimMappings?: Record<string, string> | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
providerId: string;
|
|
88
|
+
name?: string | undefined;
|
|
89
|
+
audience?: string | undefined;
|
|
90
|
+
claimMappings?: Record<string, string> | undefined;
|
|
91
|
+
}>;
|
|
92
|
+
readonly handler: (input: {
|
|
93
|
+
providerId: string;
|
|
94
|
+
name?: string;
|
|
95
|
+
audience?: string;
|
|
96
|
+
claimMappings?: Record<string, string>;
|
|
97
|
+
}) => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
98
|
+
}, {
|
|
99
|
+
readonly name: "tailscale_delete_workload_identity";
|
|
100
|
+
readonly description: "Delete a workload identity provider. This is irreversible — any CI/CD pipelines using this provider will lose access.";
|
|
101
|
+
readonly annotations: {
|
|
102
|
+
readonly title: "Delete workload identity";
|
|
103
|
+
readonly readOnlyHint: false;
|
|
104
|
+
readonly destructiveHint: true;
|
|
105
|
+
readonly idempotentHint: true;
|
|
106
|
+
readonly openWorldHint: true;
|
|
107
|
+
};
|
|
108
|
+
readonly inputSchema: z.ZodObject<{
|
|
109
|
+
providerId: z.ZodString;
|
|
110
|
+
}, "strip", z.ZodTypeAny, {
|
|
111
|
+
providerId: string;
|
|
112
|
+
}, {
|
|
113
|
+
providerId: string;
|
|
114
|
+
}>;
|
|
115
|
+
readonly handler: (input: {
|
|
116
|
+
providerId: string;
|
|
117
|
+
}) => Promise<import("../api.js").ApiResponse<unknown>>;
|
|
118
|
+
}];
|