get_activity
Retrieve daily activity metrics including steps, calories burned, distance traveled, and elevation gain from Withings health data for specified date ranges.
Instructions
Get daily activity data (steps, calories, distance, elevation)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| startdateymd | No | Start date in YYYY-MM-DD format | |
| enddateymd | No | End date in YYYY-MM-DD format | |
| lastupdate | No | Get activities modified since this timestamp |
Implementation Reference
- The main handler function for the get_activity tool. It prepares parameters based on input arguments and calls the Withings API endpoint /v2/measure with action=getactivity.async def _get_activity(self, args: dict) -> dict: """Get activity data.""" params = {"action": "getactivity"} if "startdateymd" in args: params["startdateymd"] = args["startdateymd"] if "enddateymd" in args: params["enddateymd"] = args["enddateymd"] if "lastupdate" in args: params["lastupdate"] = self._parse_date(args["lastupdate"]) return await self._make_request("/v2/measure", params)
- src/withings_mcp_server/server.py:71-91 (registration)Registration of the get_activity tool in the list_tools handler, including name, description, and input schema definition.Tool( name="get_activity", description="Get daily activity data (steps, calories, distance, elevation)", inputSchema={ "type": "object", "properties": { "startdateymd": { "type": "string", "description": "Start date in YYYY-MM-DD format", }, "enddateymd": { "type": "string", "description": "End date in YYYY-MM-DD format", }, "lastupdate": { "type": "string", "description": "Get activities modified since this timestamp", }, }, }, ),
- src/withings_mcp_server/server.py:201-202 (registration)Dispatch logic in the call_tool handler that routes get_activity calls to the _get_activity implementation.elif name == "get_activity": result = await self._get_activity(arguments)
- Input schema definition for the get_activity tool, specifying optional date parameters.inputSchema={ "type": "object", "properties": { "startdateymd": { "type": "string", "description": "Start date in YYYY-MM-DD format", }, "enddateymd": { "type": "string", "description": "End date in YYYY-MM-DD format", }, "lastupdate": { "type": "string", "description": "Get activities modified since this timestamp", }, }, },
- Helper function used by get_activity (and others) to make authenticated HTTP requests to the Withings API.async def _make_request(self, endpoint: str, params: dict) -> dict: """Make authenticated request to Withings API.""" headers = self.auth.get_headers() async with httpx.AsyncClient() as client: response = await client.get( f"{self.base_url}{endpoint}", headers=headers, params=params, ) response.raise_for_status() data = response.json() if data.get("status") != 0: raise Exception(f"API error: {data}") return data.get("body", {})