Skip to main content
Glama

hevy-mcp

ClaudeをHevyのワークアウトログに接続します。

hevy-mcpは、Model Context Protocolサーバーです。これを使用すると、Claude(デスクトップ版またはclaude.ai)でワークアウトの読み取り、新しいルーチンの設計、Hevyライブラリへの保存、トレーニング傾向の分析が可能になります。これは、ChatGPTユーザーがHevyの公式統合で利用できるものと同等のアクセス権を提供します。

CI PyPI Python License: MIT

You: "Build me a 4-day upper/lower hypertrophy split focused on the muscle groups
      I've trained least over the last 30 days, and save it in a folder called
      'Hypertrophy Block 1'."

Claude: ✓ checked your last 30 days of training (lats and rear delts are behind)
        ✓ created folder "Hypertrophy Block 1"
        ✓ resolved 22 exercises against Hevy's library
        ✓ saved 4 routines: Upper A, Lower A, Upper B, Lower B
        Open the Hevy app to start any of them.

Claudeに依頼できること

  • 振り返り — 「過去10回のワークアウトを表示して、おろそかにしている筋肉グループを教えて。」

  • 計画 — 「ベンチプレスの履歴に基づいて、明日のトップセットの適切な重量は?」

  • ルーチン作成 — 「4日間の上半身/下半身の筋肥大スプリットを作成して保存して。」

  • ルーチン編集 — 「『プッシュデイA』のダンベルショルダープレスを、バーベルオーバーヘッドプレス(5回×4セット)に変更して。」

  • 分析 — 「主要なリフトの1RMを推定し、過去90日間のスクワットの進捗をグラフ化して。」


Related MCP server: hevy-mcp

要件

  • Hevy PROサブスクリプション(開発者APIの利用に必要です)。

  • Hevy APIキー — https://hevy.com/settings?developerで取得してください。

  • Python 3.11+ または Docker。

  • Claude Desktop、またはカスタムコネクタをサポートするclaude.aiワークスペース。


クイックスタート — Claude Desktop (5分)

1. インストール

# Easiest, with uv (https://docs.astral.sh/uv/):
uv tool install hevy-mcp

# Or with pipx:
pipx install hevy-mcp

# Or with plain pip:
python -m pip install hevy-mcp

2. Claude Desktopへの追加

Claude Desktopの設定ファイルを開きます:

  • macOS — ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows — %APPDATA%\Claude\claude_desktop_config.json

  • Linux — ~/.config/Claude/claude_desktop_config.json

mcpServersの下にhevyエントリを追加します(ファイルが存在しない場合は作成してください):

{
  "mcpServers": {
    "hevy": {
      "command": "hevy-mcp",
      "env": {
        "HEVY_API_KEY": "sk_live_paste_your_key_here"
      }
    }
  }
}

hevy-mcpがPATH上にない場合(uv-toolのインストールがClaude Desktopランチャーで認識されないことがあります)、which hevy-mcpで取得できる絶対パスを使用してください(例: /Users/you/.local/bin/hevy-mcp)。

3. Claude Desktopの再起動

完全に終了(macOSでは⌘Q)してから再起動します。ツールインジケーターが表示され、hevyサーバーが接続されていることが確認できるはずです。

4. 試してみる

「hevyツールを使って、過去3回のワークアウトを取得して要約して。」

Claudeが実際のワークアウトを表示すれば完了です。🎉


代替手段 — claude.ai (リモートコネクタ)

Claude Desktopではなくブラウザでclaude.aiを使用している場合は、hevy-mcpをHTTPサービスとして実行し、カスタムコネクタとして追加します。

1. HTTPS環境でサーバーを実行する

最も簡単な方法は、Fly.io / Render / RailwayでDockerを使用することです:

docker build -t hevy-mcp .
docker run --rm -p 8000:8000 -e HEVY_API_KEY=sk_live_... hevy-mcp

またはCLIで直接実行します:

hevy-mcp --http --host 0.0.0.0 --port 8000

MCPエンドポイントは/mcpにあります。

2. カスタムコネクタとして追加する

claude.aiで、設定 → コネクタ → カスタムコネクタを追加に移動し、/mcpで終わるパブリックHTTPS URL(例: https://hevy-mcp.fly.dev/mcp)を使用します。

マルチユーザーに関する注意

複数のユーザーが同じデプロイメントを共有する場合は、HEVY_API_KEYをコンテナの環境変数に埋め込まないでください。代わりに、リクエストごとのヘッダーとして送信してください。サーバーはX-Hevy-Api-Keyが存在すればそれを読み取り、なければ環境変数にフォールバックします。サーバーの前に認証を注入する小さなリバースプロキシ(Cloudflare Worker、Nginxなど)を配置するのが一般的なパターンです。


機能一覧 (全ツールリスト)

グループ

ツール

説明

ワークアウト

list_workouts

ワークアウト履歴をページ送りで表示(最新順)。

get_workout

ワークアウトの詳細(全セット、レップ数、重量、RPE、メモ)。

get_workout_count

記録されたワークアウトの合計数。

get_workout_events

指定タイムスタンプ以降の作成/更新/削除イベントのストリーム。

create_workout

完了したワークアウトを記録。

update_workout

記録済みのワークアウトを編集。

ルーチン

list_routines, get_routine

保存されたルーチンを読み取り。

create_routine

新しいルーチンを保存(タイトル重複保護あり)。

update_routine

既存のルーチンを変更。

フォルダ

list_routine_folders, get_routine_folder, create_routine_folder

ルーチンを整理。

エクササイズライブラリ

search_exercise_templates

名前、器具、筋肉部位によるHevyの約400種のエクササイズライブラリのあいまい検索。

list_exercise_templates, get_exercise_template

エクササイズの閲覧/検索。

Webhook

create_webhook_subscription, get_webhook_subscription, delete_webhook_subscription

キーごとに1つのサブスクリプション(Hevyの制限)。

分析

estimate_one_rep_max

トップセットからのEpley/Brzycki式による1RM推定。

volume_by_muscle_group

指定期間内の筋肉グループごとの総負荷量。

progression_trend

単一リフトの1RM推移と週次傾斜。

内部構造:

  • スマートキャッシング — エクササイズライブラリは一度取得されると24時間キャッシュされ、あいまい検索はメモリ上で実行されます。

  • レート制限対応 — 429エラー時にバックオフし、Retry-Afterを尊重します。

  • べき等な書き込み — 同じフォルダ内に重複するタイトルのルーチンを作成する場合、Claudeに確認を求めます。

  • LLMフレンドリーなエラー — すべてのエラーは { error, hint } として返されます。ヒントには次の具体的なツール呼び出しが提案されます。

  • APIキーのログ記録なし — APIキーをログに記録することはありません。


トラブルシューティング

最も一般的な原因は、claude_desktop_config.jsonのcommandがランチャーのPATH上にないことです。"command": "hevy-mcp"をwhich hevy-mcp(Windowsの場合はwhere hevy-mcp)で取得した絶対パスに置き換えてください。その後、Claude Desktopを再起動してください。

  • キーがargsブロックではなくenvブロックに貼り付けられているか確認してください。

  • Hevy PROサブスクリプションが有効であることを確認してください。

  • https://hevy.com/settings?developer でキーを再生成して試してください。

search_exercise_templatesはあいまい検索ですが、完璧ではありません。Claudeが間違ったエクササイズを選択した場合は、「より具体的な名前で再検索して」と指示するか、equipmentフィルター(例: "barbell")を渡すようにしてください。

エクササイズライブラリは最初の検索時に取得されます(初回のみ約200ms)。それ以降の呼び出しはメモリ内のキャッシュにヒットします。キャッシュは24時間有効です。


開発

git clone https://github.com/Vellarasan/hevy-mcp.git
cd hevy-mcp
uv sync --extra dev          # creates .venv and installs deps
pytest -q                    # offline tests (no real API needed)

# Run against your real Hevy account:
HEVY_API_KEY=sk_live_... python smoke_test.py

# Stdio (Claude Desktop):
hevy-mcp

# HTTP (claude.ai):
hevy-mcp --http --port 8000

詳細は CONTRIBUTING.md を参照してください。

プロジェクト構成

hevy-mcp/
├── src/hevy_mcp/
│   ├── server.py        # transport bootstrap (stdio + streamable-http)
│   ├── hevy_client.py   # async httpx client w/ retries & error mapping
│   ├── schemas.py       # Pydantic models
│   ├── cache.py         # 24-hour TTL cache
│   ├── errors.py        # HevyApiError + tool_guard
│   ├── formatters.py    # JSON → readable text
│   └── tools/           # workouts, routines, folders, templates, webhooks, analytics
├── tests/
└── Dockerfile

リリース

CHANGELOG.md を参照してください。タグ付けされたリリースは自動的にPyPIに公開されます。

ライセンス

MIT。

謝辞

このプロジェクトの設計は、コミュニティによる2つの先行実装 chrisdoc/hevy-mcp (TypeScript) と SrdjanCodes/hevy-mcp (Python) から着想を得ています。フォークではありませんが、異なる言語や機能セットが必要な場合は一見の価値があります。

hevy-mcpはコミュニティプロジェクトであり、Hevyとは提携しておらず、Hevyによって承認されたものでもありません。

Available Tools

22 tools
create_routineA

Create a new routine.

Required routine shape: { title, folder_id?, notes?, exercises: [ { exercise_template_id, rest_seconds?, notes?, sets: [ { type, weight_kg?, reps?, rpe? } ] } ] }

WORKFLOW for natural-language requests:

  1. Resolve every exercise name to a template id with search_exercise_templates.

  2. (Optional) Create or look up the target folder with the folder tools.

  3. Call this tool. If a routine with the same title already exists in the folder you'll get back a duplicate_of payload — confirm with the user, then re-call with force=True (or call update_routine instead).

ParametersJSON Schema
NameRequiredDescriptionDefault
routineYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Discloses duplicate detection behavior (duplicate_of payload) and the need for user confirmation. No annotations present, so description carries burden; it covers major behavioral aspects but does not mention idempotency or whether the tool modifies existing data without force.

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?

Well-structured with sections and bullet points, but somewhat verbose due to the inline JSON-like shape. Generally concise and front-loaded.

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

Completeness5/5

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

Covers all necessary aspects: required shape, workflow steps, duplicate behavior, and sibling distinction. Has output schema, so return values not needed.

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?

With 0% schema coverage, description compensates fully by specifying the exact nested shape for the routine parameter and explaining the force parameter in the context of duplicate handling.

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?

Clearly states 'Create a new routine' with specific verb and resource. Distinguishes from sibling tool update_routine by describing duplicate handling and the force parameter pathway.

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?

Provides explicit workflow: resolve exercise names with search_exercise_templates, optionally handle folders, then call this tool. Details what to do on duplicate (confirm user, re-call with force=True or use update_routine).

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

create_routine_folderA

Create a new routine folder. Returns the new folder including its id, which you can pass to create_routine as folder_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided; description accurately describes a create operation without side effects, but does not disclose any potential behavior like overwriting or uniqueness constraints. Adequate for a simple operation.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with the core action and immediately useful context about the return value.

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?

Given a single required parameter and an output schema, the description adequately covers purpose, return value, and integration with a sibling tool. Lacks minor detail like uniqueness validation but is sufficient.

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

Parameters2/5

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

The only parameter 'title' has no description in the schema, and the tool description does not explain its meaning or constraints. With 0% schema coverage, the description should compensate but fails to do so.

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?

Clearly states the verb 'create' and resource 'routine folder', specifies the return value includes an id, and differentiates from sibling tools by explaining how the returned id is used in create_routine.

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

Usage Guidelines4/5

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

Implicitly suggests using before create_routine by mentioning the returned id as a folder_id parameter, but does not explicitly state when to use or not use this tool versus alternatives.

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

create_webhook_subscriptionA

Create or replace the user's webhook subscription.

  • url: HTTPS endpoint Hevy will POST events to.

  • event_type: e.g. "workout_created". Hevy only accepts one subscription per key.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
event_typeNoworkout_created

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses creation/replacement (destructive if existing), HTTPS requirement, and one-subscription-per-key limit. Missing details like authentication needs or rate limits, but covers key behaviors adequately.

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

Conciseness5/5

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

The description is short, uses bullet points for clarity, and front-loads the action. No unnecessary text; every sentence serves a purpose.

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?

Given the low complexity (2 params, output schema exists), the description covers creation behavior and constraints. It omits mention of success responses or error conditions, but the output schema likely provides that. Still, a brief note on expected outcomes would be helpful.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must explain parameters. It explicitly describes 'url: HTTPS endpoint' and 'event_type: e.g. workout_created.' It adds value beyond the schema but could specify valid event types or URL format requirements.

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 'Create or replace the user's webhook subscription,' specifying the action (create/replace) and resource (webhook subscription). This distinguishes it from sibling tools like delete_webhook_subscription or get_webhook_subscription.

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

Usage Guidelines4/5

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

It provides context with 'Hevy only accepts one subscription per key,' implying replacement behavior. However, it lacks explicit guidance on when to use this over alternatives (e.g., when to get or delete first). The constraint is helpful but not comprehensive.

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

create_workoutA

Log a completed workout to Hevy.

workout shape: { title, description?, start_time, end_time, is_private?, exercises: [ { exercise_template_id, notes?, superset_id?, sets: [ { type, weight_kg?, reps?, rpe?, distance_meters?, duration_seconds? } ] } ] }

Resolve exercise_template_id values via search_exercise_templates before calling this tool — never invent IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
workoutYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It explains the input structure but does not mention success responses, error conditions, or side effects beyond creation. Some behavioral context is missing.

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

Conciseness5/5

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

The description is succinct: a one-line purpose, a code block for the parameter shape, and a clear prerequisite statement. Every sentence adds value without redundancy.

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?

The description sufficiently covers the complex parameter and prerequisite, but lacks details on return values or error handling. Since an output schema exists, the omission is acceptable, but some behavioral context is missing.

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?

The input schema only defines 'workout' as an object with additionalProperties true, offering no structure. The description compensates fully by detailing the exact shape with nested fields, optional markers, and required subfields.

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 'Log a completed workout to Hevy', specifying the verb (log), resource (workout), and context (completed). This distinguishes it from sibling tools like create_routine or update_workout.

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?

Explicitly instructs to resolve exercise_template_ids via search_exercise_templates before calling and warns never to invent IDs. This provides clear guidance on prerequisite actions and correct usage.

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

delete_webhook_subscriptionA

Delete the active webhook subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

The description indicates a destructive operation ('Delete'), but with no annotations, it lacks details on irreversibility, cascading effects, or what happens if no active subscription exists.

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

Conciseness5/5

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

Single sentence, zero waste, perfectly concise for a simple deletion operation.

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?

Minimal description is adequate for a param-less tool with an output schema, but omits context like the need for an existing subscription and return value explanation.

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

Parameters4/5

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

There are no parameters, so the description adds no parameter information beyond the empty schema. Baseline 4 is appropriate for zero parameters.

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 'Delete the active webhook subscription,' specifying the verb (delete) and resource (active webhook subscription). It distinguishes from sibling tools like 'create_webhook_subscription' and 'get_webhook_subscription'.

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 on when to use this tool versus alternatives. It does not mention prerequisites (e.g., a subscription must exist) or exclusion conditions.

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

estimate_one_rep_maxA

Estimate the user's 1RM on a given exercise from their recent top sets.

Walks the user's workouts (newest first), gathers every set of the target exercise, and applies a strength formula:

  • "epley": weight * (1 + reps/30)

  • "brzycki": weight * 36 / (37 - reps)

Returns the highest e1RM observed plus the contributing set, plus a short recent history. Skips warmups and reps>15 (formulas are unreliable past that).

ParametersJSON Schema
NameRequiredDescriptionDefault
exercise_template_idYes
methodNoepley
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: walks workouts newest first, gathers sets, applies Epley/Brzycki formulas, returns highest e1RM, contributing set, and recent history, and skips warmups and reps>15. No contradictions.

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

Conciseness5/5

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

The description is concise and front-loaded with the purpose. Every sentence adds value: purpose, algorithm, formulas, output, and caveats. No redundancy.

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?

Given the tool has 3 parameters and an output schema, the description covers the algorithm, output, and important caveats. However, it does not explain the 'max_pages' parameter, which could affect the search scope. The output schema likely covers return format, so this is a minor gap.

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 description coverage is 0%, but the description adds meaning for the 'method' parameter by explaining the two formulas. However, 'exercise_template_id' and 'max_pages' are not explained, so the description only partially compensates for the lack of schema descriptions.

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 it estimates 1RM on a given exercise using recent top sets, with a specific verb and resource. No other sibling tool does this, so it is well-distinguished.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to estimate 1RM from recent top sets) and provides caveats (skips warmups and reps>15). However, it does not explicitly mention when not to use it or direct to alternatives.

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

get_exercise_templateA

Fetch a single exercise template by id (the Hevy library entry, not a logged set).

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and description lacks behavioral details like side effects, authentication needs, or response format. Merely states 'fetch' which implies read-only, but insufficient.

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

Conciseness5/5

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

Single sentence, no unnecessary words, directly states purpose with clarifying parenthetical. Efficient and front-loaded.

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?

Output schema exists, one required parameter, and sibling tools cover listing/searching. Description is clear enough for basic use but lacks guidance on obtaining the id and behavioral details.

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 0%, but description adds context that the template is the Hevy library entry, adding meaning beyond the schema. However, doesn't explain how to obtain the template_id.

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?

Explicitly states 'Fetch a single exercise template by id', with specific verb 'fetch' and resource 'exercise template'. Distinguishes from a logged set and implicitly from sibling list/search tools.

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

Usage Guidelines3/5

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

Briefly clarifies it's the library entry not a logged set, implying use case, but no explicit when-to-use, prerequisites, or alternative tools.

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

get_routineB

Fetch a single routine with every exercise and target set.

ParametersJSON Schema
NameRequiredDescriptionDefault
routine_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses that the tool returns a routine with exercises and target sets, but with no annotations provided, it lacks details on permissions, rate limits, error handling (e.g., if routine_id not found), or whether it requires authentication.

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?

At 10 words in one sentence, it is concise and front-loaded with the key action. However, it could be slightly expanded to clarify the scope (e.g., 'including all nested properties') without losing efficiency.

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 output schema exists, the description covers the basic purpose, but it omits context about error conditions (e.g., missing routine_id), expected behavior for invalid IDs, and why one might use this over similar tools like get_routine_folder.

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

Parameters2/5

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

The sole parameter routine_id has no description in the schema, and the tool description adds no additional meaning beyond its name. The agent must infer that it's an identifier for a routine.

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 action (fetch), resource (a single routine), and scope (every exercise and target set). It effectively distinguishes from tools like list_routines which list multiple routines.

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 on when to use this tool versus alternatives like get_routine_folder or list_routines, nor any exclusions or prerequisites mentioned.

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

get_routine_folderA

Fetch a single routine folder by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided. Description only states basic action; lacks detail on authentication, error responses, or side effects. Output schema exists but description adds no behavioral context.

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

Conciseness5/5

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

Single sentence, front-loaded, no waste. Efficiently conveys core purpose.

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?

Adequate for a simple fetch operation, but lacks details on error handling and prerequisites. Output schema likely covers return values, so not fully incomplete.

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

Parameters2/5

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

Schema description coverage is 0%. Description mentions 'by id' but does not elaborate on folder_id meaning, format, or constraints beyond the schema's title.

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?

Description clearly specifies verb ('Fetch'), resource ('routine folder'), and key identifier ('by id'). Distinguishes from siblings like 'list_routine_folders'.

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

Usage Guidelines4/5

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

Implies use when needing a single folder by ID, contrasting with listing. No explicit when-not or alternatives, but sibling names provide context.

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

get_webhook_subscriptionA

Return the user's current webhook subscription, if any.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description must carry behavioral disclosure. It correctly indicates a read-only operation ('Return') and acknowledges potential null result ('if any'). However, it does not disclose authentication requirements or rate limits, though these are often assumed for read operations.

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

Conciseness5/5

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

The description is a single concise sentence that conveys the core purpose without any filler. It is front-loaded and every word is meaningful.

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

Completeness5/5

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

Given the tool has no parameters and an output schema exists to describe return value structure, the description sufficiently covers the tool's behavior for an agent to use it correctly.

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

Parameters4/5

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

The tool has zero parameters and the input schema is empty, so no parameter documentation is needed. The description adds no parameter info but the job is already fully covered by the schema.

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 that the tool returns the user's current webhook subscription, using a specific verb ('Return') and resource ('webhook subscription'), which distinguishes it from sibling tools like create_webhook_subscription and delete_webhook_subscription.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any preconditions or exclusions. It is adequate for a simple getter but could benefit from context such as 'Use this when you need to check the current subscription before creating or deleting.'

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

get_workoutA

Fetch a single workout with every set, rep, weight, RPE, and note.

Use this when the user asks about a specific workout or wants to compare sets across sessions. Pair with list_workouts to discover the id first.

ParametersJSON Schema
NameRequiredDescriptionDefault
workout_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Despite no annotations, the description clearly states it fetches details and implies idempotent read behavior. It could mention read-only explicitly.

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

Conciseness5/5

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

Three sentences, no wasted words. Main action first, then usage guidance. Highly efficient.

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

Completeness5/5

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

Given the presence of an output schema, the description appropriately covers what the tool does and how to use it, with no gaps.

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

Parameters4/5

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

With one parameter and 0% schema coverage, the description adds value by explaining that the id comes from list_workouts, but doesn't elaborate on the parameter itself.

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 fetches a single workout with all details (sets, reps, etc.) and distinguishes it from list_workouts by specifying scope.

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?

Explicitly tells when to use (specific workout or cross-session comparison) and how to pair with list_workouts to get the id.

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

get_workout_countA

Total number of workouts the user has logged. Cheap; safe to call eagerly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It discloses that the tool is cheap and safe, which is helpful for a count operation. However, it does not specify response freshness or whether counts are real-time, leaving some ambiguity.

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

Conciseness5/5

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

The description is a single, compact sentence that efficiently conveys purpose and key behavioral traits without filler.

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?

Given zero parameters, an existing output schema, and low complexity, the description adequately covers the tool's purpose and cost characteristics. Minor missing details like 'real-time' do not significantly impair agent understanding.

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

Parameters4/5

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

The input schema has zero parameters and 100% coverage trivially. Per guidelines, a baseline of 4 is appropriate since the description adds no param details but does not need to.

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 it returns the total number of workouts logged by the user. The verb 'get' is implied, and the resource 'workout count' is distinct from sibling tools like 'list_workouts' which provide detailed lists.

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

Usage Guidelines4/5

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

The phrase 'Cheap; safe to call eagerly' provides clear guidance that the tool has low cost and no side effects, making it suitable for frequent calls. It distinguishes from detailed listing tools, but does not explicitly state when to avoid using it.

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

get_workout_eventsA

Stream of workout change events (created/updated/deleted).

Use to detect new workouts since a previous interaction without re-paginating the full list. The since parameter is ISO-8601 (e.g. 2025-01-01T00:00:00Z).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo
sinceNoISO-8601 timestamp. Only events newer than this are returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It explains pagination via page/page_size and the since parameter, but does not disclose behavior like rate limits, authentication, or empty results. Adequate but not rich.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and resource type, then immediate usage guidance. No redundant or extraneous text. Highly efficient.

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?

Given the tool's simplicity (paginated event stream), with an output schema present to document return values, the description is nearly complete. It could mention ordering of events but is otherwise sufficient for correct invocation.

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?

Only the 'since' parameter has a schema description (33% coverage). The description adds ISO-8601 format guidance and an example for 'since', but page and page_size lack any semantic enrichment. The defaults mitigate but do not fully compensate.

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 it provides a 'stream of workout change events (created/updated/deleted)' and explicitly distinguishes its use case from siblings like list_workouts by emphasizing detection of new workouts without re-paginating.

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

Usage Guidelines4/5

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

The description gives a clear use case ('detect new workouts since a previous interaction') and implies not to use for full list. However, it lacks explicit when-not scenarios or alternative tool references beyond sibling list_workouts.

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

list_exercise_templatesA

Paginated browse of the Hevy exercise library (~400 entries). Cached for 24h.

Prefer search_exercise_templates when looking up a specific exercise — it's far faster than scanning pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Discloses caching behavior (24h staleness) beyond what annotations provide, but does not detail other traits like rate limits or mutation safety. Given no annotations, the description adds useful context but could be more comprehensive.

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

Conciseness5/5

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

Two concise sentences with no superfluous words. Front-loads the core purpose and added value.

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?

Covers core purpose, caching, and alternative tool. Output schema exists and is not required to be described. Subtle omission of return format but acceptable for a simple list tool.

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?

The description indirectly explains pagination through context ('Paginated browse'), but does not explicitly describe the 'page' and 'page_size' parameters. Schema coverage is 0%, so the description partially compensates but lacks detail.

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?

Clearly states the tool is for paginated browsing of the Hevy exercise library, indicating its scope (~400 entries). Distinguishes itself from the sibling tool search_exercise_templates by contrasting use cases.

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?

Explicitly advises when to use this tool (browsing all exercises) and when to prefer the alternative (search_exercise_templates for specific exercises), noting performance differences.

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

list_routine_foldersB

List the user's routine folders (e.g. 'Push/Pull/Legs', 'Hypertrophy Block').

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose that this is a read-only operation, whether pagination is handled, or any authentication or rate-limit concerns. The brevity leaves important behavioral traits unmentioned.

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

Conciseness5/5

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

A single, well-front-loaded sentence that directly states the tool's purpose. No extraneous words; every word contributes.

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?

The tool is simple with two optional parameters and an output schema, but the description lacks details about pagination behavior, default ordering, or what information the folders contain. It is minimally adequate.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not mention the 'page' or 'page_size' parameters. Since coverage is low, the description must compensate but fails to add any semantic meaning to the input schema.

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 lists the user's routine folders and gives concrete examples ('Push/Pull/Legs', 'Hypertrophy Block'). The verb 'List' and resource 'routine folders' are specific and distinguish it from sibling tools like 'list_routines'.

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

Usage Guidelines3/5

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

No guidance on when to use this tool versus alternatives such as 'get_routine_folder' or 'list_routines'. The description implies usage for listing folders but does not provide exclusions or conditions.

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

list_routinesB

List the user's saved routines (templates they follow). Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so description must carry full burden; it only mentions pagination, missing details on authentication, performance, or side effects.

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

Conciseness5/5

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

Two short sentences with no redundancy; purpose and pagination stated efficiently.

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?

For a simple list tool with output schema, it covers basic purpose and pagination, but lacks details on ordering, filtering, or maximum page size; adequate but not comprehensive.

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

Parameters2/5

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

Schema coverage is 0%, and description only says 'Paginated' as a hint; does not explicitly define page or page_size meaning or constraints beyond defaults.

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?

Clearly states the tool lists the user's saved routines, distinguishing it from singular get_routine and write tools like create_routine.

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 on when to use this tool vs alternatives like get_routine or list_exercise_templates; no when-not or explicit context provided.

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

list_workoutsA

List the user's workouts in reverse-chronological order.

Use this first when the user asks about "recent workouts", "last N sessions", "what did I train on Monday", etc. Each item is a summary; call get_workout(workout_id) for full set-by-set detail when the user asks about specific weights, RPE, or progression.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-indexed page number.
page_sizeNoWorkouts per page. Hevy caps this at 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Without annotations, the description reveals reverse-chronological order and that items are summaries. It could mention pagination behavior explicitly, but the schema covers page/page_size. No contradictions.

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

Conciseness5/5

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

Two concise sentences in the first paragraph, then usage guidance. No redundant words. Very efficient.

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

Completeness5/5

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

For a paginated list tool with output schema, the description covers purpose, usage context, and behavioral trait. No gaps given the tool's simplicity.

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% and parameters are well-documented there. The description does not add parameter details, which is acceptable given schema completeness.

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 lists workouts in reverse-chronological order and specifies it provides summaries. It distinguishes from sibling tool get_workout which is for full detail.

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?

Explicitly advises to use this tool first for recent workouts and last sessions, and provides an alternative (get_workout) for specific weights or RPE. This gives clear when-to-use and when-not-to-use guidance.

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

progression_trendB

Top-set e1RM over time for a single exercise. Returns a per-session series suitable for charting.

ParametersJSON Schema
NameRequiredDescriptionDefault
exercise_template_idYes
sinceNo
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses return type ('per-session series') but does not mention any behavioral traits like authentication requirements, rate limits, side effects, or pagination behavior via the max_pages parameter. The description neither contradicts any annotations (none exist) nor provides deep transparency.

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

Conciseness3/5

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

The description is very short (one sentence plus a fragment), which makes it concise but at the expense of completeness. It is front-loaded with the core purpose, but the brevity forces the user to infer key details.

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

Completeness2/5

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

Given the tool has 3 parameters, low schema coverage (0%), and no annotations, the description is insufficient. It does not explain 'top-set e1RM', how the series is computed, or the effect of parameters like since and max_pages. An output schema exists but is not referenced, and the description fails to provide a complete picture for safe invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. However, it only mentions 'single exercise' and 'over time', failing to explain the parameters: exercise_template_id (which exercise), since (start date filtering), and max_pages (pagination). The field names are somewhat self-explanatory, but max_pages is not, and the description adds no additional meaning.

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 returns 'top-set e1RM over time for a single exercise' as a per-session series for charting. It uses a specific verb ('Returns') and resource ('top-set e1RM over time'), and the scope ('single exercise') distinguishes it from siblings like estimate_one_rep_max, which estimates a single e1RM.

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

Usage Guidelines3/5

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

The description implies usage for viewing progression trends but provides no explicit guidance on when to use this tool versus alternatives (e.g., estimate_one_rep_max for single estimates, or get_workout for raw data). No exclusions or alternative recommendations are given.

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

search_exercise_templatesA

Fuzzy-search the Hevy exercise library. Use this before create_routine or create_workout — it returns the exercise_template_id you need.

  • query: free-text exercise name. e.g. "barbell back squat", "incline db press".

  • equipment: optional filter, e.g. "barbell", "dumbbell", "cable", "machine", "bodyweight".

  • muscle_group: optional filter on primary_muscle_group, e.g. "chest", "lats", "quads".

Returns ranked candidates with id, title, equipment, primary_muscle_group, and a match score 0-100. Pick the top hit unless the user disambiguates.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
equipmentNo
muscle_groupNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description adequately discloses behavior: fuzzy-search, ranked results with match score, and suggestion to pick top hit. No destructive actions mentioned (appropriate for search).

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

Conciseness5/5

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

Concise and well-structured: purpose first, then usage, then parameter details, then output. Every sentence adds value with no redundancy.

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?

For a search tool with 4 parameters and an output schema (not shown), the description explains output format and usage of results. Missing details on pagination or errors, but adequate for the task.

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

Parameters4/5

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

Schema coverage is 0%, so description compensates by explaining query, equipment, and muscle_group with examples. However, the limit parameter is not described, slightly reducing completeness.

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 performs a fuzzy-search of the Hevy exercise library, and distinguishes it from siblings by specifying it returns the exercise_template_id needed for create_routine or create_workout.

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

Usage Guidelines4/5

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

Explicitly says 'Use this before create_routine or create_workout', providing clear context. It could benefit from mentioning when not to use (e.g., if listing all templates) but overall good guidance.

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

update_routineA

Update an existing routine in place.

Same payload shape as create_routine.routine, with one important caveat: Hevy's PUT endpoint does NOT accept folder_id, and there is no public API endpoint for moving a routine between folders. If folder_id is present in the payload it is silently stripped and a warning is included in the response. To 'move' a routine, create a new copy in the target folder and delete the old one in the Hevy app.

ParametersJSON Schema
NameRequiredDescriptionDefault
routine_idYes
routineYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses the important behavioral trait that folder_id is silently stripped with a warning, but it does not mention other potential side effects, partial update behavior, or return value specifics. With no annotations, the burden is higher, and the coverage is partial.

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 concise with a clear main statement followed by a focused caveat. It front-loads the purpose and appends necessary details without extraneous information.

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

Completeness2/5

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

Given the absence of annotations and 0% schema description coverage, the description leaves significant gaps, such as not explaining return values, required permissions, or other behavioral nuances beyond the folder_id quirk. It relies on external references (create_routine) that are not fully available here.

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?

The description adds meaning by referencing the payload shape from create_routine and noting the folder_id behavior, which supplements the schema (which has 0% description coverage). However, it does not explain the structure of the routine parameter in detail.

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 tool updates an existing routine and references the payload shape from create_routine, making the purpose evident. However, it does not explicitly distinguish from create_routine beyond the folder_id caveat, which slightly reduces clarity.

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

Usage Guidelines4/5

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

The description provides a specific workaround for moving routines (create new copy and delete old), which serves as an alternative usage scenario. However, it lacks general guidance on when to use this tool versus create_routine or other siblings.

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

update_workoutA

Replace the contents of an existing logged workout. Same payload shape as create_workout.

ParametersJSON Schema
NameRequiredDescriptionDefault
workout_idYes
workoutYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so description must convey behavior. 'Replace' indicates mutation, but no details on atomicity, permissions, or side effects. Adequate but minimal.

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

Conciseness5/5

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

Two sentences, no extraneous content. Information is front-loaded and efficient.

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?

Output schema exists, so return values are covered. However, for a mutation tool with nested objects and no annotations, more context about prerequisites and behavior would improve completeness.

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

Parameters2/5

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

Schema has 0% description coverage; description only notes 'same payload shape as create_workout'. No direct explanation of workout_id or workout object contents, forcing agent to infer or look elsewhere.

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?

Clear verb 'Replace' and resource 'existing logged workout' distinguish it from create_workout. The purpose is specific and unambiguous.

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

Usage Guidelines4/5

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

Description implies use for updating existing workouts vs creating new ones. Cross-reference to create_workout payload provides context, but lacks explicit when-not-to-use or alternatives.

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

volume_by_muscle_groupA

Aggregate working-set volume (kg lifted) by primary muscle group over a window.

Useful for "which muscle groups have I been neglecting?" prompts. Volume per set = weight_kg * reps; warmups excluded. Requires the template list to be loaded (it will be cached on first call).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
untilNo
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Discloses volume calculation, warmups excluded, and caching behavior. Without annotations, this is helpful. Could add more on pagination or performance for large windows.

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

Conciseness5/5

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

Three concise sentences, front-loaded with core function, then use case and details. No redundancy or extra words.

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?

Covers main purpose and important behavioral details, but lacks parameter documentation and output explanation (though output schema may supplement).

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

Parameters2/5

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

Schema coverage is 0%, but description does not explain parameters since, until, max_pages. Only says 'over a window' without format or default behavior. Missing crucial info for correct use.

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?

Clearly states it aggregates volume by muscle group, defines volume formula, and gives a specific use case. Distinguishes from siblings like list_workouts and progression_trend.

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

Usage Guidelines4/5

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

Explicitly mentions useful prompt ('which muscle groups neglected?') and prerequisite (template list loaded). Could clarify when not to use or alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.1.0
    • First observedcreate_routine
    • First observedcreate_routine_folder
    • First observedcreate_webhook_subscription
    • First observedcreate_workout
    • First observeddelete_webhook_subscription
    • First observedestimate_one_rep_max
    • First observedget_exercise_template
    • First observedget_routine
    • First observedget_routine_folder
    • First observedget_webhook_subscription
    • First observedget_workout
    • First observedget_workout_count
    • First observedget_workout_events
    • First observedlist_exercise_templates
    • First observedlist_routine_folders
    • First observedlist_routines
    • First observedlist_workouts
    • First observedprogression_trend
    • First observedsearch_exercise_templates
    • First observedupdate_routine
    • First observedupdate_workout
    • First observedvolume_by_muscle_group

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation5/5

Each tool targets a distinct resource and action: routines, folders, workouts, webhooks, exercises, and analytics. No overlapping functionality; an agent can clearly distinguish between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_routine, list_workouts, get_exercise_template). No mixing of conventions or vague verbs.

Tool Count4/5

With 22 tools, the set is slightly larger than typical but well-justified for a fitness tracking API covering CRUD, webhooks, and analytical operations. It remains scoped and manageable.

Completeness2/5

Missing delete operations for routines and workouts, and no update/delete for routine folders. This creates dead ends where agents cannot fully manage resources, limiting practical workflow completion.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server implementation that interfaces with the Hevy fitness tracking app and its API. This server enables AI assistants to access and manage workout data, routines, exercise templates, and more through the Hevy API (requires PRO subscription).
    23
    4,761 npm
    510
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Python MCP server for the Hevy fitness app. Gives Claude full access to your Hevy data. Log workouts, manage routines, track body measurements, browse exercises, and more. Covers all 25 endpoints of the official Hevy API.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that brings your Withings health data into Claude, allowing natural conversation access to sleep patterns, body measurements, workouts, heart data, and more.
    43
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides AI assistants with access to the Hevy fitness tracking API. This allows you to log workouts, manage routines, browse exercises, and track your fitness progress directly through AI chat interfaces.
    11 npm
    MIT