get_workout_input_schema
Retrieve the input schema for constructing valid Garmin workout payloads, ensuring correct structure for strength training.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- Tool handler that returns the JSON schema of the WorkoutInput Pydantic model via model_json_schema(). This allows clients to discover the expected input shape for creating workouts.
@mcp.tool def get_workout_input_schema() -> dict: return {"schema": WorkoutInput.model_json_schema()} - Pydantic model WorkoutInput that defines the schema returned by get_workout_input_schema(). Contains name, type, description, and a list of StepInput steps.
class WorkoutInput(BaseModel): model_config = ConfigDict(extra="forbid") name: str = Field(min_length=1) type: str description: str | None = None steps: list[StepInput] = Field(min_length=1) - src/garmin_workouts_mcp/server.py:135-136 (registration)The @mcp.tool decorator registers get_workout_input_schema as a tool with the FastMCP server.
@mcp.tool def get_workout_input_schema() -> dict: - Calls WorkoutInput.model_json_schema() which is a Pydantic helper method that generates a JSON Schema (draft-07) from the WorkoutInput model definition.
return {"schema": WorkoutInput.model_json_schema()} - StepInput model used by WorkoutInput.steps – defines the shape of each workout step (executable step or repeat group).
class StepInput(BaseModel): model_config = ConfigDict(extra="allow") stepName: str | None = None stepDescription: str | None = None stepType: str | None = None endConditionType: str | None = None stepDuration: float | None = None stepDistance: float | None = None distanceUnit: str | None = None stepReps: float | None = None numberOfIterations: int | None = None steps: list["StepInput"] | None = None target: TargetInput | None = None exercise: str | ExerciseInput | None = None category: str | None = None exerciseName: str | None = None weightValue: float | None = None weightUnit: str | None = None