# Distribute an indie game with Codex or Claude Code

FanZero connects games looking for visibility with content creators and their audiences. If you are preparing a launch or helping an existing release reach more people, your coding agent can publish the game, offer revenue-share pacts and handle review notes over MCP. Creators choose games they and their audiences will enjoy, propose content actions with dates, and request a pact from the studio.

Codex, Claude Code, Cursor and other MCP clients can use the same publishing tools. The MCP endpoint is `https://fanzero.app/mcp`; [the agent guide](https://fanzero.app/agents.md) documents the protocol, tools, authentication and errors. This page covers what to publish and how it becomes a creator opportunity.

## What can I publish on FanZero?

The current upload format is a playable HTML build: an `index.html` at the root, with bundled assets, no network calls at runtime and at most 8 MB in total. It runs in a sandbox, so external assets, analytics and online APIs are unsupported. The [listing guidelines](https://fanzero.app/docs/listing-guidelines) give the complete technical requirements.

Your game can be preparing its launch or already on sale on Steam, itch.io or your own site. Publish a compatible playable build or a slice of that game, and add an HTTPS `store_url` to its existing store page. FanZero currently hosts the HTML build you submit; it does not upload or distribute a desktop executable or create a Steam release for you.

## Optional: install FanZero Publish

[Install the agent integration](https://github.com/marcos-recolons/fanzero-agents) to give your agent a reusable publishing skill. The public repository contains the skill, plugin manifests and manual connection recipes. You can read it, install the skill and assess a game without a FanZero account. MCP connection and studio creation are separate steps.

**Codex CLI with plugin marketplace support**

```bash
codex plugin marketplace add marcos-recolons/fanzero-agents
codex plugin add fanzero@fanzero-agents
```

**Claude Code**

```bash
claude plugin marketplace add marcos-recolons/fanzero-agents
claude plugin install fanzero@fanzero-agents
```

Start a new session and ask: "Use FanZero Publish to check this game and prepare a listing and revenue-share offer for my approval." In Claude Code you can also invoke `/fanzero:fanzero-publish`. See the [integration README](https://github.com/marcos-recolons/fanzero-agents#readme) for desktop installation and clients that support standalone skills.

## 1. Connect your coding agent

Read [the setup guide](https://fanzero.app/docs/publish-with-claude-code) for studio keys and client configuration. With your studio key stored in `FANZERO_API_KEY`, add the MCP server:

**Codex**

```
codex mcp add fanzero --url https://fanzero.app/mcp --bearer-token-env-var FANZERO_API_KEY
```

**Claude Code**

```
claude mcp add --transport http fanzero https://fanzero.app/mcp --header "Authorization: Bearer $FANZERO_API_KEY"
```

No studio yet? The agent can read guidelines and check a build without a key. It asks you for a studio name and contact before creating one with `create_studio`. Store the new API key in an environment variable or secret manager and keep it out of the game build and repository.

From your game's folder, give the agent this instruction:

```
Read https://fanzero.app/agents.md
Then publish the game in this folder to FanZero.
```

## 2. Check the build before publishing

The agent calls `read_listing_guidelines`, then `check_build` with the build and draft listing. `check_build` needs no key and stores nothing. The agent fixes blocking notes and checks again until the build passes. Try the game yourself too: the automated checks inspect the code without playing it.

Before submitting, approve the title, description, assets and each revenue-share offer. Your agent must use the share and terms you choose; it must not invent a revenue commitment. A pact can offer a livestream, video, short, post or playtest, with a share above 0% and at most 50% of the game's net revenue.

## 3. Create the studio and publish the game

The agent uses `whoami` to check its studio key, or `create_studio` once after you approve the studio details. With your permission to publish, it sends the build, listing and pacts through `submit_game`.

Three checks stand between submission and the public catalog: automated build checks, an AI review and a human curator who plays the game. The result tells the agent what comes next. For `changes_requested`, it fixes the notes and sends `update_game` for the existing game. For `awaiting_curator`, it tells you the submission is waiting for a person; there is no fixed review time. A `listed` game has a public page that creators can explore.

Listing a game is free. The studio remains responsible for paying creators the agreed revenue share; FanZero records pacts and dates and does not process payouts.

## 4. Reach creators through a revenue-share pact

A creator chooses your game and offer, then proposes one or more content actions with exact dates: for example, a stream during launch week and a video three days later. No written pitch or connected social account is required to request a pact.

Your studio reviews the plan and approves it once. The revenue-share window starts at the earliest proposed action and ends exactly 28 days later. The actions and dates stay recorded; new pacts have no proof upload or second confirmation. One creator holds a game at a time, and approved windows cannot overlap.

The share applies to the game's net revenue during that window across its stores, including Steam, itch.io and the studio's site. Agree how net revenue and payment work with the creator. [How pacts work](https://fanzero.app/docs/how-pacts-work) has a worked example; [pact rules](https://fanzero.app/docs/pact-rules) gives the full contract.

## 5. Let the agent help with updates and requests

`list_my_games` returns review status and creator requests. An agent can show you a proposed content plan and its exact share dates, then use `respond_to_claim` after your decision. Accepting a request over MCP requires `human_approved: true`, reflecting your approval of that specific agreement.

Updates use `update_game`. A passing update to a listed game goes live immediately, so play the updated build and authorize the change before your agent submits it. Delivery confirmation tools remain available only for older pacts; they are not steps in a new scheduled pact.

## More

- [Connect and publish, step by step](https://fanzero.app/docs/publish-with-claude-code): Codex, Claude Code, Cursor and VS Code configuration
- [The agent guide](https://fanzero.app/agents): MCP tools, limits, authentication and errors
- [Listing guidelines](https://fanzero.app/docs/listing-guidelines): the supported build format
- [For game studios](https://fanzero.app/devs): publish a game and offer creator pacts
- [Browse games](https://fanzero.app/games): the public catalog
