@gripforgeai/mcp 0.1.18 → 0.1.20

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.
@@ -7,13 +7,13 @@ export function registerGameCreationTools(register, options, schema = z) {
7
7
  expected_revision: schema.number().int().positive().optional(), prompt: schema.string().max(2000).optional(),
8
8
  engine: schema.enum(['web', 'unity', 'godot', 'unreal']).optional(), slot_id: schema.string().max(100).optional(),
9
9
  mode: schema.enum(['select', 'generate', 'default']).optional(), asset_id: schema.string().max(100).optional(),
10
- operation: schema.enum(['plan', 'refine', 'concept', 'generate', 'build']).optional(), quote_token: schema.string().max(100).optional(),
10
+ operation: schema.enum(['plan', 'refine', 'concept', 'generate', 'build', 'develop']).optional(), quote_token: schema.string().max(100).optional(),
11
11
  message: schema.string().trim().min(3).max(1500).optional(), allow_incomplete: schema.boolean().optional(),
12
12
  source: schema.enum(['all', 'workspace', 'community']).optional(), q: schema.string().max(100).optional(),
13
13
  };
14
14
  register(GAME_CREATION_TOOL_NAMES[0], {
15
15
  title: 'Prepare and resume a game',
16
- description: 'The website and CLI share this saved 3D game creation workflow. Ask which engine (Unity, Godot, Unreal, Three.js) if unspecified; do not choose silently. create saves a brief without spending. quote(operation=plan) estimates AI preparation, accept(quote_token) starts its durable job ONLY after user approval of the shown price. get returns a persistent operation log, slots, studio_url and the same project to resume. Planning can select an appropriate preset OR compose real engine-compatible modules. A missing preset never means the genre needs a native engine. composition.modules pins all module versions; composition.tasks lists the custom logic still to implement. Assembly is a foundation, not a completed custom game: use the coding agent to finish those tasks on the selected engine (including web/Three.js). After a build, get also returns creatures (the models bound so that no unit is a capsule) and audit { verdict: complete | playable_with_defects | incomplete, headline, fixed (the free fixes applied: models, standard clips, control scheme), defects [{ severity, message, fix { tool, args, credits? } }], next }: show the user the verdict and what is left, work through next (gripforge_game_audit reads it again), and never present a verdict other than complete as a finished game. quote refine with message updates the same plan after approval, preserves selected assets and reviewed work, and persists the conversation. use_reference with slot_id and an owned image asset_id supplies an uploaded concept for visual review. assets searches compatible workspace/community items ranked by the brief and role; select chooses one or sets mode=generate with a prompt. For generation: quote concept, obtain approval, accept, poll get, show the concept, approve_concept only after visual user review; quote generate, obtain approval, accept, poll, show the model in its studio, approve_asset only after visual review. Never infer visual approval from technical success. quote build then accept acquires the selected community assets and binds them to a Game Kit prototype, without generating extra assets. With explicit allow_incomplete=true on the build quote, unreviewed models are excluded and missing slots use module defaults where available or remain empty. Show missing_assets before approval; never imply that an incomplete prototype is finished. Native engine projects still need CLI delivery/import; a web project has a play_url. Revision required for edits. Cancel/retry preserve completed steps. 2D unsupported. No automatic spending, invented asset IDs, or unrelated template substitutions.',
16
+ description: 'The website and CLI share this saved 3D game creation workflow. Ask which engine (Unity, Godot, Unreal, Three.js) if unspecified; do not choose silently. create saves a brief without spending. quote(operation=plan) estimates AI preparation, accept(quote_token) starts its durable job ONLY after user approval of the shown price. get returns a persistent operation log, slots, studio_url and the same project to resume. Planning can select an appropriate preset OR compose real engine-compatible modules. A missing preset never means the genre needs a native engine. composition.modules pins all module versions; composition.tasks lists the custom logic still to implement. Assembly is a foundation, not a completed custom game: For an assembled web project, quote operation=develop with an optional message, review its bounded price and accept to implement content/configuration using shared MCP kits, playtest and repair in a durable worker. Continue the same conversation and project. The development result distinguishes agent-declared changes, actual checks, remaining work and unsupported runtime capabilities. Each additional pass needs its own estimate; no paid asset generation is included. Native/custom-code development still uses the CLI. After a build, get also returns creatures (the models bound so that no unit is a capsule) and audit { verdict: complete | playable_with_defects | incomplete, headline, fixed (the free fixes applied: models, standard clips, control scheme), defects [{ severity, message, fix { tool, args, credits? } }], next }: show the user the verdict and what is left, work through next (gripforge_game_audit reads it again), and never present a verdict other than complete as a finished game. quote refine with message updates the same plan after approval, preserves selected assets and reviewed work, and persists the conversation. use_reference with slot_id and an owned image asset_id supplies an uploaded concept for visual review. assets searches compatible workspace/community items ranked by the brief and role; select chooses one or sets mode=generate with a prompt. For generation: quote concept, obtain approval, accept, poll get, show the concept, approve_concept only after visual user review; quote generate, obtain approval, accept, poll, show the model in its studio, approve_asset only after visual review. Never infer visual approval from technical success. quote build then accept acquires the selected community assets and binds them to a Game Kit prototype, without generating extra assets. With explicit allow_incomplete=true on the build quote, missing slots may use module defaults where available or remain empty, but a generated model awaiting review blocks assembly until explicitly approved or another asset is selected. Show missing_assets before approval; never imply that an incomplete prototype is finished. Native engine projects still need CLI delivery/import; a web project has a play_url. Revision required for edits. Cancel/retry preserve completed steps. 2D unsupported. No automatic spending, invented asset IDs, or unrelated template substitutions.',
17
17
  inputSchema: shape, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
18
18
  }, async (args, extra) => {
19
19
  const parsed = schema.object(shape).strict().safeParse(args);
package/dist/server.js CHANGED
@@ -2206,17 +2206,19 @@ server.tool('gripforge_font', 'Google-font CSS + exact HUD copy (DMC: Cinzel D
2206
2206
  return err(String(data.error ?? res.status));
2207
2207
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
2208
2208
  });
2209
- server.tool('gripforge_loading_page', 'Loading overlay for Three/Godot/Unity/Unreal. Title is text. Overlay 0 credits. Pass character_id to generate a 16:9 cinematic still of that Library character (1 credit, no letters in the image).', {
2210
- prompt: z.string().min(2).max(240).describe('e.g. devil may cry like'),
2209
+ server.tool('gripforge_loading_page', 'Loading overlay for Three/Godot/Unity/Unreal. project_id uses persistent quoted generation: action quote → accept → get → apply, with creation_id and quote_token. Title is text. Overlay 0 credits. Pass character_id to generate a 16:9 cinematic still of that Library character (1 credit, no letters in the image).', {
2210
+ project_id: z.string().optional(), action: z.enum(['quote', 'accept', 'get', 'apply']).optional(), creation_id: z.string().optional(), quote_token: z.string().optional(),
2211
+ prompt: z.string().min(2).max(2000).describe('e.g. devil may cry like'),
2211
2212
  character_id: z.string().optional().describe('lib_… character/enemy/bind — generate background still'),
2212
- }, async ({ prompt, character_id }) => {
2213
+ }, async (args) => {
2214
+ const { prompt, character_id } = args;
2213
2215
  if (!API_KEY)
2214
2216
  return err('GRIPFORGE_API_KEY missing.');
2215
- if (character_id) {
2217
+ if (character_id || args.project_id) {
2216
2218
  const res = await fetch(`${API_URL}/api/v1/loading-page`, {
2217
2219
  method: 'POST',
2218
2220
  headers: { ...apiHeaders(), 'content-type': 'application/json' },
2219
- body: JSON.stringify({ prompt, character_id }),
2221
+ body: JSON.stringify(args),
2220
2222
  });
2221
2223
  const data = await res.json().catch(() => ({}));
2222
2224
  if (!res.ok)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gripforgeai/mcp",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "The tools your AI needs to make your games. Turn prompts into production-ready game assets \u2014 animated characters with their weapons attached, seamless textures, terrain, VFX, HUDs \u2014 and playable game kits Unity, Godot, Unreal or Three.js can load.",
5
5
  "license": "MIT",
6
6
  "type": "module",