Skip to main content
Glama

Update profile

update_profile
DestructiveIdempotent

Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields stay unchanged. Media must already be uploaded to Synoptic. Use set_username for the username, or remove_x_handle to unlink X.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bioNoBiography text shown on the profile
avatarNoProfile image: the media object (bucket, key, region, type) of an image already uploaded in the Synoptic app, such as avatar from get_me; MCP cannot upload
fullNameNoDisplay name shown on the profile
backgroundImageNoProfile background image: the media object (bucket, key, region, type) of an image already uploaded in the Synoptic app, such as backgroundImage from get_me; MCP cannot upload

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
userYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • changedInput schema / properties / avatar / description
      Previous value: -"Profile image: the media object of an image already uploaded in the Synoptic app, such as avatar from get_me; MCP cannot upload"New value: +"Profile image: the media object (bucket, key, region, type) of an image already uploaded in the Synoptic app, such as avatar from get_me; MCP cannot upload"
    • removedInput schema / properties / avatar / properties / bucket / description
      Removed value: -"S3 bucket holding the image"
    • removedInput schema / properties / avatar / properties / height / description
      Removed value: -"Height in pixels"
    • removedInput schema / properties / avatar / properties / key / description
      Removed value: -"Storage key of the image"
    • removedInput schema / properties / avatar / properties / region / description
      Removed value: -"AWS region of the bucket"
    • removedInput schema / properties / avatar / properties / width / description
      Removed value: -"Width in pixels"
    • changedInput schema / properties / backgroundImage / description
      Previous value: -"Profile background image: the media object of an image already uploaded in the Synoptic app, such as backgroundImage from get_me; MCP cannot upload"New value: +"Profile background image: the media object (bucket, key, region, type) of an image already uploaded in the Synoptic app, such as backgroundImage from get_me; MCP cannot upload"
    • removedInput schema / properties / backgroundImage / properties / bucket / description
      Removed value: -"S3 bucket holding the image"
    • removedInput schema / properties / backgroundImage / properties / height / description
      Removed value: -"Height in pixels"
    • removedInput schema / properties / backgroundImage / properties / key / description
      Removed value: -"Storage key of the image"
    • removedInput schema / properties / backgroundImage / properties / region / description
      Removed value: -"AWS region of the bucket"
    • removedInput schema / properties / backgroundImage / properties / width / description
      Removed value: -"Width in pixels"
    • changedOutput schema / properties / user / properties / avatar / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bucket": {
      -        "description": "S3 bucket holding the image",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "height": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Height in pixels"
      -      },
      -      "key": {
      -        "description": "Storage key of the image",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "region": {
      -        "description": "AWS region of the bucket",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "description": "MIME type, such as image/png",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "width": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Width in pixels"
      -      }
      -    },
      -    "required": [
      -      "bucket",
      -      "key",
      -      "region",
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bucket": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "height": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "key": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "region": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "MIME type, such as image/png",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "width": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "bucket",
      +      "key",
      +      "region",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / user / properties / backgroundImage / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bucket": {
      -        "description": "S3 bucket holding the image",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "height": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Height in pixels"
      -      },
      -      "key": {
      -        "description": "Storage key of the image",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "region": {
      -        "description": "AWS region of the bucket",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "description": "MIME type, such as image/png",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "width": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Width in pixels"
      -      }
      -    },
      -    "required": [
      -      "bucket",
      -      "key",
      -      "region",
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bucket": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "height": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "key": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "region": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "MIME type, such as image/png",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "width": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "bucket",
      +      "key",
      +      "region",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed24 schema fields changed
    • addedInput schema / properties / avatar / description
      Added value: +"Profile image: the media object of an image already uploaded in the Synoptic app, such as avatar from get_me; MCP cannot upload"
    • addedInput schema / properties / avatar / properties / bucket / description
      Added value: +"S3 bucket holding the image"
    • addedInput schema / properties / avatar / properties / height / description
      Added value: +"Height in pixels"
    • addedInput schema / properties / avatar / properties / key / description
      Added value: +"Storage key of the image"
    • addedInput schema / properties / avatar / properties / region / description
      Added value: +"AWS region of the bucket"
    • addedInput schema / properties / avatar / properties / type / description
      Added value: +"MIME type, such as image/png"
    • addedInput schema / properties / avatar / properties / width / description
      Added value: +"Width in pixels"
    • removedInput schema / properties / backgroundImage / $ref
      Removed value: -"#/properties/avatar"
    • addedInput schema / properties / backgroundImage / additionalProperties
      Added value: +false
    • addedInput schema / properties / backgroundImage / description
      Added value: +"Profile background image: the media object of an image already uploaded in the Synoptic app, such as backgroundImage from get_me; MCP cannot upload"
    • addedInput schema / properties / backgroundImage / properties
      Added value: +{
      +  "bucket": {
      +    "description": "S3 bucket holding the image",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "height": {
      +    "anyOf": [
      +      {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Height in pixels"
      +  },
      +  "key": {
      +    "description": "Storage key of the image",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "region": {
      +    "description": "AWS region of the bucket",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": {
      +    "description": "MIME type, such as image/png",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "width": {
      +    "anyOf": [
      +      {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Width in pixels"
      +  }
      +}
    • addedInput schema / properties / backgroundImage / required
      Added value: +[
      +  "bucket",
      +  "key",
      +  "region",
      +  "type"
      +]
    • addedInput schema / properties / backgroundImage / type
      Added value: +"object"
    • addedInput schema / properties / bio / description
      Added value: +"Biography text shown on the profile"
    • addedInput schema / properties / fullName / description
      Added value: +"Display name shown on the profile"
    • changedOutput schema / properties / user / properties / avatar / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bucket": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "height": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "key": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "region": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "width": {
      -        "anyOf": [
      -          {
      -            "exclusiveMinimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "bucket",
      -      "key",
      -      "region",
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bucket": {
      +        "description": "S3 bucket holding the image",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "height": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Height in pixels"
      +      },
      +      "key": {
      +        "description": "Storage key of the image",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "region": {
      +        "description": "AWS region of the bucket",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "MIME type, such as image/png",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "width": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Width in pixels"
      +      }
      +    },
      +    "required": [
      +      "bucket",
      +      "key",
      +      "region",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / user / properties / avatar / description
      Added value: +"Profile image; null when none is set"
    • changedOutput schema / properties / user / properties / backgroundImage / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/properties/user/properties/avatar/anyOf/0"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bucket": {
      +        "description": "S3 bucket holding the image",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "height": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Height in pixels"
      +      },
      +      "key": {
      +        "description": "Storage key of the image",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "region": {
      +        "description": "AWS region of the bucket",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "MIME type, such as image/png",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "width": {
      +        "anyOf": [
      +          {
      +            "exclusiveMinimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Width in pixels"
      +      }
      +    },
      +    "required": [
      +      "bucket",
      +      "key",
      +      "region",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / user / properties / backgroundImage / description
      Added value: +"Profile background image; null when none is set"
    • addedOutput schema / properties / user / properties / followersCount / description
      Added value: +"Users following this user"
    • addedOutput schema / properties / user / properties / followingCount / description
      Added value: +"Users this user follows; excludes streams"
    • addedOutput schema / properties / user / properties / id / description
      Added value: +"Synoptic user ID for follow_user, is_following_user or get_user_by_id"
    • addedOutput schema / properties / user / properties / isHighlighted / description
      Added value: +"Featured by Synoptic; listed by get_highlighted_authors"
    • addedOutput schema / properties / user / properties / xComHandle / description
      Added value: +"Verified X handle linked to this profile, without @"
  3. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is partly covered. The description adds genuine context the annotations do not: changes are publicly visible to other users, omitted fields are preserved, and images cannot be uploaded through this tool. It does not contradict destructiveHint=true. A minor gap is that it never says what a partial update returns or how to clear a field (e.g. nulling a bio).

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?

Three short sentences, front-loaded with the action and resource, then constraints, then sibling routing. Every sentence carries distinct information; nothing is redundant with the title or annotations.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and annotations carry the safety profile. The description covers the remaining agent-critical facts: which fields are updatable, that updates are partial and public, that media must pre-exist, and which sibling tools handle the excluded cases. Nothing needed to invoke it correctly is missing.

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?

Schema coverage is 100% and each nested media object is documented in the schema, so the baseline is 3. The description still adds meaning beyond the schema by enumerating the four mutable targets, stating the partial-update semantics for omitted fields, and flagging the pre-upload constraint on the media objects. It stops short of explaining how to reset or remove an existing value.

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

Purpose5/5

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

States a specific verb (Update) and resource (the signed-in user's public Synoptic profile) and enumerates exactly which fields are mutable: display name, biography, avatar, background image. It also explicitly distinguishes itself from the two closest siblings, set_username and remove_x_handle, so an agent can route without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit routing: 'Use set_username for the username, or remove_x_handle to unlink X.' It also states the prerequisite that media must already be uploaded to Synoptic, and clarifies partial-update behavior with 'Omitted fields stay unchanged.' When-to-use, when-not-to-use, and alternatives are all covered.

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