Game asset API for Codex and AGENTS.md agents
Codex reads AGENTS.md, the cross-tool instruction standard. SpriteShip ships one, so setup is a single append and an env var.
Point Codex at the MCP server.
40 tools over one endpoint — list, read, export, curate frames, generate. Same key, same guardrails as the REST API, and paid tools preview their cost before they run.
{
"mcpServers": {
"spriteship": {
"url": "https://spriteship.com/mcp",
"headers": {
"Authorization": "Bearer ${env:SPRITESHIP_API_KEY}"
}
}
}
}Codex reads MCP servers from its own config (TOML in ~/.codex/config.toml on recent versions). The fields are the same three either way: a name, the URL, and an Authorization header.
# 1. Point your agent's shell at your key export SPRITESHIP_API_KEY="ss_live_..." # 2. Confirm it works curl -sS -H "Authorization: Bearer $SPRITESHIP_API_KEY" \ https://spriteship.com/api/v1/me # 3. Teach the agent the API — the skill ships an AGENTS.md cat <spriteship-skill>/AGENTS.md >> AGENTS.md
Add the skill too.
MCP gives Codex the tools. The skill gives it the recipes — how to sync into a project tree, how to re-sync only what changed, and the protocol it must follow before spending a credit. They compose.
# One file, every AGENTS.md-compatible agent cat <spriteship-skill>/AGENTS.md >> AGENTS.md export SPRITESHIP_API_KEY="ss_live_..."
AGENTS.md is the cross-tool standard now stewarded by the Linux Foundation, and Codex reads it natively. The same file is what Cursor, Windsurf, Cline and Claude Code fall back to — write it once, every agent benefits. <spriteship-skill> is the SpriteShip agent skill — getting the skill →
Built for how Codex works.
One file, every agent
AGENTS.md is read natively by Codex, Cursor, Windsurf, Cline, Copilot and more. A mixed-tool team documents the integration once instead of maintaining four near-identical rules files.
Built for unattended runs
Idempotency keys, typed error codes and pollable jobs mean a retried or resumed run does not double-charge or corrupt state — which matters most when nobody is watching the terminal.
The superset is there when you need it
AGENTS.md is the condensed baseline. If your Codex version supports skill folders, point it at the full SKILL.md instead — same content, plus the sync recipes and the error table.
One ask, start to finish.
"re-sync every SpriteShip asset in this repo and report what changed"
- 01Reads spriteship.lock.json for every tracked entity
- 02Fetches current contentVersion / updatedAt for each in one pass
- 03Re-downloads only the entities whose signal moved
- 04Rewrites the lock file and prints a diff of what actually changed
The full loop, once.
Every agent runs the same shape — resolve, preview the cost, confirm, generate, poll, write the files, wire the code.
you › the knight needs a dodge-roll animation, then wire it into the player state machine
agent › GET /api/v1/characters?name=knight
→ chr_8fq2… · contentVersion 4a1c… · 6 animations
agent › POST /api/v1/characters/chr_8fq2…/generate-pose { dryRun: true }
→ 400 credits · balance 1,500 → 1,100
you › go ahead
agent › POST /api/v1/characters/chr_8fq2…/generate-pose
Idempotency-Key: 7c1f-…
→ job_2b9e… queued
agent › GET /api/v1/jobs/job_2b9e… → running
agent › GET /api/v1/jobs/job_2b9e… → done · 400 credits charged
agent › GET /api/v1/characters/chr_8fq2…/export?engine=phaser&format=json
→ wrote assets/spriteship/knight/spritesheet.png
wrote assets/spriteship/knight/atlas.json
wrote spriteship.lock.json (contentVersion 91be…)
agent › edited src/player/PlayerStateMachine.ts
+ case 'dodge': this.play('dodge_roll'); break;
done — dodge_roll is registered and playable. 400 credits spent.Handing an agent a budget, safely.
An agent that can spend money needs more than an API key. Every one of these is enforced server-side — not a convention the agent is trusted to follow.
Scoped keys
Four scopes, granted separately: assets:read, account:read, assets:write, credits:spend. A read-only key physically cannot spend money.
Per-key spend caps
Every key carries a daily credit ceiling — 5,000 by default, 50,000 maximum. Accounting is gross, so refunds restore your balance but never hand the key back headroom.
Over MCP, paid tools preview by default
Every paid MCP tool defaults to a dry run: it returns the exact credit cost and your resulting balance, and executes nothing. The agent has to deliberately re-call with dryRun:false to spend. Accidental spend is not a thing it can stumble into.
Idempotency keys
Paid writes require an Idempotency-Key header. A retried request replays the original job pointer instead of starting — and paying for — a second generation.
Busy-entity guard
A write against an entity that already has a job running answers ENTITY_BUSY rather than racing it, so two agents (or one confused agent) cannot corrupt the same character.
Re-sync signals
Every read carries contentVersion or updatedAt. The agent diffs those against its lock file and re-downloads only what actually changed after you edited something in the dashboard.
Presigned binaries
Every sheet, atlas, zip and preview URL is presigned and expiring. Nothing in an API response is a permanent public link.
Kill switch
Revoking a key cancels its in-flight jobs and refunds their unfinished charges. Leaked keys found by GitHub secret scanning are revoked automatically and you get an email.
Output an agent can actually use.
A folder of PNGs makes an agent guess. Every SpriteShip export explains itself, so the agent wires it up instead of improvising.
Self-describing bundles
Every export zip carries a manifest (tizo-export.json), a JSON Schema of its own shape, a README, a runnable preview and a SKILL.md — so an agent can consume the output without you explaining the format.
Native engine files
Phaser atlases, Godot 4 .tres resources, Unity sliced sprites with stable GUIDs, GameMaker sprite strips and Tiled tilesets. Not a folder of PNGs the agent has to guess at.
Collision, not bounding boxes
Authored collision bodies and ground footprints ride through the API and into every export, so the agent builds the real collider instead of defaulting to the sprite rectangle.
Mount points
Per-frame anchor points for weapons, hands and heads travel with the animation, so the agent can parent a projectile spawn to the right pixel on the right frame.
Codex, specifically.
Is AGENTS.md really read by all these tools?
Yes — it was released as an open standard and transferred to the Linux Foundation’s Agentic AI Foundation, and Codex, Cursor, Windsurf, Cline, Copilot and Claude Code all read it. Claude Code still prefers its richer CLAUDE.md, so that page covers the fuller setup.
Can an agent hold its own budget?
Yes, and that is the point. Give a key credits:spend and a daily cap and it can acquire art on its own initiative without a human in the loop, bounded to at most 50,000 credits a day. Every charge is attributed to that key in the ledger.
Related
Claude Code gets the richest integration of any agent — a packaged skill with its own slash commands, not just an instruction file.
Cursor reads project rules from .cursor/rules — drop the SpriteShip rule there and Composer can fetch art the same way it fetches a package.
Windsurf reads workspace rules from .windsurf/rules — and the cross-tool AGENTS.md at your repo root — so the setup is one file and one env var.
Point Codex
at your art.
1,500 free credits, no card. Reading and re-syncing never cost anything.
Start free — 1,500 credits