Skip to main content
Glama
amineutron

tracking

by amineutron

MCP Tracking

실시간 추적 MCP 서버(터미널 대시보드 포함). Claude/Lyra가 모든 긴 작업을 추적할 수 있게 하며 media-server(qBittorrent, Bazarr, DV 변환)에서 세션을 자동으로 공급합니다.


목차


Related MCP server: Claude Session MCP

아키텍처

MCP/tracking/
  server.py              -- Serveur MCP (outils Claude/Lyra) + point d'entree --ui / --test
  api.py                 -- API HTTP locale (127.0.0.1:8765) pour les scripts externes
  mutations.py           -- Mutations d'une session, partagees par api.py ET server.py
                            (horodatage items, historique, niveaux de log, auto-completion)
  metrics.py             -- Metriques derivees (vitesse, ETA, ecoule, stale) -- logique pure,
                            calculees a la lecture, jamais stockees
  storage.py             -- Persistence JSON atomique + verrou fichier + cache mtime + purge TTL
  models.py              -- Modeles pydantic (TrackingSession, TrackingItem, LogEntry, ProgressPoint)
  templates.py           -- Templates builtin + templates utilisateur (JSON)
  ui.py                  -- Dashboard Textual (TUI temps reel) + modales stop/kill
  sim.py                 -- Simulations de demo (server.py --test)
  poller.py              -- Daemon polling qBittorrent (10s) + Bazarr (60s)
  tracking-api.service   -- Unite systemd (systeme) pour api.py
  tracking-poller.service -- Unite systemd (systeme) pour poller.py
  install.sh / deploy.sh -- Installation initiale / redeploiement des services
  Makefile               -- make test | smoke | deploy | ui
  tests/                 -- unitaires (storage, metrics) + integration/ (API HTTP reelle)

상태 및 구성 파일

파일

위치

재정의

tracking_state.json

~/.local/state/tracking/

TRACKING_STATE_DIR

poller_state.json

~/.local/state/tracking/

TRACKING_STATE_DIR

templates.json (사용자 템플릿, 선택 사항)

~/.config/tracking/

TRACKING_TEMPLATES_FILE

credentials/*.cred (qBittorrent, Bazarr)

코드 옆, gitignore

--

코드 옆의 이전 tracking_state.json은 첫 시작 시 자동으로 마이그레이션됩니다(복사만 하며 삭제하지 않음).

보존 환경 변수:

변수

기본값

역할

TRACKING_TTL_DAYS

7

done / error / paused 세션 정리

TRACKING_TTL_RUNNING_H

24

업데이트가 중단된 running 고아 세션 정리

전체 데이터 흐름

Claude/Lyra (outils MCP)
      |
      v
  server.py ─────────────────────────────────────────┐
                                                      |
qBittorrent API (poll 10s)                            |
      |                                               |
Bazarr API (poll 60s)    ──> poller.py ──> api.py ──> mutations.py ──> storage.py ──> ~/.local/state/tracking/tracking_state.json
      |                                               |                        |
dv_webhook_server.py                                  |                        v
      |                                               |                     ui.py
      v                                               |               (rafraichit chaque seconde)
dv_convert.py ──────────────────────────────────────>
   (metriques temps reel ffmpeg/dovi_tool)

상태 파일은 파일 잠금(tracking_state.lock) 아래 원자적 쓰기(os.replace)를 통해 수정될 때마다 기록됩니다. 모든 프로세스(MCP, API, poller, dashboard)가 이 단일 파일을 공유하며, 각 읽기는 mtime을 확인하여 캐시를 무효화합니다.

모든 변경(HTTP 또는 MCP)은 mutations.py를 거치며 두 경로에서 동일한 동작을 보장합니다: 항목과 세션에 started_at / finished_at 설정, 진행 이력(40개 포인트 슬라이딩 윈도우), info / warn / error 로그 레벨, 모든 항목이 완료되면 자동 완료 처리.

파생 지표

GET /sessionstracking_getmetrics.py가 즉시 계산하는 metrics 블록을 반환합니다.

필드

의미

percent

진행률(100으로 제한)

rate, rate_str

최근 120초 동안의 속도(2.0 MB/s, 30.0 u/min)

eta_seconds, eta_str

예상 남은 시간(running 세션만)

elapsed_seconds, elapsed_str

created_at부터 finished_at 또는 현재까지

idle_seconds, stale

stale = 10분 동안 업데이트 없는 running(TUI에 표시)


설치

cd /home/amineutron/dev/MCP/tracking

# Creer le venv et installer les dependances
uv venv .venv
uv pip install "mcp[cli]>=1.0.0" "pydantic>=2.0" "textual>=0.80.0" "fastapi"

MCP는 Claude Code(사용자 범위)에 등록됩니다:

claude mcp list        # -> tracking: Connected

다시 등록하려면:

claude mcp add tracking -s user -- \
  /home/amineutron/dev/MCP/tracking/.venv/bin/python \
  /home/amineutron/dev/MCP/tracking/server.py

systemd 서비스

두 서비스가 항상 실행되며 부팅 시 시작됩니다:

서비스

역할

포트

tracking-api.service

외부 스크립트용 로컬 HTTP API

127.0.0.1:8765

tracking-poller.service

qBittorrent(10초) + Bazarr(60초) 폴링

--

초기 설치 및 재배포

cd /home/amineutron/dev/MCP/tracking
./install.sh        # premiere fois : venv + services (demande sudo)
sudo ./deploy.sh    # apres chaque mise a jour du code : stop, unites, restart, verif
make smoke          # sante rapide

Claude Code 세션에서 이미 열린 MCP server.py 인스턴스는 deploy.sh로 재시작되지 않습니다: 해당 세션에서 /mcp를 통해 tracking을 다시 연결하세요.

유용한 명령어

# Etat
systemctl status tracking-api.service tracking-poller.service

# Logs en direct
journalctl -fu tracking-poller.service
journalctl -fu tracking-api.service

# Redemarrage
sudo systemctl restart tracking-api.service tracking-poller.service

# Test API
curl http://127.0.0.1:8765/health
curl http://127.0.0.1:8765/sessions

실행

대시보드 (wofi 단축키)

wofi/런처에서 "MCP Tracking"을 검색하세요. Kitty에서 대시보드를 실행합니다.

대시보드 (터미널)

# Toutes les sessions
/home/amineutron/dev/MCP/tracking/.venv/bin/python \
  /home/amineutron/dev/MCP/tracking/server.py --ui

# Filtre direct au lancement
.venv/bin/python server.py --ui --filter download
.venv/bin/python server.py --ui --filter movie
.venv/bin/python server.py --ui --filter errors

MCP 도구 사용 (Claude/Lyra에서)

open_tracking_ui()                             # toutes les sessions
open_tracking_ui(filter_template="lyra_task")  # vue Lyra uniquement
open_tracking_ui(filter_template="errors")     # erreurs uniquement

테스트 모드 (데모)

.venv/bin/python server.py --test

4개 세션을 병렬로 시뮬레이션합니다: download, machine(12개 노드), free, movie(전체 DV 파이프라인).


대시보드

세션 레이아웃

[TEMPLATE]  Nom de la session  id:xxxxxxxx  (status)
  [=============>            ] 54.2%  27100 MB / 50000 MB
  champ_extra1: valeur  |  champ_extra2: valeur

  [ok]  item-1                          100.0 GB     -- termine
  [>]   item-2                          frame: 94231 / 172800  (54.5%)  speed: 3.2x
  [ ]   item-3                          --
  [!]   item-4                          erreur detail

  Logs                                  Erreurs
  14:32:01  Message log 1               [!] item-4
  14:32:04  Message log 2               14:32:08  ECHEC: details
  14:32:07  Message log 3               --
  --                                    --
  --                                    --

항목 아이콘

아이콘

상태

색상

[ ]

pending

회색

[>]

running

청록색

[ok]

done

초록색

[!]

error

빨간색

세션 색상

색상

상태

청록색

running

초록색

done

빨간색

error

노란색

paused

키보드 단축키

동작

f

다음 필터(템플릿별 동적 순환)

e

오류만 필터 전환

r

수동 새로고침

s

세션 정상 중지(ID 입력) -> status paused

k

세션 강제 종료(ID 입력) -> 삭제

q

종료

화살표 / 휠

스크롤

stop/kill 모달

s 또는 k를 누르면 세션 ID 입력 필드가 있는 모달이 열립니다.

  • s는 세션을 paused로 표시하고 로그를 추가합니다

  • k는 대시보드에서 세션을 완전히 삭제합니다

  • Echap는 취소합니다

동적 필터링

필터 순환은 현재 존재하는 세션에서 자동으로 구성됩니다:

all -> download -> free -> movie -> lyra_task -> errors -> all -> ...
  • all 항상 표시

  • JSON에 있는 각 템플릿이 자동으로 추가됨

  • errors는 최소 하나의 세션에 오류가 있을 때만 표시됨

  • 활성 필터가 하위 제목에 표시됨: filtre: movie | 2/5 session(s)

  • 필터링된 템플릿이 JSON에서 사라지면 자동으로 all로 돌아감


media-server 통합

qBittorrent (자동)

poller는 10초마다 http://localhost:8080/api/v2/torrents/info를 조회합니다.

  • 활성 토렌트 = 이름, 크기, 속도, ETA가 포함된 [DOWNLOAD] 세션

  • 토렌트가 완료되거나 사라지면 세션이 자동으로 삭제됩니다

  • 자격 증명: credentials/qbt-password.cred(systemd-creds --user로 암호화, media-server/scripts/secrets/rotate-secrets.sh가 생성)

Bazarr 누락 자막 (자동)

poller는 60초마다 Bazarr API를 조회합니다.

  • 단일 [SUBTITLES] 세션이 프랑스어 자막이 없는 모든 에피소드/영화를 나열합니다

  • 세션 제목에 총 개수가 표시됩니다: Sous-titres manquants (151)

  • 누락된 처음 50개 파일이 항목으로 나열됩니다

  • Bazarr API 키: credentials/bazarr-api-key.cred(동일한 메커니즘). 자격 증명이 없으면 해당 poller는 그냥 비활성화됩니다.

Dolby Vision 변환 (자동)

Radarr/Sonarr가 DV Profile 4 또는 7 영화를 가져올 때 dv-webhook.service가 트리거합니다.

흐름:

Radarr/Sonarr import
      |
      v
dv_webhook_server.py (port 8787)
      |-- cree session tracking via api.py
      |-- passe DV_TRACKING_SESSION_ID en env
      v
dv_convert.py
      |-- 6 etapes avec metriques temps reel
      |-- ffmpeg   : frame / speed / size / time (parse stderr)
      |-- dovi_tool: frames X/Y ou X% (parse stderr indicatif)
      v
session tracking completee ou en erreur

추적되는 6단계와 해당 지표:

단계

도구

표시 지표

1/6 HEVC 추출

ffmpeg

frame / speed / size / time

2/6 BL/EL 디먹스

dovi_tool

frames X/Y (%), bl: X GB, el: X GB

3/6 RPU 추출 + P8 변환

dovi_tool

frames X/Y (%), RPU: X KB

4/6 BL에 RPU P8 주입

dovi_tool

frames X/Y (%), P8 HEVC: X GB

5/6 타임스탬프 재구성

ffmpeg

frame / fps / size

6/6 최종 MKV 리먹싱

ffmpeg

frame / speed / size

전체 진행률 표시줄은 각 단계 동안 계속 전진합니다(각 단계 끝에 1/6씩 점프하지 않음).

수동 모드:

# Fichier unique
python /home/amineutron/dev/media-server/scripts/dv_convert.py /chemin/film.mkv

# Scan dossier
python /home/amineutron/dev/media-server/scripts/dv_convert.py --scan /mnt/media/media/movies

수동 모드에서는 추적 세션이 process_file 내에서 자동으로 생성됩니다.

로컬 HTTP API (포트 8765)

외부 스크립트가 세션을 직접 생성/수정할 수 있습니다:

# Creer une session
curl -X POST http://127.0.0.1:8765/sessions \
  -H "Content-Type: application/json" \
  -d '{"name":"Mon operation","template":"free","total":100,"unit":"%"}'
# -> {"id": "a1b2c3d4"}

# Mettre a jour
curl -X PUT http://127.0.0.1:8765/sessions/a1b2c3d4 \
  -H "Content-Type: application/json" \
  -d '{"processed":45,"log":"Etape 2/5 en cours","extra":{"phase":"etape 2"}}'

# Mettre a jour un item
curl -X PUT http://127.0.0.1:8765/sessions/a1b2c3d4 \
  -H "Content-Type: application/json" \
  -d '{"item":{"name":"mon-item","status":"done","note":"100 frames  speed: 2x"}}'

# Supprimer
curl -X DELETE http://127.0.0.1:8765/sessions/a1b2c3d4

# Lister
curl http://127.0.0.1:8765/sessions

전체 PUT 본문 (모든 필드 선택 사항):

{
  "processed": 45.0,
  "total":     100.0,
  "status":    "running",
  "extra":     {"phase": "etape 2"},
  "log":       "message de log",
  "item": {
    "name":      "nom-de-l-item",
    "status":    "running",
    "note":      "metriques ici",
    "processed": 50.0,
    "total":     100.0
  }
}

MCP 도구

tracking_create

Parametres:
  name      (str)          Nom de la session
  template  (str)          "download" | "machine" | "free" | "movie" | "lyra_task" |
                           "subtitles" | "series_episode" | "series_season" | template utilisateur
  total     (float)        Valeur totale
  unit      (str, opt)     Unite affichee (ex: " MB", " machines", "%")
  items     (list, opt)    Liste d'elements a suivre
  extra     (dict, opt)    Champs specifiques au template

Format items:
  [{"name": "fichier.iso", "total": 5100, "unit": " MB", "note": "info"}]

Retourne: ID de session + etat initial formate

tracking_update

Parametres:
  session_id    (str)          ID de la session
  processed     (float, opt)   Nouvelle valeur de progression
  message       (str, opt)     Message de log
  item_updates  (list, opt)    Mises a jour des items
  extra         (dict, opt)    Champs extra a merger

Format item_updates:
  [{"name": "item-1", "status": "done", "processed": 1200, "note": "detail"}]
  Status: "pending" | "running" | "done" | "error"

tracking_log

진행률을 수정하지 않고 로그를 추가합니다.

Parametres:
  session_id  (str)
  message     (str)

tracking_complete

100% 완료(done)로 표시합니다.

Parametres:
  session_id  (str)
  message     (str, opt)

tracking_error

오류로 표시합니다(자동으로 "ERREUR:" 접두사가 붙고, 오류 열에 표시됩니다).

Parametres:
  session_id  (str)
  message     (str)

tracking_stop

세션을 정상적으로 중지합니다(status -> paused). 대시보드에 계속 표시됩니다.

Parametres:
  session_id  (str)
  message     (str, opt)

tracking_kill

세션을 강제로 삭제합니다. 대시보드에서 즉시 사라집니다.

Parametres:
  session_id  (str)

tracking_get

세션의 전체 상태를 형식화하여 반환합니다.

tracking_list

Parametres:
  template  (str, opt)   Filtrer par template
  status    (str, opt)   Filtrer par statut ("running", "done", "error", "paused")

tracking_delete

세션을 삭제합니다(tracking_kill과 동일).

tracking_templates

템플릿 목록과 해당 필드를 표시합니다.

open_tracking_ui

Kitty 터미널에서 대시보드를 엽니다.

Parametres:
  filter_template  (str, opt)   Template a afficher au lancement

템플릿

download

파일 다운로드. poller를 통해 qBittorrent가 자동으로 채웁니다.

Champs extra : speed, eta
Unite par defaut : MB

machine

머신에 대한 작업(update, clone, snapshot, deploy). Lyra가 VM/클러스터 작업에 사용합니다.

Champs extra : operation, target
Unite par defaut : machines

free

자유 형식. poller가 누락된 Bazarr 자막에 사용합니다.

Aucun champ extra impose, aucune unite par defaut.

lyra_task

Lyra 작업(VM clone, backup, update, snapshot).

Champs extra : operation, target, phase, eta
Unite par defaut : %

movie

영화 전체 파이프라인: 다운로드 -> Dolby Vision 변환. Radarr/Sonarr가 DV P4/P7 파일을 가져올 때 dv_convert.py가 자동으로 채웁니다.

Champs extra : phase, quality, codec, audio, source, dv, speed, eta
Unite par defaut : %

Les 6 etapes DV trackees avec metriques temps reel :
  "1/6 extraction HEVC"
  "2/6 demux BL/EL"
  "3/6 extraction RPU + conv P8"
  "4/6 injection RPU P8 dans BL"
  "5/6 reconstruction timestamps"
  "6/6 remuxage MKV final"

보안

  • api.py127.0.0.1:8765에서만 수신합니다 -- 네트워크에서 접근 불가

  • n8n은 docker-compose.yml에서 127.0.0.1:5678로 제한됨

  • dv_webhook_server.py0.0.0.0:8787에서 수신합니다(Docker 웹훅 수신에 필요) -- 머신이 노출된 경우 방화벽으로 이 포트를 보호하세요

  • systemd 서비스는 NoNewPrivileges=true로 실행됩니다

  • 코드에 평문 비밀번호가 없습니다: poller.py$CREDENTIALS_DIRECTORY(사용자 서비스)를 읽거나 systemd-creds decrypt --user(시스템 서비스)로 credentials/*.cred를 해독하며, 디버그용 QBT_PASSWORD / BAZARR_KEY 변수로 대체됩니다.


템플릿 추가

  1. templates.py를 열고 TEMPLATES에 항목을 추가하세요:

"mon_template": {
    "description": "Description courte",
    "extra_fields": ["champ1", "champ2"],
    "default_unit": " unites",
    "example_extra": {"champ1": "valeur", "champ2": "valeur"},
},
  1. 선택 사항: sim.py_sim_mon_template() 시뮬레이션을 추가하세요.

템플릿은 추가 수정 없이 즉시 사용할 수 있습니다.

코드를 건드리지 않고도 ~/.config/tracking/templates.json에 템플릿을 선언할 수 있습니다(동일한 구조, 키 = 템플릿 이름). 시작 시 로드됩니다.


테스트

make test     # unitaires (storage, metrics) + integration (API HTTP reelle sur port ephemere)

conftest.py의 autouse 픽스처는 영속성을 tmp_path로 리디렉션합니다: 테스트는 절대 프로덕션 상태를 건드리지 않습니다.

Available Tools

12 tools
open_tracking_uiB

Ouvre le dashboard de tracking dans un terminal Kitty.

Args: filter_template: Template a afficher au demarrage ("lyra_task", "movie", "download"...) Si absent, affiche toutes les sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_templateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 behavioral burden. It discloses the side effect of opening a terminal window (implying a Kitty dependency), which is useful, but says nothing about whether the call blocks, whether it requires Kitty to be installed, or what the response contains. That is thin for a UI-launching tool with zero annotation coverage.

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 core action is front-loaded in a single sentence, followed by a compact Args block. It is efficient, though the 'Args:' header and repetition of the parameter name add mild overhead.

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?

An output schema exists, so return values need not be described. Purpose and the single parameter are covered, but the description omits usage context and the blocking/async behavior of the call, leaving the picture only partially complete for a tool that spawns an external terminal UI.

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 compensate, and it largely does: it explains that filter_template selects which template to display at startup, gives concrete examples ("lyra_task", "movie", "download"), and states the default behavior when omitted. This adds real meaning beyond the bare string type in the schema.

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?

It states a specific verb and resource: opens the tracking dashboard in a Kitty terminal. This is clearly distinguishable from the CRUD-oriented siblings (tracking_create, tracking_list, etc.), which manipulate tracking data rather than launch a UI. It stops short of explicitly naming a sibling to contrast against, so a 4 rather than a 5.

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?

There is no guidance on when to use this launcher versus the many tracking_* data tools, nor any prerequisites or exclusions. Usage is only implied by the name and by 'dashboard'.

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

tracking_completeC

Marque une session comme terminee et met la progression a 100%.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNo
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/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 discloses one behavioral effect (progress forced to 100%) but says nothing about permissions required, whether the action is reversible, what happens to already-completed sessions, or whether the optional message is persisted.

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 front-loaded sentence with no filler; the state change is stated immediately. Brevity is appropriate, though it comes at the cost of detail elsewhere.

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?

An output schema exists so return values need not be explained, but for a mutation tool with zero annotations and zero parameter coverage the description should at minimum explain the message argument and the effect on already-closed sessions. It leaves an agent with real gaps before invoking.

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 nothing documents session_id or message. The description only obliquely implies a session identifier and never mentions the message parameter or what it is used for, leaving the agent unable to use it meaningfully.

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 names a specific verb ("Marque") and resource ("session") plus the resulting state ("terminee", "progression a 100%"), so the agent knows this is a terminal-state transition. It does not distinguish itself from close siblings like tracking_stop or tracking_kill, which also end sessions, leaving the agent to guess which one to pick.

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?

There is no guidance on when to use this versus tracking_stop, tracking_kill, or tracking_update, all of which likely touch session state. No prerequisites or conditions (e.g., only for in-progress sessions) are stated.

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

tracking_createA

Cree une nouvelle session de tracking.

Args: name: Nom de la session (ex: "[DEV] Build worldmonitor") template: voir tracking_templates() ("free", "machine", "download", "lyra_task"...) total: Valeur totale (ex: 15300 pour 15300 MB, 6 pour 6 etapes) unit: Unite affichee (ex: " MB", " etapes") items: Liste optionnelle d'etapes [{name, status?, total?, unit?, note?}] extra: Champs specifiques au template (speed, eta, operation, target...) pid: PID du processus a signaler par tracking_stop / tracking_kill

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNo
nameYes
unitNo
extraNo
itemsNo
totalYes
templateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.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 carries the full behavioral burden. It discloses some behavior (template-specific extra fields, pid consumed by tracking_stop/tracking_kill), but says nothing about what creation returns, whether failures occur on duplicate names, or permission/auth requirements for a mutation-style tool.

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 a one-line purpose, then a structured Args block where each line earns its place by documenting a parameter the schema leaves bare. Slightly verbose formatting for what is essentially param documentation, but no wasted content.

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?

An output schema exists, so return values need no explanation, and parameters are well covered. What is missing for a 7-parameter creation tool with no annotations is usage context and creation-side behavior (idempotency, error cases), leaving the definition merely adequate.

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 0% schema description coverage, the description nearly compensates fully: it explains all seven parameters with concrete examples (total=15300 MB, unit, items as a nested step list with its own fields, extra as template-specific keys). It falls short of 5 only because 'extra' is described vaguely ('champs specifiques au template') rather than mapping keys to specific templates.

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?

States a specific verb and resource: 'Cree une nouvelle session de tracking' (creates a new tracking session), which is unambiguous on its own. However, it never names the sibling it differs from (e.g., tracking_update vs create), so the agent must infer the create/update boundary from the name alone.

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?

Usage is only implied (create a session when starting tracked work). It cross-references siblings tracking_templates() for valid template values and tracking_stop/tracking_kill for the pid, which is useful, but there is no explicit statement of when to prefer this tool over alternatives or what prerequisites exist.

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

tracking_deleteC

Supprime une session (sans toucher au processus).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral burden. It adds useful context by clarifying that the operation does not affect the process, which distinguishes destructive intent. However, it doesn't state whether the deletion is permanent, what permissions are required, or what happens to related data.

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, efficient sentence that front-loads the action and includes a clarification. It's concise and does not waste words, though it could be slightly more informative 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 a mutation tool with no annotations, one parameter, and an output schema (which the description needn't explain), the description is minimally adequate. It covers the key behavioral trait of not touching the process, but lacks details on irreversibility, permissions, or side effects that would make it more complete.

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%, with one required parameter (session_id). The description doesn't elaborate on the parameter at all, but with only one obvious parameter, the baseline of 3 seems appropriate. An agent can infer session_id is the identifier of the session to delete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb of sorts ("Supprime" implies delete) and the resource (une session / a tracking session). It distinguishes itself from tracking_kill by noting it doesn't touch the process, which helps against that sibling. However, it's terse and doesn't explicitly name what a "session" is in this context, leaving some ambiguity.

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?

There is no explicit guidance on when to use this tool versus alternatives like tracking_stop, tracking_kill, or tracking_complete. The parenthetical hint suggests it's for deleting a session record without terminating the underlying process, but this is implied rather than stated as a use case.

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

tracking_errorC

Marque une session en erreur.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and falls short. It does not disclose that this is a mutating/terminal state change, whether it is idempotent, what happens to an already-errored or completed session, or any permission requirements.

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 single sentence is front-loaded and free of padding, but its brevity reflects under-specification rather than disciplined conciseness. It is appropriately sized only because it conveys almost nothing.

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?

Although an output schema exists (so return values need not be explained), this is a two-parameter mutation tool with zero annotation coverage and no parameter documentation. The description is far too thin for an agent to invoke it confidently over its many siblings.

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 both required parameters (session_id and message) are undocumented in both schema and description. The word 'session' loosely implies session_id, but the description adds no meaning for 'message' or formatting expectations, leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb and resource ('Marque une session en erreur' = marks a session as errored), so the core action is inferable. However, it offers no differentiation from siblings like tracking_update, tracking_stop, or tracking_kill, which also mutate session state, so an agent cannot tell them apart from the text alone.

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?

There is no indication of when to call this tool, when not to, or which sibling to prefer for related operations such as stopping or completing a session. The agent receives no routing guidance.

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

tracking_getC

Retourne l'etat formate complet d'une session (avec metriques).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/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 behavioral burden. It mentions that metrics are included in a formatted state, but says nothing about permission requirements, behavior when the session_id does not exist, or whether reads are side-effect free.

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?

A single short sentence, front-loaded with the verb and the returned resource. No wasted words, though it is arguably too terse given the missing guidance.

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?

An output schema exists, so return values need not be explained, but for a heavily-sibling-ed tool with a 0%-documented parameter and no annotations, the definition is under-specified. It omits when-to-use, parameter meaning, and error behavior.

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% and the single parameter session_id is undocumented in both schema and description. The description refers to 'une session' but never explains what session_id is (format, source, or how to obtain it), so it fails to compensate for the coverage gap.

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 states a clear verb and resource ('Retourne l'etat formate complet d'une session') and adds scope detail ('avec metriques'), so it is more than a restatement of the name. However, it offers no differentiation from the many siblings (tracking_list, tracking_templates, tracking_get vs tracking_update), leaving the agent to infer which read tool to pick.

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?

There is no guidance on when to use this tool rather than tracking_list or tracking_templates, and no prerequisites or exclusions are stated. The only implied usage is that it requires a session_id, which comes from the schema, not the description.

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

tracking_killB

Arret force : envoie SIGKILL au processus si la session a un pid, puis supprime la session du dashboard.

Args: session_id: ID de la session

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses SIGKILL delivery, the conditional on the session having a `pid`, and that the session is then removed from the dashboard. It stops short of stating irreversibility, permissions, or the failure mode when no pid exists.

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?

Two compact, front-loaded sentences with the essential action first and the parameter note after. Very little waste, though the Args block is redundant given a single self-evident param.

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?

An output schema exists, so return values need not be explained, and the destructive behavior is disclosed. Still, with no annotations and no sibling differentiation, an agent lacks enough to confidently choose kill over stop/delete.

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?

One parameter at 0% schema coverage, and the description only restates it as 'ID de la session', adding essentially no meaning beyond the parameter name. It does not specify format or source of the ID.

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?

Specific verb+resource: a forced stop that sends SIGKILL to the process and removes the session from the dashboard. It conveys the destructive nature clearly. However, it does not differentiate itself from the close siblings tracking_stop and tracking_delete, which an agent must distinguish.

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?

There is no when-to-use guidance and no mention of alternatives, despite tracking_stop and tracking_delete being obvious overlapping siblings. The agent is left to infer that this is the forceful variant.

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

tracking_listB

Liste les sessions avec filtres optionnels.

Args: template: Filtrer par template ("download", "machine", "free", "movie", "lyra_task"...) status: Filtrer par statut ("running", "done", "error", "paused")

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
templateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It does not state that this is a read-only operation, whether results are paginated, permission requirements, or what happens with multiple active sessions. Only filter example values are disclosed.

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 front-loaded and compact: one sentence states the purpose, then a short Args section documents both optional parameters. Every line earns its place with no redundancy.

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 two-filter list tool with an output schema, the description covers purpose and parameter meanings. It still omits usage routing against sibling tools and behavioral details like pagination or read-only guarantees, so it is adequate but not fully complete.

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%, and the description compensates well by explaining both parameters: 'template' and 'status', including example values for each. It falls short of perfect because it does not clarify whether values are exhaustive, case-sensitive, or how the filters combine.

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: 'Liste les sessions avec filtres optionnels.' This distinguishes it from sibling mutation tools like tracking_create and tracking_update. However, it does not explicitly differentiate it from tracking_get, which also retrieves tracking data.

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?

The description says filters are optional but gives no guidance on when to use this tool versus alternatives such as tracking_get or tracking_templates. It also does not state any prerequisite context or exclusions.

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

tracking_logB

Ajoute une entree de log (info | warn | error) sans modifier la progression.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoinfo
messageYes
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the full burden. It usefully discloses that the call does not alter tracking progression (a non-state-changing append), but omits any auth/permission requirements or rate-limit 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?

A single front-loaded sentence with zero filler; the core action and its non-mutating constraint come first and nothing is wasted.

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?

An output schema exists, so return values needn't be explained, and the tool is simple. However, the missing differentiation from tracking_error and the undocumented session_id leave gaps for an agent choosing among 12 siblings.

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%, so the description must compensate. It supplies the level enum values (info | warn | error) that the schema lacks and clarifies 'message' as a log entry, but says nothing about session_id's role.

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?

States a specific verb and resource ('Ajoute une entree de log') and names the allowed levels, so the agent knows it appends a log entry. It hints at scope with 'sans modifier la progression', but never names a sibling, leaving the overlap with tracking_error unresolved.

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 explicit when-to-use, when-not-to-use, or alternative is given. The phrase 'sans modifier la progression' describes a behavioral property rather than telling the agent when to pick this over tracking_error or tracking_update.

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

tracking_stopB

Arret propre : envoie SIGTERM au processus si la session a un pid, puis marque la session 'paused' (elle reste visible dans le dashboard).

Args: session_id: ID de la session message: Raison de l'arret (optionnel)

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNo
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a decent job: it discloses the mechanism (SIGTERM), the conditional trigger (only if the session has a `pid`), and the resulting state change ('paused', still visible in the dashboard). It omits permissions/auth requirements and whether the session can later be resumed, keeping it short of a 5.

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-loads the purpose in the first sentence and uses a compact Args block for the two parameters. No filler sentences, though the parameter list is somewhat redundant with the schema.

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?

An output schema exists, so return values need not be explained, and the description covers the core mutation behavior. For a mutation tool with zero annotation coverage, the missing sibling differentiation (tracking_kill) and lack of any permission/reversibility note leave a meaningful 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%, so the description must compensate and it partially does, documenting both parameters ('ID de la session' and 'Raison de l'arret (optionnel)'). The added meaning is thin — it largely restates parameter names without format, constraints, or effect on behavior.

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?

States a specific verb and resource with concrete mechanics: sends SIGTERM to the process and marks the session 'paused'. However, it never distinguishes itself from the sibling tracking_kill, so an agent cannot tell the two stop-like tools apart without further inference.

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?

The label 'Arret propre' (clean stop) implicitly hints at a contrast with a forced stop, but the description gives no explicit when-to-use guidance and never names tracking_kill or tracking_complete as alternatives. The choice between these siblings is left entirely to inference.

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

tracking_templatesA

Liste les templates disponibles (builtins + ~/.config/tracking/templates.json).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.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 carries the full behavioral burden. It usefully discloses the data sources (builtins plus ~/.config/tracking/templates.json), which is real context beyond the schema, but it never states that the operation is read-only, whether any permissions or files are required, or how missing config files are handled.

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 short sentence that front-loads the action and then the scope. Nothing is padded and nothing is wasted.

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?

An output schema exists, so return values need not be described, and with no parameters the definition has little else to cover. The only real shortfall is the absence of usage context relative to its eleven sibling tools.

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 takes zero parameters, so per the rubric the baseline is 4. There are no argument semantics that the description could or should clarify.

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?

States a specific verb and resource ('Liste les templates disponibles') and even names the two sources it reads from, so the agent knows exactly what this returns. It does not explicitly differentiate itself from siblings such as tracking_list, though 'templates' is a distinct resource not covered by any other tool.

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?

The description states what the tool does but gives no when-to-use guidance, no prerequisites, and no reference to alternatives. An agent must infer that this is a discovery step before tracking_create, since nothing in the text says so.

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

tracking_updateB

Met a jour la progression d'une session. La vitesse, l'ETA et le temps ecoule sont calcules automatiquement a partir de processed.

Args: session_id: ID de la session processed: Nouvelle valeur de progression (optionnel) message: Message de log a ajouter (optionnel) item_updates: Etapes a mettre a jour ou creer [{name?, id?, status?, processed?, note?}] extra: Champs extra a mettre a jour (speed, eta, phase...) level: Niveau du message : "info" | "warn" | "error"

ParametersJSON Schema
NameRequiredDescriptionDefault
extraNo
levelNoinfo
messageNo
processedNo
session_idYes
item_updatesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the full behavioral burden. It does disclose a genuine behavioral trait — that speed, ETA, and elapsed time are derived automatically from 'processed' — which helps an agent avoid setting those manually. It omits whether the session must pre-exist, side effects on log/items, and auth requirements.

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?

Purpose is front-loaded in the first sentence, then a compact Args list. Sized appropriately for six parameters with no filler.

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?

An output schema exists, so return values need not be explained, and the parameter tour is fairly complete. The main gap is the absence of any routing context among the ten-plus tracking siblings, which an agent selecting among them needs.

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 compensate, and it largely does: it documents all six parameters, including the nested item_updates shape ({name?, id?, status?, processed?, note?}), the 'extra' passthrough for speed/eta/phase, and the level enum values. This is meaningful added meaning beyond the bare schema.

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?

States a specific verb ('Met a jour') and resource ('la progression d'une session'), so an agent knows exactly what it does. However, it does not differentiate itself from any of the many siblings (tracking_log, tracking_complete, tracking_error, tracking_stop), which an agent must choose between.

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?

There is no guidance on when to use this versus tracking_log, tracking_complete, or tracking_error. The description only implies usage through the field list, leaving the agent to infer selection criteria.

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. 12 tool updatesv0.1.0
    • First observedopen_tracking_ui
    • First observedtracking_complete
    • First observedtracking_create
    • First observedtracking_delete
    • First observedtracking_error
    • First observedtracking_get
    • First observedtracking_kill
    • First observedtracking_list
    • First observedtracking_log
    • First observedtracking_stop
    • First observedtracking_templates
    • First observedtracking_update

TDQS

B3.2/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target distinct operations, but tracking_stop, tracking_kill, tracking_delete, tracking_complete, and tracking_error form a cluster of lifecycle-ending actions that could be confused, though descriptions do differentiate them (SIGTERM+pause vs SIGKILL+delete vs delete vs complete). tracking_update vs tracking_log also slightly overlap since update can carry a message.

Naming Consistency4/5

Nearly all tools use a consistent snake_case tracking_verb pattern (create, update, log, complete, error, get, list, delete, stop, kill). The single outlier is open_tracking_ui, which uses a different prefix style, a minor deviation.

Tool Count5/5

12 tools is well within the ideal 3-15 range and each maps to a meaningful lifecycle operation for session management. No filler tools appear present.

Completeness4/5

Full lifecycle coverage exists: create, update, log, complete, error, get, list, delete, stop, kill, plus templates and UI. The main gap is an explicit resume/un-pause operation, since tracking_stop leaves a session paused with no dedicated tool to restart it.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides Claude Code with programmatic session awareness to track context usage, session history, and task progress. It enables intelligent context reset recommendations and automatic synchronization of project planning documentation.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive project management and workflow tracking system that integrates with Claude Code via MCP, automatically capturing sessions, tools, agents, and project tasks into a centralized dashboard and database.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for monitoring Claude Code sessions, agent performance, cost tracking, project management, and GitHub synchronization with 89 tools and a real-time dashboard.
    -