🚸 Set enum options

issue #64
This commit is contained in:
OpenWaygate committed 2025-07-05 22:25:15 +08:00
1 parent 0c88ed932b
commit 774446bd90
27 files changed
+145 -132

No files matched your search

+2 -2
View File
@@ -65,8 +65,8 @@ var downloadTool = mcp.NewTool(
mcp.Description(fileUsage), mcp.Required(),
),
mcp.WithString(
"tfmt", mcp.DefaultString(""),
mcp.Description(tfmtUsage), mcp.Required(),
"tfmt", mcp.Enum("sbv", "srt", "vtt"),
mcp.DefaultString(""), mcp.Description(tfmtUsage), mcp.Required(),
),
mcp.WithString(
"tlang", mcp.DefaultString(""),
+31 -29
View File
@@ -5,6 +5,7 @@ import (
"context"
"github.com/eat-pray-ai/yutu/cmd"
"github.com/eat-pray-ai/yutu/pkg/caption"
"github.com/eat-pray-ai/yutu/pkg/utils"
"github.com/mark3labs/mcp-go/mcp"
"github.com/spf13/cobra"
"io"
@@ -74,28 +75,29 @@ var insertTool = mcp.NewTool(
mcp.Description(fileUsage), mcp.Required(),
),
mcp.WithString(
"audioTrackType", mcp.DefaultString("unknown"),
mcp.Description(attUsage), mcp.Required(),
"audioTrackType",
mcp.Enum("unknown", "primary", "commentary", "descriptive"),
mcp.DefaultString("unknown"), mcp.Description(attUsage), mcp.Required(),
),
mcp.WithBoolean(
"isAutoSynced", mcp.DefaultBool(true),
mcp.Description(iasUsage), mcp.Required(),
mcp.WithString(
"isAutoSynced", mcp.Enum("true", "false", ""),
mcp.DefaultString("true"), mcp.Description(iasUsage), mcp.Required(),
),
mcp.WithBoolean(
"isCC", mcp.DefaultBool(false),
mcp.Description(iscUsage), mcp.Required(),
mcp.WithString(
"isCC", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(iscUsage), mcp.Required(),
),
mcp.WithBoolean(
"isDraft", mcp.DefaultBool(false),
mcp.Description(isdUsage), mcp.Required(),
mcp.WithString(
"isDraft", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(isdUsage), mcp.Required(),
),
mcp.WithBoolean(
"isEasyReader", mcp.DefaultBool(false),
mcp.Description(iserUsage), mcp.Required(),
mcp.WithString(
"isEasyReader", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(iserUsage), mcp.Required(),
),
mcp.WithBoolean(
"isLarge", mcp.DefaultBool(false),
mcp.Description(islUsage), mcp.Required(),
mcp.WithString(
"isLarge", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(islUsage), mcp.Required(),
),
mcp.WithString(
"language", mcp.DefaultString(""),
@@ -106,8 +108,8 @@ var insertTool = mcp.NewTool(
mcp.Description(nameUsage), mcp.Required(),
),
mcp.WithString(
"trackKind", mcp.DefaultString("standard"),
mcp.Description(tkUsage), mcp.Required(),
"trackKind", mcp.Enum("standard", "ASR", "forced"),
mcp.DefaultString("standard"), mcp.Description(tkUsage), mcp.Required(),
),
mcp.WithString(
"videoId", mcp.DefaultString(""),
@@ -137,16 +139,16 @@ func insertHandler(
args := request.GetArguments()
file, _ = args["file"].(string)
audioTrackType, _ = args["audioTrackType"].(string)
isAutoSyncedRaw, _ := args["isAutoSynced"].(bool)
isAutoSynced = &isAutoSyncedRaw
isCCRaw, _ := args["isCC"].(bool)
isCC = &isCCRaw
isDraftRaw, _ := args["isDraft"].(bool)
isDraft = &isDraftRaw
isEasyReaderRaw, _ := args["isEasyReader"].(bool)
isEasyReader = &isEasyReaderRaw
isLargeRaw, _ := args["isLarge"].(bool)
isLarge = &isLargeRaw
isAutoSyncedRaw, _ := args["isAutoSynced"].(string)
isAutoSynced = utils.BoolPtr(isAutoSyncedRaw)
isCCRaw, _ := args["isCC"].(string)
isCC = utils.BoolPtr(isCCRaw)
isDraftRaw, _ := args["isDraft"].(string)
isDraft = utils.BoolPtr(isDraftRaw)
isEasyReaderRaw, _ := args["isEasyReader"].(string)
isEasyReader = utils.BoolPtr(isEasyReaderRaw)
isLargeRaw, _ := args["isLarge"].(string)
isLarge = utils.BoolPtr(isLargeRaw)
language, _ = args["language"].(string)
name, _ = args["name"].(string)
trackKind, _ = args["trackKind"].(string)
+28 -27
View File
@@ -5,6 +5,7 @@ import (
"context"
"github.com/eat-pray-ai/yutu/cmd"
"github.com/eat-pray-ai/yutu/pkg/caption"
"github.com/eat-pray-ai/yutu/pkg/utils"
"github.com/mark3labs/mcp-go/mcp"
"github.com/spf13/cobra"
"io"
@@ -76,25 +77,25 @@ var updateTool = mcp.NewTool(
"audioTrackType", mcp.DefaultString("unknown"),
mcp.Description(attUsage), mcp.Required(),
),
mcp.WithBoolean(
"isAutoSynced", mcp.DefaultBool(true),
mcp.Description(iasUsage), mcp.Required(),
mcp.WithString(
"isAutoSynced", mcp.Enum("true", "false", ""),
mcp.DefaultString("true"), mcp.Description(iasUsage), mcp.Required(),
),
mcp.WithBoolean(
"isCC", mcp.DefaultBool(false),
mcp.Description(iscUsage), mcp.Required(),
mcp.WithString(
"isCC", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(iscUsage), mcp.Required(),
),
mcp.WithBoolean(
"isDraft", mcp.DefaultBool(false),
mcp.Description(isdUsage), mcp.Required(),
mcp.WithString(
"isDraft", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(isdUsage), mcp.Required(),
),
mcp.WithBoolean(
"isEasyReader", mcp.DefaultBool(false),
mcp.Description(iserUsage), mcp.Required(),
mcp.WithString(
"isEasyReader", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(iserUsage), mcp.Required(),
),
mcp.WithBoolean(
"isLarge", mcp.DefaultBool(false),
mcp.Description(islUsage), mcp.Required(),
mcp.WithString(
"isLarge", mcp.Enum("true", "false", ""),
mcp.DefaultString("false"), mcp.Description(islUsage), mcp.Required(),
),
mcp.WithString(
"language", mcp.DefaultString(""),
@@ -105,8 +106,8 @@ var updateTool = mcp.NewTool(
mcp.Description(nameUsage), mcp.Required(),
),
mcp.WithString(
"trackKind", mcp.DefaultString("standard"),
mcp.Description(tkUsage), mcp.Required(),
"trackKind", mcp.Enum("standard", "ASR", "forced"),
mcp.DefaultString("standard"), mcp.Description(tkUsage), mcp.Required(),
),
mcp.WithString(
"videoId", mcp.DefaultString(""),
@@ -136,16 +137,16 @@ func updateHandler(
args := request.GetArguments()
file, _ = args["file"].(string)
audioTrackType, _ = args["audioTrackType"].(string)
isAutoSyncedRaw, _ := args["isAutoSynced"].(bool)
isAutoSynced = &isAutoSyncedRaw
isCCRaw, _ := args["isCC"].(bool)
isCC = &isCCRaw
isDraftRaw, _ := args["isDraft"].(bool)
isDraft = &isDraftRaw
isEasyReaderRaw, _ := args["isEasyReader"].(bool)
isEasyReader = &isEasyReaderRaw
isLargeRaw, _ := args["isLarge"].(bool)
isLarge = &isLargeRaw
isAutoSyncedRaw, _ := args["isAutoSynced"].(string)
isAutoSynced = utils.BoolPtr(isAutoSyncedRaw)
isCCRaw, _ := args["isCC"].(string)
isCC = utils.BoolPtr(isCCRaw)
isDraftRaw, _ := args["isDraft"].(string)
isDraft = utils.BoolPtr(isDraftRaw)
isEasyReaderRaw, _ := args["isEasyReader"].(string)
isEasyReader = utils.BoolPtr(isEasyReaderRaw)
isLargeRaw, _ := args["isLarge"].(string)
isLarge = utils.BoolPtr(isLargeRaw)
language, _ = args["language"].(string)
name, _ = args["name"].(string)
trackKind, _ = args["trackKind"].(string)
+1 -1
View File
@@ -17,7 +17,7 @@ const (
tfUsage = "textFormatUnspecified, html, or plainText"
toUsage = "Text of the comment"
msUsage = "heldForReview, published, or rejected"
baUsage = "true or false"
baUsage = "If set to true the author of the comment gets added to the ban list"
vidUsage = "ID of the video"
vrUsage = "none, like, or dislike"
partsUsage = "Comma separated parts"
+2 -2
View File
@@ -70,8 +70,8 @@ var listTool = mcp.NewTool(
mcp.Required(),
),
mcp.WithString(
"textFormat", mcp.DefaultString("html"),
mcp.Description(tfUsage), mcp.Required(),
"textFormat", mcp.Enum("textFormatUnspecified", "html", "plainText"),
mcp.DefaultString("html"), mcp.Description(tfUsage), mcp.Required(),
),
mcp.WithArray(
"parts", mcp.DefaultArray([]string{"id", "snippet"}),
+2 -2
View File
@@ -66,8 +66,8 @@ var setModerationStatusTool = mcp.NewTool(
mcp.Description(idsUsage), mcp.Required(),
),
mcp.WithString(
"moderationStatus", mcp.DefaultString(""),
mcp.Description(msUsage), mcp.Required(),
"moderationStatus", mcp.Enum("heldForReview", "published", "rejected"),
mcp.DefaultString(""), mcp.Description(msUsage), mcp.Required(),
),
mcp.WithString(
"banAuthor", mcp.Enum("true", "false", ""),
+2 -2
View File
@@ -69,8 +69,8 @@ var updateTool = mcp.NewTool(
mcp.Description(toUsage), mcp.Required(),
),
mcp.WithString(
"viewerRating", mcp.DefaultString(""),
mcp.Description(vrUsage), mcp.Required(),
"viewerRating", mcp.Enum("none", "like", "dislike"),
mcp.DefaultString(""), mcp.Description(vrUsage), mcp.Required(),
),
mcp.WithString(
"output", mcp.DefaultString(""),
+1 -1
View File
@@ -16,7 +16,7 @@ const (
msUsage = "published, heldForReview, likelySpam, or rejected"
orderUsage = "orderUnspecified, time, or relevance"
stUsage = "Search terms"
tfUsage = "textFormatUnspecified or html"
tfUsage = "textFormatUnspecified, or html"
toUsage = "Text of the comment"
partsUsage = "Comma separated parts"
)
+7 -6
View File
@@ -79,20 +79,21 @@ var listTool = mcp.NewTool(
mcp.Description(mrUsage), mcp.Required(),
),
mcp.WithString(
"moderationStatus", mcp.DefaultString("published"),
mcp.Description(msUsage), mcp.Required(),
"moderationStatus",
mcp.Enum("published", "heldForReview", "likelySpam", "rejected"),
mcp.DefaultString("published"), mcp.Description(msUsage), mcp.Required(),
),
mcp.WithString(
"order", mcp.DefaultString("time"),
mcp.Description(orderUsage), mcp.Required(),
"order", mcp.Enum("orderUnspecified", "time", "relevance"),
mcp.DefaultString("time"), mcp.Description(orderUsage), mcp.Required(),
),
mcp.WithString(
"searchTerms", mcp.DefaultString(""),
mcp.Description(stUsage), mcp.Required(),
),
mcp.WithString(
"textFormat", mcp.DefaultString("html"),
mcp.Description(tfUsage), mcp.Required(),
"textFormat", mcp.Enum("textFormatUnspecified", "html"),
mcp.DefaultString("html"), mcp.Description(tfUsage), mcp.Required(),
),
mcp.WithString(
"videoId", mcp.DefaultString(""),
+1
View File
@@ -1,6 +1,7 @@
package cmd
const (
// TODO: mcp.Enum
TableUsage = "json, yaml, or table"
SilentUsage = "json, yaml, or silent"
JpUsage = "JSONPath expression to filter the output"
+1 -1
View File
@@ -9,7 +9,7 @@ const (
short = "List YouTube i18n languages"
long = "List YouTube i18n languages' id, hl, and name"
hlUsage = "Host language"
partsUsage = "Comma separated parts"
partsUsage = "Comma separated parts" // TODO: extract constants
)
var (
+2 -2
View File
@@ -62,8 +62,8 @@ var listTool = mcp.NewTool(
mcp.Description(mrUsage), mcp.Required(),
),
mcp.WithString(
"mode", mcp.DefaultString("all_current"),
mcp.Description(mmUsage), mcp.Required(),
"mode", mcp.Enum("listMembersModeUnknown", "updates", "all_current"),
mcp.DefaultString("all_current"), mcp.Description(mmUsage), mcp.Required(),
),
mcp.WithArray(
"parts", mcp.DefaultArray([]string{"snippet"}),
+1 -1
View File
@@ -10,7 +10,7 @@ const (
long = "List channel's members' info, such as channelId, displayName, etc"
mcidUsage = "Comma separated list of channel IDs. Only data about members that are part of this list will be included"
hatlUsage = "Filter members in the results set to the ones that have access to a level"
mrUsage = "The maximum number of items that should be returned"
mrUsage = "The maximum number of items that should be returned" // TODO: extract constant
mmUsage = "listMembersModeUnknown, updates, or all_current"
partsUsage = "Comma separated parts"
)
+2 -2
View File
@@ -17,7 +17,7 @@ func init() {
listCmd.Flags().StringSliceVarP(
&parts, "parts", "p", []string{"id, snippet"}, partsUsage,
)
listCmd.Flags().StringVarP(&output, "output", "o", "table", outputUsage)
listCmd.Flags().StringVarP(&output, "output", "o", "table", cmd.TableUsage)
listCmd.Flags().StringVarP(&jpath, "jsonpath", "j", "", cmd.JpUsage)
}
@@ -48,7 +48,7 @@ var listTool = mcp.NewTool(
),
mcp.WithString(
"output", mcp.DefaultString("table"),
mcp.Description(outputUsage), mcp.Required(),
mcp.Description(cmd.TableUsage), mcp.Required(),
),
mcp.WithString(
"jsonpath", mcp.DefaultString(""),
+3 -4
View File
@@ -6,10 +6,9 @@ import (
)
const (
short = "List memberships levels' info"
long = "List memberships levels' info, such as id, displayName, etc"
partsUsage = "Comma separated parts"
outputUsage = "json yaml, or table"
short = "List memberships levels' info"
long = "List memberships levels' info, such as id, displayName, etc"
partsUsage = "Comma separated parts"
)
var (
+2 -2
View File
@@ -76,8 +76,8 @@ var insertTool = mcp.NewTool(
mcp.Description(insertCidUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"output", mcp.DefaultString(""),
+2 -2
View File
@@ -75,8 +75,8 @@ var updateTool = mcp.NewTool(
mcp.Description(languageUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"output", mcp.DefaultString(""),
+4 -4
View File
@@ -71,8 +71,8 @@ var insertTool = mcp.NewTool(
mcp.Description(descUsage), mcp.Required(),
),
mcp.WithString(
"kind", mcp.DefaultString(""),
mcp.Description(kindUsage), mcp.Required(),
"kind", mcp.Enum("video", "channel", "playlist"),
mcp.DefaultString(""), mcp.Description(kindUsage), mcp.Required(),
),
mcp.WithString(
"kVideoId", mcp.DefaultString(""),
@@ -95,8 +95,8 @@ var insertTool = mcp.NewTool(
mcp.Description(cidUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"onBehalfOfContentOwner", mcp.DefaultString(""),
+2 -2
View File
@@ -67,8 +67,8 @@ var updateTool = mcp.NewTool(
mcp.Description(descUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"onBehalfOfContentOwner", mcp.DefaultString(""),
+27 -21
View File
@@ -84,12 +84,14 @@ var listTool = mcp.NewTool(
mcp.Description(cidUsage), mcp.Required(),
),
mcp.WithString(
"channelType", mcp.DefaultString("channelTypeUnspecified"),
"channelType",
mcp.Enum("channelTypeUnspecified", "any", "show"),
mcp.DefaultString("channelTypeUnspecified"),
mcp.Description(ctUsage), mcp.Required(),
),
mcp.WithString(
"eventType", mcp.DefaultString("none"),
mcp.Description(etUsage), mcp.Required(),
"eventType", mcp.Enum("none", "upcoming", "live", "completed"),
mcp.DefaultString("none"), mcp.Description(etUsage), mcp.Required(),
),
mcp.WithString(
"forContentOwner", mcp.Enum("true", "false", ""),
@@ -144,8 +146,9 @@ var listTool = mcp.NewTool(
mcp.Description(rlUsage), mcp.Required(),
),
mcp.WithString(
"safeSearch", mcp.DefaultString("moderate"),
mcp.Description(ssUsage), mcp.Required(),
"safeSearch",
mcp.Enum("safeSearchSettingUnspecified", "none", "moderate", "strict"),
mcp.DefaultString("moderate"), mcp.Description(ssUsage), mcp.Required(),
),
mcp.WithString(
"topicId", mcp.DefaultString(""),
@@ -157,8 +160,9 @@ var listTool = mcp.NewTool(
mcp.Description(typesUsage), mcp.Required(),
),
mcp.WithString(
"videoCaption", mcp.DefaultString("any"),
mcp.Description(vcUsage), mcp.Required(),
"videoCaption",
mcp.Enum("videoCaptionUnspecified", "any", "closedCaption", "none"),
mcp.DefaultString("any"), mcp.Description(vcUsage), mcp.Required(),
),
mcp.WithString(
"videoCategoryId", mcp.DefaultString(""),
@@ -169,32 +173,34 @@ var listTool = mcp.NewTool(
mcp.Description(vdeUsage), mcp.Required(),
),
mcp.WithString(
"videoDimension", mcp.DefaultString("any"),
mcp.Description(vdiUsage), mcp.Required(),
"videoDimension", mcp.Enum("any", "2d", "3d"),
mcp.DefaultString("any"), mcp.Description(vdiUsage), mcp.Required(),
),
mcp.WithString(
"videoDuration", mcp.DefaultString("any"),
mcp.Description(vduUsage), mcp.Required(),
"videoDuration",
mcp.Enum("videoDurationUnspecified", "any", "short", "medium", "long"),
mcp.DefaultString("any"), mcp.Description(vduUsage), mcp.Required(),
),
mcp.WithString(
"videoEmbeddable", mcp.DefaultString(""),
mcp.Description(veUsage), mcp.Required(),
"videoEmbeddable", mcp.Enum("videoEmbeddableUnspecified", "any", "true"),
mcp.DefaultString(""), mcp.Description(veUsage), mcp.Required(),
),
mcp.WithString(
"videoLicense", mcp.DefaultString(""),
mcp.Description(vlUsage), mcp.Required(),
"videoLicense", mcp.Enum("any", "youtube", "creativeCommon"),
mcp.DefaultString(""), mcp.Description(vlUsage), mcp.Required(),
),
mcp.WithString(
"videoPaidProductPlacement", mcp.DefaultString(""),
mcp.Description(vpppUsage), mcp.Required(),
"videoPaidProductPlacement",
mcp.Enum("videoPaidProductPlacementUnspecified", "any", "true"),
mcp.DefaultString(""), mcp.Description(vpppUsage), mcp.Required(),
),
mcp.WithString(
"videoSyndicated", mcp.DefaultString(""),
mcp.Description(vsUsage), mcp.Required(),
"videoSyndicated", mcp.Enum("videoSyndicatedUnspecified", "any", "true"),
mcp.DefaultString(""), mcp.Description(vsUsage), mcp.Required(),
),
mcp.WithString(
"videoType", mcp.DefaultString(""),
mcp.Description(vtUsage), mcp.Required(),
"videoType", mcp.Enum("videoTypeUnspecified", "any", "movie", "episode"),
mcp.DefaultString(""), mcp.Description(vtUsage), mcp.Required(),
),
mcp.WithArray(
"parts", mcp.DefaultArray([]string{"id", "snippet"}),
+4 -2
View File
@@ -103,8 +103,10 @@ var listTool = mcp.NewTool(
mcp.Description(""), mcp.Required(),
),
mcp.WithString(
"order", mcp.DefaultString("relevance"),
mcp.Description(orderUsage), mcp.Required(),
"order", mcp.Enum(
"subscriptionOrderUnspecified", "relevance", "unread", "alphabetical",
),
mcp.DefaultString("relevance"), mcp.Description(orderUsage), mcp.Required(),
),
mcp.WithArray(
"parts", mcp.DefaultArray([]string{"id", "snippet"}),
+1 -1
View File
@@ -14,7 +14,7 @@ const (
fcidUsage = "Return the subscriptions to the subset of these channels that the authenticated user is subscribed to"
mrUsage = "The maximum number of items that should be returned"
mineUsage = "Return the subscriptions of the authenticated user"
mrsUsage = "true or false"
mrsUsage = "true, false, or leave empty"
msUsage = "Return the subscribers of the given channel owner"
orderUsage = "subscriptionOrderUnspecified, relevance, unread, or alphabetical"
titleUsage = "Title of the subscription"
+4 -4
View File
@@ -107,8 +107,8 @@ var insertTool = mcp.NewTool(
mcp.Description(insertLangUsage), mcp.Required(),
),
mcp.WithString(
"license", mcp.DefaultString("youtube"),
mcp.Description(licenseUsage), mcp.Required(),
"license", mcp.Enum("youtube", "creativeCommon"),
mcp.DefaultString("youtube"), mcp.Description(licenseUsage), mcp.Required(),
),
mcp.WithString(
"thumbnail", mcp.DefaultString(""),
@@ -127,8 +127,8 @@ var insertTool = mcp.NewTool(
mcp.Description(caidUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"forKids", mcp.Enum("true", "false", ""),
+2 -2
View File
@@ -67,8 +67,8 @@ var listTool = mcp.NewTool(
mcp.Description(listIdsUsage), mcp.Required(),
),
mcp.WithString(
"chart", mcp.DefaultString(""),
mcp.Description(chartUsage), mcp.Required(),
"chart", mcp.Enum("chartUnspecified", "mostPopular"),
mcp.DefaultString(""), mcp.Description(chartUsage), mcp.Required(),
),
mcp.WithString(
"hl", mcp.DefaultString(""),
+2 -2
View File
@@ -54,8 +54,8 @@ var rateTool = mcp.NewTool(
mcp.Description(rateIdsUsage), mcp.Required(),
),
mcp.WithString(
"rating", mcp.DefaultString(""),
mcp.Description(rateRUsage), mcp.Required(),
"rating", mcp.Enum("like", "dislike", "none"),
mcp.DefaultString(""), mcp.Description(rateRUsage), mcp.Required(),
),
)
+4 -4
View File
@@ -84,8 +84,8 @@ var updateTool = mcp.NewTool(
mcp.Description(updateLangUsage), mcp.Required(),
),
mcp.WithString(
"license", mcp.DefaultString("youtube"),
mcp.Description(licenseUsage), mcp.Required(),
"license", mcp.Enum("youtube", "creativeCommon"),
mcp.DefaultString("youtube"), mcp.Description(licenseUsage), mcp.Required(),
),
mcp.WithString(
"thumbnail", mcp.DefaultString(""),
@@ -100,8 +100,8 @@ var updateTool = mcp.NewTool(
mcp.Description(caidUsage), mcp.Required(),
),
mcp.WithString(
"privacy", mcp.DefaultString(""),
mcp.Description(privacyUsage), mcp.Required(),
"privacy", mcp.Enum("public", "private", "unlisted"),
mcp.DefaultString(""), mcp.Description(privacyUsage), mcp.Required(),
),
mcp.WithString(
"embeddable", mcp.Enum("true", "false", ""),
+5 -4
View File
@@ -64,8 +64,9 @@ var setTool = mcp.NewTool(
mcp.Description(fileUsage), mcp.Required(),
),
mcp.WithString(
"inVideoPosition", mcp.DefaultString(""),
mcp.Description(ivpUsage), mcp.Required(),
"inVideoPosition",
mcp.Enum("topLeft", "topRight", "bottomLeft", "bottomRight"),
mcp.DefaultString(""), mcp.Description(ivpUsage), mcp.Required(),
),
mcp.WithNumber(
"durationMs", mcp.DefaultNumber(0),
@@ -76,8 +77,8 @@ var setTool = mcp.NewTool(
mcp.Description(omUsage), mcp.Required(),
),
mcp.WithString(
"offsetType", mcp.DefaultString(""),
mcp.Description(otUsage), mcp.Required(),
"offsetType", mcp.Enum("offsetFromStart", "offsetFromEnd"),
mcp.DefaultString(""), mcp.Description(otUsage), mcp.Required(),
),
mcp.WithString(
"onBehalfOfContentOwner", mcp.DefaultString(""),