Skip to main content
Glama

Almost Fire

Log cardio

log_cardio
Idempotent

Use this when the person tells you about cardio they did: a run, a ride, the rower, a walk. Record cardio the person did, with the numbers they give: minutes always; distance, heart rate, level, incline, energy and intervals only when given. Never invent them. effort is a talk test: easy (could hold a conversation), steady (short sentences), hard (a few words). Give sessionId to count it in that session (it fills the session's planned cardio when it is the same exercise), or null for cardio on its own. Null startedAt is just finished. Cardio counts as minutes, never kilograms. Applied immediately with Undo. Do not use for a lifting set; use log_set.

Input Schema

NameRequiredDescriptionDefault
kcalNo
levelNo
effortNo
inclineNo
minutesYes
intervalsNo
sessionIdNo
startedAtNo
distanceKmNo
exerciseKeyYes
avgHeartRateNo
maxHeartRateNo
idempotencyKeyYesA new random id for this change (a UUID). Send the same one again only to retry this exact change.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description adds real behavior beyond them: the write is 'Applied immediately with Undo', so the agent knows the effect is instantaneous and recoverable. It also imposes a data-integrity rule ('Never invent them') and a unit rule ('Cardio counts as minutes, never kilograms') that are behavioral constraints not expressible in annotations. It stops short of describing what happens on an unknown exerciseKey or a duplicate session match.

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?

Front-loaded with the trigger condition, then ordered from required fields to optional to call-shape choices to exclusions — a sensible progression with no filler. A few clauses are compressed to the point of ambiguity, notably 'Null startedAt is just finished' and 'Cardio counts as minutes, never kilograms', which cost a re-read but still earn their space.

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

Completeness4/5

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

With 13 parameters, a low-coverage schema, and an output schema that relieves it of explaining returns, the description covers the fields an agent must reason about and the recovery path. The one material omission is how to obtain a valid exerciseKey, which is required and undocumented in both schema and description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 8% across 13 parameters, so the description must carry the load — and it does: minutes always, distance/heart rate/level/incline/energy/intervals only when given, plus explicit enum semantics for effort ('easy (could hold a conversation), steady (short sentences), hard (a few words)') that the bare enum values do not convey. It also disambiguates sessionId (fills the session's planned cardio when it is the same exercise) versus null. exerciseKey is the remaining gap.

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?

Opens with a concrete trigger and verb+resource: 'Use this when the person tells you about cardio they did: a run, a ride, the rower, a walk. Record cardio...'. It explicitly names the near-sibling it is not ('Do not use for a lifting set; use log_set'), so an agent can route between the two logging tools without opening either schema.

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

Usage Guidelines5/5

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

Gives both sides of the decision: use for cardio modalities, don't use for lifting sets (send to log_set). It also resolves two call-shape choices inline — sessionId to attach to a session versus null for standalone cardio, and null startedAt meaning 'just finished' — which are exactly the ambiguities an agent would otherwise guess at.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources