@pixeldojo/mcp 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +38 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +38 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +39 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -1
- package/dist/index.d.ts +32 -1
- package/dist/index.js +39 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -242,6 +242,37 @@ declare function makeAttributedClient(options: MakeClientOptions): PixelDojoClie
|
|
|
242
242
|
declare const ALL_SKILLS: ReadonlyArray<SkillModule<unknown>>;
|
|
243
243
|
|
|
244
244
|
declare const HOSTED_SKILLS: ReadonlyArray<SkillModule<unknown>>;
|
|
245
|
+
/**
|
|
246
|
+
* MCP tool annotations for every skill. ChatGPT's plugin review rejects tools
|
|
247
|
+
* without readOnlyHint / destructiveHint / openWorldHint, and clients use them
|
|
248
|
+
* to decide when to ask before a call. Rationale per hint:
|
|
249
|
+
* - readOnlyHint: false for anything that renders, spends credits or saves.
|
|
250
|
+
* - destructiveHint: renders are additive (new media, nothing of the user's
|
|
251
|
+
* is changed or deleted; failed jobs refund), so false. save_workflow
|
|
252
|
+
* overwrites a same-named workflow, so true.
|
|
253
|
+
* - openWorldHint: everything stays inside the user's own account, except
|
|
254
|
+
* from_url, which fetches an arbitrary public page.
|
|
255
|
+
*/
|
|
256
|
+
type Hints = {
|
|
257
|
+
title: string;
|
|
258
|
+
readOnlyHint: boolean;
|
|
259
|
+
destructiveHint: boolean;
|
|
260
|
+
openWorldHint: boolean;
|
|
261
|
+
};
|
|
262
|
+
declare const TOOL_ANNOTATIONS: Record<string, Hints>;
|
|
263
|
+
/** The tools/list entry for a skill, shared by the stdio server and the hosted /mcp route. */
|
|
264
|
+
declare function toolListing(skill: SkillModule<unknown>): {
|
|
265
|
+
name: string;
|
|
266
|
+
title: string;
|
|
267
|
+
description: string;
|
|
268
|
+
inputSchema: Record<string, unknown>;
|
|
269
|
+
annotations: {
|
|
270
|
+
readOnlyHint: boolean;
|
|
271
|
+
destructiveHint: boolean;
|
|
272
|
+
openWorldHint: boolean;
|
|
273
|
+
title: string;
|
|
274
|
+
};
|
|
275
|
+
};
|
|
245
276
|
declare function findHostedSkill(name: string): SkillModule<unknown> | undefined;
|
|
246
277
|
/**
|
|
247
278
|
* Skill names were `pixeldojo:<x>` until 2026-07-29. A colon is illegal in a
|
|
@@ -286,4 +317,4 @@ declare function makeRedactedLogger(target?: Pick<Console, 'error'>): {
|
|
|
286
317
|
error(msg: string, ...args: unknown[]): void;
|
|
287
318
|
};
|
|
288
319
|
|
|
289
|
-
export { ALL_SKILLS, HOSTED_SKILLS, type MakeClientOptions, PACKAGE_VERSION, type PollOptions, type PollResult, type PollableJob, SERVER_INSTRUCTIONS, type ServerOptions, type SkillContext, type SkillModule, type SkillResult, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse };
|
|
320
|
+
export { ALL_SKILLS, HOSTED_SKILLS, type MakeClientOptions, PACKAGE_VERSION, type PollOptions, type PollResult, type PollableJob, SERVER_INSTRUCTIONS, type ServerOptions, type SkillContext, type SkillModule, type SkillResult, TOOL_ANNOTATIONS, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse, toolListing };
|
package/dist/index.d.ts
CHANGED
|
@@ -242,6 +242,37 @@ declare function makeAttributedClient(options: MakeClientOptions): PixelDojoClie
|
|
|
242
242
|
declare const ALL_SKILLS: ReadonlyArray<SkillModule<unknown>>;
|
|
243
243
|
|
|
244
244
|
declare const HOSTED_SKILLS: ReadonlyArray<SkillModule<unknown>>;
|
|
245
|
+
/**
|
|
246
|
+
* MCP tool annotations for every skill. ChatGPT's plugin review rejects tools
|
|
247
|
+
* without readOnlyHint / destructiveHint / openWorldHint, and clients use them
|
|
248
|
+
* to decide when to ask before a call. Rationale per hint:
|
|
249
|
+
* - readOnlyHint: false for anything that renders, spends credits or saves.
|
|
250
|
+
* - destructiveHint: renders are additive (new media, nothing of the user's
|
|
251
|
+
* is changed or deleted; failed jobs refund), so false. save_workflow
|
|
252
|
+
* overwrites a same-named workflow, so true.
|
|
253
|
+
* - openWorldHint: everything stays inside the user's own account, except
|
|
254
|
+
* from_url, which fetches an arbitrary public page.
|
|
255
|
+
*/
|
|
256
|
+
type Hints = {
|
|
257
|
+
title: string;
|
|
258
|
+
readOnlyHint: boolean;
|
|
259
|
+
destructiveHint: boolean;
|
|
260
|
+
openWorldHint: boolean;
|
|
261
|
+
};
|
|
262
|
+
declare const TOOL_ANNOTATIONS: Record<string, Hints>;
|
|
263
|
+
/** The tools/list entry for a skill, shared by the stdio server and the hosted /mcp route. */
|
|
264
|
+
declare function toolListing(skill: SkillModule<unknown>): {
|
|
265
|
+
name: string;
|
|
266
|
+
title: string;
|
|
267
|
+
description: string;
|
|
268
|
+
inputSchema: Record<string, unknown>;
|
|
269
|
+
annotations: {
|
|
270
|
+
readOnlyHint: boolean;
|
|
271
|
+
destructiveHint: boolean;
|
|
272
|
+
openWorldHint: boolean;
|
|
273
|
+
title: string;
|
|
274
|
+
};
|
|
275
|
+
};
|
|
245
276
|
declare function findHostedSkill(name: string): SkillModule<unknown> | undefined;
|
|
246
277
|
/**
|
|
247
278
|
* Skill names were `pixeldojo:<x>` until 2026-07-29. A colon is illegal in a
|
|
@@ -286,4 +317,4 @@ declare function makeRedactedLogger(target?: Pick<Console, 'error'>): {
|
|
|
286
317
|
error(msg: string, ...args: unknown[]): void;
|
|
287
318
|
};
|
|
288
319
|
|
|
289
|
-
export { ALL_SKILLS, HOSTED_SKILLS, type MakeClientOptions, PACKAGE_VERSION, type PollOptions, type PollResult, type PollableJob, SERVER_INSTRUCTIONS, type ServerOptions, type SkillContext, type SkillModule, type SkillResult, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse };
|
|
320
|
+
export { ALL_SKILLS, HOSTED_SKILLS, type MakeClientOptions, PACKAGE_VERSION, type PollOptions, type PollResult, type PollableJob, SERVER_INSTRUCTIONS, type ServerOptions, type SkillContext, type SkillModule, type SkillResult, TOOL_ANNOTATIONS, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse, toolListing };
|
package/dist/index.js
CHANGED
|
@@ -3050,6 +3050,7 @@ var skills_exports = {};
|
|
|
3050
3050
|
__export(skills_exports, {
|
|
3051
3051
|
ALL_SKILLS: () => ALL_SKILLS,
|
|
3052
3052
|
HOSTED_SKILLS: () => HOSTED_SKILLS,
|
|
3053
|
+
TOOL_ANNOTATIONS: () => TOOL_ANNOTATIONS,
|
|
3053
3054
|
adSkill: () => adSkill,
|
|
3054
3055
|
audioSkill: () => audioSkill,
|
|
3055
3056
|
campaignSkill: () => campaignSkill,
|
|
@@ -3068,10 +3069,21 @@ __export(skills_exports, {
|
|
|
3068
3069
|
saveWorkflowSkill: () => saveWorkflowSkill,
|
|
3069
3070
|
statusSkill: () => statusSkill,
|
|
3070
3071
|
storyboardSkill: () => storyboardSkill,
|
|
3072
|
+
toolListing: () => toolListing,
|
|
3071
3073
|
uploadSkill: () => uploadSkill,
|
|
3072
3074
|
upscaleSkill: () => upscaleSkill,
|
|
3073
3075
|
videoSkill: () => videoSkill
|
|
3074
3076
|
});
|
|
3077
|
+
function toolListing(skill) {
|
|
3078
|
+
const { title, ...hints } = TOOL_ANNOTATIONS[skill.name];
|
|
3079
|
+
return {
|
|
3080
|
+
name: skill.name,
|
|
3081
|
+
title,
|
|
3082
|
+
description: skill.description,
|
|
3083
|
+
inputSchema: skill.inputJsonSchema,
|
|
3084
|
+
annotations: { title, ...hints }
|
|
3085
|
+
};
|
|
3086
|
+
}
|
|
3075
3087
|
function findHostedSkill(name) {
|
|
3076
3088
|
const wanted = name.replace(/^pixeldojo:/, "pixeldojo_");
|
|
3077
3089
|
return HOSTED_SKILLS.find((s) => s.name === wanted);
|
|
@@ -3080,7 +3092,7 @@ function findSkill(name) {
|
|
|
3080
3092
|
const wanted = name.replace(/^pixeldojo:/, "pixeldojo_");
|
|
3081
3093
|
return ALL_SKILLS.find((s) => s.name === wanted);
|
|
3082
3094
|
}
|
|
3083
|
-
var ALL_SKILLS, isLocalPathField, HOSTED_SKILLS;
|
|
3095
|
+
var ALL_SKILLS, isLocalPathField, HOSTED_SKILLS, render, read, TOOL_ANNOTATIONS;
|
|
3084
3096
|
var init_skills = __esm({
|
|
3085
3097
|
"src/skills/index.ts"() {
|
|
3086
3098
|
init_generate();
|
|
@@ -3135,6 +3147,29 @@ var init_skills = __esm({
|
|
|
3135
3147
|
}
|
|
3136
3148
|
};
|
|
3137
3149
|
});
|
|
3150
|
+
render = (title) => ({ title, readOnlyHint: false, destructiveHint: false, openWorldHint: false });
|
|
3151
|
+
read = (title) => ({ title, readOnlyHint: true, destructiveHint: false, openWorldHint: false });
|
|
3152
|
+
TOOL_ANNOTATIONS = {
|
|
3153
|
+
pixeldojo_generate: render("Generate image or video"),
|
|
3154
|
+
pixeldojo_edit: render("Edit image"),
|
|
3155
|
+
pixeldojo_character: render("Consistent character image"),
|
|
3156
|
+
pixeldojo_storyboard: render("Storyboard preview video"),
|
|
3157
|
+
pixeldojo_upscale: render("Upscale image or video"),
|
|
3158
|
+
pixeldojo_audio: render("Generate music, speech or sound"),
|
|
3159
|
+
pixeldojo_video: render("Change, animate or extend video"),
|
|
3160
|
+
pixeldojo_ad: render("Make video ad"),
|
|
3161
|
+
pixeldojo_campaign: render("Make product launch campaign"),
|
|
3162
|
+
pixeldojo_film: render("Make short film"),
|
|
3163
|
+
pixeldojo_episode: render("Make faceless video"),
|
|
3164
|
+
pixeldojo_run_workflow: render("Run saved workflow"),
|
|
3165
|
+
pixeldojo_upload: render("Upload local file"),
|
|
3166
|
+
pixeldojo_save_workflow: { ...render("Save workflow"), destructiveHint: true },
|
|
3167
|
+
pixeldojo_status: read("Check job status"),
|
|
3168
|
+
pixeldojo_campaign_status: read("Check campaign status"),
|
|
3169
|
+
pixeldojo_library: read("Search media library"),
|
|
3170
|
+
pixeldojo_list_workflows: read("List saved workflows"),
|
|
3171
|
+
pixeldojo_from_url: { ...read("Read product page"), openWorldHint: true }
|
|
3172
|
+
};
|
|
3138
3173
|
}
|
|
3139
3174
|
});
|
|
3140
3175
|
function makeAttributedClient(options) {
|
|
@@ -3188,7 +3223,7 @@ function makeRedactedLogger(target = console) {
|
|
|
3188
3223
|
}
|
|
3189
3224
|
|
|
3190
3225
|
// src/server.ts
|
|
3191
|
-
var PACKAGE_VERSION = "0.
|
|
3226
|
+
var PACKAGE_VERSION = "0.16.0" ;
|
|
3192
3227
|
var SERVER_INSTRUCTIONS = "PixelDojo generates images, video, audio and short films across 100+ models, billed in credits from the connected PixelDojo account. A job that runs past the 30-second wait returns a jobId to check later; check it rather than submitting again, since every new submission is charged. Generated asset URLs are deleted one hour after they are created, so download anything the user wants to keep. Finished films are the exception and stay in the account library.";
|
|
3193
3228
|
function buildServer(options) {
|
|
3194
3229
|
if (!options.apiKey) {
|
|
@@ -3213,11 +3248,7 @@ function buildServer(options) {
|
|
|
3213
3248
|
);
|
|
3214
3249
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
3215
3250
|
return {
|
|
3216
|
-
tools: ALL_SKILLS.map(
|
|
3217
|
-
name: skill.name,
|
|
3218
|
-
description: skill.description,
|
|
3219
|
-
inputSchema: skill.inputJsonSchema
|
|
3220
|
-
}))
|
|
3251
|
+
tools: ALL_SKILLS.map(toolListing)
|
|
3221
3252
|
};
|
|
3222
3253
|
});
|
|
3223
3254
|
server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
@@ -3333,6 +3364,6 @@ async function runStdio(options) {
|
|
|
3333
3364
|
init_skills();
|
|
3334
3365
|
init_poll();
|
|
3335
3366
|
|
|
3336
|
-
export { ALL_SKILLS, HOSTED_SKILLS, PACKAGE_VERSION, SERVER_INSTRUCTIONS, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse };
|
|
3367
|
+
export { ALL_SKILLS, HOSTED_SKILLS, PACKAGE_VERSION, SERVER_INSTRUCTIONS, TOOL_ANNOTATIONS, buildServer, errorToActionableMessage, findHostedSkill, findSkill, makeAttributedClient, makeRedactedLogger, pollJobUntilDoneOrHandoff, redactKeys, redactValue, runStdio, skillResultToMcpResponse, toolListing };
|
|
3337
3368
|
//# sourceMappingURL=index.js.map
|
|
3338
3369
|
//# sourceMappingURL=index.js.map
|