{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_nvcqrn49zazc","handle":"spriteship","url":"https://wellknown.network/agents/spriteship","links":{"self":"https://wellknown.network/agents/spriteship/record.json","html":"https://wellknown.network/agents/spriteship","markdown":"https://wellknown.network/agents/spriteship/record.md","api":"https://wellknown.network/api/v1/agents/spriteship","status":"https://wellknown.network/api/v1/agents/spriteship/status","claim":"https://wellknown.network/agents/spriteship/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/spriteship/claim.json","badge":"https://wellknown.network/agents/spriteship/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/spriteship/history","tools":"https://wellknown.network/api/v1/agents/spriteship/tools"},"ard":{"identifier":"urn:air:spriteship.com:server:spriteship","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"spriteship","summary":"Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines.","description":"Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines.","publisher":{"name":"com.spriteship","url":null},"homepage":"https://spriteship.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://spriteship.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-14T14:47:06.824581Z","publishedAt":"2026-08-14T14:47:06.824581Z","registryName":"com.spriteship/spriteship"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"media.image-generation","name":"Image Generation","confidence":0.583,"provenance":"derived"},{"slug":"media.image-editing","name":"Image Editing","confidence":0.583,"provenance":"derived"},{"slug":"media.video-generation","name":"Video Generation","confidence":0.583,"provenance":"derived"},{"slug":"documents.presentations","name":"Presentations","confidence":0.583,"provenance":"derived"},{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.583,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.525,"provenance":"derived"}],"categories":["content","dev","documents","media"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-10-10T04:31:38.197Z","lastProbedAt":"2026-10-10T04:31:38.197Z","statusComputedAt":"2026-10-10T04:33:25.617Z","reliability30d":{"probes":109,"successRate":1,"p50Ms":99,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T04:31:38.197Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":67,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:27:02.415Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":110,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:31:51.276Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":73,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:27:12.714Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":96,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:25:19.568Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":76,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:27:12.289Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":143,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:23:07.643Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":101,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:25:30.912Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":57,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:24:18.738Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":72,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T15:32:24.615Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":104,"error":null,"detail":{"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"toolCount":90,"toolsHash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","serverName":"spriteship","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_project_export_review","description":"FREE. Check all saved maps, character and asset dependencies, choose the starting map/player, and inspect target-runtime compatibility before downloading an edi"},{"name":"start_project_export","description":"FREE. Queue a durable complete Phaser, Godot or Unity project export. First review with get_project_export_review and pass its version and selected starting map"},{"name":"get_project_export_status","description":"FREE. Read a queued export job. Poll queued/running jobs about every two seconds. Ready jobs include the artifact size and expiry; failed jobs explain what to f"},{"name":"get_project_export_command","description":"Return an authenticated shell download command for a ready project export job. This tool checks status first and never starts a build. Run the command outside t"},{"name":"get_integration_status","description":"Free advisory version check. Call once when starting SpriteShip work in a session, passing the version actually read from the installed skill; omit it when unkn"},{"name":"whoami","description":"Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null m"},{"name":"get_credits","description":"Current credit balance, and optionally the recent ledger. Every ledger entry carries apiKeyId/apiKeyName so you can see exactly what THIS key spent. Check the b"},{"name":"list_projects","description":"All of the user's projects: { id, name, gameType, style, itemCount, createdAt, updatedAt }. gameType (platformer / topdown / topdown_overhead / isometric / poin"},{"name":"get_project","description":"One project with its description, registered mount slots, and saved style guide. The legacy assetSuggestions field is currently always null because automatic su"},{"name":"list_characters","description":"Characters with the re-sync signals: contentVersion (opaque change token — compare for equality, never parse or order), hasActiveJob, apiReady, pose/animation c"},{"name":"plan_sync","description":"Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, a"},{"name":"get_character","description":"The full PhaserCharacter JSON: animations, frameSize, gameType, animationDirection, per-group atlas + spritesheet URLs, poses and mount points. For topdown char"},{"name":"get_character_manifest","description":"The self-describing export contract (tizo-export.json manifest + its JSON Schema) without downloading the zip. Use this to learn the Phaser integration shape an"},{"name":"list_character_poses","description":"All poses on a character: { id, name, prompt, status pending|done|error, url, direction, pendingSince, errorCode, creditsRefunded }. This is the poll target aft"},{"name":"list_assets","description":"Assets (Object / Object Collection / staged / background / Environment Kit / Terrain Materials) with slug, hasAnimation, updatedAt, tags and favourite. Wire typ"},{"name":"get_asset","description":"One asset with its revision iterations and typed animation projection. Accepts the asset id OR its slug. New Material assets use the wire-compatible `texture` t"},{"name":"get_custom_fields","description":"Typed custom-field definitions for a character or asset, plus the derived builtins ($animation for characters, $autoplay/$loop for animated assets). Per-placeme"},{"name":"get_frames","description":"Presigned per-frame thumbnails for a character animation or an asset motion pair — never inline base64. Use format:\"sheet\" to get ONE index-labeled contact shee"},{"name":"list_maps","description":"Level-editor maps with updatedAt and hasMapData. hasMapData:false means the map was never saved and cannot be exported."},{"name":"get_map","description":"A map row plus its saved level data, revision and dependency-sensitive contentVersion for plan_sync. Preserve the returned contentVersion in the map lock entry "},{"name":"export_map","description":"Engine-ready map JSON built from the SAVED level data, preserving placement name/gameplayId and baking custom-field values. Every engine retains materialRenderi"},{"name":"get_job","description":"Poll a background job. Every write tool that returns a jobId is polled here. On status:\"error\" the response is enriched with failureKind, failureAction, attempt"},{"name":"get_export_command","description":"Build the authenticated download URL + a ready-to-run curl line for a zip export (character engine bundle, asset bundle, or map bundle). Run the curl in your ow"},{"name":"select_frames","description":"FREE, no AI. Curate which frames an animation keeps, by index into the full capture, in order. Pass an empty array to reset to all frames. Non-destructive: the "},{"name":"duplicate_animation","description":"FREE, synchronous, no AI. Make an exact copy of the CURRENT saved animation under a new slug, preserving its selected frame order, loop/hold settings, compositi"},{"name":"create_animation_from_pose","description":"FREE, no AI. Promote a pose into a real 1-frame animation (a still/idle) that is scaled to match the character's other animations and exports to every engine. P"},{"name":"set_asset_runtime_intent","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, rep"},{"name":"set_character_collision_roles","description":"FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbo"},{"name":"set_asset_collision_roles","description":"FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or"},{"name":"set_asset_collision_body","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Author the PHYSICS shape a game should build its collider from for an asset revision: rect, circle, polygon, comp"},{"name":"cancel_job","description":"FREE. Abort a running job. Failed/incomplete provider work is refunded automatically. If the job is waiting for directional-pose approval, its successful reusab"},{"name":"approve_automatic_pose_fallback","description":"Successful automatic poses now continue without review, including imports. Four-direction setup stays automatic and eight-direction keeps its existing selection"},{"name":"approve_directional_poses","description":"FREE approval checkpoint. Use only when get_job returns status:\"waiting_approval\", wizardPhase:\"waiting-directional-pose-approval\", and directionalPoseReview. P"},{"name":"frame_animation","description":"FREE, and NO AI AT ALL — no video model, no credits, nothing to approve. The tiles of a tileset/staged asset ARE the frames: give the tile indices in playback o"},{"name":"rebuild_character","description":"FREE, no AI. Re-render one animation from its durable cached frames by passing animation. This is the repair/refresh tool: use it when a sheet looks stale or wr"},{"name":"mirror_animation","description":"FREE, no AI. Flip every cached frame of ONE animation horizontally and rebuild it — the cheap way to get walk_left from walk_right. NOT idempotent: calling it t"},{"name":"rematte_animation","description":"FREE, no AI. Try a cleaner background removal on ONE animation's source video — the repair for a quality read showing deliveredIssues containing \"matte\" (green "},{"name":"phase_split","description":"FREE, no AI. Carve ONE multi-state clip into separate game-phase animations by frame windows — the classic case is a jump becoming crouch/rise/fall/land, with f"},{"name":"reprocess_asset","description":"FREE and SYNCHRONOUS (no jobId — do not poll), no AI. Rebuild a staged, tileset, or terrain collection's presentation layout: anchor chooses the shared fixed po"},{"name":"create_project","description":"FREE and SYNCHRONOUS (no jobId — do not poll). Creates the container everything else needs: characters and assets are created INSIDE a project, and the project'"},{"name":"create_character","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a NEW character from a text prompt. This is the entry point for building a"},{"name":"generate_character_animation","description":"PAID, and the cost MULTIPLIES BY THE NUMBER OF ANIMATIONS (each is its own image-to-video call; Wan 3.0 costs 150 credits/second, so its default 2-second clip i"},{"name":"generate_character_turn","description":"PAID (200 credits — ONE 2-second rotation video), except retrying the exact failed job is FREE while its provider task/result or validated stored source survive"},{"name":"resume_pose","description":"FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Res"},{"name":"generate_pose","description":"PAID (standard 1K: 60 credits; 2K: 100; 4K: 150; premium models may differ). Generate a new pose for a character from a text description. DEFAULTS TO A COST PRE"},{"name":"animate_asset","description":"PAID (image-to-video; Wan 3.0 costs 150 credits/second, so each default 2-second pair is 300 credits; total cost scales with duration × pair count). Animate ANY"},{"name":"revise_asset","description":"PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terra"},{"name":"regen_asset_pair","description":"PAID (Wan 3.0 costs 150 credits/second: 300 credits at the default 2-second settings). Re-run video generation for a SINGLE motion pair of an animated asset, le"},{"name":"convert_texture_to_material","description":"FREE and SYNCHRONOUS, no AI. Copies a legacy repeat-xy texture into a new immutable Brushable Material revision; the original revision is preserved. Topdown/iso"},{"name":"fix_asset_seams","description":"LEGACY ONLY; new Brushable Materials reject this operation because they use world-space sampling. PAID (60 credits per standard-model edit attempt; use the dry-"},{"name":"create_asset","description":"PAID (one image call). Creates a NEW asset from a prompt in any of the six types. The default dry run now returns a strictly text-free artwork brief: no caption"},{"name":"retry_job","description":"FREE when the original KIE task or a validated stored artifact can be recovered; otherwise PAID only for the sub-steps that still need to run. Re-runs the FAILE"},{"name":"generate_project_intake","description":"PAID but very cheap and SYNCHRONOUS. Use this for a broad game vision, story, or mood before create_project. Returns a proposed project name, game type, art sty"},{"name":"generate_project_vision","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — the result comes back in this response, there is no jobId to poll. Turns a rough game ide"},{"name":"suggest_motion_hint","description":"PAID but very cheap (one configured text-model call) and SYNCHRONOUS — returns { hint, cost } inline, no jobId. Reads a STAGED asset's prompt plus the stage pai"},{"name":"get_subscription_allowances","description":"Read the currently enabled subscriber benefits and their separate monthly limits, caps and balances. Disabled benefits return zeroed values and cannot be used. "},{"name":"retry_unusable_result","description":"Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without ask"},{"name":"import_asset_image","description":"Free imports: import ONE still PNG or WebP as an Object or Character. Unlimited for every account, including free users, with zero credits and no subscription o"},{"name":"list_ui_packs","description":"List owned UI Packs, optionally within a project."},{"name":"get_ui_pack","description":"Read components, immutable revisions, capabilities, fonts and batch progress. Artwork URLs expire; native engine capability gaps are not successful tests."},{"name":"get_ui_pack_batch_recovery","description":"Read original PNG dimensions, expiring image URL, source hash, and exact delivered/missing slots for an illustrated batch needing review. Inspect artwork before"},{"name":"resume_ui_pack_batch","description":"FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identi"},{"name":"recover_ui_pack_components","description":"Crop missing slots from a retained original PNG after visual review. No provider call or credit charge. Supply original-pixel rectangles and the current source "},{"name":"get_ui_pack_batch","description":"Read one paid batch and retained source URL; provider completion does not prove usable component delivery."},{"name":"list_ui_fonts","description":"Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits."},{"name":"get_project_style_guide","description":"Read the current guide; old projects without an adopted guide receive an initial suggestion. Existing assets retain their saved guide versions."},{"name":"save_project_style_guide","description":"Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets."},{"name":"suggest_project_style","description":"Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt."},{"name":"create_ui_pack","description":"Create an empty project-owned UI Pack with its guide snapshot. Free; generation is a separate quoted action."},{"name":"save_ui_pack_style","description":"Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timest"},{"name":"validate_ui_component_layout","description":"Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and expl"},{"name":"generate_ui_pack","description":"Get a cost preview for an exact component list and batch breakdown, then generate using the returned signed quote. Every paid raster/SVG batch is 100 credits; o"},{"name":"revise_ui_pack_png","description":"Get a cost preview for a 100-credit selected PNG revision, then pass its signed quote to execute. SVG artwork editing is Phase 2; it is not enabled by this tool"},{"name":"rename_ui_component","description":"Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync upda"},{"name":"save_ui_component_defaults","description":"Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary"},{"name":"replace_ui_component_png","description":"Save a locally edited PNG, revalidate behavior metadata and preserve the prior revision. Free. Maximum PNG 4 MB and 2048 pixels per axis; no SVG artwork editing"},{"name":"create_ui_composition","description":"Create a free static composition of existing icon/frame revisions; indicators and functional widgets remain independent. No new image generation."},{"name":"get_ui_pack_export_command","description":"Return an authenticated curl command for a whole/selected UI Pack ZIP or component source. Run locally; never put multi-MB ZIP data into model context. Phaser h"},{"name":"run_map_playtest","description":"FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared bod"},{"name":"map_project_library","description":"Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required."},{"name":"map_workbench_context","description":"Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence."},{"name":"prepare_map_edits","description":"FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test the"},{"name":"map_authoring_context","description":"Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read yo"},{"name":"map_authoring_schema","description":"Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existi"},{"name":"prepare_map_draft","description":"FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision"},{"name":"get_map_draft","description":"Read a prepared map draft, resolved document, hash and expiry."},{"name":"preview_map_draft","description":"FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for c"},{"name":"commit_map_draft","description":"FREE. Commit the exact draftHash as a recoverable revision. The existing map must still match its expectedRevision; conflicts require re-reading and merging the"},{"name":"list_map_revisions","description":"List recoverable map revisions from editor and agent saves."},{"name":"restore_map_revision","description":"FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry."}],"package":null,"toolSurface":{"id":"ts_wkmyf2pvx8q8","endpointId":"ep_wnsxwn4x2qgm","hash":"3498f21ab597e68416ecf73f0a766d7111b052cb725564ce590618d874cc7e76","toolCount":90,"serverName":"spriteship","serverVersion":"1.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-30T15:26:52.132Z","lastSeenAt":"2026-10-10T04:31:38.213Z","observations":36,"toolNames":["get_project_export_review","start_project_export","get_project_export_status","get_project_export_command","get_integration_status","whoami","get_credits","list_projects","get_project","list_characters","plan_sync","get_character","get_character_manifest","list_character_poses","list_assets","get_asset","get_custom_fields","get_frames","list_maps","get_map","export_map","get_job","get_export_command","select_frames","duplicate_animation","create_animation_from_pose","set_asset_runtime_intent","set_character_collision_roles","set_asset_collision_roles","set_asset_collision_body","cancel_job","approve_automatic_pose_fallback","approve_directional_poses","frame_animation","rebuild_character","mirror_animation","rematte_animation","phase_split","reprocess_asset","create_project","create_character","generate_character_animation","generate_character_turn","resume_pose","generate_pose","animate_asset","revise_asset","regen_asset_pair","convert_texture_to_material","fix_asset_seams","create_asset","retry_job","generate_project_intake","generate_project_vision","suggest_motion_hint","get_subscription_allowances","retry_unusable_result","import_asset_image","list_ui_packs","get_ui_pack","get_ui_pack_batch_recovery","resume_ui_pack_batch","recover_ui_pack_components","get_ui_pack_batch","list_ui_fonts","get_project_style_guide","save_project_style_guide","suggest_project_style","create_ui_pack","save_ui_pack_style","validate_ui_component_layout","generate_ui_pack","revise_ui_pack_png","rename_ui_component","save_ui_component_defaults","replace_ui_component_png","create_ui_composition","get_ui_pack_export_command","run_map_playtest","map_project_library","map_workbench_context","prepare_map_edits","map_authoring_context","map_authoring_schema","prepare_map_draft","get_map_draft","preview_map_draft","commit_map_draft","list_map_revisions","restore_map_revision"],"distinctSurfaces":15},"endpointFacts":[{"id":"ep_wnsxwn4x2qgm","url":"https://spriteship.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T08:27:12.734Z","auth":{"observedAt":"2026-10-09T08:27:12.802Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-09T08:27:12.815Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"spriteship.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-28T18:47:39.000Z","validTo":"2026-11-26T19:47:36.000Z","daysToExpiry":47,"sanCount":3,"fingerprint256":"0F:53:78:AB:C9:13:85:B9:02:14:DB:C5:9C:01:81:95:E3:76:DC:70:4B:C8:A3:C2:C3:2D:83:F7:58:A0:6C:46"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.spriteship/spriteship","url":"https://registry.modelcontextprotocol.io/v0/servers/com.spriteship%2Fspriteship","firstSeenAt":"2026-09-05T21:20:37.006Z","fetchedAt":"2026-10-09T11:22:20.945Z","normalizedAt":"2026-10-09T11:22:20.945Z"}]},"firstSeenAt":"2026-09-05T21:20:37.006Z","updatedAt":"2026-10-10T04:34:16.292Z"}