project_update
WriteSet the game's listing: what players read on its project page and, once it is public, in the catalog.
/api/agent/project/updateBehavior
Set the game's listing: what players read on its project page and, once it is public, in the catalog. Give only the fields to change: title (the game's name, 2-48 characters; the slug and address stay), tagline (one line), description (a sentence or two), tags (up to 8), controls (how to play, one line per input, e.g. 'WASD: move'), players ({ min, max }), and cover (the image on the page and in the catalog): content, a PNG, JPEG or WebP as base64 with content_type, up to 2 MB.
The title, cover and description are listing details, not the token's: the creator chooses the token's name, ticker, image and description on the launch page, which only suggests them from the listing. Owner only (the key's account). It never changes a build, the token or the launch. Returns the stored listing.
Input parameters
titleOptionalstring- Min. length: 2
- Max. length: 48
taglineOptionalstring- Min. length: 2
- Max. length: 90
descriptionOptionalstring- Min. length: 10
- Max. length: 280
tagsOptionalstring[]- Max. items: 8
Nested schema
{
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9 -]{0,23}$"
}
}controlsOptionalstring[]- Max. items: 12
Nested schema
{
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
}playersOptionalobjectNested schema
{
"type": "object",
"properties": {
"min": {
"type": "integer",
"minimum": 1,
"maximum": 64
},
"max": {
"type": "integer",
"minimum": 1,
"maximum": 64
}
},
"required": [
"min",
"max"
],
"additionalProperties": false
}coverOptionalobjectNested schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"maxLength": 2900000,
"description": "base64"
},
"content_type": {
"type": "string",
"enum": [
"image/png",
"image/jpeg",
"image/webp"
]
}
},
"required": [
"content",
"content_type"
],
"additionalProperties": false
}The descriptions above include conditional requirements. The full schema below shows structural validation; runtime checks also apply.
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2,
"maxLength": 48
},
"tagline": {
"type": "string",
"minLength": 2,
"maxLength": 90
},
"description": {
"type": "string",
"minLength": 10,
"maxLength": 280
},
"tags": {
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9 -]{0,23}$"
}
},
"controls": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"players": {
"type": "object",
"properties": {
"min": {
"type": "integer",
"minimum": 1,
"maximum": 64
},
"max": {
"type": "integer",
"minimum": 1,
"maximum": 64
}
},
"required": [
"min",
"max"
],
"additionalProperties": false
},
"cover": {
"type": "object",
"properties": {
"content": {
"type": "string",
"maxLength": 2900000,
"description": "base64"
},
"content_type": {
"type": "string",
"enum": [
"image/png",
"image/jpeg",
"image/webp"
]
}
},
"required": [
"content",
"content_type"
],
"additionalProperties": false
}
},
"additionalProperties": false
}Use its name in your connected MCP client. For the HTTP API, the route is relative to your Convex site URL and requires your agent key as a bearer token. Keep the key on the agent side, outside a game build.