get_activity
Retrieve daily activity data including steps, calories, distance, and elevation for a date range or since a specific timestamp.
Instructions
Get daily activity data (steps, calories, distance, elevation)
Input 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
- src/withings_mcp_server/server.py:78-98 (registration)Tool registration with name='get_activity' in the list_tools handler, defining input schema with optional startdateymd, enddateymd, and lastupdate parameters.
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", }, }, }, ), - Call routing: dispatches 'get_activity' calls to the _get_activity method in the call_tool handler.
elif name == "get_activity": result = await self._get_activity(arguments) - Handler implementation: calls Withings API endpoint /v2/measure with action=getactivity, passing startdateymd, enddateymd, and lastupdate parameters.
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) - Input schema for get_activity tool: all properties are optional strings (startdateymd, enddateymd, lastupdate).
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", }, }, }, ), - Makes the actual API call to Withings /v2/measure endpoint with action=getactivity; also uses _parse_date helper for lastupdate parameter conversion.
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)