> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Operations: pricing

> What players pay: base price, country prices and sales. For each operation: what it does, whether it asks you first, its inputs and an example call.

What players pay: base price, country prices and sales. 6 operations. How to call them, and what the answers mean: [Operations reference](/mcp/operations).

<Note>
  Generated from the `summer-engine` npm package `4.2.0`: its public operation catalog (`registry/operations/public-catalog.json`) and its engine and local operations. If something here is wrong, the operation's definition is wrong.
</Note>

| Operation | What it does | Asks you first |
| - | - | - |
| [`pricing.clear_country`](#clear_country) | Remove a game's own price in one country, so players there pay the base price again. | Yes, for now |
| [`pricing.clear_discount`](#clear_discount) | End or cancel a game's sale, running or scheduled, so players pay the base price. | Yes, for now |
| [`pricing.get`](#get) | A game's price on Summer Games: the base price, any sale (now or scheduled), what players pay now and the prices set per country. | Never |
| [`pricing.schedule_discount`](#schedule_discount) | Put a paid game on sale: a percent off from startsAt (default now) to endsAt, at most 90 days, replacing any other sale. | Yes, for now |
| [`pricing.set_base`](#set_base) | Change a paid game's base price on Summer Games. | Yes, for now |
| [`pricing.set_country`](#set_country) | Set a paid game's price in one country, rounded to a whole dollar ending in .99 unless roundTo99 is false. | Yes, for now |

***

### clear\_country

`pricing.clear_country`: **Remove a country's price**

Remove a game's own price in one country, so players there pay the base price again. Runs when the person allows Prices and live changes; otherwise answers needs\_approval with a link.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "pricing.clear_country"` |
| **CLI** | `summer pricing clear-country` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes what players see or pay, or who can act on a game. |
| **Asks you first** | Yes, for now: Summer Games still asks you first. Soon it follows **Prices and live changes** in Agent permissions (on by default). |
| **Retry key** | Required: send a new `idempotencyKey` for each new request, the same one only to retry it. |
| **3.x names** | `summer_grow_prices#clear_country` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `country` | string | Yes | ISO country code, e.g. DE. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | Yes | Retry key, required: a new one for each new request; reuse it only to retry the identical request. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "country": {
        "description": "ISO country code, e.g. DE.",
        "type": "string",
        "pattern": "^[A-Za-z]{2}$"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key, required: a new one for each new request; reuse it only to retry the identical request.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "gameId",
      "country",
      "idempotencyKey"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Brazil pays the base price again.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "pricing.clear_country",
      "input": {
        "gameId": "g_123",
        "country": "BR"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing clear-country --game-id g_123 --country BR
  ```
</CodeGroup>

***

### clear\_discount

`pricing.clear_discount`: **End a game's sale**

End or cancel a game's sale, running or scheduled, so players pay the base price. Runs when the person allows Prices and live changes; otherwise answers needs\_approval with a link.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "pricing.clear_discount"` |
| **CLI** | `summer pricing clear-discount` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes what players see or pay, or who can act on a game. |
| **Asks you first** | Yes, for now: Summer Games still asks you first. Soon it follows **Prices and live changes** in Agent permissions (on by default). |
| **Retry key** | Required: send a new `idempotencyKey` for each new request, the same one only to retry it. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | Yes | Retry key, required: a new one for each new request; reuse it only to retry the identical request. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key, required: a new one for each new request; reuse it only to retry the identical request.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "gameId",
      "idempotencyKey"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** End the sale now.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "pricing.clear_discount",
      "input": {
        "gameId": "g_123"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing clear-discount --game-id g_123
  ```
</CodeGroup>

***

### get

`pricing.get`: **Read a game's prices**

A game's price on Summer Games: the base price, any sale (now or scheduled), what players pay now and the prices set per country. Next: pricing.set\_base or pricing.schedule\_discount when the owner asks.

| | |
| - | - |
| **MCP** | `summer_pricing_get`, a tool on the hosted MCP. Elsewhere: `summer_call` with `"op": "pricing.get"` |
| **CLI** | `summer pricing get` |
| **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_prices` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      }
    },
    "required": [
      "gameId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** What does this game cost?

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_pricing_get",
    "arguments": {
      "gameId": "g_123"
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing get --game-id g_123
  ```
</CodeGroup>

***

### schedule\_discount

`pricing.schedule_discount`: **Put a game on sale**

Put a paid game on sale: a percent off from startsAt (default now) to endsAt, at most 90 days, replacing any other sale. Runs when the person allows Prices and live changes; otherwise answers needs\_approval with a link.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "pricing.schedule_discount"` |
| **CLI** | `summer pricing schedule-discount` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes what players see or pay, or who can act on a game. |
| **Asks you first** | Yes, for now: Summer Games still asks you first. Soon it follows **Prices and live changes** in Agent permissions (on by default). |
| **Retry key** | Required: send a new `idempotencyKey` for each new request, the same one only to retry it. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `percent` | integer | Yes | Percent off, 1 to 90. Range 1 to 90. |
| `startsAt` | string | No | When the sale starts (ISO 8601); default: as soon as the owner approves. |
| `endsAt` | string | Yes | When the sale ends (ISO 8601). |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | Yes | Retry key, required: a new one for each new request; reuse it only to retry the identical request. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "percent": {
        "description": "Percent off, 1 to 90.",
        "type": "integer",
        "minimum": 1,
        "maximum": 90
      },
      "startsAt": {
        "description": "When the sale starts (ISO 8601); default: as soon as the owner approves.",
        "type": "string",
        "format": "date-time",
        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      },
      "endsAt": {
        "description": "When the sale ends (ISO 8601).",
        "type": "string",
        "format": "date-time",
        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key, required: a new one for each new request; reuse it only to retry the identical request.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "gameId",
      "percent",
      "endsAt",
      "idempotencyKey"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** A 25% sale over the holiday weekend.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "pricing.schedule_discount",
      "input": {
        "gameId": "g_123",
        "percent": 25,
        "startsAt": "2026-11-27T17:00:00Z",
        "endsAt": "2026-12-02T17:00:00Z"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing schedule-discount --game-id g_123 --percent 25 --starts-at 2026-11-27T17:00:00Z --ends-at 2026-12-02T17:00:00Z
  ```
</CodeGroup>

***

### set\_base

`pricing.set_base`: **Set the base price**

Change a paid game's base price on Summer Games. Runs at once when the person allows Prices and live changes; otherwise answers needs\_approval with a link and changes nothing until they approve. Next: pricing.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "pricing.set_base"` |
| **CLI** | `summer pricing set-base` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes what players see or pay, or who can act on a game. |
| **Asks you first** | Yes, for now: Summer Games still asks you first. Soon it follows **Prices and live changes** in Agent permissions (on by default). |
| **Retry key** | Required: send a new `idempotencyKey` for each new request, the same one only to retry it. |
| **3.x names** | `summer_grow_prices#set_base` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `price` | object | Yes | US dollars in cents, 50 to 100000. |
| `price.currency` | "USD" | Yes | |
| `price.amountMinor` | integer | Yes | Range 50 to 100000. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | Yes | Retry key, required: a new one for each new request; reuse it only to retry the identical request. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "price": {
        "description": "US dollars in cents, 50 to 100000.",
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "const": "USD"
          },
          "amountMinor": {
            "description": "",
            "type": "integer",
            "minimum": 50,
            "maximum": 100000
          }
        },
        "required": [
          "currency",
          "amountMinor"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key, required: a new one for each new request; reuse it only to retry the identical request.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "gameId",
      "price",
      "idempotencyKey"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Lower the price to 7.99 dollars.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "pricing.set_base",
      "input": {
        "gameId": "g_123",
        "price": {
          "currency": "USD",
          "amountMinor": 799
        }
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing set-base --game-id g_123 --input '{"price":{"currency":"USD","amountMinor":799}}'
  ```
</CodeGroup>

***

### set\_country

`pricing.set_country`: **Set a country's price**

Set a paid game's price in one country, rounded to a whole dollar ending in .99 unless roundTo99 is false. Runs when the person allows Prices and live changes; otherwise answers needs\_approval with a link.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "pricing.set_country"` |
| **CLI** | `summer pricing set-country` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes what players see or pay, or who can act on a game. |
| **Asks you first** | Yes, for now: Summer Games still asks you first. Soon it follows **Prices and live changes** in Agent permissions (on by default). |
| **Retry key** | Required: send a new `idempotencyKey` for each new request, the same one only to retry it. |
| **3.x names** | `summer_grow_prices#set_country` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `country` | string | Yes | ISO country code, e.g. DE. |
| `price` | object | Yes | US dollars in cents, 50 to 100000. |
| `price.currency` | "USD" | Yes | |
| `price.amountMinor` | integer | Yes | Range 50 to 100000. |
| `roundTo99` | boolean | No | Round to a whole dollar ending in .99, like the Prices page. Default `true`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | Yes | Retry key, required: a new one for each new request; reuse it only to retry the identical request. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "country": {
        "description": "ISO country code, e.g. DE.",
        "type": "string",
        "pattern": "^[A-Za-z]{2}$"
      },
      "price": {
        "description": "US dollars in cents, 50 to 100000.",
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "const": "USD"
          },
          "amountMinor": {
            "description": "",
            "type": "integer",
            "minimum": 50,
            "maximum": 100000
          }
        },
        "required": [
          "currency",
          "amountMinor"
        ]
      },
      "roundTo99": {
        "description": "Round to a whole dollar ending in .99, like the Prices page.",
        "default": true,
        "type": "boolean"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key, required: a new one for each new request; reuse it only to retry the identical request.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "gameId",
      "country",
      "price",
      "idempotencyKey"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "base": {
        "description": "null: the game is free.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "discount": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "percent": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "startsAt": {
                "type": "string"
              },
              "endsAt": {
                "type": "string"
              }
            },
            "required": [
              "percent",
              "startsAt",
              "endsAt"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "playersPayNow": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "amountMinor": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "currency",
              "amountMinor"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "purchasable": {
        "description": "false until payouts are set up, or while Stripe restricts them.",
        "type": "boolean"
      },
      "countries": {
        "description": "Prices set per country; every other country pays the base price. null: not readable yet.",
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "const": "USD"
                    },
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "currency",
                    "amountMinor"
                  ],
                  "additionalProperties": false
                },
                "includesTax": {
                  "type": "boolean"
                }
              },
              "required": [
                "country",
                "name",
                "price",
                "includesTax"
              ],
              "additionalProperties": false
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "name",
      "base",
      "discount",
      "playersPayNow",
      "purchasable",
      "countries",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** A lower price in Brazil.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "pricing.set_country",
      "input": {
        "gameId": "g_123",
        "country": "BR",
        "price": {
          "currency": "USD",
          "amountMinor": 499
        }
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer pricing set-country --game-id g_123 --country BR --input '{"price":{"currency":"USD","amountMinor":499}}'
  ```
</CodeGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.