com.spriteship/spriteship
REMOTE · SPRITESHIP.COM
Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines.
Available components
Last scanned (20 hours ago)
Scores higher than 90% of remote servers
Reachable. Last reached 16 Oct 2026.
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 21100 tokens (~234/item across 90 items; 90 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage90
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 71% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 90 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 91 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 1 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_map” rewrote its description, which is the text the model reads security
- Tool “set_asset_collision_body” rewrote its description, which is the text the model reads security
- Tool coverage: 82% → 71% ▼ functional
- Schema quality: 269 → 234 ▲ functional
- New tool “commit_map_draft” functional
- New tool “get_map_draft” functional
- New tool “get_project_export_command” functional
- New tool “get_project_export_review” functional
- New tool “get_project_export_status” functional
- New tool “list_map_revisions” functional
- New tool “map_authoring_context” functional
- New tool “map_authoring_schema” functional
- New tool “map_project_library” functional
- New tool “map_workbench_context” functional
- New tool “prepare_map_draft” functional
- New tool “prepare_map_edits” functional
- New tool “preview_map_draft” functional
- New tool “restore_map_revision” functional
- New tool “run_map_playtest” functional
- New tool “set_asset_collision_roles” functional
- New tool “set_character_collision_roles” functional
- New tool “start_project_export” functional
- “set_asset_collision_body” reworded the description of “collisionBody” cosmetic
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +4
- HTTPS: unverified → pass ▲ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “suggest_motion_hint” rewrote its description, which is the text the model reads security
- Tool “animate_asset” rewrote its description, which is the text the model reads security
- Tool “create_asset” rewrote its description, which is the text the model reads security
- Tool “create_character” rewrote its description, which is the text the model reads security
- Tool “fix_asset_seams” rewrote its description, which is the text the model reads security
- Tool “generate_character_animation” rewrote its description, which is the text the model reads security
- Tool “generate_pose” rewrote its description, which is the text the model reads security
- Tool “regen_asset_pair” rewrote its description, which is the text the model reads security
- New tool “resume_pose” functional
- New tool “resume_ui_pack_batch” functional
- 23 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- 22 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “import_asset_image” rewrote its description, which is the text the model reads security
- New tool “approve_automatic_pose_fallback” functional
- 21 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “generate_character_animation” rewrote its description, which is the text the model reads security
- 20 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Probed https://spriteship.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=spriteship.com | CN=WE1,O=Google Trust Services,C=US | 28 Aug 2026 | 26 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | eac94809b1ef95d70e8de8b7ad9e1d0e |
| SANs: spriteship.com, media.spriteship.com, *.media.spriteship.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of spriteship.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| spriteship.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://spriteship.com/mcp | Verified | 200 | |
| http (plaintext) | http://spriteship.com/mcp | HTTPS enforced | 308 | https://spriteship.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
list_ui_fonts List UI fonts ~29
Read the retained licensed Google Fonts catalog. Existing font selection, preview and export cost zero customer credits.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_ui_packs List UI Packs ~28
List owned UI Packs, optionally within a project.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | – | – |
No output schema declared.
No examples provided.
map_authoring_context Inspect map authoring context ~78
Read project art, material recipes, limits, shape classes, current map JSON and revision. Inspect the returned artwork visually before selecting assets. Read your game code to establish movement/mechanics; SpriteShip fields are flexible metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| assetOffset | integer | – | – |
| mapId | string | – | – |
| projectId | string | yes | – |
No output schema declared.
No examples provided.
map_authoring_schema Read strict map document schema ~42
Read the authoritative JSON Schema before composing a map. Use assetRef instead of inventing image URLs. Shapes, custom properties and paths retain their existing editor meanings.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
map_project_library Read map assemblies and world graph ~41
Read owned project maps, reusable detached assemblies, destination spawn IDs, room links and broken-link diagnostics. No browser required.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | – |
No output schema declared.
No examples provided.
map_workbench_context Read saved map capabilities and settings ~46
Read saved camera, reference brief, gameplay, assemblies, links, tests and per-engine support. Runtime availability is distinct from playability evidence.
| Name | Type | Req | Description |
|---|---|---|---|
| mapId | string | yes | – |
No output schema declared.
No examples provided.
mirror_animation Mirror an animation horizontally ~132
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 twice flips the animation back to its original orientation, so call it once and check the result before calling again. Frame count and order are preserved, so any frame selection stays valid. To keep BOTH directions, call duplicate_animation first and mirror the copy. Returns { jobId, mirrored } (frames flipped) — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | yes | Animation slug to flip in place. |
| characterId | string | yes | Character id. |
No output schema declared.
No examples provided.
phase_split Split an animation into game phases ~174
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 fall looping while airborne and the rest playing once. Each phase becomes a real exportable animation; the source animation is untouched. Jump-family animations often carry a ready-made suggestion: get_character → animations[<anim>].phaseProposal — pass its phases through verbatim. Frame windows index the FULL capture. Returns { jobId, created } — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | yes | Source animation slug (e.g. "jump"). |
| characterId | string | yes | Character id. |
| phases | array | yes | 2-6 phase windows. animations[<anim>].phaseProposal from get_character usually supplies these verbatim. |
No output schema declared.
No examples provided.
plan_sync Plan changed asset sync ~151
Compare the versions in assets/spriteship/spriteship.lock.json with current SpriteShip state in one call. Returns unchanged/changed/unavailable per character, asset, map, or UI pack; exact animation frame-count/FPS/collision, revision, runtime-intent, map-shape and UI component summaries when the previous lock entry includes the snapshot returned by an earlier call; and explicit fetch/download/review-removal actions. Existing v1 lock files without snapshots still detect version changes, then upgrade by saving each returned snapshot. Requests may contain 100 entries; honor Retry-After if the weighted sync budget is reached. Never delete local files for an unavailable entity without user confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| entities | array | yes | – |
No output schema declared.
No examples provided.
prepare_map_draft Prepare and validate a map draft ~156
FREE. Resolve owned artwork and validate a complete editable map without changing the live map. Preserve stable placement IDs on edits and pass expectedRevision from context. Returns immutable draft ID/hash and graph-only topology report. Inspect canonical overview and camera-sized region images before commit; no browser is required. Walkable surfaces/transitions are ground-view only, visualParts/reveal apply across game types. Graph reachability is not body-clearance or gameplay proof. Missing assets use existing quoted generation with user approval.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | Complete map JSON conforming to map_authoring_schema. |
| expectedRevision | integer | – | – |
| mapId | string | – | – |
| name | string | yes | – |
| projectId | string | yes | – |
No output schema declared.
No examples provided.
prepare_map_edits Prepare transactional map edits ~90
FREE. Apply up to 200 stable-ID operations against expectedRevision. Returns a validated draft and semantic diff without changing the live map. Preview/test then use commit_map_draft. Settings use null to remove optional values. Deleting referenced objects must repair their dependencies in the same batch.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedRevision | integer | yes | – |
| mapId | string | yes | – |
| operations | array | yes | – |
No output schema declared.
No examples provided.
preview_map_draft Render map draft preview ~168
FREE. Render the actual map composition using canonical terrain/export rendering. Omit viewport for an overview, or request world-pixel viewport and scale for camera-sized inspection (2048px output limit). Inspect this image and fix problems before saving; image output is sufficient for visual review without browser automation. Split-part clips and walking-surface draw order use canonical semantics. This static preview does not prove playability; test mechanics in the target engine.
| Name | Type | Req | Description |
|---|---|---|---|
| draftId | string | yes | – |
| scale | number | – | Requested output pixels per world pixel; default 1. Capped to 2048 output pixels on the longest edge. Read returned scale for the effective value. |
| viewport | object | – | Omit for the entire map. Use camera-sized regions to inspect terrain and placement detail. |
No output schema declared.
No examples provided.
rebuild_character Rebuild a character from its cached frames ~175
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 wrong after a series of edits, or when a previous rebuild failed. It never re-generates art, so it cannot change what the character looks like — only how the frames are packed and normalized. Omit animation only for an explicit full-character maintenance rebuild. Exact pose-owned scale references make the targeted path sibling-independent; legacy captures retain their compatibility sizing fallback. Image-only characters return NO_ANIMATIONS_TO_REBUILD without creating a job. A targeted rebuild returns an operationId/jobId — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | – | Animation slug to rebuild independently. Omit only to rebuild the whole character. |
| characterId | string | yes | Character id. |
No output schema declared.
No examples provided.
recover_ui_pack_components Recover missing UI components for free ~86
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 hash; already delivered siblings remain untouched. Inspect validation after recovery.
| Name | Type | Req | Description |
|---|---|---|---|
| batchId | string | yes | – |
| crops | array | yes | – |
| packId | string | yes | Owned UI Pack ID. |
| sourceHash | string | yes | – |
No output schema declared.
No examples provided.
regen_asset_pair Regenerate one asset motion pair ~346
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, leaving its other pairs alone. The new take lands as an additional iteration on that pair — earlier takes are preserved. DEFAULTS TO A COST PREVIEW — see the dryRun argument. Returns { jobId } — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | Asset id or slug. |
| dryRun | boolean | – | DEFAULTS TO TRUE. While true this returns only a cost quote ({ estimatedCredits, balance, spendCapDaily, spentLast24h, capRemaining }) and executes nothing. Show the user estimatedCredits, then ask a… |
| durationSeconds | number | – | Informs the cost estimate only — the dispatched job uses the pair's own duration. |
| idempotencyKey | string | – | Optional Idempotency-Key for the real (dryRun:false) call. Omit and one is minted per call. Reuse the SAME value when retrying a call that failed with ENTITY_BUSY / 402 / 429 so the retry cannot doub… |
| motionPrompt | string | – | Replacement motion prompt for this take. |
| pairId | string | yes | Motion pair id (from get_asset). |
| videoModel | string | – | Override the video model. |
No output schema declared.
No examples provided.
rematte_animation Fix an animation's edge artifacts (re-matte) ~192
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 fringe, flickering holes, ragged edges). The cleaner version is kept ONLY if it measures better, so this can never make the animation worse; the motion itself is unchanged. One attempt per capture: if the same frames were already tried (matteRepair stamp), a repeat call is a cheap re-check + free re-render — regenerate the animation for a fresh take instead. Fails with SOURCE_VIDEO_EXPIRED when the source video aged past its 30-day retention. Returns { jobId } — poll get_job, then re-read the character's quality block: "matte" gone = the cleaner version shipped.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | yes | Animation slug to re-matte in place. |
| characterId | string | yes | Character id. |
No output schema declared.
No examples provided.
rename_ui_component Rename UI component ~86
Rename an owned component for free. Supply its current name as expectedName to reject stale edits. Preserves IDs, artwork and historical revisions; re-sync updates its exported display name.
| Name | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | Owned component ID within this pack. |
| expectedName | string | yes | – |
| name | string | yes | – |
| packId | string | yes | Owned UI Pack ID. |
No output schema declared.
No examples provided.
replace_ui_component_png Replace edited UI PNG ~89
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 | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | Owned component ID within this pack. |
| imageBase64 | string | yes | – |
| packId | string | yes | Owned UI Pack ID. |
| revisionId | string | yes | – |
No output schema declared.
No examples provided.
reprocess_asset Arrange, align, and fit collection items ~349
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 point and cellOffsets apply per-item nudges. Modern manifest revisions are recomposed from their independent item PNGs and are never re-sliced; legacy staged and tileset revisions retain the source-sheet re-cut path, where cellInset can remove separator bleed. For a manifest revision, fitItemIndices makes those items fill their shared cell as much as possible while preserving aspect ratio. Legacy terrain must be upgraded to independent items first. Omitted fields keep the revision's current values; send cellOffsets:[] or cellInset:0 to clear. Returns a grid summary; call get_asset afterwards for fresh presigned tile URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| anchor | string | – | Where each sprite is placed inside its cell. "bottom-middle" is the default for sprites that stand on the ground. |
| assetId | string | yes | Asset id or slug (staged, tileset, or manifest-backed terrain). |
| cellInset | integer | – | Legacy source sheets only: pixels shaved off every side of each cell to drop neighbouring bleed (0-32). Ignored for independent-item manifests. Pass 0 to clear. |
| cellOffsets | array | – | Per-cell pixel nudges, in tile-index order. Pass [] to clear all nudges. |
| fitItemIndices | array | – | Independent-item manifests only: itemIndex values to fit to the shared cell while preserving aspect ratio. This is a one-shot operation; omitted items keep their saved size. |
| iterationId | string | yes | Collection revision (iteration) id to arrange. |
No output schema declared.
No examples provided.
restore_map_revision Restore an earlier map revision ~66
FREE. Restore a saved revision as a new revision, preserving history. Pass the latest expectedRevision and reuse requestId on retry.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedRevision | integer | yes | – |
| mapId | string | yes | – |
| requestId | string | yes | – |
| revision | integer | yes | – |
No output schema declared.
No examples provided.
resume_pose Resume saved pose background removal ~70
FREE. Resume a failed pose when list_character_poses reports removalRecoveryAvailable. Reuses the saved image; never generates or charges for another image. Respect the retry-after time on cooldown errors, then poll list_character_poses.
| Name | Type | Req | Description |
|---|---|---|---|
| characterId | string | yes | – |
| poseId | string | yes | – |
No output schema declared.
No examples provided.
resume_ui_pack_batch Resume saved UI artwork background removal ~69
FREE. Resume background removal when a failed/uncertain illustrated batch reports removalRecoveryAvailable. Reuses its saved artwork and original billing identity. Respect cooldown errors; never create a replacement paid batch.
| Name | Type | Req | Description |
|---|---|---|---|
| batchId | string | yes | – |
| packId | string | yes | Owned UI Pack ID. |
No output schema declared.
No examples provided.
retry_job Retry a failed job ~561
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 FAILED step of a job whose status is "error" — the prompt, model and every setting are already on the job, so this is the cheap way out of a failure instead of creating the whole thing again. Work that already succeeded is NOT redone or re-charged: a generation that failed after its image landed reuses the paid result. get_job reports retryMode, retryRecovery and retryCost, and the dryRun quote here is that same number. If get_job reports failureAction:"edit_input", do not use this tool; edit the prompt or references and create a new generation. A non-retryable phase answers 400 JOB_NOT_RETRYABLE — some late phases hold partially-committed state and deliberately have no blanket retry. Eligible overhead Material jobs use stored_artifact recovery to repair the original without new generation or background removal. A confirmed failed repair is not offered again by that processor; refresh get_job and honor server eligibility, even below the general two-attempt limit. No automatic refund is implied. Confirmed background-removal provider failures already fall back automatically on the server, without a new user charge. There is no daily removal retry lockout; honor reported cooldowns and unknown-task safeguards if recovery still fails. For already-authorized generation, automatically execute a zero-credit recovery quote and poll it; no renewed approval or refund. Never duplicate a running recovery. Limit automatic retries to two per failed job per session; stop on recurring failure or any paid quote. DEFAULTS TO A COST PREVIEW — see the dryRun argument. Returns { jobId } — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | DEFAULTS TO TRUE. While true this returns only a cost quote ({ estimatedCredits, balance, spendCapDaily, spentLast24h, capRemaining }) and executes nothing. Show the user estimatedCredits, then ask a… |
| idempotencyKey | string | – | Optional Idempotency-Key for the real (dryRun:false) call. Omit and one is minted per call. Reuse the SAME value when retrying a call that failed with ENTITY_BUSY / 402 / 429 so the retry cannot doub… |
| jobId | string | yes | Id of a job whose status is "error" (from get_job). |
No output schema declared.
No examples provided.
retry_unusable_result Retry an unusable AI result ~349
Quality Retry is the subscription compensation for AI art that invents details, ignores the request, or arrives unusable, letting the user try again without asking support for a credit refund. Costs ONE quality retry and ZERO credits; it is not a refund and preserves the original. Use get_subscription_allowances first and proceed only when features.retry is true; explain the purpose/cost and obtain approval before confirmed=true. This is distinct from retry_job (technical recovery) and ordinary paid revision. Do not use for arbitrary new ideas or imported still images. Persist requestId and reuse it after network errors; a returned allowance requires a new requestId.
| Name | Type | Req | Description |
|---|---|---|---|
| animationId | string | – | – |
| confirmed | boolean | – | True only after the user approved using one quality retry. |
| entityId | string | yes | – |
| issueDetails | string | – | Required for reason=other. Describe the unusable result in up to 1000 characters; stored for support, not sent to AI or used to change the original prompt. Preserve on requestId replay. |
| kind | string | yes | Use character_pose with poseId for a completed generated pose with saved inputs, creating a new pose on the same character. Extracted/mirrored poses are excluded. Use character_animation for ordinary… |
| poseId | string | – | – |
| reason | string | yes | – |
| requestId | string | yes | – |
| revisionId | string | – | – |
No output schema declared.
No examples provided.
revise_asset Revise an asset ~504
PAID. Generate a new revision of an asset from feedback text. The previous revision is kept — revisions are additive, never destructive. Environment Kit (`terrain`) assets also accept the legacy templateId to pull a whole category pack (edges / grounds / props / slopes / textures / structures). Passing sourceItemIndex uses that extracted item as the visual source for a complete new related collection: the source stays untouched and every output is a separate new asset listed in get_job.assetIds. The default dry run returns the exact semantic revision plan and planToken; show the preview to the user, then resend the unchanged request with that token. DEFAULTS TO A PLAN + COST PREVIEW — see dryRun. Returns { jobId } — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | Asset id or slug. |
| dryRun | boolean | – | DEFAULTS TO TRUE. While true this returns only a cost quote ({ estimatedCredits, balance, spendCapDaily, spentLast24h, capRemaining }) and executes nothing. Show the user estimatedCredits, then ask a… |
| idempotencyKey | string | – | Optional Idempotency-Key for the real (dryRun:false) call. Omit and one is minted per call. Reuse the SAME value when retrying a call that failed with ENTITY_BUSY / 402 / 429 so the retry cannot doub… |
| imageModel | string | – | Override the image model. |
| planToken | string | – | REQUIRED when dryRun=false. Copy unchanged from the immediately preceding dry-run response. |
| prompt | string | – | What to change. Required unless templateId is given (terrain). |
| sourceItemIndex | integer | – | Collection item to seed a related collection. Preserves the source and creates one new asset per output. |
| sourceIterationId | string | – | Revise from a specific earlier revision instead of the current one. |
| templateId | string | – | Environment Kit (`terrain`) only — legacy focused category pack, not a dashboard prompt-starter ID. |
| textureKind | string | – | Texture only — 4-way seamless fill, or a directional left-right strip. Defaults to the asset's existing kind. |
No output schema declared.
No examples provided.
revise_ui_pack_png Revise UI Pack PNG ~200
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. Siblings and prior revisions remain available.
| Name | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | Owned component ID within this pack. |
| dryRun | boolean | – | Show the user estimatedCredits and ask whether to proceed, unless already authorized in this session. Prefer the client native question UI with Approve / Decline / Discuss choices; otherwise accept a… |
| idempotencyKey | string | – | Reuse the same key when retrying a confirmed request. |
| packId | string | yes | Owned UI Pack ID. |
| quote | object | – | Unmodified signed quote returned by the dry-run. Required when dryRun is false. |
| request | object | – | – |
No output schema declared.
No examples provided.
run_map_playtest Run a map movement test ~100
FREE bounded browser-free route/clearance or deterministic controller replay. Choose exactly one saved mapId or prepared draftId. Returns map hash, declared body/profile, trace, events, diagnostics and limitations. A passed movement test is not proof of combat, scripts or destination-engine gameplay. Save reusable scenarios in document.playtests; inspect canonical images separately.
| Name | Type | Req | Description |
|---|---|---|---|
| draftId | string | – | – |
| mapId | string | – | – |
| scenario | – | yes | – |
No output schema declared.
No examples provided.
save_project_style_guide Save project style guide ~60
Adopt a new immutable guide revision with optimistic concurrency. Colors, typography and camera apply to future generation, never silently rewrite prior assets.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedRevision | integer | yes | – |
| guide | object | yes | – |
| projectId | string | yes | – |
No output schema declared.
No examples provided.
save_ui_component_defaults Save UI component defaults ~79
Save supported fill, text and layout values for an exact current revision. Free and deterministic; cannot manufacture unsupported capabilities or edit arbitrary SVG geometry.
| Name | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | Owned component ID within this pack. |
| configuration | object | yes | – |
| packId | string | yes | Owned UI Pack ID. |
| revisionId | string | yes | – |
No output schema declared.
No examples provided.
save_ui_pack_style Save UI Pack style ~70
Save a pack-specific style for future quotes using the current pack updatedAt. Free; preserves project defaults and existing component revisions. A stale timestamp is rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedUpdatedAt | string | yes | – |
| packId | string | yes | Owned UI Pack ID. |
| styleGuide | object | yes | – |
No output schema declared.
No examples provided.
select_frames Select animation frames ~195
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 full capture is retained, so you can re-select at any time. Use get_frames with format:"sheet" first to choose indices. Returns a jobId — poll get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | – | Animation slug — required when target=character. |
| compositing | object | – | Characters only — apply scale/offset in the same rebuild. |
| entityId | string | yes | Character id (target=character) or asset id/slug (target=assetPair). |
| frames | array | yes | Ordered frame indices to keep. Empty array resets to the full capture. |
| pairId | string | – | Motion pair id — required when target=assetPair. |
| target | string | yes | A character animation, or an asset motion pair. |
No output schema declared.
No examples provided.
set_asset_collision_body Set an asset's collision body ~370
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, compound of 1..16 simple disconnected bodies, or none, in NORMALIZED coordinates (0..1 fractions of the sprite/tile cell, origin top-left; a circle radius is a fraction of WIDTH). Set tileIndex to give one tile of a tileset/staged asset its own shape — it overrides the asset-level default for that tile. Pass collisionBody: null to clear/inherit, or {kind:"none"} to explicitly disable collision including bbox fallback. Compound children use the same cell space; preserve open archways between them. This is what stops a game from falling back to the sprite bounding box. The shape flows into every map and asset export made AFTER this edit — Tiled per-tile objectgroups, the Tiled map Collision layer, and the Phaser/Godot/Unity/GameMaker colliders — and it is resolved from the asset at export time, so it applies to tiles that were already placed on a map before you set it. Distinct from the FOOTPRINT, which is only the level editor's snap/tessellation shape and has no physics meaning.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | Asset id or slug. |
| collisionBody | – | yes | Normalized asset shape, compound of 1..16 simple shapes, explicit none for passable scenery, or null to clear/inherit. |
| iterationId | string | yes | Revision (iteration) id to stamp. |
| tileIndex | integer | – | Target one collection tile (tileset/staged/terrain). Coordinates are normalized to its padded presentation cell, not the cropped item image. Omit for the asset-level default. |
No output schema declared.
No examples provided.
set_asset_collision_roles Set asset movement, hurtbox and hitbox roles ~138
FREE, synchronous metadata edit for an owned revision or collection tileIndex. Each independent role accepts a normalized simple body, disconnected compound, or none. Coordinates refer to the full sprite or padded collection cell; radius is a fraction of width. Omitted roles stay unchanged, null clears an override, none disables. Tile roles override asset roles independently. hitboxFrames is not supported on assets. Legacy collisionBody remains the movement/hurtbox fallback; hitbox requires explicit configuration. No paid job.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | – |
| collisionRoles | – | yes | – |
| iterationId | string | yes | – |
| tileIndex | integer | – | – |
No output schema declared.
No examples provided.
set_asset_runtime_intent Set an asset's runtime render intent ~219
FREE and SYNCHRONOUS (no jobId — do not poll). Declare how an asset revision should be rendered at runtime: plain_image, particle_emitter, deformable_strip, repeat_fill, nine_slice or shader_effect. path_follow is accepted only for backward compatibility; do not set it on new assets. Draw and configure motion per placement in the level editor instead. The intent and its config flow into every engine export made AFTER this edit. Set tileIndex to target one tile of a tileset/staged asset.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | Asset id or slug. |
| config | object | – | Intent-specific config. Validated and clamped server-side; unknown keys are dropped. |
| iterationId | string | yes | Revision (iteration) id to stamp. |
| runtimeUse | string | yes | The render intent. plain_image clears any previous intent. path_follow is legacy-only; new path motion is authored per placement in the level editor. |
| tileIndex | integer | – | Target one tile (tileset/staged only). |
No output schema declared.
No examples provided.
set_character_collision_roles Set character movement, hurtbox and hitbox roles ~176
FREE, synchronous metadata edit. Independent normalized full-frame movement, hurtbox and hitbox bodies. Character movement permits a simple body or none; hurtbox/hitbox also permit compound. Omitted keys stay unchanged; null clears that scoped override; none explicitly disables a role. Scope defaults to character base; select one poseId or animation. Only animation scope accepts hitboxFrames (inclusive zero-based delivered indices, maximum 64 windows). Omitted windows mean the explicitly configured hitbox is active for the whole animation; [] disables it for all frames. A hurtbox never inherits the new movement shape. Legacy collisionBody fallback remains supported. No paid job or implicit combat/faction rules.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | – | – |
| characterId | string | yes | – |
| collisionRoles | – | yes | – |
| poseId | string | – | – |
No output schema declared.
No examples provided.
start_project_export Build complete game project ~102
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/player. Returns a job ID immediately; poll get_project_export_status until ready. No generation credits are spent.
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | yes | – |
| expectedVersion | string | yes | – |
| playerCharacterId | string | yes | – |
| projectId | string | yes | – |
| startMapId | string | yes | – |
No output schema declared.
No examples provided.
suggest_motion_hint Suggest a motion hint for a staged asset ~325
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 pairs you intend to animate and writes the one-sentence motion description to pass as animate_asset's motionHint. Use it when you are about to spend 300 credits on a default video and are unsure what to write: a few credits here protects that spend. Object States assets only — any other type answers 400.
| Name | Type | Req | Description |
|---|---|---|---|
| assetId | string | yes | Object States asset id or slug. |
| dryRun | boolean | – | DEFAULTS TO TRUE. While true this returns only a cost quote ({ estimatedCredits, balance, spendCapDaily, spentLast24h, capRemaining }) and executes nothing. Show the user estimatedCredits, then ask a… |
| idempotencyKey | string | – | Optional Idempotency-Key for the real (dryRun:false) call. Omit and one is minted per call. Reuse the SAME value when retrying a call that failed with ENTITY_BUSY / 402 / 429 so the retry cannot doub… |
| pairs | array | – | The stage transitions you plan to animate — context for the hint, nothing is generated from them. |
No output schema declared.
No examples provided.
suggest_project_style Suggest style and fonts ~56
Suggest palette, treatment and existing font IDs from the available catalog. Free to customers; suggestions require explicit save to adopt.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | yes | – |
| previewText | string | – | – |
| projectId | string | yes | – |
No output schema declared.
No examples provided.
validate_ui_component_layout Validate UI component layout ~99
Revalidate an exact current revision and apply only proven deterministic runtime layout repairs, including bar fill openings, panel text/slice regions, and explicitly named SVG button-state separation. Free; preserves original sources. This is not arbitrary SVG artwork editing and cannot promise a successful capability result.
| Name | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | Owned component ID within this pack. |
| packId | string | yes | Owned UI Pack ID. |
| revisionId | string | yes | – |
No output schema declared.
No examples provided.
whoami Who am I ~182
Verify the API key and report which powers it has. Returns { userId, username, keyId, keyName, scopes, mapLimits }. mapLimits contains maxMapsPerProject (null means unlimited), maxAreaPx (width × height allowance per map), maxWidthPx and maxHeightPx (independent technical side limits), and canResizeMaps. Paid plans allow any aspect ratio within both area and side limits. Admin accounts receive Studio map capacity even without a subscription. Read effective limits and the saved map before recommending gameplay-sized dimensions; starter dimensions are not an account limit. Free is fixed at 720 × 480; saved larger maps remain editable/exportable, but resizing requires a subscription. Map creation and editing use the web editor. Call this first when a tool fails with a scope error — the scopes array tells you what this key can and cannot do.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the com.spriteship/spriteship MCP server?
com.spriteship/spriteship is a hosted endpoint at https://spriteship.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · spriteship.com
claude mcp add --transport http com-spriteship-spriteship 'https://spriteship.com/mcp'
What is the com.spriteship/spriteship MCP server?
com.spriteship/spriteship is an MCP server listed in the public MCP registry as com.spriteship/spriteship. Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines. This page covers its hosted endpoint (https://spriteship.com/mcp).
Is the com.spriteship/spriteship MCP server safe to use?
com.spriteship/spriteship scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.spriteship/spriteship MCP server expose?
com.spriteship/spriteship exposes 90 tools: get_project_export_review, start_project_export, get_project_export_status, get_project_export_command, get_integration_status, and 85 more. Their descriptions and schemas cost roughly 19,936 tokens of context every time the server is loaded.
Does the com.spriteship/spriteship MCP server require authentication?
No. We connected to com.spriteship/spriteship without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the com.spriteship/spriteship MCP server still maintained?
com.spriteship/spriteship is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.