Skip to main content
Glama

apple_update_age_rating

Updates the App Store age-rating questionnaire for a declaration ID, setting content frequency, gambling, and override fields so an app's rating stays current and compliant.

Instructions

Update the current App Store age-rating questionnaire. Prefer NONE, INFREQUENT, or FREQUENT for frequency fields; legacy values remain accepted by Apple for compatibility.

Input Schema

NameRequiredDescriptionDefault
lootBoxNo
contestsNo
gamblingNo
advertisingNo
ageRatingIdYesAge Rating Declaration ID
kidsAgeBandNo
socialMediaNo
ageAssuranceNo
messagingAndChatNo
parentalControlsNo
gamblingSimulatedNo
violenceRealisticNo
gunsOrOtherWeaponsNo
horrorOrFearThemesNo
ageRatingOverrideV2No
userGeneratedContentNo
profanityOrCrudeHumorNo
sexualContentOrNudityNo
unrestrictedWebAccessNo
healthOrWellnessTopicsNo
koreaAgeRatingOverrideNo
matureOrSuggestiveThemesNo
socialMediaAgeRestrictedNo
violenceCartoonOrFantasyNo
developerAgeRatingInfoUrlNo
medicalOrTreatmentInformationNo
sexualContentGraphicAndNudityNo
alcoholTobaccoOrDrugUseOrReferencesNo
violenceRealisticProlongedGraphicOrSadisticNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed45 schema fields changedv0.7.0
    • addedInput schema / properties / advertising
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / ageAssurance
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / ageRatingOverrideV2
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "NONE",
      +        "NINE_PLUS",
      +        "THIRTEEN_PLUS",
      +        "SIXTEEN_PLUS",
      +        "EIGHTEEN_PLUS",
      +        "UNRATED"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / alcoholTobaccoOrDrugUseOrReferences / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "NONE",
      +      "INFREQUENT",
      +      "FREQUENT",
      +      "INFREQUENT_OR_MILD",
      +      "FREQUENT_OR_INTENSE"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / alcoholTobaccoOrDrugUseOrReferences / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / alcoholTobaccoOrDrugUseOrReferences / type
      Removed value: -"string"
    • addedInput schema / properties / contests
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / developerAgeRatingInfoUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / gambling
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • removedInput schema / properties / gamblingAndContests
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedInput schema / properties / gamblingSimulated / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / gamblingSimulated / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / gamblingSimulated / type
      Removed value: -"string"
    • addedInput schema / properties / gunsOrOtherWeapons
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / healthOrWellnessTopics
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / horrorOrFearThemes / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / horrorOrFearThemes / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / horrorOrFearThemes / type
      Removed value: -"string"
    • addedInput schema / properties / kidsAgeBand
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "FIVE_AND_UNDER",
      +        "SIX_TO_EIGHT",
      +        "NINE_TO_ELEVEN"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / koreaAgeRatingOverride
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "NONE",
      +        "ALL",
      +        "TWELVE_PLUS",
      +        "FIFTEEN_PLUS",
      +        "NINETEEN_PLUS"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / lootBox
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / matureOrSuggestiveThemes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / medicalOrTreatmentInformation / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / medicalOrTreatmentInformation / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / medicalOrTreatmentInformation / type
      Removed value: -"string"
    • addedInput schema / properties / messagingAndChat
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / parentalControls
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / profanityOrCrudeHumor / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / profanityOrCrudeHumor / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / profanityOrCrudeHumor / type
      Removed value: -"string"
    • addedInput schema / properties / sexualContentGraphicAndNudity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / sexualContentOrNudity / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / sexualContentOrNudity / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / sexualContentOrNudity / type
      Removed value: -"string"
    • addedInput schema / properties / socialMedia
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / socialMediaAgeRestricted
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / unrestrictedWebAccess / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "null"
      +]
    • addedInput schema / properties / userGeneratedContent
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / violenceCartoonOrFantasy / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / violenceCartoonOrFantasy / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / violenceCartoonOrFantasy / type
      Removed value: -"string"
    • addedInput schema / properties / violenceRealistic / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / violenceRealistic / enum
      Removed value: -[
      -  "NONE",
      -  "INFREQUENT_OR_MILD",
      -  "FREQUENT_OR_INTENSE"
      -]
    • removedInput schema / properties / violenceRealistic / type
      Removed value: -"string"
    • addedInput schema / properties / violenceRealisticProlongedGraphicOrSadistic
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  2. First observedv0.3.1

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It indicates a mutation of the current questionnaire and notes legacy value acceptance, but it does not explain permissions, partial-vs-full update semantics, what happens to omitted fields, or reversibility.

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

Conciseness5/5

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

The description is two sentences with no waste. The purpose is front-loaded and the second sentence directly addresses an important enum-value choice.

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

Completeness2/5

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

For a mutation tool with 29 parameters, no annotations, and no output schema, the description is incomplete. It should explain the required ageRatingId, partial update behavior, and at least the major field groups beyond frequency values.

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

Parameters2/5

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

Schema description coverage is only 3%, with only ageRatingId documented. The description adds useful guidance for frequency fields, but it does not identify which parameters are frequency fields or explain the many booleans, override enums, kidsAgeBand, or developerAgeRatingInfoUrl.

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 states a specific verb and resource: update the current App Store age-rating questionnaire. It is clear enough to distinguish from the read-only sibling apple_get_age_rating, though it does not explicitly name alternatives or scope exclusions.

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

Usage Guidelines2/5

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

It implies the tool updates the questionnaire but gives no explicit when-to-use guidance, no prerequisites, and no alternatives such as reading first with apple_get_age_rating. The only guidance concerns preferred enum values, not tool selection.

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

Deploy Server

Other Tools