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,47 @@
1
+ import { z } from "zod";
2
+ import { FabClientError } from "../fab/client.js";
3
+ export const ListLimitedTimeFreeInputSchema = z.object({
4
+ limit: z.number().int().min(1).max(24).default(24),
5
+ });
6
+ export const LimitedTimeFreeItemSchema = z.object({
7
+ id: z.string(),
8
+ title: z.string(),
9
+ url: z.url(),
10
+ thumbnailUrl: z.url().optional(),
11
+ promotionEndsAt: z.string().optional(),
12
+ });
13
+ export const ListLimitedTimeFreeOutputSchema = z.object({
14
+ items: z.array(LimitedTimeFreeItemSchema),
15
+ source: z.enum(["configured-curated", "live-curated", "browser-curated"]),
16
+ warnings: z.array(z.string()),
17
+ });
18
+ export function createListLimitedTimeFreeHandler(client) {
19
+ return async (rawInput) => {
20
+ try {
21
+ const input = ListLimitedTimeFreeInputSchema.parse(rawInput);
22
+ const output = ListLimitedTimeFreeOutputSchema.parse(await client.listLimitedTimeFree(input));
23
+ return {
24
+ content: [{ type: "text", text: JSON.stringify(output) }],
25
+ structuredContent: output,
26
+ };
27
+ }
28
+ catch (error) {
29
+ const safe = error instanceof FabClientError
30
+ ? {
31
+ code: error.code,
32
+ message: error.message,
33
+ retryable: error.retryable,
34
+ }
35
+ : {
36
+ code: "FAB_INTERNAL",
37
+ message: "The Fab provider could not complete the request.",
38
+ retryable: false,
39
+ };
40
+ return {
41
+ isError: true,
42
+ content: [{ type: "text", text: JSON.stringify(safe) }],
43
+ };
44
+ }
45
+ };
46
+ }
47
+ //# sourceMappingURL=list-limited-time-free.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-limited-time-free.js","sourceRoot":"","sources":["../../src/tools/list-limited-time-free.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACzE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAeH,MAAM,UAAU,gCAAgC,CAC9C,MAA6B;IAE7B,OAAO,KAAK,EAAE,QAAwD,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAClD,MAAM,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CACxC,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GACR,KAAK,YAAY,cAAc;gBAC7B,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,kDAAkD;oBAC3D,SAAS,EAAE,KAAK;iBACjB,CAAC;YACR,OAAO;gBACL,OAAO,EAAE,IAAa;gBACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,266 @@
1
+ import { z } from "zod";
2
+ import { PolyHavenClient } from "../polyhaven/client.js";
3
+ export declare const PolyHavenAssetSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ name: z.ZodString;
6
+ description: z.ZodOptional<z.ZodString>;
7
+ type: z.ZodEnum<{
8
+ hdris: "hdris";
9
+ models: "models";
10
+ textures: "textures";
11
+ }>;
12
+ url: z.ZodURL;
13
+ category: z.ZodOptional<z.ZodString>;
14
+ categoryId: z.ZodOptional<z.ZodString>;
15
+ tags: z.ZodArray<z.ZodString>;
16
+ authors: z.ZodRecord<z.ZodString, z.ZodString>;
17
+ attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodNumber>]>>;
18
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
19
+ maxResolution: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
20
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
21
+ polycount: z.ZodOptional<z.ZodNumber>;
22
+ downloadCount: z.ZodOptional<z.ZodNumber>;
23
+ publishedAt: z.ZodOptional<z.ZodString>;
24
+ filesHash: z.ZodOptional<z.ZodString>;
25
+ donated: z.ZodOptional<z.ZodBoolean>;
26
+ lods: z.ZodOptional<z.ZodBoolean>;
27
+ license: z.ZodLiteral<"CC0">;
28
+ provider: z.ZodLiteral<"Poly Haven">;
29
+ }, z.core.$strip>;
30
+ export declare const PolyHavenSearchInputSchema: z.ZodObject<{
31
+ query: z.ZodOptional<z.ZodString>;
32
+ type: z.ZodDefault<z.ZodEnum<{
33
+ all: "all";
34
+ hdris: "hdris";
35
+ models: "models";
36
+ textures: "textures";
37
+ }>>;
38
+ categories: z.ZodDefault<z.ZodArray<z.ZodString>>;
39
+ sort: z.ZodDefault<z.ZodEnum<{
40
+ name: "name";
41
+ newest: "newest";
42
+ popular: "popular";
43
+ relevance: "relevance";
44
+ }>>;
45
+ limit: z.ZodDefault<z.ZodNumber>;
46
+ cursor: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>;
48
+ export declare const PolyHavenSearchOutputSchema: z.ZodObject<{
49
+ items: z.ZodArray<z.ZodObject<{
50
+ id: z.ZodString;
51
+ name: z.ZodString;
52
+ description: z.ZodOptional<z.ZodString>;
53
+ type: z.ZodEnum<{
54
+ hdris: "hdris";
55
+ models: "models";
56
+ textures: "textures";
57
+ }>;
58
+ url: z.ZodURL;
59
+ category: z.ZodOptional<z.ZodString>;
60
+ categoryId: z.ZodOptional<z.ZodString>;
61
+ tags: z.ZodArray<z.ZodString>;
62
+ authors: z.ZodRecord<z.ZodString, z.ZodString>;
63
+ attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodNumber>]>>;
64
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
65
+ maxResolution: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
66
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
67
+ polycount: z.ZodOptional<z.ZodNumber>;
68
+ downloadCount: z.ZodOptional<z.ZodNumber>;
69
+ publishedAt: z.ZodOptional<z.ZodString>;
70
+ filesHash: z.ZodOptional<z.ZodString>;
71
+ donated: z.ZodOptional<z.ZodBoolean>;
72
+ lods: z.ZodOptional<z.ZodBoolean>;
73
+ license: z.ZodLiteral<"CC0">;
74
+ provider: z.ZodLiteral<"Poly Haven">;
75
+ }, z.core.$strip>>;
76
+ nextCursor: z.ZodOptional<z.ZodString>;
77
+ total: z.ZodNumber;
78
+ provider: z.ZodLiteral<"Poly Haven">;
79
+ attribution: z.ZodLiteral<"Powered by Poly Haven">;
80
+ }, z.core.$strip>;
81
+ export declare function createPolyHavenSearchHandler(client: PolyHavenClient): (rawInput: z.input<typeof PolyHavenSearchInputSchema>) => Promise<{
82
+ isError: true;
83
+ content: {
84
+ type: "text";
85
+ text: string;
86
+ }[];
87
+ } | {
88
+ content: {
89
+ type: "text";
90
+ text: string;
91
+ }[];
92
+ structuredContent: {
93
+ items: {
94
+ id: string;
95
+ name: string;
96
+ description?: string | undefined;
97
+ type: "hdris" | "models" | "textures";
98
+ url: string;
99
+ category?: string | undefined;
100
+ categoryId?: string | undefined;
101
+ tags: string[];
102
+ authors: Record<string, string>;
103
+ attributes: Record<string, string | number | boolean | string[] | number[]>;
104
+ thumbnailUrl?: string | undefined;
105
+ maxResolution?: number[] | undefined;
106
+ dimensions?: number[] | undefined;
107
+ polycount?: number | undefined;
108
+ downloadCount?: number | undefined;
109
+ publishedAt?: string | undefined;
110
+ filesHash?: string | undefined;
111
+ donated?: boolean | undefined;
112
+ lods?: boolean | undefined;
113
+ license: "CC0";
114
+ provider: "Poly Haven";
115
+ }[];
116
+ nextCursor?: string | undefined;
117
+ total: number;
118
+ provider: "Poly Haven";
119
+ attribution: "Powered by Poly Haven";
120
+ };
121
+ }>;
122
+ export declare const PolyHavenGetAssetInputSchema: z.ZodObject<{
123
+ assetId: z.ZodString;
124
+ }, z.core.$strip>;
125
+ export declare const PolyHavenGetAssetOutputSchema: z.ZodObject<{
126
+ id: z.ZodString;
127
+ name: z.ZodString;
128
+ description: z.ZodOptional<z.ZodString>;
129
+ type: z.ZodEnum<{
130
+ hdris: "hdris";
131
+ models: "models";
132
+ textures: "textures";
133
+ }>;
134
+ url: z.ZodURL;
135
+ category: z.ZodOptional<z.ZodString>;
136
+ categoryId: z.ZodOptional<z.ZodString>;
137
+ tags: z.ZodArray<z.ZodString>;
138
+ authors: z.ZodRecord<z.ZodString, z.ZodString>;
139
+ attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodNumber>]>>;
140
+ thumbnailUrl: z.ZodOptional<z.ZodURL>;
141
+ maxResolution: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
142
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
143
+ polycount: z.ZodOptional<z.ZodNumber>;
144
+ downloadCount: z.ZodOptional<z.ZodNumber>;
145
+ publishedAt: z.ZodOptional<z.ZodString>;
146
+ filesHash: z.ZodOptional<z.ZodString>;
147
+ donated: z.ZodOptional<z.ZodBoolean>;
148
+ lods: z.ZodOptional<z.ZodBoolean>;
149
+ license: z.ZodLiteral<"CC0">;
150
+ provider: z.ZodLiteral<"Poly Haven">;
151
+ }, z.core.$strip>;
152
+ export declare function createPolyHavenGetAssetHandler(client: PolyHavenClient): (rawInput: z.input<typeof PolyHavenGetAssetInputSchema>) => Promise<{
153
+ isError: true;
154
+ content: {
155
+ type: "text";
156
+ text: string;
157
+ }[];
158
+ } | {
159
+ content: {
160
+ type: "text";
161
+ text: string;
162
+ }[];
163
+ structuredContent: {
164
+ id: string;
165
+ name: string;
166
+ description?: string | undefined;
167
+ type: "hdris" | "models" | "textures";
168
+ url: string;
169
+ category?: string | undefined;
170
+ categoryId?: string | undefined;
171
+ tags: string[];
172
+ authors: Record<string, string>;
173
+ attributes: Record<string, string | number | boolean | string[] | number[]>;
174
+ thumbnailUrl?: string | undefined;
175
+ maxResolution?: number[] | undefined;
176
+ dimensions?: number[] | undefined;
177
+ polycount?: number | undefined;
178
+ downloadCount?: number | undefined;
179
+ publishedAt?: string | undefined;
180
+ filesHash?: string | undefined;
181
+ donated?: boolean | undefined;
182
+ lods?: boolean | undefined;
183
+ license: "CC0";
184
+ provider: "Poly Haven";
185
+ };
186
+ }>;
187
+ export declare const PolyHavenListCategoriesInputSchema: z.ZodObject<{
188
+ type: z.ZodEnum<{
189
+ hdris: "hdris";
190
+ models: "models";
191
+ textures: "textures";
192
+ }>;
193
+ }, z.core.$strip>;
194
+ export declare const PolyHavenListCategoriesOutputSchema: z.ZodObject<{
195
+ categories: z.ZodArray<z.ZodObject<{
196
+ name: z.ZodString;
197
+ assetCount: z.ZodNumber;
198
+ }, z.core.$strip>>;
199
+ provider: z.ZodLiteral<"Poly Haven">;
200
+ }, z.core.$strip>;
201
+ export declare function createPolyHavenListCategoriesHandler(client: PolyHavenClient): (rawInput: z.input<typeof PolyHavenListCategoriesInputSchema>) => Promise<{
202
+ isError: true;
203
+ content: {
204
+ type: "text";
205
+ text: string;
206
+ }[];
207
+ } | {
208
+ content: {
209
+ type: "text";
210
+ text: string;
211
+ }[];
212
+ structuredContent: {
213
+ categories: {
214
+ name: string;
215
+ assetCount: number;
216
+ }[];
217
+ provider: "Poly Haven";
218
+ };
219
+ }>;
220
+ export declare const PolyHavenListFilesInputSchema: z.ZodObject<{
221
+ assetId: z.ZodString;
222
+ resolution: z.ZodOptional<z.ZodString>;
223
+ format: z.ZodOptional<z.ZodString>;
224
+ includeDependencies: z.ZodDefault<z.ZodBoolean>;
225
+ limit: z.ZodDefault<z.ZodNumber>;
226
+ cursor: z.ZodOptional<z.ZodString>;
227
+ }, z.core.$strip>;
228
+ export declare const PolyHavenListFilesOutputSchema: z.ZodObject<{
229
+ files: z.ZodArray<z.ZodObject<{
230
+ path: z.ZodString;
231
+ url: z.ZodURL;
232
+ sizeBytes: z.ZodNumber;
233
+ md5: z.ZodString;
234
+ dependencyOf: z.ZodOptional<z.ZodString>;
235
+ relativePath: z.ZodOptional<z.ZodString>;
236
+ }, z.core.$strip>>;
237
+ nextCursor: z.ZodOptional<z.ZodString>;
238
+ total: z.ZodNumber;
239
+ provider: z.ZodLiteral<"Poly Haven">;
240
+ }, z.core.$strip>;
241
+ export declare function createPolyHavenListFilesHandler(client: PolyHavenClient): (rawInput: z.input<typeof PolyHavenListFilesInputSchema>) => Promise<{
242
+ isError: true;
243
+ content: {
244
+ type: "text";
245
+ text: string;
246
+ }[];
247
+ } | {
248
+ content: {
249
+ type: "text";
250
+ text: string;
251
+ }[];
252
+ structuredContent: {
253
+ files: {
254
+ path: string;
255
+ url: string;
256
+ sizeBytes: number;
257
+ md5: string;
258
+ dependencyOf?: string | undefined;
259
+ relativePath?: string | undefined;
260
+ }[];
261
+ nextCursor?: string | undefined;
262
+ total: number;
263
+ provider: "Poly Haven";
264
+ };
265
+ }>;
266
+ //# sourceMappingURL=polyhaven.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyhaven.d.ts","sourceRoot":"","sources":["../../src/tools/polyhaven.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAWhC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB/B,CAAC;AAqCH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;iBAUrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMtC,CAAC;AAEH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,eAAe,cAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC;;;cAhC9C,MAAM;;;;;cAMN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoF3B;AAED,eAAO,MAAM,4BAA4B;;iBAEvC,CAAC;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAuB,CAAC;AAElE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,cAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC;;;cAlGhD,MAAM;;;;;cAMN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;GAoG3B;AAED,eAAO,MAAM,kCAAkC;;;;;;iBAE7C,CAAC;AACH,eAAO,MAAM,mCAAmC;;;;;;iBAQ9C,CAAC;AAEH,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,eAAe,cAE9D,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC;;;cA3H1C,MAAM;;;;;cAMN,MAAM;;;;;;;;;;GAkI3B;AAED,eAAO,MAAM,6BAA6B;;;;;;;iBAOxC,CAAC;AASH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;iBAKzC,CAAC;AAEH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,eAAe,cAC7C,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC;;;cAlKjD,MAAM;;;;;cAMN,MAAM;;;;;;;;;;;;;;;;GA0L3B"}
@@ -0,0 +1,233 @@
1
+ import { z } from "zod";
2
+ import { PolyHavenClient, PolyHavenClientError, } from "../polyhaven/client.js";
3
+ const AssetTypeSchema = z.enum(["hdris", "textures", "models"]);
4
+ const AttributeValueSchema = z.union([
5
+ z.string(),
6
+ z.number(),
7
+ z.boolean(),
8
+ z.array(z.string()),
9
+ z.array(z.number()),
10
+ ]);
11
+ export const PolyHavenAssetSchema = z.object({
12
+ id: z.string().min(1).max(200),
13
+ name: z.string().min(1).max(500),
14
+ description: z.string().max(12_000).optional(),
15
+ type: AssetTypeSchema,
16
+ url: z.url().max(500),
17
+ category: z.string().max(500).optional(),
18
+ categoryId: z.string().max(100).optional(),
19
+ tags: z.array(z.string().max(100)).max(100),
20
+ authors: z.record(z.string(), z.string().max(500)),
21
+ attributes: z.record(z.string(), AttributeValueSchema),
22
+ thumbnailUrl: z.url().max(2_048).optional(),
23
+ maxResolution: z.array(z.number()).max(3).optional(),
24
+ dimensions: z.array(z.number()).max(3).optional(),
25
+ polycount: z.number().nonnegative().optional(),
26
+ downloadCount: z.number().nonnegative().optional(),
27
+ publishedAt: z.string().max(100).optional(),
28
+ filesHash: z.string().max(100).optional(),
29
+ donated: z.boolean().optional(),
30
+ lods: z.boolean().optional(),
31
+ license: z.literal("CC0"),
32
+ provider: z.literal("Poly Haven"),
33
+ });
34
+ function outputAsset(asset) {
35
+ return PolyHavenAssetSchema.parse({
36
+ ...asset,
37
+ url: `https://polyhaven.com/a/${encodeURIComponent(asset.id)}`,
38
+ license: "CC0",
39
+ provider: "Poly Haven",
40
+ });
41
+ }
42
+ function errorResult(error) {
43
+ const safe = error instanceof PolyHavenClientError
44
+ ? {
45
+ code: error.code,
46
+ message: error.message,
47
+ retryable: error.retryable,
48
+ }
49
+ : {
50
+ code: "POLYHAVEN_INTERNAL",
51
+ message: "The asset MCP could not complete the Poly Haven request.",
52
+ retryable: false,
53
+ };
54
+ return {
55
+ isError: true,
56
+ content: [{ type: "text", text: JSON.stringify(safe) }],
57
+ };
58
+ }
59
+ function successResult(output) {
60
+ return {
61
+ content: [{ type: "text", text: JSON.stringify(output) }],
62
+ structuredContent: output,
63
+ };
64
+ }
65
+ export const PolyHavenSearchInputSchema = z.object({
66
+ query: z.string().trim().max(200).optional(),
67
+ type: z.enum(["all", "hdris", "textures", "models"]).default("all"),
68
+ categories: z
69
+ .array(z.string().trim().min(1).max(200))
70
+ .max(20)
71
+ .default([]),
72
+ sort: z.enum(["relevance", "popular", "newest", "name"]).default("relevance"),
73
+ limit: z.number().int().min(1).max(100).default(24),
74
+ cursor: z.string().regex(/^\d+$/).max(10).optional(),
75
+ });
76
+ export const PolyHavenSearchOutputSchema = z.object({
77
+ items: z.array(PolyHavenAssetSchema).max(100),
78
+ nextCursor: z.string().max(10).optional(),
79
+ total: z.number().int().nonnegative(),
80
+ provider: z.literal("Poly Haven"),
81
+ attribution: z.literal("Powered by Poly Haven"),
82
+ });
83
+ export function createPolyHavenSearchHandler(client) {
84
+ return async (rawInput) => {
85
+ try {
86
+ const input = PolyHavenSearchInputSchema.parse(rawInput);
87
+ const query = input.query?.toLocaleLowerCase();
88
+ const categories = input.categories.map((value) => value.toLocaleLowerCase());
89
+ let items = (await client.listAssets(input.type)).filter((asset) => {
90
+ const haystack = [
91
+ asset.id,
92
+ asset.name,
93
+ asset.description ?? "",
94
+ asset.category ?? "",
95
+ ...asset.tags,
96
+ ]
97
+ .join(" ")
98
+ .toLocaleLowerCase();
99
+ return ((!query || haystack.includes(query)) &&
100
+ categories.every((category) => haystack.includes(category)));
101
+ });
102
+ if (input.sort === "popular") {
103
+ items.sort((a, b) => (b.downloadCount ?? 0) - (a.downloadCount ?? 0));
104
+ }
105
+ else if (input.sort === "newest") {
106
+ items.sort((a, b) => (b.publishedAt ?? "").localeCompare(a.publishedAt ?? ""));
107
+ }
108
+ else if (input.sort === "name") {
109
+ items.sort((a, b) => a.name.localeCompare(b.name));
110
+ }
111
+ else if (query) {
112
+ items.sort((a, b) => {
113
+ const rank = (asset) => asset.id.toLocaleLowerCase() === query ||
114
+ asset.name.toLocaleLowerCase() === query
115
+ ? 0
116
+ : asset.name.toLocaleLowerCase().includes(query)
117
+ ? 1
118
+ : 2;
119
+ return rank(a) - rank(b) || (b.downloadCount ?? 0) - (a.downloadCount ?? 0);
120
+ });
121
+ }
122
+ const offset = Number(input.cursor ?? 0);
123
+ const page = items.slice(offset, offset + input.limit).map(outputAsset);
124
+ const output = PolyHavenSearchOutputSchema.parse({
125
+ items: page,
126
+ ...(offset + page.length < items.length
127
+ ? { nextCursor: String(offset + page.length) }
128
+ : {}),
129
+ total: items.length,
130
+ provider: "Poly Haven",
131
+ attribution: "Powered by Poly Haven",
132
+ });
133
+ return successResult(output);
134
+ }
135
+ catch (error) {
136
+ return errorResult(error);
137
+ }
138
+ };
139
+ }
140
+ export const PolyHavenGetAssetInputSchema = z.object({
141
+ assetId: z.string().trim().regex(/^[A-Za-z0-9_-]+$/).max(200),
142
+ });
143
+ export const PolyHavenGetAssetOutputSchema = PolyHavenAssetSchema;
144
+ export function createPolyHavenGetAssetHandler(client) {
145
+ return async (rawInput) => {
146
+ try {
147
+ const input = PolyHavenGetAssetInputSchema.parse(rawInput);
148
+ return successResult(outputAsset(await client.getAsset(input.assetId)));
149
+ }
150
+ catch (error) {
151
+ return errorResult(error);
152
+ }
153
+ };
154
+ }
155
+ export const PolyHavenListCategoriesInputSchema = z.object({
156
+ type: AssetTypeSchema,
157
+ });
158
+ export const PolyHavenListCategoriesOutputSchema = z.object({
159
+ categories: z.array(z.object({
160
+ name: z.string().max(200),
161
+ assetCount: z.number().int().nonnegative(),
162
+ })),
163
+ provider: z.literal("Poly Haven"),
164
+ });
165
+ export function createPolyHavenListCategoriesHandler(client) {
166
+ return async (rawInput) => {
167
+ try {
168
+ const input = PolyHavenListCategoriesInputSchema.parse(rawInput);
169
+ const output = PolyHavenListCategoriesOutputSchema.parse({
170
+ categories: await client.listCategories(input.type),
171
+ provider: "Poly Haven",
172
+ });
173
+ return successResult(output);
174
+ }
175
+ catch (error) {
176
+ return errorResult(error);
177
+ }
178
+ };
179
+ }
180
+ export const PolyHavenListFilesInputSchema = z.object({
181
+ assetId: z.string().trim().regex(/^[A-Za-z0-9_-]+$/).max(200),
182
+ resolution: z.string().trim().regex(/^\d+k$/i).max(10).optional(),
183
+ format: z.string().trim().regex(/^[A-Za-z0-9_-]+$/).max(30).optional(),
184
+ includeDependencies: z.boolean().default(true),
185
+ limit: z.number().int().min(1).max(200).default(100),
186
+ cursor: z.string().regex(/^\d+$/).max(10).optional(),
187
+ });
188
+ const PolyHavenFileSchema = z.object({
189
+ path: z.string().max(1_000),
190
+ url: z.url().max(2_048),
191
+ sizeBytes: z.number().int().nonnegative(),
192
+ md5: z.string().regex(/^[0-9a-f]{32}$/i),
193
+ dependencyOf: z.string().max(1_000).optional(),
194
+ relativePath: z.string().max(1_000).optional(),
195
+ });
196
+ export const PolyHavenListFilesOutputSchema = z.object({
197
+ files: z.array(PolyHavenFileSchema).max(200),
198
+ nextCursor: z.string().max(10).optional(),
199
+ total: z.number().int().nonnegative(),
200
+ provider: z.literal("Poly Haven"),
201
+ });
202
+ export function createPolyHavenListFilesHandler(client) {
203
+ return async (rawInput) => {
204
+ try {
205
+ const input = PolyHavenListFilesInputSchema.parse(rawInput);
206
+ const resolution = input.resolution?.toLocaleLowerCase();
207
+ const format = input.format?.toLocaleLowerCase();
208
+ const files = (await client.listFiles(input.assetId)).filter((file) => {
209
+ const segments = file.path.toLocaleLowerCase().split("/");
210
+ return ((!resolution || segments.includes(resolution)) &&
211
+ (!format ||
212
+ segments.includes(format) ||
213
+ new URL(file.url).pathname.toLocaleLowerCase().endsWith(`.${format}`)) &&
214
+ (input.includeDependencies || !file.dependencyOf));
215
+ });
216
+ const offset = Number(input.cursor ?? 0);
217
+ const page = files.slice(offset, offset + input.limit);
218
+ const output = PolyHavenListFilesOutputSchema.parse({
219
+ files: page,
220
+ ...(offset + page.length < files.length
221
+ ? { nextCursor: String(offset + page.length) }
222
+ : {}),
223
+ total: files.length,
224
+ provider: "Poly Haven",
225
+ });
226
+ return successResult(output);
227
+ }
228
+ catch (error) {
229
+ return errorResult(error);
230
+ }
231
+ };
232
+ }
233
+ //# sourceMappingURL=polyhaven.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyhaven.js","sourceRoot":"","sources":["../../src/tools/polyhaven.ts"],"names":[],"mappings":"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"}