Generated from the operation catalog:
src/lib/ops/public-catalog.json in publicsummerengine at 0d85f61e2b and the summer-engine npm package 4.0.0 for engine and local operations. If something here is wrong, the operation’s definition is wrong.| Operation | What it does | Asks you first |
|---|---|---|
marketing.applications | The growth applications sent for one game (from marketing.apply or the Grow pages): service, status, goals, budget and when, newest first. | Never |
marketing.apply | Send an application for a service Summer runs for a game (promotion, paid ads, email outreach, creator introductions, featured placement, A/B test). | Yes, by default |
marketing.content_feed | The trends that fit a Content game, each with its video idea (title, what we make, character, caption, hashtags), whether the list is unlocked, and how many videos it may still make. | Never |
marketing.content_videos | A Content game’s videos, newest first, with the running ones brought up to date: status, the video and the version to post. | Never |
marketing.get_brand_pack | Read a Content game’s brand pack: its name, logo, characters with their pictures, colours, style, do and don’t rules, niches. | Never |
marketing.list_content_games | The games the person set up in Grow Content (each with its brand pack): Content id and name. | Never |
marketing.make_video | Make the video for one idea of a Content game: the trend’s clip with the game’s character swapped in. | Not by default |
marketing.mark_posted | Record that the person posted a ready Content video (when they say so). | Not by default |
marketing.save_brand_pack | Save a Content game’s brand pack, or make a new Content game from a pack (no game). | Not by default |
applications
marketing.applications: List growth applications
The growth applications sent for one game (from marketing.apply or the Grow pages): service, status, goals, budget and when, newest first. Next: marketing.apply.
| MCP | summer_call with "op": "marketing.applications" |
| CLI | summer marketing applications |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Reads only. Changes nothing. |
| Asks you first | No. It changes nothing. |
| 3.x names | summer_grow_applications |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
}
},
"required": [
"gameId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"applications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"service": {
"type": "string"
},
"status": {
"type": "string"
},
"goals": {
"type": "string"
},
"budget": {
"type": "string"
},
"sentAt": {
"type": "string"
}
},
"required": [
"id",
"service",
"status",
"goals",
"budget",
"sentAt"
],
"additionalProperties": false
}
},
"note": {
"type": "string"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"game",
"applications",
"note",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.applications",
"input": {
"gameId": "g_123"
}
}
}
summer marketing applications --game-id g_123
apply
marketing.apply: Apply for a growth service
Send an application for a service Summer runs for a game (promotion, paid ads, email outreach, creator introductions, featured placement, A/B test). Never a purchase; the Summer team replies by email. Runs when the person allows Contact people; otherwise needs_approval.
| MCP | summer_call with "op": "marketing.apply" |
| CLI | summer marketing apply |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Changes your own drafts, files or settings. Nobody else sees it yet. |
| Asks you first | Yes: Contact people is off by default in Agent permissions. |
| 3.x names | summer_grow_apply |
| Input | Type | Required | Description |
|---|---|---|---|
service | ”promotion” | “paid_ads” | “email_outreach” | “creator_connect” | “featured_placement” | “ab_test” | Yes | |
gameId | string | Yes | From games.list. |
goals | string | Yes | What the person hopes to achieve, in their words. Length 1 to 2000. |
budget | object | Yes | The budget they have in mind (paid_ads: the whole ad budget). |
budget.amount | number | Yes | Range 0 to 1000000000. |
budget.currency | ”USD” | “EUR” | “GBP” | “CAD” | “AUD” | “JPY” | “SEK” | “NOK” | “DKK” | “CHF” | “BRL” | No | Default "USD". |
details | object | No | The service’s own fields; leave out what does not apply. |
details.channels | ”google_search” | “youtube” | “meta” | “tiktok” | “reddit”[] | No | paid_ads: where the ads run. Items 0 to 5. |
details.countries | string[] | No | paid_ads: ISO country codes. Items 0 to 50. |
details.durationDays | integer | No | paid_ads: how many days. Range 7 to 90. |
details.goal | ”players” | “wishlists” | “sales” | No | paid_ads: what the ads aim for. |
details.creative | ”own” | “summer_makes_it” | No | paid_ads: who makes the ads. |
details.creativeNote | string | No | Length 0 to 300. |
details.audience | string | No | email_outreach: who to email; promotion: everyone, new, returning or lapsed players. Length 0 to 200. |
details.message | string | No | email_outreach: what the email is about. Length 0 to 1000. |
details.partners | ”streamers” | “video_makers” | “game_creators”[] | No | creator_connect: who to meet. Items 0 to 3. |
details.idea | string | No | creator_connect: the idea for a collaboration. Length 0 to 1000. |
details.placement | ”home-hero” | “new-noteworthy” | “seasonal” | “genre-shelf” | No | featured_placement. |
details.pitch | string | No | featured_placement: why it should be featured. Length 0 to 400. |
details.when | string | No | featured_placement: when, e.g. Next available. Length 0 to 40. |
details.discountPercent | integer | No | promotion. Range 5 to 90. |
details.startsAt | string | No | promotion: start (UTC). Length 0 to 40. |
details.endsAt | string | No | promotion: end (UTC). Length 0 to 40. |
details.kind | ”store-art” | “price” | “flag” | No | ab_test: what changes. |
details.variants | string[] | No | ab_test: the versions, control first. Items 0 to 4. |
details.metric | ”store-to-play” | “d1” | “purchase” | “session-length” | No | ab_test: the primary metric. |
dryRun | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
idempotencyKey | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"service": {
"type": "string",
"enum": [
"promotion",
"paid_ads",
"email_outreach",
"creator_connect",
"featured_placement",
"ab_test"
]
},
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"goals": {
"description": "What the person hopes to achieve, in their words.",
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"budget": {
"description": "The budget they have in mind (paid_ads: the whole ad budget).",
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"currency": {
"default": "USD",
"type": "string",
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"JPY",
"SEK",
"NOK",
"DKK",
"CHF",
"BRL"
]
}
},
"required": [
"amount"
]
},
"details": {
"description": "The service's own fields; leave out what does not apply.",
"type": "object",
"properties": {
"channels": {
"description": "paid_ads: where the ads run.",
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"google_search",
"youtube",
"meta",
"tiktok",
"reddit"
]
}
},
"countries": {
"description": "paid_ads: ISO country codes.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
}
},
"durationDays": {
"description": "paid_ads: how many days.",
"type": "integer",
"minimum": 7,
"maximum": 90
},
"goal": {
"description": "paid_ads: what the ads aim for.",
"type": "string",
"enum": [
"players",
"wishlists",
"sales"
]
},
"creative": {
"description": "paid_ads: who makes the ads.",
"type": "string",
"enum": [
"own",
"summer_makes_it"
]
},
"creativeNote": {
"type": "string",
"maxLength": 300
},
"audience": {
"description": "email_outreach: who to email; promotion: everyone, new, returning or lapsed players.",
"type": "string",
"maxLength": 200
},
"message": {
"description": "email_outreach: what the email is about.",
"type": "string",
"maxLength": 1000
},
"partners": {
"description": "creator_connect: who to meet.",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"streamers",
"video_makers",
"game_creators"
]
}
},
"idea": {
"description": "creator_connect: the idea for a collaboration.",
"type": "string",
"maxLength": 1000
},
"placement": {
"description": "featured_placement.",
"type": "string",
"enum": [
"home-hero",
"new-noteworthy",
"seasonal",
"genre-shelf"
]
},
"pitch": {
"description": "featured_placement: why it should be featured.",
"type": "string",
"maxLength": 400
},
"when": {
"description": "featured_placement: when, e.g. Next available.",
"type": "string",
"maxLength": 40
},
"discountPercent": {
"description": "promotion.",
"type": "integer",
"minimum": 5,
"maximum": 90
},
"startsAt": {
"description": "promotion: start (UTC).",
"type": "string",
"maxLength": 40
},
"endsAt": {
"description": "promotion: end (UTC).",
"type": "string",
"maxLength": 40
},
"kind": {
"description": "ab_test: what changes.",
"type": "string",
"enum": [
"store-art",
"price",
"flag"
]
},
"variants": {
"description": "ab_test: the versions, control first.",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"metric": {
"description": "ab_test: the primary metric.",
"type": "string",
"enum": [
"store-to-play",
"d1",
"purchase",
"session-length"
]
}
},
"additionalProperties": false
},
"dryRun": {
"description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
"type": "boolean"
},
"idempotencyKey": {
"description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"service",
"gameId",
"goals",
"budget"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"status": {
"type": "string"
},
"service": {
"type": "string"
},
"charged": {
"type": "boolean",
"const": false
},
"message": {
"type": "string"
},
"growUrl": {
"type": "string"
}
},
"required": [
"applicationId",
"status",
"service",
"charged",
"message",
"growUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.apply",
"input": {
"service": "paid_ads",
"gameId": "g_123",
"goals": "More wishlists before launch",
"budget": {
"amount": 500,
"currency": "USD"
},
"details": {
"channels": [
"youtube",
"tiktok"
],
"durationDays": 14,
"goal": "wishlists"
}
}
}
}
summer marketing apply --service paid_ads --game-id g_123 --goals 'More wishlists before launch' --input '{"budget":{"amount":500,"currency":"USD"},"details":{"channels":["youtube","tiktok"],"durationDays":14,"goal":"wishlists"}}'
content_feed
marketing.content_feed: Read a game’s Content ideas
The trends that fit a Content game, each with its video idea (title, what we make, character, caption, hashtags), whether the list is unlocked, and how many videos it may still make. Locked rows show a title only. Next: marketing.make_video.
| MCP | summer_call with "op": "marketing.content_feed" |
| CLI | summer marketing content-feed |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Reads only. Changes nothing. |
| Asks you first | No. It changes nothing. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | Yes | The game’s Content id, from marketing.list_content_games. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game's Content id, from marketing.list_content_games.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
}
},
"required": [
"game"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"game": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"game",
"name"
],
"additionalProperties": false
},
"unlocked": {
"type": "boolean"
},
"totalIdeas": {
"type": "number"
},
"items": {
"description": "Each trend and its idea; ideaId is the trend id.",
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"pending": {
"description": "Ideas still being written; read again shortly.",
"type": "number"
},
"videosLeft": {
"description": "Videos it may still make before the list is unlocked; null once unlocked.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"game",
"unlocked",
"totalIdeas",
"items",
"pending",
"videosLeft"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.content_feed",
"input": {
"game": "dont-pray"
}
}
}
summer marketing content-feed --game dont-pray
content_videos
marketing.content_videos: List a game’s Content videos
A Content game’s videos, newest first, with the running ones brought up to date: status, the video and the version to post. Next: marketing.mark_posted once the person posted one.
| MCP | summer_call with "op": "marketing.content_videos" |
| CLI | summer marketing content-videos |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Reads only. Changes nothing. |
| Asks you first | No. It changes nothing. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | Yes | The game’s Content id, from marketing.list_content_games. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game's Content id, from marketing.list_content_games.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
}
},
"required": [
"game"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"videoId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"running",
"ready",
"failed"
]
},
"createdAt": {
"type": "string"
},
"videoUrl": {
"type": "string"
},
"postVideoUrl": {
"description": "The same video with the \"Play on summer.games\" line, for posting.",
"type": "string"
},
"message": {
"type": "string"
},
"postedAt": {
"type": "string"
}
},
"required": [
"videoId",
"ideaId",
"status",
"createdAt"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.content_videos",
"input": {
"game": "dont-pray"
}
}
}
summer marketing content-videos --game dont-pray
get_brand_pack
marketing.get_brand_pack: Read a game’s brand pack
Read a Content game’s brand pack: its name, logo, characters with their pictures, colours, style, do and don’t rules, niches. Next: marketing.save_brand_pack to change it.
| MCP | summer_call with "op": "marketing.get_brand_pack" |
| CLI | summer marketing get-brand-pack |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Reads only. Changes nothing. |
| Asks you first | No. It changes nothing. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | Yes | The game’s Content id, from marketing.list_content_games. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game's Content id, from marketing.list_content_games.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
}
},
"required": [
"game"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"pack": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"pack"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.get_brand_pack",
"input": {
"game": "dont-pray"
}
}
}
summer marketing get-brand-pack --game dont-pray
list_content_games
marketing.list_content_games: List my Content games
The games the person set up in Grow Content (each with its brand pack): Content id and name. Next: marketing.content_feed or marketing.get_brand_pack with a game.
| MCP | summer_call with "op": "marketing.list_content_games" |
| CLI | summer marketing list-content-games |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Reads only. Changes nothing. |
| Asks you first | No. It changes nothing. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {}
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"game": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"game",
"name"
],
"additionalProperties": false
}
},
"studioUrl": {
"type": "string"
}
},
"required": [
"items",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.list_content_games",
"input": {}
}
}
summer marketing list-content-games
make_video
marketing.make_video: Make a Content video
Make the video for one idea of a Content game: the trend’s clip with the game’s character swapped in. Spends the person’s credits. Takes a few minutes. Returns the video. Next: marketing.content_videos until it is ready.
| MCP | summer_call with "op": "marketing.make_video" |
| CLI | summer marketing make-video |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Spends your credits. |
| Asks you first | No: Spend credits is on by default in Agent permissions. When it is off, your agent asks you first. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | Yes | The game’s Content id, from marketing.list_content_games. |
ideaId | string | Yes | A trend id from marketing.content_feed. Length 1 to 81. |
dryRun | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
idempotencyKey | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game's Content id, from marketing.list_content_games.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
},
"ideaId": {
"description": "A trend id from marketing.content_feed.",
"type": "string",
"minLength": 1,
"maxLength": 81
},
"dryRun": {
"description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
"type": "boolean"
},
"idempotencyKey": {
"description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"game",
"ideaId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"videoId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"running",
"ready",
"failed"
]
},
"createdAt": {
"type": "string"
},
"videoUrl": {
"type": "string"
},
"postVideoUrl": {
"description": "The same video with the \"Play on summer.games\" line, for posting.",
"type": "string"
},
"message": {
"type": "string"
},
"postedAt": {
"type": "string"
}
},
"required": [
"videoId",
"ideaId",
"status",
"createdAt"
],
"additionalProperties": false
}
},
"required": [
"video"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.make_video",
"input": {
"game": "dont-pray",
"ideaId": "pov-hide-from-monster"
}
}
}
summer marketing make-video --game dont-pray --idea-id pov-hide-from-monster
mark_posted
marketing.mark_posted: Mark a Content video as posted
Record that the person posted a ready Content video (when they say so). Returns the video. Next: marketing.content_videos.
| MCP | summer_call with "op": "marketing.mark_posted" |
| CLI | summer marketing mark-posted |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Changes your own drafts, files or settings. Nobody else sees it yet. |
| Asks you first | No: Make and build is on by default in Agent permissions. When it is off, your agent asks you first. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | Yes | The game’s Content id, from marketing.list_content_games. |
videoId | string | Yes | From marketing.content_videos. Length 1 to 200. |
dryRun | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
idempotencyKey | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game's Content id, from marketing.list_content_games.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
},
"videoId": {
"description": "From marketing.content_videos.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"dryRun": {
"description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
"type": "boolean"
},
"idempotencyKey": {
"description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"game",
"videoId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"videoId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"running",
"ready",
"failed"
]
},
"createdAt": {
"type": "string"
},
"videoUrl": {
"type": "string"
},
"postVideoUrl": {
"description": "The same video with the \"Play on summer.games\" line, for posting.",
"type": "string"
},
"message": {
"type": "string"
},
"postedAt": {
"type": "string"
}
},
"required": [
"videoId",
"ideaId",
"status",
"createdAt"
],
"additionalProperties": false
}
},
"required": [
"video"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.mark_posted",
"input": {
"game": "dont-pray",
"videoId": "gen_123"
}
}
}
summer marketing mark-posted --game dont-pray --video-id gen_123
save_brand_pack
marketing.save_brand_pack: Save a brand pack
Save a Content game’s brand pack, or make a new Content game from a pack (no game). The whole pack is replaced; read it first with marketing.get_brand_pack. Returns the pack. Next: marketing.content_feed.
| MCP | summer_call with "op": "marketing.save_brand_pack" |
| CLI | summer marketing save-brand-pack |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Changes your own drafts, files or settings. Nobody else sees it yet. |
| Asks you first | No: Make and build is on by default in Agent permissions. When it is off, your agent asks you first. |
| Input | Type | Required | Description |
|---|---|---|---|
game | string | No | The game to change; leave it out to make a new game from the pack’s name. |
pack | object | Yes | |
pack.gameName | string | Yes | Length 1 to 80. |
pack.summerGamesSlug | string | null | No | The game’s summer.games page slug, for the “Play on” line. |
pack.logo | object | null | No | |
pack.characters | object[] | No | Items 0 to 8. |
pack.characters[].name | string | Yes | Length 1 to 60. |
pack.characters[].role | string | No | Length 0 to 80. |
pack.characters[].description | string | No | Length 0 to 600. |
pack.characters[].images | string[] | No | Items 0 to 4. |
pack.colors | object[] | No | Items 0 to 10. |
pack.colors[].name | string | No | Length 0 to 40. |
pack.colors[].hex | string | Yes | |
pack.style | string | No | Length 0 to 1200. |
pack.rules | object | No | |
pack.rules.do | string[] | No | Items 0 to 12. |
pack.rules.dont | string[] | No | Items 0 to 12. |
pack.niches | ”pvp” | “fantasy” | “action” | “horror” | “cozy” | “casual” | “shooter” | “rpg” | “multiplayer”[] | No | Items 0 to 9. |
pack.rightsConfirmed | boolean | No | The person says they own the character pictures; videos need it. Set it only when they said so. |
dryRun | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
idempotencyKey | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"game": {
"description": "The game to change; leave it out to make a new game from the pack's name.",
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"
},
"pack": {
"type": "object",
"properties": {
"gameName": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"summerGamesSlug": {
"description": "The game's summer.games page slug, for the \"Play on\" line.",
"anyOf": [
{
"type": "string",
"maxLength": 61
},
{
"type": "null"
}
]
},
"logo": {
"anyOf": [
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"pattern": "^https:\\/\\/"
}
},
"required": [
"url"
]
},
{
"type": "null"
}
]
},
"characters": {
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"role": {
"type": "string",
"maxLength": 80
},
"description": {
"type": "string",
"maxLength": 600
},
"images": {
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"pattern": "^https:\\/\\/"
}
}
},
"required": [
"name"
]
}
},
"colors": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 40
},
"hex": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"required": [
"hex"
]
}
},
"style": {
"type": "string",
"maxLength": 1200
},
"rules": {
"type": "object",
"properties": {
"do": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"dont": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 160
}
}
}
},
"niches": {
"maxItems": 9,
"type": "array",
"items": {
"type": "string",
"enum": [
"pvp",
"fantasy",
"action",
"horror",
"cozy",
"casual",
"shooter",
"rpg",
"multiplayer"
]
}
},
"rightsConfirmed": {
"description": "The person says they own the character pictures; videos need it. Set it only when they said so.",
"type": "boolean"
}
},
"required": [
"gameName"
]
},
"dryRun": {
"description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
"type": "boolean"
},
"idempotencyKey": {
"description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"pack"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"pack": {
"type": "object",
"additionalProperties": {}
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"game": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"game",
"name"
],
"additionalProperties": false
}
}
},
"required": [
"pack",
"items"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "marketing.save_brand_pack",
"input": {
"pack": {
"gameName": "Frog Knight",
"characters": [
{
"name": "Pip",
"images": [
"https://res.cloudinary.com/x/pip.png"
]
}
],
"niches": [
"cozy"
]
}
}
}
}
summer marketing save-brand-pack --input '{"pack":{"gameName":"Frog Knight","characters":[{"name":"Pip","images":["https://res.cloudinary.com/x/pip.png"]}],"niches":["cozy"]}}'

