Skip to main content
Glama

get-daily-stress

Retrieves stress level data for a specified date to help users understand their daily stress patterns.

Instructions

Get stress level data throughout the day

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD, defaults to today

Implementation Reference

  • The handler for the get-daily-stress tool. Calls the wellness-service API endpoint 'wellness-service/wellness/dailyStress/{date}' with an optional date parameter (defaults to today) and returns the stress data as JSON.
    server.tool(
      "get-daily-stress",
      "Get stress level data throughout the day",
      {
        date: z.string().optional().describe("YYYY-MM-DD, defaults to today"),
      },
      async ({ date }) => {
        const client = getClient();
        const d = date ?? todayDate();
        const data = await client.get(
          `wellness-service/wellness/dailyStress/${d}`
        );
        return jsonResult(data);
      }
    );
  • Input schema for get-daily-stress: an optional 'date' string in YYYY-MM-DD format that defaults to today.
    {
      date: z.string().optional().describe("YYYY-MM-DD, defaults to today"),
  • src/tools.ts:355-369 (registration)
    The tool is registered via server.tool() inside the registerTools() function in src/tools.ts. This function is exported and called from src/index.ts.
    server.tool(
      "get-daily-stress",
      "Get stress level data throughout the day",
      {
        date: z.string().optional().describe("YYYY-MM-DD, defaults to today"),
      },
      async ({ date }) => {
        const client = getClient();
        const d = date ?? todayDate();
        const data = await client.get(
          `wellness-service/wellness/dailyStress/${d}`
        );
        return jsonResult(data);
      }
    );
  • Helper function getClient() that checks for an existing Garmin session and returns a shared GarminClient instance via getSharedClient().
    function getClient() {
      if (!sessionExists()) {
        throw new Error(
          "No Garmin session found. The user needs to run: npx garmin-connect-mcp login"
        );
      }
      return getSharedClient();
    }
  • Helper function todayDate() returns the current date as YYYY-MM-DD string, used as default when no date is provided.
    function todayDate(): string {
      return new Date().toISOString().slice(0, 10);
Behavior2/5

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

With no annotations, the description must disclose behavior but only states the action. It does not mention authentication requirements, data granularity, units, or possible errors. However, the tool appears to be a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words. It is concise and front-loaded, but could benefit from slightly more detail without becoming verbose.

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

Completeness3/5

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

Given the simplicity of the tool and high schema coverage, the description is mostly complete. However, lacking an output schema, it does not explain the format of the returned stress data, which would help an agent interpret results.

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 coverage is 100% with the parameter 'date' described as 'YYYY-MM-DD, defaults to today'. The description adds no additional meaning beyond the schema, achieving the baseline.

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?

The description clearly states the tool gets stress level data throughout the day. It distinguishes from sibling tools like get-daily-heart-rate or get-daily-summary by specifying the metric 'stress' and the temporal scope 'throughout the day'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get-daily-summary or get-hrv, which might also include stress-related data. The description does not explain the context or prerequisites.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/etweisberg/garmin-connect-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server