Skip to main content
Glama

get-daily-respiration

Retrieve daily respiration rate data from Garmin Connect for a specified date to monitor respiratory patterns.

Instructions

Get respiration rate data for a date

Input Schema

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

Implementation Reference

  • src/tools.ts:418-432 (registration)
    Tool registration for 'get-daily-respiration' on the MCP server. Calls the Garmin wellness API endpoint 'wellness-service/wellness/daily/respiration/{date}' to fetch respiration rate data for a given date (defaults to today).
    server.tool(
      "get-daily-respiration",
      "Get respiration rate data for a date",
      {
        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/daily/respiration/${d}`
        );
        return jsonResult(data);
      }
    );
  • The handler function that executes the tool logic: gets the Garmin client, resolves the date (defaulting to today), and fetches respiration data from the wellness API.
    server.tool(
      "get-daily-respiration",
      "Get respiration rate data for a date",
      {
        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/daily/respiration/${d}`
        );
        return jsonResult(data);
      }
    );
  • Input schema: accepts an optional 'date' parameter (YYYY-MM-DD string, defaults to today). Output is the raw JSON response from the Garmin API.
    server.tool(
      "get-daily-respiration",
      "Get respiration rate data for a date",
      {
        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/daily/respiration/${d}`
        );
        return jsonResult(data);
      }
    );
  • Test definition for 'get-daily-respiration' used in the test plan/runner. Calls the tool and throws if it returns an error.
    {
      name: "get-daily-respiration",
      run: async (server) => {
        const result = await callTool(server, "get-daily-respiration");
        if (result.isError) throw new Error(getToolText(result));
      },
    },
  • Test plan documentation (within the run-tests tool) listing get-daily-respiration as a test case that should return respiration data.
    - get-daily-respiration -> should return respiration data
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states data retrieval but does not clarify if the result is a single value or time series, what units are used, or what happens when no data exists for the date.

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 concise sentence with no wasted words. However, it could be slightly expanded to include key context without losing conciseness.

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 tool's simplicity (1 optional param, no output schema), the description is minimally adequate but lacks completeness: it does not specify the return type or behavior when data is missing, which would be helpful for an AI agent selecting among many similar daily metric tools.

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% (the only parameter 'date' is described), so baseline is 3. The description adds no additional meaning beyond what the schema already provides; it does not even restate the format or default.

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?

The description clearly states the verb and resource ('Get respiration rate data for a date'), which is specific and aligns with the tool name. However, it does not differentiate from sibling tools like get-daily-heart-rate, which follow the same pattern.

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 (e.g., get-daily-summary or other daily metrics). There is no mention of prerequisites, data availability, or typical use cases.

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