Skip to main content
Glama

FanZero — indie game distribution

Publish complete game listing

publish_game
Idempotent

Publish the original game through media and platform links in one operation. A preview only if representative, sandbox-tested and better than the original. Safe retries never expose credentials. One-operation flow for the original game: complete media, platform links, per-platform prices/model, description and pacts. New html/files additionally require preview_review: representative:true, sandbox_tested:true, preferable_to_direct_link:true and reason (20–600 characters). Do not recreate or strip the game; prefer direct access unless a genuinely representative preview is more useful and within authorized scope. Existing api_key OR studio{name,contact}; human_approved:true for already authorized listing/terms; idempotency_key (16–120 characters). Retry the same token/payload; no duplicate and no replayed credentials. Success is curator submission, not automatic listing.

Input Schema

NameRequiredDescriptionDefault
htmlNoOriginal game links are the default. Add optional self-contained html only with preview_review declaring representative, sandbox-tested and preferable to direct access; max 8 MB
tagsNo
agentNoWhich agent is calling, e.g. "claude-code" or "codex"
filesNoOptional justified playable preview instead of html; needs index.html and preview_review. Do not adapt an online game just to host a preview
genreYes
mediaNoScreenshots, gameplay and trailers. At least one when no optional playable version is supplied
pactsYes
stageNoOptional. Omitted means not specified on a metadata-only listing; legacy playable submissions default to prototype
titleYes
studioNo
api_keyNoStudio API key. Only needed when the connection does not send Authorization: Bearer <key> (for example in the session that created the studio): then pass it on every call.
taglineYesOne line that bites (8-120 chars)
controlsNoOne line, e.g. "Arrows or drag"
dev_noteNoA personal note from the dev to influencers
platformsNoWhere to access/buy the actual game, each with its own price/model. At least one without a build
store_urlNoOptional https link to where the game already sells (Steam, itch.io, your site). Revenue from every store counts in a pact window. Pass "" or null to remove it.
descriptionYesWhat the game is, its audience and what influencers can show (60-4000 chars)
monetizationNoExplain how the game earns revenue across platforms; do not guess an unknown price
human_approvedNoTrue only when the owner authorized this listing, any registration and every pact. Existing authorization is sufficient
preview_reviewNoRequired for new html/files sent by an agent; all three flags must be true with an explicit reason. A declaration, not certification by static checks
idempotency_keyYesFresh random value per new game; keep it unchanged with the complete payload for retries

Output Schema

NameRequiredDescriptionDefault
urlYes
slugYes
titleYes
reviewYesPrivate review for initial submission or authenticated replay; null on anonymous replay
statusYes
api_keyYesReturned only on the initial studio registration, never on a replay
createdYes
game_idYes
versionYes
replayedYes
next_stepYes
studio_idYes
studio_desk_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / description / description
      Previous value: -"What the game is, its audience and what creators can show (60-4000 chars)"New value: +"What the game is, its audience and what influencers can show (60-4000 chars)"
    • changedInput schema / properties / dev_note / description
      Previous value: -"A personal note from the dev to streamers"New value: +"A personal note from the dev to influencers"
    • changedInput schema / properties / pacts / items / properties / action / description
      Previous value: -"What the streamer (or YouTuber, TikToker) does: livestream, video, short, post or playtest"New value: +"What the influencer (a streamer, YouTuber or TikToker) does: livestream, video, short, post or playtest"
    • changedInput schema / properties / pacts / items / properties / share_pct / description
      Previous value: -"Percent of the game's net revenue from every store, for 4 weeks from the earliest date in the creator's approved action plan. In percent: 10 means 10%. Above 0, at most 50. The window length is fixed."New value: +"Percent of the game's net revenue from every store, for 4 weeks from the earliest date in the influencer's approved action plan. In percent: 10 means 10%. Above 0, at most 50. The window length is fixed."
    • addedInput schema / properties / platforms / items / properties / type
      Added value: +{
      +  "description": "What kind of platform it is. Leave it out to have it read from the name and URL (unknown: other)",
      +  "enum": [
      +    "store",
      +    "web_portal",
      +    "app_store",
      +    "console",
      +    "own_site",
      +    "ad_network",
      +    "other"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / preview_review / properties / preferable_to_direct_link / description
      Previous value: -"Must be true only if creators benefit more than by opening the original game link"New value: +"Must be true only if influencers benefit more than by opening the original game link"
    • changedOutput schema / properties / review / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "blocking": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "code": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "enum": [
      -                "block",
      -                "warn",
      -                "info"
      -              ],
      -              "type": "string"
      -            },
      -            "message": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "level",
      -            "code",
      -            "message"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "critic": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "concerns": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "model": {
      -                "type": "string"
      -              },
      -              "score": {
      -                "type": "number"
      -              },
      -              "streamability": {
      -                "enum": [
      -                  "low",
      -                  "medium",
      -                  "high"
      -                ],
      -                "type": "string"
      -              },
      -              "strengths": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "verdict": {
      -                "enum": [
      -                  "pass",
      -                  "changes"
      -                ],
      -                "type": "string"
      -              },
      -              "vibe": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "model",
      -              "score",
      -              "vibe",
      -              "verdict",
      -              "strengths",
      -              "concerns",
      -              "streamability"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "curator_note": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "game_id": {
      -        "type": "string"
      -      },
      -      "genre": {
      -        "type": "string"
      -      },
      -      "has_playable": {
      -        "type": "boolean"
      -      },
      -      "media": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alt": {
      -              "maxLength": 200,
      -              "type": "string"
      -            },
      -            "type": {
      -              "enum": [
      -                "image",
      -                "video"
      -              ],
      -              "type": "string"
      -            },
      -            "url": {
      -              "description": "Public HTTPS screenshot, gameplay or trailer URL; validated without fetching it",
      -              "maxLength": 1000,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "type",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "monetization": {
      -        "type": "string"
      -      },
      -      "next_step": {
      -        "description": "What to do now",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "items": {
      -          "$ref": "#/properties/review/anyOf/0/properties/blocking/items"
      -        },
      -        "type": "array"
      -      },
      -      "pacts": {
      -        "description": "Open pacts creators can request",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "action": {
      -              "type": "string"
      -            },
      -            "created_at": {
      -              "description": "ISO-8601 time, UTC",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "min_audience": {
      -              "type": "number"
      -            },
      -            "open": {
      -              "type": "boolean"
      -            },
      -            "requirement": {
      -              "type": "string"
      -            },
      -            "share_pct": {
      -              "type": "number"
      -            },
      -            "window_days": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "action",
      -            "share_pct",
      -            "window_days",
      -            "requirement",
      -            "min_audience",
      -            "open",
      -            "created_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "platforms": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "currency": {
      -              "description": "Uppercase currency code, e.g. EUR or USD; required for a positive price",
      -              "pattern": "^[A-Z]{3}$",
      -              "type": "string"
      -            },
      -            "monetization": {
      -              "enum": [
      -                "paid",
      -                "free",
      -                "free_to_play",
      -                "subscription",
      -                "other"
      -              ],
      -              "type": "string"
      -            },
      -            "name": {
      -              "maxLength": 60,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "note": {
      -              "description": "Price conditions, subscription period or optional purchase details",
      -              "maxLength": 400,
      -              "type": "string"
      -            },
      -            "price": {
      -              "description": "This platform's purchase price. Omit an unknown price; zero means explicitly zero, never an assumed free game",
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "url": {
      -              "description": "Public HTTPS game/store URL",
      -              "maxLength": 1000,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "preview_review": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "preferable_to_direct_link": {
      -                "type": "boolean"
      -              },
      -              "reason": {
      -                "type": "string"
      -              },
      -              "representative": {
      -                "type": "boolean"
      -              },
      -              "sandbox_tested": {
      -                "type": "boolean"
      -              }
      -            },
      -            "required": [
      -              "representative",
      -              "sandbox_tested",
      -              "preferable_to_direct_link",
      -              "reason"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Current preview declaration, if supplied. The stored build association is private; static checks do not certify the declarations"
      -      },
      -      "preview_url": {
      -        "description": "Optional playable version; null for a listing without a build",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "slug": {
      -        "type": "string"
      -      },
      -      "stage": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "checking",
      -          "changes_requested",
      -          "awaiting_curator",
      -          "listed",
      -          "rejected"
      -        ],
      -        "type": "string"
      -      },
      -      "store_url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "title": {
      -        "type": "string"
      -      },
      -      "updated_at": {
      -        "description": "ISO-8601 time, UTC",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "Public page, once listed",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "version": {
      -        "type": "integer"
      -      },
      -      "warnings": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "game_id",
      -      "slug",
      -      "title",
      -      "version",
      -      "status",
      -      "next_step",
      -      "genre",
      -      "stage",
      -      "store_url",
      -      "url",
      -      "preview_url",
      -      "has_playable",
      -      "media",
      -      "platforms",
      -      "monetization",
      -      "preview_review",
      -      "blocking",
      -      "notes",
      -      "critic",
      -      "curator_note",
      -      "pacts",
      -      "warnings",
      -      "updated_at"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "blocking": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "level": {
      +              "enum": [
      +                "block",
      +                "warn",
      +                "info"
      +              ],
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "level",
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "critic": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "concerns": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "model": {
      +                "type": "string"
      +              },
      +              "score": {
      +                "type": "number"
      +              },
      +              "streamability": {
      +                "enum": [
      +                  "low",
      +                  "medium",
      +                  "high"
      +                ],
      +                "type": "string"
      +              },
      +              "strengths": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "verdict": {
      +                "enum": [
      +                  "pass",
      +                  "changes"
      +                ],
      +                "type": "string"
      +              },
      +              "vibe": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "model",
      +              "score",
      +              "vibe",
      +              "verdict",
      +              "strengths",
      +              "concerns",
      +              "streamability"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "curator_note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "game_id": {
      +        "type": "string"
      +      },
      +      "genre": {
      +        "type": "string"
      +      },
      +      "has_playable": {
      +        "type": "boolean"
      +      },
      +      "media": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "alt": {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            "type": {
      +              "enum": [
      +                "image",
      +                "video"
      +              ],
      +              "type": "string"
      +            },
      +            "url": {
      +              "description": "Public HTTPS screenshot, gameplay or trailer URL; validated without fetching it",
      +              "maxLength": 1000,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "monetization": {
      +        "type": "string"
      +      },
      +      "next_step": {
      +        "description": "What to do now",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "items": {
      +          "$ref": "#/properties/review/anyOf/0/properties/blocking/items"
      +        },
      +        "type": "array"
      +      },
      +      "pacts": {
      +        "description": "Open pacts influencers can request",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "action": {
      +              "type": "string"
      +            },
      +            "created_at": {
      +              "description": "ISO-8601 time, UTC",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "min_audience": {
      +              "type": "number"
      +            },
      +            "open": {
      +              "type": "boolean"
      +            },
      +            "requirement": {
      +              "type": "string"
      +            },
      +            "share_pct": {
      +              "type": "number"
      +            },
      +            "window_days": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "action",
      +            "share_pct",
      +            "window_days",
      +            "requirement",
      +            "min_audience",
      +            "open",
      +            "created_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "platforms": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "currency": {
      +              "type": "string"
      +            },
      +            "evidence": {
      +              "description": "The platform's own report the studio settles with",
      +              "type": "string"
      +            },
      +            "monetization": {
      +              "enum": [
      +                "paid",
      +                "free",
      +                "free_to_play",
      +                "subscription",
      +                "other"
      +              ],
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "note": {
      +              "type": "string"
      +            },
      +            "price": {
      +              "type": "number"
      +            },
      +            "revenue": {
      +              "description": "declared: after a pact window the studio reports this platform's net revenue; nothing is connected",
      +              "enum": [
      +                "declared"
      +              ],
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "The studio's, or read from the name and URL",
      +              "enum": [
      +                "store",
      +                "web_portal",
      +                "app_store",
      +                "console",
      +                "own_site",
      +                "ad_network",
      +                "other"
      +              ],
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "url",
      +            "type",
      +            "revenue",
      +            "evidence"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "preview_review": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "preferable_to_direct_link": {
      +                "type": "boolean"
      +              },
      +              "reason": {
      +                "type": "string"
      +              },
      +              "representative": {
      +                "type": "boolean"
      +              },
      +              "sandbox_tested": {
      +                "type": "boolean"
      +              }
      +            },
      +            "required": [
      +              "representative",
      +              "sandbox_tested",
      +              "preferable_to_direct_link",
      +              "reason"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Current preview declaration, if supplied. The stored build association is private; static checks do not certify the declarations"
      +      },
      +      "preview_url": {
      +        "description": "Optional playable version; null for a listing without a build",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "slug": {
      +        "type": "string"
      +      },
      +      "stage": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "checking",
      +          "changes_requested",
      +          "awaiting_curator",
      +          "listed",
      +          "rejected"
      +        ],
      +        "type": "string"
      +      },
      +      "store_url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "updated_at": {
      +        "description": "ISO-8601 time, UTC",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Public page, once listed",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "version": {
      +        "type": "integer"
      +      },
      +      "warnings": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "game_id",
      +      "slug",
      +      "title",
      +      "version",
      +      "status",
      +      "next_step",
      +      "genre",
      +      "stage",
      +      "store_url",
      +      "url",
      +      "preview_url",
      +      "has_playable",
      +      "media",
      +      "platforms",
      +      "monetization",
      +      "preview_review",
      +      "blocking",
      +      "notes",
      +      "critic",
      +      "curator_note",
      +      "pacts",
      +      "warnings",
      +      "updated_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed4 schema fields changed
    • changedInput schema / properties / files / description
      Previous value: -"Optional multi-file playable version instead of html; must include index.html at the root"New value: +"Optional justified playable preview instead of html; needs index.html and preview_review. Do not adapt an online game just to host a preview"
    • changedInput schema / properties / html / description
      Previous value: -"Optional playable version hosted on FanZero, self-contained index.html, max 8 MB. Omit for an online game; list its existing platforms instead"New value: +"Original game links are the default. Add optional self-contained html only with preview_review declaring representative, sandbox-tested and preferable to direct access; max 8 MB"
    • addedInput schema / properties / preview_review
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Required for new html/files sent by an agent; all three flags must be true with an explicit reason. A declaration, not certification by static checks",
      +  "properties": {
      +    "preferable_to_direct_link": {
      +      "description": "Must be true only if creators benefit more than by opening the original game link",
      +      "type": "boolean"
      +    },
      +    "reason": {
      +      "description": "Explain that choice in 20–600 characters. It must be within the owner's authorized scope",
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "representative": {
      +      "description": "Must be true: this is representative of the actual game; it does not lose online/community, account, shop or ranking features",
      +      "type": "boolean"
      +    },
      +    "sandbox_tested": {
      +      "description": "Must be true only after playing this exact build successfully in the allow-scripts sandbox",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / review / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "blocking": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "code": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "enum": [
      -                "block",
      -                "warn",
      -                "info"
      -              ],
      -              "type": "string"
      -            },
      -            "message": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "level",
      -            "code",
      -            "message"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "critic": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "concerns": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "model": {
      -                "type": "string"
      -              },
      -              "score": {
      -                "type": "number"
      -              },
      -              "streamability": {
      -                "enum": [
      -                  "low",
      -                  "medium",
      -                  "high"
      -                ],
      -                "type": "string"
      -              },
      -              "strengths": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "verdict": {
      -                "enum": [
      -                  "pass",
      -                  "changes"
      -                ],
      -                "type": "string"
      -              },
      -              "vibe": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "model",
      -              "score",
      -              "vibe",
      -              "verdict",
      -              "strengths",
      -              "concerns",
      -              "streamability"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "curator_note": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "game_id": {
      -        "type": "string"
      -      },
      -      "genre": {
      -        "type": "string"
      -      },
      -      "has_playable": {
      -        "type": "boolean"
      -      },
      -      "media": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alt": {
      -              "maxLength": 200,
      -              "type": "string"
      -            },
      -            "type": {
      -              "enum": [
      -                "image",
      -                "video"
      -              ],
      -              "type": "string"
      -            },
      -            "url": {
      -              "description": "Public HTTPS screenshot, gameplay or trailer URL; validated without fetching it",
      -              "maxLength": 1000,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "type",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "monetization": {
      -        "type": "string"
      -      },
      -      "next_step": {
      -        "description": "What to do now",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "items": {
      -          "$ref": "#/properties/review/anyOf/0/properties/blocking/items"
      -        },
      -        "type": "array"
      -      },
      -      "pacts": {
      -        "description": "Open pacts creators can request",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "action": {
      -              "type": "string"
      -            },
      -            "created_at": {
      -              "description": "ISO-8601 time, UTC",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "min_audience": {
      -              "type": "number"
      -            },
      -            "open": {
      -              "type": "boolean"
      -            },
      -            "requirement": {
      -              "type": "string"
      -            },
      -            "share_pct": {
      -              "type": "number"
      -            },
      -            "window_days": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "action",
      -            "share_pct",
      -            "window_days",
      -            "requirement",
      -            "min_audience",
      -            "open",
      -            "created_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "platforms": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "currency": {
      -              "description": "Uppercase currency code, e.g. EUR or USD; required for a positive price",
      -              "pattern": "^[A-Z]{3}$",
      -              "type": "string"
      -            },
      -            "monetization": {
      -              "enum": [
      -                "paid",
      -                "free",
      -                "free_to_play",
      -                "subscription",
      -                "other"
      -              ],
      -              "type": "string"
      -            },
      -            "name": {
      -              "maxLength": 60,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "note": {
      -              "description": "Price conditions, subscription period or optional purchase details",
      -              "maxLength": 400,
      -              "type": "string"
      -            },
      -            "price": {
      -              "description": "This platform's purchase price. Omit an unknown price; zero means explicitly zero, never an assumed free game",
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "url": {
      -              "description": "Public HTTPS game/store URL",
      -              "maxLength": 1000,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "preview_url": {
      -        "description": "Optional playable version; null for a listing without a build",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "slug": {
      -        "type": "string"
      -      },
      -      "stage": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "checking",
      -          "changes_requested",
      -          "awaiting_curator",
      -          "listed",
      -          "rejected"
      -        ],
      -        "type": "string"
      -      },
      -      "store_url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "title": {
      -        "type": "string"
      -      },
      -      "updated_at": {
      -        "description": "ISO-8601 time, UTC",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "Public page, once listed",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "version": {
      -        "type": "integer"
      -      },
      -      "warnings": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "game_id",
      -      "slug",
      -      "title",
      -      "version",
      -      "status",
      -      "next_step",
      -      "genre",
      -      "stage",
      -      "store_url",
      -      "url",
      -      "preview_url",
      -      "has_playable",
      -      "media",
      -      "platforms",
      -      "monetization",
      -      "blocking",
      -      "notes",
      -      "critic",
      -      "curator_note",
      -      "pacts",
      -      "warnings",
      -      "updated_at"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "blocking": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "level": {
      +              "enum": [
      +                "block",
      +                "warn",
      +                "info"
      +              ],
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "level",
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "critic": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "concerns": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "model": {
      +                "type": "string"
      +              },
      +              "score": {
      +                "type": "number"
      +              },
      +              "streamability": {
      +                "enum": [
      +                  "low",
      +                  "medium",
      +                  "high"
      +                ],
      +                "type": "string"
      +              },
      +              "strengths": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "verdict": {
      +                "enum": [
      +                  "pass",
      +                  "changes"
      +                ],
      +                "type": "string"
      +              },
      +              "vibe": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "model",
      +              "score",
      +              "vibe",
      +              "verdict",
      +              "strengths",
      +              "concerns",
      +              "streamability"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "curator_note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "game_id": {
      +        "type": "string"
      +      },
      +      "genre": {
      +        "type": "string"
      +      },
      +      "has_playable": {
      +        "type": "boolean"
      +      },
      +      "media": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "alt": {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            "type": {
      +              "enum": [
      +                "image",
      +                "video"
      +              ],
      +              "type": "string"
      +            },
      +            "url": {
      +              "description": "Public HTTPS screenshot, gameplay or trailer URL; validated without fetching it",
      +              "maxLength": 1000,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "monetization": {
      +        "type": "string"
      +      },
      +      "next_step": {
      +        "description": "What to do now",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "items": {
      +          "$ref": "#/properties/review/anyOf/0/properties/blocking/items"
      +        },
      +        "type": "array"
      +      },
      +      "pacts": {
      +        "description": "Open pacts creators can request",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "action": {
      +              "type": "string"
      +            },
      +            "created_at": {
      +              "description": "ISO-8601 time, UTC",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "min_audience": {
      +              "type": "number"
      +            },
      +            "open": {
      +              "type": "boolean"
      +            },
      +            "requirement": {
      +              "type": "string"
      +            },
      +            "share_pct": {
      +              "type": "number"
      +            },
      +            "window_days": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "action",
      +            "share_pct",
      +            "window_days",
      +            "requirement",
      +            "min_audience",
      +            "open",
      +            "created_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "platforms": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "currency": {
      +              "description": "Uppercase currency code, e.g. EUR or USD; required for a positive price",
      +              "pattern": "^[A-Z]{3}$",
      +              "type": "string"
      +            },
      +            "monetization": {
      +              "enum": [
      +                "paid",
      +                "free",
      +                "free_to_play",
      +                "subscription",
      +                "other"
      +              ],
      +              "type": "string"
      +            },
      +            "name": {
      +              "maxLength": 60,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "note": {
      +              "description": "Price conditions, subscription period or optional purchase details",
      +              "maxLength": 400,
      +              "type": "string"
      +            },
      +            "price": {
      +              "description": "This platform's purchase price. Omit an unknown price; zero means explicitly zero, never an assumed free game",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "url": {
      +              "description": "Public HTTPS game/store URL",
      +              "maxLength": 1000,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "preview_review": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "preferable_to_direct_link": {
      +                "type": "boolean"
      +              },
      +              "reason": {
      +                "type": "string"
      +              },
      +              "representative": {
      +                "type": "boolean"
      +              },
      +              "sandbox_tested": {
      +                "type": "boolean"
      +              }
      +            },
      +            "required": [
      +              "representative",
      +              "sandbox_tested",
      +              "preferable_to_direct_link",
      +              "reason"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Current preview declaration, if supplied. The stored build association is private; static checks do not certify the declarations"
      +      },
      +      "preview_url": {
      +        "description": "Optional playable version; null for a listing without a build",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "slug": {
      +        "type": "string"
      +      },
      +      "stage": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "checking",
      +          "changes_requested",
      +          "awaiting_curator",
      +          "listed",
      +          "rejected"
      +        ],
      +        "type": "string"
      +      },
      +      "store_url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "updated_at": {
      +        "description": "ISO-8601 time, UTC",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Public page, once listed",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "version": {
      +        "type": "integer"
      +      },
      +      "warnings": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "game_id",
      +      "slug",
      +      "title",
      +      "version",
      +      "status",
      +      "next_step",
      +      "genre",
      +      "stage",
      +      "store_url",
      +      "url",
      +      "preview_url",
      +      "has_playable",
      +      "media",
      +      "platforms",
      +      "monetization",
      +      "preview_review",
      +      "blocking",
      +      "notes",
      +      "critic",
      +      "curator_note",
      +      "pacts",
      +      "warnings",
      +      "updated_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare mutation, idempotence and non-destructiveness; the description adds meaningful behavior beyond that, including safe retry semantics, no duplicate/credential replay, and the fact that success is curator submission rather than automatic listing. It does not cover rate limits or broader failure modes, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the description is dense and repetitive: preview conditions and retry safety are each stated more than once, and the clauses are packed into long sentences without clear structure. For a 21-parameter tool some detail is warranted, but the same points could be made more efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation tool, the description covers the critical operational context: authorization, idempotency, preview requirements, and submission semantics. Since an output schema exists, return values need not be explained, but the description could do more to clarify the boundary with submit_game/update_game and conditional media/platform requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 76% schema description coverage, the schema already documents many parameters, but the description adds important semantics for authentication via api_key or studio{name,contact}, human_approved scope, idempotency_key length/retry behavior, and the preview_review flags and reason constraints. Some complex params such as media and platforms remain only partially clarified in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: publishing the original game with media, platform links, per-platform prices/models, description and pacts in one operation. It clarifies original-game versus optional preview handling, but it does not explicitly distinguish this tool from siblings like submit_game or update_game.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful context for when to use the tool: complete original-game listing in one operation, with previews only when representative, sandbox-tested, better than direct access, and authorized. It also covers retry guidance, but it never explicitly names alternative sibling tools or when to choose them instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources