threenative-asset-mcp 0.4.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.
Files changed (150) hide show
  1. package/README.md +441 -0
  2. package/dist/ambientcg/client.d.ts +61 -0
  3. package/dist/ambientcg/client.d.ts.map +1 -0
  4. package/dist/ambientcg/client.js +234 -0
  5. package/dist/ambientcg/client.js.map +1 -0
  6. package/dist/audio/catalog.d.ts +36 -0
  7. package/dist/audio/catalog.d.ts.map +1 -0
  8. package/dist/audio/catalog.js +169 -0
  9. package/dist/audio/catalog.js.map +1 -0
  10. package/dist/audio/client.d.ts +46 -0
  11. package/dist/audio/client.d.ts.map +1 -0
  12. package/dist/audio/client.js +196 -0
  13. package/dist/audio/client.js.map +1 -0
  14. package/dist/bundle/client.d.ts +89 -0
  15. package/dist/bundle/client.d.ts.map +1 -0
  16. package/dist/bundle/client.js +324 -0
  17. package/dist/bundle/client.js.map +1 -0
  18. package/dist/config.d.ts +20 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +130 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/download/direct-asset-downloader.d.ts +41 -0
  23. package/dist/download/direct-asset-downloader.d.ts.map +1 -0
  24. package/dist/download/direct-asset-downloader.js +232 -0
  25. package/dist/download/direct-asset-downloader.js.map +1 -0
  26. package/dist/fab/api-download.d.ts +30 -0
  27. package/dist/fab/api-download.d.ts.map +1 -0
  28. package/dist/fab/api-download.js +200 -0
  29. package/dist/fab/api-download.js.map +1 -0
  30. package/dist/fab/browser-transport.d.ts +79 -0
  31. package/dist/fab/browser-transport.d.ts.map +1 -0
  32. package/dist/fab/browser-transport.js +492 -0
  33. package/dist/fab/browser-transport.js.map +1 -0
  34. package/dist/fab/cache.d.ts +22 -0
  35. package/dist/fab/cache.d.ts.map +1 -0
  36. package/dist/fab/cache.js +55 -0
  37. package/dist/fab/cache.js.map +1 -0
  38. package/dist/fab/client.d.ts +61 -0
  39. package/dist/fab/client.d.ts.map +1 -0
  40. package/dist/fab/client.js +868 -0
  41. package/dist/fab/client.js.map +1 -0
  42. package/dist/fab/direct-transport.d.ts +68 -0
  43. package/dist/fab/direct-transport.d.ts.map +1 -0
  44. package/dist/fab/direct-transport.js +184 -0
  45. package/dist/fab/direct-transport.js.map +1 -0
  46. package/dist/fab/download-store.d.ts +21 -0
  47. package/dist/fab/download-store.d.ts.map +1 -0
  48. package/dist/fab/download-store.js +93 -0
  49. package/dist/fab/download-store.js.map +1 -0
  50. package/dist/fab/errors.d.ts +20 -0
  51. package/dist/fab/errors.d.ts.map +1 -0
  52. package/dist/fab/errors.js +65 -0
  53. package/dist/fab/errors.js.map +1 -0
  54. package/dist/fab/impersonate-fetch.d.ts +48 -0
  55. package/dist/fab/impersonate-fetch.d.ts.map +1 -0
  56. package/dist/fab/impersonate-fetch.js +228 -0
  57. package/dist/fab/impersonate-fetch.js.map +1 -0
  58. package/dist/fab/normalize.d.ts +3 -0
  59. package/dist/fab/normalize.d.ts.map +1 -0
  60. package/dist/fab/normalize.js +285 -0
  61. package/dist/fab/normalize.js.map +1 -0
  62. package/dist/fab/schemas.d.ts +10 -0
  63. package/dist/fab/schemas.d.ts.map +1 -0
  64. package/dist/fab/schemas.js +105 -0
  65. package/dist/fab/schemas.js.map +1 -0
  66. package/dist/index.d.ts +3 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +58 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/itch/catalog.d.ts +13 -0
  71. package/dist/itch/catalog.d.ts.map +1 -0
  72. package/dist/itch/catalog.js +50 -0
  73. package/dist/itch/catalog.js.map +1 -0
  74. package/dist/itch/client.d.ts +46 -0
  75. package/dist/itch/client.d.ts.map +1 -0
  76. package/dist/itch/client.js +175 -0
  77. package/dist/itch/client.js.map +1 -0
  78. package/dist/polyhaven/client.d.ts +55 -0
  79. package/dist/polyhaven/client.d.ts.map +1 -0
  80. package/dist/polyhaven/client.js +210 -0
  81. package/dist/polyhaven/client.js.map +1 -0
  82. package/dist/server.d.ts +25 -0
  83. package/dist/server.d.ts.map +1 -0
  84. package/dist/server.js +448 -0
  85. package/dist/server.js.map +1 -0
  86. package/dist/sketchfab/client.d.ts +70 -0
  87. package/dist/sketchfab/client.d.ts.map +1 -0
  88. package/dist/sketchfab/client.js +255 -0
  89. package/dist/sketchfab/client.js.map +1 -0
  90. package/dist/smithsonian/client.d.ts +32 -0
  91. package/dist/smithsonian/client.d.ts.map +1 -0
  92. package/dist/smithsonian/client.js +142 -0
  93. package/dist/smithsonian/client.js.map +1 -0
  94. package/dist/tools/ambientcg.d.ts +296 -0
  95. package/dist/tools/ambientcg.d.ts.map +1 -0
  96. package/dist/tools/ambientcg.js +183 -0
  97. package/dist/tools/ambientcg.js.map +1 -0
  98. package/dist/tools/audio.d.ts +211 -0
  99. package/dist/tools/audio.d.ts.map +1 -0
  100. package/dist/tools/audio.js +156 -0
  101. package/dist/tools/audio.js.map +1 -0
  102. package/dist/tools/bundle.d.ts +237 -0
  103. package/dist/tools/bundle.d.ts.map +1 -0
  104. package/dist/tools/bundle.js +206 -0
  105. package/dist/tools/bundle.js.map +1 -0
  106. package/dist/tools/direct-download.d.ts +53 -0
  107. package/dist/tools/direct-download.d.ts.map +1 -0
  108. package/dist/tools/direct-download.js +68 -0
  109. package/dist/tools/direct-download.js.map +1 -0
  110. package/dist/tools/download-free-asset.d.ts +66 -0
  111. package/dist/tools/download-free-asset.d.ts.map +1 -0
  112. package/dist/tools/download-free-asset.js +60 -0
  113. package/dist/tools/download-free-asset.js.map +1 -0
  114. package/dist/tools/get-asset.d.ts +161 -0
  115. package/dist/tools/get-asset.d.ts.map +1 -0
  116. package/dist/tools/get-asset.js +131 -0
  117. package/dist/tools/get-asset.js.map +1 -0
  118. package/dist/tools/itch.d.ts +120 -0
  119. package/dist/tools/itch.d.ts.map +1 -0
  120. package/dist/tools/itch.js +120 -0
  121. package/dist/tools/itch.js.map +1 -0
  122. package/dist/tools/list-filters.d.ts +127 -0
  123. package/dist/tools/list-filters.d.ts.map +1 -0
  124. package/dist/tools/list-filters.js +68 -0
  125. package/dist/tools/list-filters.js.map +1 -0
  126. package/dist/tools/list-limited-time-free.d.ts +57 -0
  127. package/dist/tools/list-limited-time-free.d.ts.map +1 -0
  128. package/dist/tools/list-limited-time-free.js +47 -0
  129. package/dist/tools/list-limited-time-free.js.map +1 -0
  130. package/dist/tools/polyhaven.d.ts +266 -0
  131. package/dist/tools/polyhaven.d.ts.map +1 -0
  132. package/dist/tools/polyhaven.js +233 -0
  133. package/dist/tools/polyhaven.js.map +1 -0
  134. package/dist/tools/search-assets.d.ts +176 -0
  135. package/dist/tools/search-assets.d.ts.map +1 -0
  136. package/dist/tools/search-assets.js +172 -0
  137. package/dist/tools/search-assets.js.map +1 -0
  138. package/dist/tools/sketchfab.d.ts +325 -0
  139. package/dist/tools/sketchfab.d.ts.map +1 -0
  140. package/dist/tools/sketchfab.js +203 -0
  141. package/dist/tools/sketchfab.js.map +1 -0
  142. package/dist/tools/smithsonian.d.ts +189 -0
  143. package/dist/tools/smithsonian.d.ts.map +1 -0
  144. package/dist/tools/smithsonian.js +189 -0
  145. package/dist/tools/smithsonian.js.map +1 -0
  146. package/dist/tools/source-directory.d.ts +226 -0
  147. package/dist/tools/source-directory.d.ts.map +1 -0
  148. package/dist/tools/source-directory.js +583 -0
  149. package/dist/tools/source-directory.js.map +1 -0
  150. package/package.json +69 -0
@@ -0,0 +1,176 @@
1
+ import { z } from "zod";
2
+ import { FabClient } from "../fab/client.js";
3
+ export declare const SearchToolInputSchema: z.ZodObject<{
4
+ query: z.ZodOptional<z.ZodString>;
5
+ priceMode: z.ZodDefault<z.ZodEnum<{
6
+ any: "any";
7
+ free: "free";
8
+ range: "range";
9
+ }>>;
10
+ minPrice: z.ZodOptional<z.ZodNumber>;
11
+ maxPrice: z.ZodOptional<z.ZodNumber>;
12
+ currency: z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
13
+ channels: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
14
+ listingTypes: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
15
+ categories: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
16
+ formats: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
17
+ tags: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
18
+ licenses: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
19
+ publisher: z.ZodOptional<z.ZodString>;
20
+ minimumRating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>]>>;
21
+ publishedSince: z.ZodOptional<z.ZodString>;
22
+ aiGenerated: z.ZodOptional<z.ZodBoolean>;
23
+ allowsAiUse: z.ZodOptional<z.ZodBoolean>;
24
+ sort: z.ZodDefault<z.ZodEnum<{
25
+ discount_desc: "discount_desc";
26
+ newest: "newest";
27
+ oldest: "oldest";
28
+ price_asc: "price_asc";
29
+ price_desc: "price_desc";
30
+ rating: "rating";
31
+ recently_updated: "recently_updated";
32
+ relevance: "relevance";
33
+ }>>;
34
+ limit: z.ZodDefault<z.ZodNumber>;
35
+ cursor: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>;
37
+ export declare const SearchInputSchema: z.ZodObject<{
38
+ query: z.ZodOptional<z.ZodString>;
39
+ priceMode: z.ZodDefault<z.ZodEnum<{
40
+ any: "any";
41
+ free: "free";
42
+ range: "range";
43
+ }>>;
44
+ minPrice: z.ZodOptional<z.ZodNumber>;
45
+ maxPrice: z.ZodOptional<z.ZodNumber>;
46
+ currency: z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
47
+ channels: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
48
+ listingTypes: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
49
+ categories: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
50
+ formats: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
51
+ tags: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
52
+ licenses: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodString>, z.ZodTransform<string[], string[]>>>;
53
+ publisher: z.ZodOptional<z.ZodString>;
54
+ minimumRating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>]>>;
55
+ publishedSince: z.ZodOptional<z.ZodString>;
56
+ aiGenerated: z.ZodOptional<z.ZodBoolean>;
57
+ allowsAiUse: z.ZodOptional<z.ZodBoolean>;
58
+ sort: z.ZodDefault<z.ZodEnum<{
59
+ discount_desc: "discount_desc";
60
+ newest: "newest";
61
+ oldest: "oldest";
62
+ price_asc: "price_asc";
63
+ price_desc: "price_desc";
64
+ rating: "rating";
65
+ recently_updated: "recently_updated";
66
+ relevance: "relevance";
67
+ }>>;
68
+ limit: z.ZodDefault<z.ZodNumber>;
69
+ cursor: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$strip>;
71
+ export declare const SearchOutputSchema: z.ZodObject<{
72
+ items: z.ZodArray<z.ZodObject<{
73
+ id: z.ZodString;
74
+ title: z.ZodString;
75
+ url: z.ZodURL;
76
+ publisher: z.ZodOptional<z.ZodObject<{
77
+ id: z.ZodOptional<z.ZodString>;
78
+ name: z.ZodString;
79
+ url: z.ZodOptional<z.ZodURL>;
80
+ }, z.core.$strip>>;
81
+ listingType: z.ZodOptional<z.ZodString>;
82
+ category: z.ZodOptional<z.ZodObject<{
83
+ name: z.ZodOptional<z.ZodString>;
84
+ slug: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>>;
86
+ formats: z.ZodArray<z.ZodString>;
87
+ tags: z.ZodArray<z.ZodObject<{
88
+ name: z.ZodString;
89
+ slug: z.ZodOptional<z.ZodString>;
90
+ }, z.core.$strip>>;
91
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
92
+ rating: z.ZodOptional<z.ZodObject<{
93
+ average: z.ZodNumber;
94
+ count: z.ZodNumber;
95
+ }, z.core.$strip>>;
96
+ startingPrice: z.ZodOptional<z.ZodObject<{
97
+ amount: z.ZodNumber;
98
+ currency: z.ZodString;
99
+ effectiveAmount: z.ZodOptional<z.ZodNumber>;
100
+ }, z.core.$strip>>;
101
+ isFree: z.ZodBoolean;
102
+ isDiscounted: z.ZodOptional<z.ZodBoolean>;
103
+ isAiGenerated: z.ZodOptional<z.ZodBoolean>;
104
+ allowsAiUse: z.ZodOptional<z.ZodBoolean>;
105
+ isMature: z.ZodOptional<z.ZodBoolean>;
106
+ publishedAt: z.ZodOptional<z.ZodString>;
107
+ updatedAt: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$strip>>;
109
+ nextCursor: z.ZodOptional<z.ZodString>;
110
+ appliedFilters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
111
+ transport: z.ZodEnum<{
112
+ browser: "browser";
113
+ direct: "direct";
114
+ }>;
115
+ warnings: z.ZodArray<z.ZodString>;
116
+ }, z.core.$strip>;
117
+ export type SearchInput = z.output<typeof SearchInputSchema>;
118
+ export type SearchOutput = z.output<typeof SearchOutputSchema>;
119
+ export declare function createSearchAssetsHandler(client: FabClient): (rawInput: z.input<typeof SearchInputSchema>) => Promise<{
120
+ isError: true;
121
+ content: {
122
+ type: "text";
123
+ text: string;
124
+ }[];
125
+ structuredContent?: never;
126
+ } | {
127
+ isError?: never;
128
+ content: {
129
+ type: "text";
130
+ text: string;
131
+ }[];
132
+ structuredContent: {
133
+ items: {
134
+ id: string;
135
+ title: string;
136
+ url: string;
137
+ publisher?: {
138
+ id?: string | undefined;
139
+ name: string;
140
+ url?: string | undefined;
141
+ } | undefined;
142
+ listingType?: string | undefined;
143
+ category?: {
144
+ name?: string | undefined;
145
+ slug?: string | undefined;
146
+ } | undefined;
147
+ formats: string[];
148
+ tags: {
149
+ name: string;
150
+ slug?: string | undefined;
151
+ }[];
152
+ thumbnailUrl?: string | undefined;
153
+ rating?: {
154
+ average: number;
155
+ count: number;
156
+ } | undefined;
157
+ startingPrice?: {
158
+ amount: number;
159
+ currency: string;
160
+ effectiveAmount?: number | undefined;
161
+ } | undefined;
162
+ isFree: boolean;
163
+ isDiscounted?: boolean | undefined;
164
+ isAiGenerated?: boolean | undefined;
165
+ allowsAiUse?: boolean | undefined;
166
+ isMature?: boolean | undefined;
167
+ publishedAt?: string | undefined;
168
+ updatedAt?: string | undefined;
169
+ }[];
170
+ nextCursor?: string | undefined;
171
+ appliedFilters: Record<string, unknown>;
172
+ transport: "browser" | "direct";
173
+ warnings: string[];
174
+ };
175
+ }>;
176
+ //# sourceMappingURL=search-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-assets.d.ts","sourceRoot":"","sources":["../../src/tools/search-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAO7D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6C9B,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8B7B,CAAC;AAiDF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC7D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE/D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,cACjC,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;cAUjC,MAAM;;;;;;;cAON,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyB/B"}
@@ -0,0 +1,172 @@
1
+ import { z } from "zod";
2
+ import { FabClient, FabClientError } from "../fab/client.js";
3
+ const dedupedValues = z
4
+ .array(z.string().trim().min(1).max(100))
5
+ .max(20)
6
+ .transform((values) => [...new Set(values)]);
7
+ export const SearchToolInputSchema = z.object({
8
+ query: z.string().trim().max(200).optional(),
9
+ priceMode: z.enum(["free", "any", "range"]).default("free"),
10
+ minPrice: z.number().finite().nonnegative().optional(),
11
+ maxPrice: z.number().finite().nonnegative().optional(),
12
+ currency: z
13
+ .string()
14
+ .trim()
15
+ .regex(/^[A-Za-z]{3}$/)
16
+ .transform((value) => value.toUpperCase())
17
+ .default("USD"),
18
+ channels: dedupedValues.optional(),
19
+ listingTypes: dedupedValues.optional(),
20
+ categories: dedupedValues.optional(),
21
+ formats: dedupedValues.optional(),
22
+ tags: dedupedValues.optional(),
23
+ licenses: dedupedValues.optional(),
24
+ publisher: z.string().trim().min(1).max(200).optional(),
25
+ minimumRating: z.union([
26
+ z.literal(1),
27
+ z.literal(2),
28
+ z.literal(3),
29
+ z.literal(4),
30
+ z.literal(5),
31
+ ]).optional(),
32
+ publishedSince: z
33
+ .string()
34
+ .regex(/^\d{4}-\d{2}-\d{2}$/)
35
+ .optional(),
36
+ aiGenerated: z.boolean().optional(),
37
+ allowsAiUse: z.boolean().optional(),
38
+ sort: z
39
+ .enum([
40
+ "relevance",
41
+ "rating",
42
+ "newest",
43
+ "oldest",
44
+ "price_asc",
45
+ "price_desc",
46
+ "discount_desc",
47
+ "recently_updated",
48
+ ])
49
+ .default("relevance"),
50
+ limit: z.number().int().min(1).max(24).default(24),
51
+ cursor: z.string().min(1).max(2048).optional(),
52
+ });
53
+ export const SearchInputSchema = SearchToolInputSchema.superRefine((input, context) => {
54
+ const hasRangeValue = input.minPrice !== undefined || input.maxPrice !== undefined;
55
+ if (input.priceMode !== "range" && hasRangeValue) {
56
+ context.addIssue({
57
+ code: "custom",
58
+ message: "minPrice and maxPrice require priceMode=range",
59
+ path: ["priceMode"],
60
+ });
61
+ }
62
+ if (input.priceMode === "range" && !hasRangeValue) {
63
+ context.addIssue({
64
+ code: "custom",
65
+ message: "priceMode=range requires minPrice or maxPrice",
66
+ path: ["priceMode"],
67
+ });
68
+ }
69
+ if (input.minPrice !== undefined &&
70
+ input.maxPrice !== undefined &&
71
+ input.minPrice > input.maxPrice) {
72
+ context.addIssue({
73
+ code: "custom",
74
+ message: "minPrice must not exceed maxPrice",
75
+ path: ["minPrice"],
76
+ });
77
+ }
78
+ });
79
+ const PriceSchema = z.object({
80
+ amount: z.number(),
81
+ currency: z.string().max(10),
82
+ effectiveAmount: z.number().optional(),
83
+ });
84
+ const SearchItemSchema = z.object({
85
+ id: z.string().max(100),
86
+ title: z.string().max(500),
87
+ url: z.url().max(500),
88
+ publisher: z
89
+ .object({
90
+ id: z.string().max(200).optional(),
91
+ name: z.string().max(200),
92
+ url: z.url().max(1_024).optional(),
93
+ })
94
+ .optional(),
95
+ listingType: z.string().max(200).optional(),
96
+ category: z
97
+ .object({
98
+ name: z.string().max(200).optional(),
99
+ slug: z.string().max(200).optional(),
100
+ })
101
+ .optional(),
102
+ formats: z.array(z.string().max(100)).max(20),
103
+ tags: z
104
+ .array(z.object({
105
+ name: z.string().max(100),
106
+ slug: z.string().max(100).optional(),
107
+ }))
108
+ .max(20),
109
+ thumbnailUrl: z.url().max(1_024).optional(),
110
+ rating: z
111
+ .object({ average: z.number(), count: z.number() })
112
+ .optional(),
113
+ startingPrice: PriceSchema.optional(),
114
+ isFree: z.boolean(),
115
+ isDiscounted: z.boolean().optional(),
116
+ isAiGenerated: z.boolean().optional(),
117
+ allowsAiUse: z.boolean().optional(),
118
+ isMature: z.boolean().optional(),
119
+ publishedAt: z.string().max(100).optional(),
120
+ updatedAt: z.string().max(100).optional(),
121
+ });
122
+ export const SearchOutputSchema = z.object({
123
+ items: z.array(SearchItemSchema).max(24),
124
+ nextCursor: z.string().max(2_048).optional(),
125
+ appliedFilters: z.record(z.string(), z.unknown()),
126
+ transport: z.enum(["direct", "browser"]),
127
+ warnings: z.array(z.string().max(500)).max(20),
128
+ });
129
+ export function createSearchAssetsHandler(client) {
130
+ return async (rawInput) => {
131
+ const parsed = SearchInputSchema.safeParse(rawInput);
132
+ if (!parsed.success) {
133
+ const error = {
134
+ code: "FAB_INVALID_INPUT",
135
+ message: parsed.error.issues.map((issue) => issue.message).join("; "),
136
+ retryable: false,
137
+ };
138
+ return {
139
+ isError: true,
140
+ content: [{ type: "text", text: JSON.stringify(error) }],
141
+ };
142
+ }
143
+ try {
144
+ const output = SearchOutputSchema.parse(await client.search(parsed.data));
145
+ return {
146
+ content: [{ type: "text", text: JSON.stringify(output) }],
147
+ structuredContent: output,
148
+ };
149
+ }
150
+ catch (error) {
151
+ const safe = error instanceof FabClientError
152
+ ? {
153
+ code: error.code,
154
+ message: error.message,
155
+ retryable: error.retryable,
156
+ ...(error.retryAfterSeconds === undefined
157
+ ? {}
158
+ : { retryAfterSeconds: error.retryAfterSeconds }),
159
+ }
160
+ : {
161
+ code: "FAB_INTERNAL",
162
+ message: "The Fab provider could not complete the request.",
163
+ retryable: false,
164
+ };
165
+ return {
166
+ isError: true,
167
+ content: [{ type: "text", text: JSON.stringify(safe) }],
168
+ };
169
+ }
170
+ };
171
+ }
172
+ //# sourceMappingURL=search-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-assets.js","sourceRoot":"","sources":["../../src/tools/search-assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,325 @@
1
+ import { z } from "zod";
2
+ import { SketchfabClient } from "../sketchfab/client.js";
3
+ export declare const SketchfabModelSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ name: z.ZodString;
6
+ description: z.ZodOptional<z.ZodString>;
7
+ viewerUrl: z.ZodURL;
8
+ embedUrl: z.ZodOptional<z.ZodURL>;
9
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
10
+ author: z.ZodOptional<z.ZodObject<{
11
+ id: z.ZodOptional<z.ZodString>;
12
+ username: z.ZodString;
13
+ displayName: z.ZodOptional<z.ZodString>;
14
+ profileUrl: z.ZodOptional<z.ZodURL>;
15
+ }, z.core.$strip>>;
16
+ tags: z.ZodArray<z.ZodString>;
17
+ categories: z.ZodArray<z.ZodString>;
18
+ license: z.ZodOptional<z.ZodObject<{
19
+ label: z.ZodString;
20
+ slug: z.ZodOptional<z.ZodString>;
21
+ url: z.ZodOptional<z.ZodURL>;
22
+ requirements: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>>;
24
+ downloadable: z.ZodBoolean;
25
+ ageRestricted: z.ZodOptional<z.ZodBoolean>;
26
+ animated: z.ZodBoolean;
27
+ faceCount: z.ZodOptional<z.ZodNumber>;
28
+ vertexCount: z.ZodOptional<z.ZodNumber>;
29
+ viewCount: z.ZodOptional<z.ZodNumber>;
30
+ likeCount: z.ZodOptional<z.ZodNumber>;
31
+ downloadCount: z.ZodOptional<z.ZodNumber>;
32
+ publishedAt: z.ZodOptional<z.ZodString>;
33
+ updatedAt: z.ZodOptional<z.ZodString>;
34
+ archives: z.ZodArray<z.ZodObject<{
35
+ format: z.ZodString;
36
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
37
+ textureCount: z.ZodOptional<z.ZodNumber>;
38
+ textureMaxResolution: z.ZodOptional<z.ZodNumber>;
39
+ faceCount: z.ZodOptional<z.ZodNumber>;
40
+ vertexCount: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strip>>;
42
+ provider: z.ZodLiteral<"Sketchfab">;
43
+ }, z.core.$strip>;
44
+ export declare const SketchfabSearchInputSchema: z.ZodObject<{
45
+ query: z.ZodOptional<z.ZodString>;
46
+ downloadable: z.ZodDefault<z.ZodBoolean>;
47
+ animated: z.ZodOptional<z.ZodBoolean>;
48
+ staffPicked: z.ZodOptional<z.ZodBoolean>;
49
+ category: z.ZodOptional<z.ZodString>;
50
+ licenses: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ sortBy: z.ZodDefault<z.ZodEnum<{
52
+ likeCount: "likeCount";
53
+ publishedAt: "publishedAt";
54
+ relevance: "relevance";
55
+ viewCount: "viewCount";
56
+ }>>;
57
+ limit: z.ZodDefault<z.ZodNumber>;
58
+ cursor: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>;
60
+ export declare const SketchfabSearchOutputSchema: z.ZodObject<{
61
+ items: z.ZodArray<z.ZodObject<{
62
+ id: z.ZodString;
63
+ name: z.ZodString;
64
+ description: z.ZodOptional<z.ZodString>;
65
+ viewerUrl: z.ZodURL;
66
+ embedUrl: z.ZodOptional<z.ZodURL>;
67
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
68
+ author: z.ZodOptional<z.ZodObject<{
69
+ id: z.ZodOptional<z.ZodString>;
70
+ username: z.ZodString;
71
+ displayName: z.ZodOptional<z.ZodString>;
72
+ profileUrl: z.ZodOptional<z.ZodURL>;
73
+ }, z.core.$strip>>;
74
+ tags: z.ZodArray<z.ZodString>;
75
+ categories: z.ZodArray<z.ZodString>;
76
+ license: z.ZodOptional<z.ZodObject<{
77
+ label: z.ZodString;
78
+ slug: z.ZodOptional<z.ZodString>;
79
+ url: z.ZodOptional<z.ZodURL>;
80
+ requirements: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>>;
82
+ downloadable: z.ZodBoolean;
83
+ ageRestricted: z.ZodOptional<z.ZodBoolean>;
84
+ animated: z.ZodBoolean;
85
+ faceCount: z.ZodOptional<z.ZodNumber>;
86
+ vertexCount: z.ZodOptional<z.ZodNumber>;
87
+ viewCount: z.ZodOptional<z.ZodNumber>;
88
+ likeCount: z.ZodOptional<z.ZodNumber>;
89
+ downloadCount: z.ZodOptional<z.ZodNumber>;
90
+ publishedAt: z.ZodOptional<z.ZodString>;
91
+ updatedAt: z.ZodOptional<z.ZodString>;
92
+ archives: z.ZodArray<z.ZodObject<{
93
+ format: z.ZodString;
94
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
95
+ textureCount: z.ZodOptional<z.ZodNumber>;
96
+ textureMaxResolution: z.ZodOptional<z.ZodNumber>;
97
+ faceCount: z.ZodOptional<z.ZodNumber>;
98
+ vertexCount: z.ZodOptional<z.ZodNumber>;
99
+ }, z.core.$strip>>;
100
+ provider: z.ZodLiteral<"Sketchfab">;
101
+ }, z.core.$strip>>;
102
+ nextCursor: z.ZodOptional<z.ZodString>;
103
+ provider: z.ZodLiteral<"Sketchfab">;
104
+ downloadAuthentication: z.ZodLiteral<"SKETCHFAB_API_TOKEN">;
105
+ }, z.core.$strip>;
106
+ export declare function createSketchfabSearchHandler(client: SketchfabClient): (raw: z.input<typeof SketchfabSearchInputSchema>) => Promise<{
107
+ isError: true;
108
+ content: {
109
+ type: "text";
110
+ text: string;
111
+ }[];
112
+ } | {
113
+ content: {
114
+ type: "text";
115
+ text: string;
116
+ }[];
117
+ structuredContent: {
118
+ items: {
119
+ id: string;
120
+ name: string;
121
+ description?: string | undefined;
122
+ viewerUrl: string;
123
+ embedUrl?: string | undefined;
124
+ thumbnailUrl?: string | undefined;
125
+ author?: {
126
+ id?: string | undefined;
127
+ username: string;
128
+ displayName?: string | undefined;
129
+ profileUrl?: string | undefined;
130
+ } | undefined;
131
+ tags: string[];
132
+ categories: string[];
133
+ license?: {
134
+ label: string;
135
+ slug?: string | undefined;
136
+ url?: string | undefined;
137
+ requirements?: string | undefined;
138
+ } | undefined;
139
+ downloadable: boolean;
140
+ ageRestricted?: boolean | undefined;
141
+ animated: boolean;
142
+ faceCount?: number | undefined;
143
+ vertexCount?: number | undefined;
144
+ viewCount?: number | undefined;
145
+ likeCount?: number | undefined;
146
+ downloadCount?: number | undefined;
147
+ publishedAt?: string | undefined;
148
+ updatedAt?: string | undefined;
149
+ archives: {
150
+ format: string;
151
+ sizeBytes?: number | undefined;
152
+ textureCount?: number | undefined;
153
+ textureMaxResolution?: number | undefined;
154
+ faceCount?: number | undefined;
155
+ vertexCount?: number | undefined;
156
+ }[];
157
+ provider: "Sketchfab";
158
+ }[];
159
+ nextCursor?: string | undefined;
160
+ provider: "Sketchfab";
161
+ downloadAuthentication: "SKETCHFAB_API_TOKEN";
162
+ };
163
+ }>;
164
+ export declare const SketchfabGetModelInputSchema: z.ZodObject<{
165
+ modelId: z.ZodString;
166
+ }, z.core.$strip>;
167
+ export declare const SketchfabGetModelOutputSchema: z.ZodObject<{
168
+ id: z.ZodString;
169
+ name: z.ZodString;
170
+ description: z.ZodOptional<z.ZodString>;
171
+ viewerUrl: z.ZodURL;
172
+ embedUrl: z.ZodOptional<z.ZodURL>;
173
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
174
+ author: z.ZodOptional<z.ZodObject<{
175
+ id: z.ZodOptional<z.ZodString>;
176
+ username: z.ZodString;
177
+ displayName: z.ZodOptional<z.ZodString>;
178
+ profileUrl: z.ZodOptional<z.ZodURL>;
179
+ }, z.core.$strip>>;
180
+ tags: z.ZodArray<z.ZodString>;
181
+ categories: z.ZodArray<z.ZodString>;
182
+ license: z.ZodOptional<z.ZodObject<{
183
+ label: z.ZodString;
184
+ slug: z.ZodOptional<z.ZodString>;
185
+ url: z.ZodOptional<z.ZodURL>;
186
+ requirements: z.ZodOptional<z.ZodString>;
187
+ }, z.core.$strip>>;
188
+ downloadable: z.ZodBoolean;
189
+ ageRestricted: z.ZodOptional<z.ZodBoolean>;
190
+ animated: z.ZodBoolean;
191
+ faceCount: z.ZodOptional<z.ZodNumber>;
192
+ vertexCount: z.ZodOptional<z.ZodNumber>;
193
+ viewCount: z.ZodOptional<z.ZodNumber>;
194
+ likeCount: z.ZodOptional<z.ZodNumber>;
195
+ downloadCount: z.ZodOptional<z.ZodNumber>;
196
+ publishedAt: z.ZodOptional<z.ZodString>;
197
+ updatedAt: z.ZodOptional<z.ZodString>;
198
+ archives: z.ZodArray<z.ZodObject<{
199
+ format: z.ZodString;
200
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
201
+ textureCount: z.ZodOptional<z.ZodNumber>;
202
+ textureMaxResolution: z.ZodOptional<z.ZodNumber>;
203
+ faceCount: z.ZodOptional<z.ZodNumber>;
204
+ vertexCount: z.ZodOptional<z.ZodNumber>;
205
+ }, z.core.$strip>>;
206
+ provider: z.ZodLiteral<"Sketchfab">;
207
+ }, z.core.$strip>;
208
+ export declare function createSketchfabGetModelHandler(client: SketchfabClient): (raw: z.input<typeof SketchfabGetModelInputSchema>) => Promise<{
209
+ isError: true;
210
+ content: {
211
+ type: "text";
212
+ text: string;
213
+ }[];
214
+ } | {
215
+ content: {
216
+ type: "text";
217
+ text: string;
218
+ }[];
219
+ structuredContent: {
220
+ id: string;
221
+ name: string;
222
+ description?: string | undefined;
223
+ viewerUrl: string;
224
+ embedUrl?: string | undefined;
225
+ thumbnailUrl?: string | undefined;
226
+ author?: {
227
+ id?: string | undefined;
228
+ username: string;
229
+ displayName?: string | undefined;
230
+ profileUrl?: string | undefined;
231
+ } | undefined;
232
+ tags: string[];
233
+ categories: string[];
234
+ license?: {
235
+ label: string;
236
+ slug?: string | undefined;
237
+ url?: string | undefined;
238
+ requirements?: string | undefined;
239
+ } | undefined;
240
+ downloadable: boolean;
241
+ ageRestricted?: boolean | undefined;
242
+ animated: boolean;
243
+ faceCount?: number | undefined;
244
+ vertexCount?: number | undefined;
245
+ viewCount?: number | undefined;
246
+ likeCount?: number | undefined;
247
+ downloadCount?: number | undefined;
248
+ publishedAt?: string | undefined;
249
+ updatedAt?: string | undefined;
250
+ archives: {
251
+ format: string;
252
+ sizeBytes?: number | undefined;
253
+ textureCount?: number | undefined;
254
+ textureMaxResolution?: number | undefined;
255
+ faceCount?: number | undefined;
256
+ vertexCount?: number | undefined;
257
+ }[];
258
+ provider: "Sketchfab";
259
+ };
260
+ }>;
261
+ export declare const SketchfabListCategoriesInputSchema: z.ZodObject<{}, z.core.$strip>;
262
+ export declare const SketchfabListCategoriesOutputSchema: z.ZodObject<{
263
+ categories: z.ZodArray<z.ZodObject<{
264
+ name: z.ZodString;
265
+ slug: z.ZodString;
266
+ }, z.core.$strip>>;
267
+ provider: z.ZodLiteral<"Sketchfab">;
268
+ }, z.core.$strip>;
269
+ export declare function createSketchfabListCategoriesHandler(client: SketchfabClient): (raw: z.input<typeof SketchfabListCategoriesInputSchema>) => Promise<{
270
+ isError: true;
271
+ content: {
272
+ type: "text";
273
+ text: string;
274
+ }[];
275
+ } | {
276
+ content: {
277
+ type: "text";
278
+ text: string;
279
+ }[];
280
+ structuredContent: {
281
+ categories: {
282
+ name: string;
283
+ slug: string;
284
+ }[];
285
+ provider: "Sketchfab";
286
+ };
287
+ }>;
288
+ export declare const SketchfabGetDownloadsInputSchema: z.ZodObject<{
289
+ modelId: z.ZodString;
290
+ }, z.core.$strip>;
291
+ export declare const SketchfabGetDownloadsOutputSchema: z.ZodObject<{
292
+ downloads: z.ZodArray<z.ZodObject<{
293
+ format: z.ZodString;
294
+ url: z.ZodURL;
295
+ expiresInSeconds: z.ZodOptional<z.ZodNumber>;
296
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
297
+ }, z.core.$strip>>;
298
+ provider: z.ZodLiteral<"Sketchfab">;
299
+ authentication: z.ZodLiteral<"user-token">;
300
+ warning: z.ZodLiteral<"Download URLs are temporary. Follow the model's Creative Commons license requirements.">;
301
+ }, z.core.$strip>;
302
+ export declare function createSketchfabGetDownloadsHandler(client: SketchfabClient): (raw: z.input<typeof SketchfabGetDownloadsInputSchema>) => Promise<{
303
+ isError: true;
304
+ content: {
305
+ type: "text";
306
+ text: string;
307
+ }[];
308
+ } | {
309
+ content: {
310
+ type: "text";
311
+ text: string;
312
+ }[];
313
+ structuredContent: {
314
+ downloads: {
315
+ format: string;
316
+ url: string;
317
+ expiresInSeconds?: number | undefined;
318
+ sizeBytes?: number | undefined;
319
+ }[];
320
+ provider: "Sketchfab";
321
+ authentication: "user-token";
322
+ warning: "Download URLs are temporary. Follow the model's Creative Commons license requirements.";
323
+ };
324
+ }>;
325
+ //# sourceMappingURL=sketchfab.d.ts.map