Skip to main content
Glama

Update Activity

strava_update_activity
DestructiveIdempotent

Update an activity's mutable properties. Requires activity:write scope. Only provided fields are updated (one API request); replacing values can destroy prior content. Reconcile lost responses before retrying.

Instructions

Update an activity's mutable properties. Requires activity:write scope. Only provided fields are updated (one API request); replacing values can destroy prior content. Reconcile lost responses before retrying.

Input Schema

NameRequiredDescriptionDefault
nameNoNew name
commuteNoWhether this is a commute
gear_idNoGear ID to associate (e.g. "b12345"), or "none" to remove
trainerNoWhether this is a trainer activity
sport_typeNoNew sport type
activity_idYesThe activity ID to update
descriptionNoNew description
hide_from_homeNoWhether to mute this activity in the feed

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv4.4.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / activity_id / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / activity_id / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / gear_id / anyOf
      Added value: +[
      +  {
      +    "pattern": "^[bg][1-9]\\d{0,18}$",
      +    "type": "string"
      +  },
      +  {
      +    "const": "none",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / gear_id / type
      Removed value: -"string"
  2. First observedv1.0.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds concrete mechanics: a single API request applies all fields, replacing values destroys prior content, and a lost response should be reconciled before retrying. The retry caution is genuinely useful operational context not derivable from the annotations.

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?

Four short sentences, each doing distinct work: purpose, auth requirement, partial-update semantics, destruction risk, retry caveat. The most decision-relevant constraints are front-loaded with zero filler.

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

Completeness4/5

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

For an 8-parameter mutation with no output schema, the description covers scope requirements, partial-update behavior, and destructive retry risk. It omits the response shape and any rate-limit behavior, but the schema carries all field semantics, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100% and every field is documented in the schema, including the gear_id pattern and the sport_type enum. The description adds no parameter-level detail beyond 'only provided fields are updated', so the baseline 3 applies.

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?

States a specific verb and resource ('Update an activity's mutable properties'), which naturally separates it from strava_create_activity and strava_get_activity. It never names a sibling or the mutable-field boundary explicitly, so differentiation is implied by the verb rather than stated.

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

Usage Guidelines4/5

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

Provides real usage context: the activity:write scope prerequisite and the partial-update contract ('Only provided fields are updated (one API request)') tell the agent how to shape a call. It stops short of explicit when-to-use/when-not guidance versus create or upload, so no exclusion criteria are given.

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