Skip to main content
Glama

supershift-mcp

MCP- und HTTP-Bridge fuer Dienstplaene, die aus Supershift als Kalender exportiert werden.

Status: Inoffizielles Community-Projekt. Es liest exportierte Kalenderdaten, kann Dienste ueber kontrollierte Android-UI-Automation vorbereiten/eintragen und enthaelt Reverse-Engineering-Werkzeuge fuer APK, Deep-Links, lokale App-Daten und Supershift-Cloud-Payload-Preview.

CI

Was ist das?

Supershift selbst bietet nach aktueller Recherche keine dokumentierte oeffentliche API und keinen offiziellen MCP-Server. Der robuste Integrationsweg ist deshalb der Kalenderexport: Supershift kann Dienste in einen externen Kalender exportieren, und dieser Kalender kann als .ics Datei oder private iCal-URL gelesen werden.

supershift-mcp macht daraus:

  • einen MCP-Server fuer KI-Clients

  • eine optionale FastAPI HTTP-API

  • Analysefunktionen fuer Dienste, Ruhezeiten, Konflikte, freie Tage und Stunden

  • Exportfunktionen in JSON, CSV und Markdown

  • eine einfache Lohnschaetzung anhand von Stundensaetzen

  • ADB-gestuetzte Schreib-Backends fuer eigene Android-Geraete

  • Reverse-Engineering-Hilfen fuer APK-Manifest, Split-APK-Install, Deep-Links, Realm-Datenzugriff und Cloud-CRUD-Payloads

Related MCP server: MCP Calendar Assistant

Architektur

flowchart LR
    A[Supershift Android App] -->|Kalenderexport| B[Google Calendar oder anderer Kalender]
    B -->|Private iCal URL oder .ics Datei| C[supershift-mcp]
    C --> D[MCP Tools]
    C --> E[HTTP API]
    D --> F[KI-Client: Claude, Cursor, Codex, andere MCP Clients]
    E --> G[Skripte, Dashboards, Automationen]

Datenfluss

sequenceDiagram
    participant User as Nutzer
    participant App as Supershift
    participant Cal as Kalender
    participant MCP as supershift-mcp
    participant AI as MCP Client

    User->>App: Dienste eintragen
    App->>Cal: Dienste als Kalender exportieren
    MCP->>Cal: .ics lesen
    AI->>MCP: Tool aufrufen, z.B. next_shift
    MCP-->>AI: Strukturierte Antwort mit Dienstdaten

Was geht und was nicht?

Bereich

Status

Hinweis

Dienste auslesen

Ja

Ueber .ics Datei oder private iCal-URL

Naechsten Dienst finden

Ja

MCP Tool next_shift

Aktuellen Dienst finden

Ja

MCP Tool current_shift

Stunden summieren

Ja

Nach Zeitraum, Titel, Tag, Woche, Monat

Konflikte erkennen

Ja

Ueberlappende Kalenderereignisse

Ruhezeiten pruefen

Ja

Standard: 11 Stunden Mindest-Ruhezeit

Freie Tage finden

Ja

Zeitraumbezogene Auswertung

CSV/JSON/Markdown exportieren

Ja

Tool export_shifts

Lohn grob schaetzen

Ja

Mit Standard- und Titel-spezifischen Saetzen

Direkt in Supershift schreiben

Experimentell ja

Ueber ADB-UI-Automation mit Dry-Run und Opt-in

Android Calendar Intent

Ja

Oeffnet Androids generische Kalender-Eintragsmaske

Supershift APK analysieren

Ja

Manifest, Split-Pflicht, Permissions, Deep-Links

Supershift Split-APKs installieren

Ja

adb install-multiple, standardmaessig Dry-Run

Deep-Links testen

Ja

app.supershift, https://supershift.app/open/..., https://supr.sh/...

Lokale App-Datenzugriffe pruefen

Ja

run-as/Root-Status und Backup-Pull-Plan

Direkt in lokale Supershift-DB schreiben

Ja, experimentell

Supershift.db auf Emulator/root; live mit Testdienst verifiziert

Supershift Cloud CRUD vorbereiten

Preview

Baut Payload fuer POST https://supershift.app/api/v3/crud, sendet ihn aber nicht blind

Supershift Cloud Sync voll schreiben

Nein

Erst nach verifiziertem Auth-/Device-Kontext aus deiner eigenen Installation

Voraussetzungen

  • Python 3.11 oder neuer

  • Ein aus Supershift exportierter Kalender

  • Entweder eine lokale .ics Datei oder eine private iCal-URL

  • Ein MCP-faehiger Client, wenn du den MCP-Server nutzen willst

Kalenderquelle vorbereiten

Option A: Lokale .ics Datei

Exportiere oder speichere deinen Kalender als Datei, zum Beispiel:

/Users/dein-name/Kalender/supershift.ics

Dann setzt du:

export SUPERSHIFT_ICS="/Users/dein-name/Kalender/supershift.ics"

Option B: Private iCal-URL

Wenn Supershift in Google Calendar exportiert, kannst du die private iCal-URL des Kalenders verwenden. Google beschreibt den Weg unter Sync your calendar with computer programs:

  1. Google Calendar im Browser oeffnen.

  2. Einstellungen oeffnen.

  3. Links unter "Settings for my calendars" den Kalender auswaehlen.

  4. "Integrate calendar" oeffnen.

  5. "Secret address in iCal format" kopieren.

  6. Diese URL als SUPERSHIFT_ICS verwenden.

export SUPERSHIFT_ICS="https://calendar.google.com/calendar/ical/.../basic.ics"

Wichtig: Diese URL ist ein geheimer Lesezugriff auf deinen Kalender. Lege sie nicht in Git ab und teile sie nicht oeffentlich.

Installation

Schnellinstallation aus GitHub

python3 -m pip install "git+https://github.com/Zyrial96/supershift-mcp.git"

Danach sollte der Befehl verfuegbar sein:

supershift-mcp

Lokale Entwicklung

git clone https://github.com/Zyrial96/supershift-mcp.git
cd supershift-mcp
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[api,dev]"
python -m pytest

MCP verwenden

Der MCP-Server laeuft ueber stdio. Das ist der Standardmodus fuer viele MCP-Clients: Der Client startet den Prozess und spricht direkt mit ihm.

flowchart TD
    A[MCP Client startet Prozess] --> B[supershift-mcp]
    B --> C{SUPERSHIFT_ICS gesetzt?}
    C -->|Ja| D[Kalender laden]
    C -->|Nein| E[Tool-Aufruf muss calendar Parameter liefern]
    D --> F[Tools bereitstellen]
    E --> F

Minimale MCP-Konfiguration

Viele MCP-Clients verwenden ein JSON-Format mit mcpServers:

{
  "mcpServers": {
    "supershift": {
      "command": "supershift-mcp",
      "env": {
        "SUPERSHIFT_ICS": "/Users/dein-name/Kalender/supershift.ics"
      }
    }
  }
}

Wenn supershift-mcp nicht im PATH liegt, verwende den absoluten Pfad:

{
  "mcpServers": {
    "supershift": {
      "command": "/Users/dein-name/Projekte/supershift-mcp/.venv/bin/supershift-mcp",
      "env": {
        "SUPERSHIFT_ICS": "https://calendar.example/private/basic.ics"
      }
    }
  }
}

Sicherheitsvariante mit Umgebungsdatei

Lege deine URL zum Beispiel in einer lokalen Shell-Konfiguration oder einem Secret-Manager ab. Vermeide diese Datei im Git-Repo:

export SUPERSHIFT_ICS="https://calendar.example/private/basic.ics"
supershift-mcp

Beispielprompts fuer den MCP

Sobald der MCP in deinem Client verbunden ist, kannst du zum Beispiel fragen:

Ziel

Beispielprompt

Naechster Dienst

"Wann ist mein naechster Dienst?"

Tagesuebersicht

"Welche Dienste habe ich am 24.06.2026?"

Monatsstunden

"Fasse meine Dienststunden fuer Juni 2026 zusammen."

Ruhezeit

"Pruefe meine Ruhezeiten im Juli 2026 und zeige Warnungen."

Konflikte

"Finde ueberlappende Dienste im aktuellen Monat."

Freie Tage

"Welche Tage sind zwischen dem 1. und 15. Juli frei?"

Lohnschaetzung

"Schaetze meinen Lohn fuer Juni mit 22 EUR pro Stunde."

Export

"Exportiere meine Dienste der naechsten Woche als Markdown-Tabelle."

Dienste eintragen

"Trage diese Dienste in Supershift ein: 24.06.2026 06:00-14:00 Fruehdienst ..."

Schreibplan pruefen

"Erzeuge erst einen Dry-Run fuer diese Dienste und zeige mir alle ADB-Kommandos."

Reverse-Status

"Pruefe, welche Supershift-Schreibwege auf meinem Android-Geraet moeglich sind."

Cloud-Preview

"Baue mir fuer diese Dienste einen Supershift Cloud CRUD Preview, aber sende nichts."

MCP Tools

Uebersicht

Tool

Zweck

calendar_status

Kalender-Metadaten, erster und letzter Dienst

list_shifts

Dienste in einem Zeitraum listen

filter_shifts

Dienste nach Titel, Ort, Notiz und Dauer filtern

get_shift

Einzelnen Dienst anhand der UID finden

current_shift

Aktuell laufenden Dienst finden

shifts_on_date

Alle Dienste eines Tages anzeigen

next_shift

Naechsten Dienst finden

upcoming_shifts

Dienste der naechsten X Tage anzeigen

summarize_shifts

Stunden und Anzahl nach Diensttitel summieren

summarize_by_period

Stunden nach Tag, Woche, Monat oder Wochentag gruppieren

detect_conflicts

Ueberlappende Dienste finden

rest_periods

Ruhezeiten zwischen Diensten berechnen

free_days

Freie Tage im Zeitraum finden

export_shifts

Dienste als JSON, CSV oder Markdown exportieren

estimate_pay

Grobe Lohnschaetzung berechnen

shift_titles

Alle Diensttitel ausgeben

shift_locations

Alle Dienstorte ausgeben

parse_shifts_text

Freitext in schreibbare Dienste umwandeln

validate_shifts_for_write

Schreibdaten validieren

android_device_status

ADB-Geraete anzeigen

supershift_app_status

Supershift Installation auf Android pruefen

dump_supershift_ui

Aktuelle Supershift-UI als XML dumpen

inspect_supershift_apk

Supershift APK statisch analysieren

supershift_reverse_engineering_report

Reverse-Engineering-Status und Schreibpfade anzeigen

install_supershift_apks

Base-/Split-APKs per ADB installieren

probe_supershift_deeplinks

Supershift Deep-Links per ADB testen

supershift_data_access_status

run-as/Root-Datenzugriff pruefen

pull_supershift_data

App-Daten per run-as exportieren, falls erlaubt

preview_supershift_cloud_crud

Cloud-CRUD-Payload fuer Dienste vorbereiten

preview_supershift_sqlite_write

Direkten SQLite-Insert-Plan vorbereiten

create_supershift_sqlite_shifts

Strukturierte Dienste direkt in Supershift.db schreiben

create_supershift_sqlite_shifts_from_text

Freitext parsen und direkt in Supershift.db schreiben

preview_supershift_write

Schreibplan ohne Ausfuehrung erzeugen

create_supershift_shifts

Strukturierte Dienste ueber Backend eintragen

create_supershift_shifts_from_text

Freitext parsen und ueber Backend eintragen

Tool-Gruppen

mindmap
  root((supershift-mcp))
    Kalender
      calendar_status
      shift_titles
      shift_locations
    Dienste
      list_shifts
      filter_shifts
      get_shift
      current_shift
      shifts_on_date
      next_shift
      upcoming_shifts
    Analyse
      summarize_shifts
      summarize_by_period
      detect_conflicts
      rest_periods
      free_days
    Ausgabe
      export_shifts
      estimate_pay
    Schreiben
      parse_shifts_text
      validate_shifts_for_write
      android_device_status
      supershift_app_status
      dump_supershift_ui
      install_supershift_apks
      probe_supershift_deeplinks
      preview_supershift_write
      create_supershift_shifts
      create_supershift_shifts_from_text
    Reverse Engineering
      inspect_supershift_apk
      supershift_reverse_engineering_report
      supershift_data_access_status
      pull_supershift_data
      preview_supershift_cloud_crud
      preview_supershift_sqlite_write
      create_supershift_sqlite_shifts
      create_supershift_sqlite_shifts_from_text

Tool-Beispiele

Naechsten Dienst finden

{
  "tool": "next_shift",
  "arguments": {
    "after": "2026-06-22T08:00:00+02:00",
    "days": 30
  }
}

Dienste eines Monats summieren

{
  "tool": "summarize_shifts",
  "arguments": {
    "start": "2026-06-01",
    "end": "2026-07-01"
  }
}

Nach Nachtdiensten filtern

{
  "tool": "filter_shifts",
  "arguments": {
    "start": "2026-06-01",
    "end": "2026-07-01",
    "title_contains": "Night"
  }
}

Ruhezeiten pruefen

{
  "tool": "rest_periods",
  "arguments": {
    "start": "2026-06-01",
    "end": "2026-07-01",
    "minimum_hours": 11
  }
}

Lohn schaetzen

{
  "tool": "estimate_pay",
  "arguments": {
    "start": "2026-06-01",
    "end": "2026-07-01",
    "hourly_rate": 22,
    "title_rates": {
      "Night shift": 30
    },
    "currency": "EUR"
  }
}

CSV exportieren

{
  "tool": "export_shifts",
  "arguments": {
    "start": "2026-06-01",
    "end": "2026-07-01",
    "output_format": "csv"
  }
}

Dienste in Supershift eintragen

Es gibt aktuell keinen dokumentierten Supershift-Write-API-Endpunkt. Die App ist laut oeffentlichen Beschreibungen bewusst lokal nutzbar und benoetigt keinen Account und kein Internet. Der realistische Schreibweg ist deshalb Android UI-Automation ueber ADB: Der MCP kann Supershift starten, UI-Informationen auslesen, einen Klick-/Textplan erzeugen und diesen erst nach expliziter Freigabe ausfuehren.

flowchart TD
    A[Du sagst dem KI-Client deine Dienste] --> B[parse_shifts_text]
    B --> C[validate_shifts_for_write]
    C --> D[dump_supershift_ui]
    D --> E[UI-Profil anpassen]
    E --> F[preview_supershift_write]
    F --> G{Plan korrekt?}
    G -->|Nein| E
    G -->|Ja| H[SUPERSHIFT_WRITE_ENABLED=1]
    H --> I[create_supershift_shifts_from_text dry_run=false]
    I --> J[Supershift enthaelt neue Dienste]

Warum ein UI-Profil?

Supershift hat keine stabile oeffentliche Schreib-API. Android-UI-Automation braucht deshalb ein Profil, das beschreibt, welche Schaltflaechen und Felder auf deinem Geraet in welcher Reihenfolge bedient werden. Das Beispielprofil liegt in examples/supershift-ui-profile.example.json.

Platzhalter im Profil:

Platzhalter

Bedeutung

{title}

Dienstname

{date}

Datum im Format YYYY-MM-DD

{start_time}

Startzeit HH:MM

{end_time}

Endzeit HH:MM

{location}

Ort, falls angegeben

{notes}

Notiz, falls angegeben

Unterstuetzte Aktionen:

Aktion

Beispiel

tap

{"action": "tap", "x": 980, "y": 1840}

text

{"action": "text", "value": "{title}"}

keyevent

{"action": "keyevent", "key": "TAB"}

swipe

{"action": "swipe", "x1": 500, "y1": 1600, "x2": 500, "y2": 500}

wait

{"action": "wait", "seconds": 0.5}

1. Android vorbereiten

  1. Android-Entwickleroptionen aktivieren.

  2. USB-Debugging aktivieren.

  3. Smartphone per USB verbinden.

  4. Den ADB-Fingerprint auf dem Smartphone erlauben.

  5. Pruefen:

adb devices -l

Im MCP:

{
  "tool": "android_device_status",
  "arguments": {}
}

2. Supershift pruefen und UI dumpen

{
  "tool": "supershift_app_status",
  "arguments": {}
}

Dann:

{
  "tool": "dump_supershift_ui",
  "arguments": {}
}

Der UI-Dump zeigt sichtbare Texte, Ressourcen-IDs und Bounds. Daraus kannst du das Profil ableiten. Wenn Supershift keine Ressourcen-IDs liefert, sind Koordinaten der pragmatische Weg.

3. Dienste als Text angeben

Format:

24.06.2026 06:00-14:00 Fruehdienst @ Station A # Team alpha
25.06.2026 14:00-22:00 Spaetdienst
26.06.2026 22:00-06:00 Nachtdienst

Parser testen:

{
  "tool": "parse_shifts_text",
  "arguments": {
    "text": "24.06.2026 06:00-14:00 Fruehdienst @ Station A # Team alpha"
  }
}

Nachtdienste, die nach Mitternacht enden, werden automatisch auf den Folgetag gesetzt.

4. Schreibplan trocken testen

{
  "tool": "create_supershift_shifts_from_text",
  "arguments": {
    "text": "24.06.2026 06:00-14:00 Fruehdienst @ Station A # Team alpha",
    "backend": "adb_ui",
    "profile_path": "examples/supershift-ui-profile.example.json",
    "dry_run": true
  }
}

Der Dry-Run gibt die geplanten ADB-Befehle aus, ohne dein Smartphone zu bedienen.

5. Echte Ausfuehrung aktivieren

Erst wenn der Plan korrekt ist:

export SUPERSHIFT_WRITE_ENABLED=1

Dann:

{
  "tool": "create_supershift_shifts_from_text",
  "arguments": {
    "text": "24.06.2026 06:00-14:00 Fruehdienst @ Station A # Team alpha",
    "backend": "adb_ui",
    "profile_path": "examples/supershift-ui-profile.example.json",
    "dry_run": false
  }
}

Fallback: Android Calendar Intent

Der Backend-Wert android_calendar_intent oeffnet Androids generische Kalender-Eintragsmaske. Das ist kein direkter Supershift-Schreibweg, kann aber als Notausgang dienen, wenn du Dienste zuerst in einen Kalender schreiben willst:

{
  "tool": "create_supershift_shifts_from_text",
  "arguments": {
    "text": "24.06.2026 06:00-14:00 Fruehdienst",
    "backend": "android_calendar_intent",
    "dry_run": true
  }
}

Der MCP kennzeichnet diesen Weg bewusst als Warnung, weil er nicht direkt in Supershift schreibt.

Reverse Engineering und weitere Schreibwege

Die Supershift-APK zeigt nach statischer Analyse vier relevante Spuren:

flowchart TD
    A[Supershift APK] --> B[AndroidManifest.xml]
    A --> C[Realm Modelle]
    A --> D[Retrofit Cloud API]
    A --> E[Deep-Link Activity]
    B --> B1[Split APK Pflicht]
    B --> B2[Launcher/Deeplink exportiert]
    B --> B3[Editor Activities nicht exportiert]
    C --> C1[Room SQLite]
    C --> C2[Supershift.db]
    C --> C3[event/template/calendar Tabellen]
    D --> D1[POST /api/v3/crud]
    D --> D2[POST /api/v2/sync]
    E --> E1[app.supershift Scheme]
    E --> E2[/open/ und /i/ Links]

Die praktische Konsequenz:

flowchart LR
    A[Ich will Dienste eintragen] --> B{Offizieller Insert Intent?}
    B -->|Nein gefunden| C[ADB UI Automation]
    C --> D[Dry-Run]
    D --> E[SUPERSHIFT_WRITE_ENABLED=1]
    E --> F[ADB bedient Supershift]
    A --> G{Cloud Sync nutzbar?}
    G -->|Auth vorhanden| H[Cloud CRUD Payload pruefen]
    H --> I[Noch kein Blind-Write]
    A --> J{Root/run-as moeglich?}
    J -->|Ja| K[Supershift.db exportieren]
    K --> L[SQLite Schema pruefen]
    L --> M[Direkter Insert-Plan]

APK inspizieren

Wenn du eine Supershift-APK oder dekompilierte Ressourcen hast:

{
  "tool": "inspect_supershift_apk",
  "arguments": {
    "apk_path": "reverse/supershift/supershift-2026.18.apk",
    "aapt_path": "/Users/dein-name/Library/Android/sdk/build-tools/37.0.0/aapt",
    "manifest_path": "reverse/supershift/apktool/AndroidManifest.xml"
  }
}

Das Tool liefert unter anderem:

Feld

Bedeutung

badging.package

Android-Paket, erwartet app.supershift

badging.version_name

App-Version

badging.permissions

z.B. INTERNET, WRITE_CALENDAR

manifest.required_split_types

Ob Base-APK ohne Splits installierbar ist

manifest.exported_activities

Von aussen startbare Activities

manifest.deeplinks

Gefundene URL-/Scheme-Routen

Split-APK Installation vorbereiten

Neuere Supershift-Versionen koennen als App Bundle/Split-APK ausgeliefert werden. Dann reicht eine einzelne Base-APK nicht aus. Der MCP plant oder startet adb install-multiple:

{
  "tool": "install_supershift_apks",
  "arguments": {
    "apk_paths": [
      "base.apk",
      "config.arm64_v8a.apk",
      "config.xhdpi.apk"
    ],
    "dry_run": true
  }
}

Echte Installation ist absichtlich opt-in:

export SUPERSHIFT_REVERSE_ENABLED=1

Danach dry_run auf false setzen.

Die APK enthaelt Deep-Link-Routen fuer:

  • app.supershift

  • https://supershift.app/i/...

  • https://supershift.app/open/...

  • https://supr.sh/i/...

  • https://supr.sh/open/...

Probe:

{
  "tool": "probe_supershift_deeplinks",
  "arguments": {
    "urls": [
      "https://supershift.app/open/test",
      "https://supr.sh/i/test"
    ],
    "dry_run": true
  }
}

Auch hier gilt: echte Starts erst mit SUPERSHIFT_REVERSE_ENABLED=1.

Lokale Datenzugriffe pruefen

Supershift Android 2026.18 nutzt lokal eine Room/SQLite-Datenbank:

/data/data/app.supershift/databases/Supershift.db

Wichtige Tabellen:

Tabelle

Zweck

calendar

Dienstkalender, z.B. My Job

event

Eingetragene Dienste/Ereignisse

template

Schichtvorlagen

break

Pausen

notification

Benachrichtigungen/Alarme

calendar_sync_task

Kalenderexport-Sync-Aufgaben

Ob der MCP diese Daten auf deinem Geraet lesen oder schreiben kann, haengt von Android, Debuggable-Status, Backup-Policy, Root und App-Sandbox ab.

{
  "tool": "supershift_data_access_status",
  "arguments": {}
}

Wenn run_as_available wahr ist, kann ein Datenexport vorbereitet werden:

{
  "tool": "pull_supershift_data",
  "arguments": {
    "output_dir": "/Users/dein-name/Supershift-Export",
    "dry_run": true
  }
}

Direkter SQLite-Insert

Auf einem gerooteten Emulator wurde der direkte Schreibpfad verifiziert:

event.date      = YYYYMMDD
event.startTime = Sekunden seit Mitternacht
event.endTime   = Sekunden seit Mitternacht
event.endDate   = YYYYMMDD, bei Nachtdienst Folgetag
event.calendarId = Row-ID aus Tabelle calendar, meist 1 fuer "My Job"
calendar_sync_task.calendarEntryUuid = event.eventUuid

Dry-Run:

{
  "tool": "create_supershift_sqlite_shifts_from_text",
  "arguments": {
    "text": "26.06.2026 22:00-06:00 Nachtdienst @ Station B # Nacht",
    "calendar_row_id": 1,
    "dry_run": true
  }
}

Echte Ausfuehrung nur nach Backup:

export SUPERSHIFT_REVERSE_ENABLED=1
{
  "tool": "create_supershift_sqlite_shifts_from_text",
  "arguments": {
    "text": "26.06.2026 22:00-06:00 Nachtdienst @ Station B # Nacht",
    "calendar_row_id": 1,
    "dry_run": false
  }
}

Der Writer fuehrt aus:

sequenceDiagram
    participant MCP
    participant ADB
    participant App as Supershift
    participant DB as Supershift.db

    MCP->>ADB: am force-stop app.supershift
    MCP->>ADB: sqlite3 Supershift.db INSERT INTO event
    MCP->>ADB: INSERT INTO calendar_sync_task
    ADB->>DB: Transaktion committen
    MCP->>ADB: am start LauncherActivity
    App->>DB: Dienste neu laden

Cloud-CRUD-Payload vorbereiten

Die APK enthaelt Retrofit-Endpunkte fuer Supershift Cloud:

Zweck

Gefundener Pfad

Login

POST https://supershift.app/api/login

Account erstellen

POST https://supershift.app/api/createAccount

Sync Pull/Push

POST https://supershift.app/api/v2/sync

CRUD

POST https://supershift.app/api/v3/crud

Cloud-Daten pruefen

POST https://supershift.app/api/checkCloudData

Fuer Dienstobjekte wurde diese Struktur abgeleitet:

classDiagram
    class EventJson {
      string uuid
      date updatedAt
      bool deleted
      int date
      int type
      double start
      double end
      string title
      int endDate
      bool allDay
      string note
      string recurrenceRule
      string calendarId
    }

Preview erzeugen:

{
  "tool": "preview_supershift_cloud_crud",
  "arguments": {
    "calendar_id": "DEINE-CALENDAR-ID",
    "shifts": [
      {
        "title": "Fruehdienst",
        "start": "2026-06-24T06:00:00+02:00",
        "end": "2026-06-24T14:00:00+02:00",
        "location": "Station A",
        "notes": "Team alpha"
      }
    ]
  }
}

Der MCP sendet diesen Payload nicht automatisch. Fuer echtes Cloud-Schreiben braucht man mindestens gueltige Supershift-Auth, User-ID, Device-ID, Calendar-ID, Sync-Schema-Version und Konfliktlogik. Ohne diese Werte waere ein Write nicht hartnaeckig, sondern riskant.

HTTP API verwenden

Die HTTP-API ist optional. Installiere das API-Extra:

python -m pip install -e ".[api]"

Starte den Server:

supershift-api

Standardadresse:

http://127.0.0.1:8765

HTTP-Endpunkte

Endpoint

Beispiel

GET /health

curl "http://127.0.0.1:8765/health"

GET /shifts

curl "http://127.0.0.1:8765/shifts?start=2026-06-01&end=2026-07-01"

GET /shifts/filter

curl "http://127.0.0.1:8765/shifts/filter?start=2026-06-01&end=2026-07-01&title_contains=Night"

GET /shifts/current

curl "http://127.0.0.1:8765/shifts/current"

GET /shifts/next

curl "http://127.0.0.1:8765/shifts/next?days=30"

GET /shifts/date/{day}

curl "http://127.0.0.1:8765/shifts/date/2026-06-24"

GET /shifts/{uid}

curl "http://127.0.0.1:8765/shifts/abc123"

GET /summary

curl "http://127.0.0.1:8765/summary?start=2026-06-01&end=2026-07-01"

GET /summary/period

curl "http://127.0.0.1:8765/summary/period?start=2026-06-01&end=2026-07-01&period=week"

GET /conflicts

curl "http://127.0.0.1:8765/conflicts?start=2026-06-01&end=2026-07-01"

GET /rest-periods

curl "http://127.0.0.1:8765/rest-periods?start=2026-06-01&end=2026-07-01"

GET /free-days

curl "http://127.0.0.1:8765/free-days?start=2026-06-01&end=2026-07-01"

GET /export

curl "http://127.0.0.1:8765/export?start=2026-06-01&end=2026-07-01&output_format=csv"

GET /pay

curl "http://127.0.0.1:8765/pay?start=2026-06-01&end=2026-07-01&hourly_rate=22"

GET /titles

curl "http://127.0.0.1:8765/titles"

GET /locations

curl "http://127.0.0.1:8765/locations"

POST /write/parse

Freitext in Dienste parsen

POST /write/validate

Dienste validieren

GET /android/status

ADB-Geraete anzeigen

GET /android/supershift

Supershift App-Status pruefen

GET /android/supershift/ui

Supershift UI XML dumpen

GET /reverse/apk

APK/Manifest statisch analysieren

GET /reverse/report

Reverse-Engineering-Report anzeigen

POST /android/supershift/install

Base-/Split-APKs installieren, Dry-Run default

POST /android/supershift/deeplinks

Deep-Link-Probes starten, Dry-Run default

GET /android/supershift/data

run-as/Root-Datenzugriff pruefen

POST /android/supershift/data/pull

App-Daten exportieren, Dry-Run default

POST /write/supershift/cloud/preview

Cloud-CRUD-Payload vorbereiten

POST /write/supershift/sqlite/preview

Direkten SQLite-Insert-Plan vorbereiten

POST /write/supershift/sqlite

Strukturierte Dienste direkt in Supershift.db schreiben

POST /write/supershift/sqlite/text

Freitext direkt in Supershift.db schreiben

POST /write/supershift

Strukturierte Dienste schreiben

POST /write/supershift/text

Freitext parsen und schreiben

Datums- und Zeitformat

Empfohlen sind ISO-8601 Werte:

2026-06-01
2026-06-01T08:00:00+02:00
2026-06-01T06:00:00Z

Ein Zeitraum ist immer start inklusiv und end exklusiv. Fuer einen ganzen Monat nutzt du also:

start=2026-06-01
end=2026-07-01

Typische Workflows

Monatsauswertung

flowchart TD
    A[Monatsanfang waehlen] --> B[summarize_shifts]
    B --> C[summarize_by_period period=week]
    C --> D[estimate_pay]
    D --> E[Bericht im KI-Client erstellen lassen]

Dienstplan-Check

flowchart TD
    A[list_shifts] --> B[detect_conflicts]
    B --> C[rest_periods]
    C --> D{Warnungen?}
    D -->|Ja| E[Konflikte/Ruhezeit pruefen]
    D -->|Nein| F[Plan plausibel]

Datenschutz und Sicherheit

  • Die private iCal-URL ist ein Geheimnis.

  • Lege SUPERSHIFT_ICS nicht in Git ab.

  • ADB-UI-Schreiben ist standardmaessig Dry-Run.

  • Echtes ADB-UI-Schreiben braucht SUPERSHIFT_WRITE_ENABLED=1.

  • Reverse-Aktionen wie APK-Installation, Deep-Link-Start und Datenexport brauchen SUPERSHIFT_REVERSE_ENABLED=1.

  • Cloud-CRUD wird nur als Payload-Preview erzeugt und nicht automatisch gesendet.

  • Alte Realm-/Migrationsspuren werden nur analysiert; der live verifizierte direkte Pfad ist Supershift.db/SQLite.

  • Direktes SQLite-Schreiben ist nur fuer eigene Geraete/Emulatoren gedacht und braucht Root oder gleichwertigen /data/data-Zugriff.

  • Die HTTP-API bindet standardmaessig nur an 127.0.0.1.

  • Wenn du die API im Netzwerk erreichbar machst, schuetze sie selbst mit Reverse Proxy, Authentifizierung oder Firewall.

Grenzen

Der stabilste Lesepfad bleibt der Kalenderexport. Fuer Schreiboperationen gibt es mehrere experimentelle Wege, aber nicht jeder Weg ist auf jedem Geraet verfuegbar:

flowchart TD
    A[Schreiben gewuenscht] --> B{Eigenes Android per ADB?}
    B -->|Ja| C[ADB UI Automation]
    B -->|Nein| D[Kein direkter lokaler Write]
    A --> E{Cloud Sync authentifiziert?}
    E -->|Ja| F[Cloud Payload pruefen]
    E -->|Nein| G[Kein Cloud Write]
    A --> H{run-as/root/Backup moeglich?}
    H -->|Ja| I[Realm exportieren und analysieren]
    H -->|Nein| J[Sandbox respektieren]

Nicht enthalten:

  • Umgehung von App-Sandbox, Kauf-, Auth- oder Cloud-Schutzmechanismen

  • Blindes Senden von Cloud-CRUD ohne verifizierte Supershift-Sitzung

  • Blindes Mutieren lokaler Datenbanken ohne Backup und Schema-Nachweis

  • Blindes Veraendern deiner Dienste ohne Dry-Run und explizite Schreibfreigabe

Enthalten sind dagegen kontrollierte Werkzeuge, die mit deinem eigenen Geraet, deiner installierten App und deinen Daten arbeiten: UI-Automation, APK-Analyse, Deep-Link-Probes, Datenzugriffspruefung und Cloud-Payload-Preview.

Entwicklung

python -m pytest
ruff check .

CI laeuft in GitHub Actions bei Push und Pull Request.

Available Tools

35 tools
android_device_statusB

Report connected Android devices visible through ADB.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, ADB requirements, or side effects. Minimal transparency.

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 immediately conveys purpose without unnecessary words.

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 (no parameters, output schema exists), the description provides sufficient context. It does not explain output, but the rule exempts that requirement.

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% (empty schema). With no parameters, the description need not add param info, but the baseline of 3 applies due to high coverage.

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 verb 'Report' and the resource 'connected Android devices visible through ADB', distinguishing the tool from sibling tools that are mostly Supershift-related.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Sibling tools are unrelated, but there is no explicit instruction on context or prerequisites.

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

calendar_statusC

Return basic information about the configured Supershift export calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 only says 'Return basic information', implying a read operation, but does not disclose any behavioral traits such as permissions required, side effects, or what constitutes 'basic information'. The description is insufficient for an agent to understand the tool's impact.

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

Conciseness4/5

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

The description is a single sentence, making it very concise. However, it lacks structure (e.g., bullet points) that could improve readability. It earns its place by being brief but could be more organized.

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 an output schema (not shown but indicated), the description does not need to explain return values. However, with one optional parameter and no annotations, the description is too minimal. It does not explain what 'basic information' entails or how the parameter affects the result, leaving the agent underinformed.

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 single parameter 'calendar'. The agent gets no help understanding what the parameter does, its format, or how to use it. The description fails to compensate for the lack of schema documentation.

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 verb 'Return' and the resource 'basic information about the configured Supershift export calendar'. It is specific and distinguishes the tool's purpose from sibling tools that deal with shift creation or data manipulation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Among the many sibling tools related to Supershift, there is no mention of when to query calendar status versus other operations.

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

create_supershift_shiftsC

Create shifts through a configured backend. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes
backendNoadb_ui
dry_runNo
profile_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

The description discloses the default dry-run behavior, which is important. However, it omits other behavioral traits such as the effect of setting dry_run to false, error conditions, or idempotency. Without annotations, the description carries the full burden and is 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?

The description is extremely concise—two sentences with no wasted words. The first sentence clearly states the action, and the second adds critical default behavior. It is well-structured for immediate comprehension.

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?

Despite having an output schema, the description fails to provide enough context for an agent to use the tool correctly. Key details about parameter formats, backend options, and behavior when dry_run is false are missing. Given the complexity and numerous siblings, the description is incomplete.

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%, so the description must explain parameters. It does not explain the 'shifts' array structure, the meaning of 'backend', 'dry_run', or 'profile_path'. This leaves the agent with no guidance on how to populate these parameters.

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 creates shifts, which is the primary purpose. However, it does not distinguish this from sibling tools like create_supershift_shifts_from_text or create_supershift_sqlite_shifts, which also create shifts but through different means.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its siblings. The mention of 'configured backend' is vague and does not help an agent decide between alternatives.

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

create_supershift_shifts_from_textC

Parse free text and create shifts through a configured backend. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
backendNoadb_ui
dry_runNo
profile_pathNo
default_timezoneNo+02:00

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states the tool creates shifts (non-read-only) and defaults to dry-run (important safety detail). However, it fails to mention whether it overwrites, requires specific permissions, or has any side effects. The brief description leaves significant gaps.

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 concise (two sentences) and front-loaded with the core purpose. However, it could include more structured details without being verbose. It scores a 3 because it is acceptably short but lacks critical 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 5 parameters, no annotations, and an output schema (not shown), the description is incomplete. It does not explain how the output relates to the action, nor does it clarify the role of parameters like backend or profile_path. The tool's complexity demands more context.

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 is the only source for parameter meaning. It mentions 'free text' and 'dry-run' implicitly, but does not explain backend, profile_path, or default_timezone. The value added is minimal beyond the schema structure.

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 core action: 'Parse free text and create shifts through a configured backend.' The verb 'create' and resource 'shifts' are specific. However, it does not differentiate this tool from siblings like create_supershift_shifts (which likely takes structured input) or parse_shifts_text (which may only parse without creating).

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 mentions 'Defaults to dry-run' which hints at a control flag but provides no explicit guidance on when to use this tool over alternatives. There is no mention of prerequisites, scenarios, or when not to use it. Siblings like create_supershift_sqlite_shifts_from_text are not addressed.

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

create_supershift_sqlite_shiftsB

Create shifts directly in Supershift.db on rooted/emulated devices. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes
db_pathNo/data/data/app.supershift/databases/Supershift.db
dry_runNo
calendar_row_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses the default dry-run behavior and the requirement for rooted/emulated devices. However, it does not mention important behavioral aspects like authentication needs, side effects on existing data, or error conditions. The mutation nature is implied but not explicitly stated beyond 'create'.

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 very concise, two sentences with no redundancy. However, it sacrifices completeness for brevity. It is appropriately front-loaded but could include key parameter details without becoming verbose.

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 4 parameters with no schema descriptions and no annotations, the description leaves significant gaps. It does not explain the structure of shift objects, the effect of calendar_row_id, or the output format (though output schema exists). The agent lacks information to invoke the tool correctly without external knowledge.

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 description must compensate. It only mentions the dry_run default, providing no meaning for the 'shifts' array parameter (structure, required fields) or other parameters like db_path and calendar_row_id. The agent receives little guidance beyond parameter titles and 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?

Description clearly states the tool creates shifts directly in Supershift.db on rooted/emulated devices, with a default dry-run. It distinguishes from siblings like create_supershift_shifts (likely UI-based) and create_supershift_sqlite_shifts_from_text (text parsing) by specifying the direct SQLite write approach.

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 among siblings. The description implies a prerequisite (rooted/emulated devices) but does not explicitly state when this tool is appropriate or what conditions warrant its use over create_supershift_shifts or other siblings.

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

create_supershift_sqlite_shifts_from_textC

Parse text and write shifts directly to Supershift.db on rooted/emulated devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
db_pathNo/data/data/app.supershift/databases/Supershift.db
dry_runNo
calendar_row_idNo
default_timezoneNo+02:00

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided; the description only notes writing to a database on rooted/emulated devices but lacks details on mutation behavior, error handling, or data persistence.

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 concise but lacks structure; it front-loads the main action but omits important context.

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

Completeness1/5

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

Given 5 parameters, no schema descriptions, and no annotations, the description is severely incomplete. It does not cover parsing format, database interaction, or error states.

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%. The description does not explain any of the 5 parameters (e.g., 'text' format, 'dry_run' purpose, 'db_path' default).

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

Purpose4/5

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

The description clearly states that the tool parses text and writes shifts to a SQLite database, specifying the device condition (rooted/emulated). However, it does not differentiate from the similar sibling 'create_supershift_shifts_from_text'.

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 required device state or when not to use.

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

current_shiftA

Return the active shift at an ISO date/datetime, or now if omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNo
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions the return value (active shift) but does not disclose any side effects, permissions, or whether it is read-only. Weak transparency.

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 of 13 words, front-loaded with verb 'Return'. No unnecessary information. Highly concise.

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 presence of an output schema, the description does not need to detail return values. It sufficiently covers the main functionality for a simple lookup tool, though could benefit from disambiguation among 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%, and description only explains 'at' (ISO date/datetime) partially. 'Calendar' parameter is not mentioned. Does not compensate for 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 the tool returns the active shift at a given ISO date/datetime, defaulting to now. This distinguishes it from siblings like 'get_shift' (specific shift by ID) and 'next_shift' (next shift).

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 implies when to use (to get active shift at a specific time or now), but lacks explicit guidance on when not to use or comparison with alternatives. Clear but not comprehensive.

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

detect_conflictsC

Find overlapping shifts in a range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo

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?

No annotations are provided, so the description carries full burden. It fails to disclose whether the tool is read-only, what it returns (only that output schema exists), or side effects. The sparse description does not add behavioral context beyond the verb 'find.'

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

Conciseness2/5

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

The description is extremely concise (5 words) but sacrifices essential information. It is front-loaded, but the lack of detail makes it insufficient. Every word is earned, but much more is needed to be helpful.

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 3 parameters, no annotations, and many sibling tools, the description is incomplete. It does not define what constitutes a conflict, the format of the range, or how results are structured. The output schema exists but the description adds no completeness.

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%, but the description does not mention any parameter meaning. It does not clarify that 'start' and 'end' define the time range or that 'calendar' is optional. The agent gets no param insight beyond the raw 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?

The description states 'Find overlapping shifts in a range,' which clearly indicates the tool detects shift conflicts. It differentiates from siblings like 'list_shifts' or 'get_shift' by specifying conflict detection. However, it could be more explicit about the domain (Supershift app) and the nature of 'conflicts' (time overlapping).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, expected input patterns, or exclude cases where no overlap is expected. The agent must infer usage from the name alone.

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

dump_supershift_uiA

Launch Supershift and dump the current Android UI XML for profile creation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

With no annotations, the description carries the full disclosure burden. It reveals that the tool launches an app and dumps UI XML, but does not specify if this is read-only, whether it alters the UI state, or requires accessibility permissions. The safety profile is partially transparent.

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 with action and context, no wasted words. Efficiently communicates the tool's function.

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 presence of an output schema (not shown but indicated), the description does not need to detail return values. However, it lacks details about the XML content, format, or how it is used for profile creation. With many sibling tools, more context would help.

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 no parameters, and the description adds value by explaining what the tool does (launch and dump XML for profile creation), which is not apparent from the empty schema. Baseline for zero params is 4.

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 ('Launch Supershift and dump the current Android UI XML') and its purpose ('for profile creation'). It distinguishes from sibling tools like inspect_supershift_apk, which inspects the APK rather than the UI.

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 profile creation but does not explicitly state when to use this tool versus alternatives like inspect_supershift_apk or others. No when-not-to-use guidance is provided.

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

estimate_payC

Estimate pay using a default hourly rate and optional per-title rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo
currencyNoEUR
hourly_rateYes
title_ratesNo
include_all_dayNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions calculation inputs but not output format, side effects, or what the estimate accounts for (e.g., deductions).

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 a single concise sentence with no filler. However, it could include more useful information without becoming verbose.

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 7 parameters and 0% schema description coverage, the description omits crucial information about required parameters (start, end), optional parameters, and output semantics. The output schema exists but is not hinted at.

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%, but the description only adds meaning for hourly_rate and title_rates. It does not explain start, end, currency, calendar, or include_all_day parameters.

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 estimates pay using a default hourly rate and optional per-title rates. It distinguishes from sibling tools which are about shift management and device status.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or when not to use it. The context of its use is not explained.

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

export_shiftsC

Export shifts as json, csv, or markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 full burden. It only states output formats but does not disclose whether the operation is read-only, if it modifies state, requires permissions, or any other behavioral traits. This is insufficient.

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

Conciseness4/5

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

The description is a single, concise sentence with no fluff. It is front-loaded with the key action and formats. However, it could be slightly more detailed without losing conciseness.

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 4 parameters, 2 required, and no parameter descriptions, the description is incomplete. It does not explain the date range requirement, the effect of the calendar parameter, or default output format. The output schema exists but doesn't compensate for missing behavioral context.

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 description adds no meaning to parameters like 'start', 'end', 'calendar', or 'output_format'. The agent must infer their purpose from names alone, which is inadequate.

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 verb 'export', the resource 'shifts', and the output formats 'json, csv, or markdown'. This distinguishes it from sibling tools like 'list_shifts' or 'get_shift', which are about viewing or retrieving without exporting in specific formats.

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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context for when not to use it. The agent is left without information to make a decision.

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

filter_shiftsC

List shifts matching text and duration filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo
max_hoursNo
min_hoursNo
notes_containsNo
title_containsNo
location_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the action (list shifts) with filtering, but fails to mention whether it is read-only, any side effects, permission requirements, or response behavior (e.g., pagination). This is insufficient for safe invocation.

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 a single sentence with no wasted words, but it is overly terse. It lacks structure (e.g., separate lines for purpose and details) and omits critical information, making it insufficiently informative despite its brevity.

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 8 parameters and no annotations, the description is incomplete. It does not explain how text and duration filters relate to the required start/end parameters, nor does it clarify the behavior of optional filters. The presence of an output schema partially offsets missing return info, but input-side gaps remain.

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 should compensate. It mentions 'text and duration filters' but does not map these to specific parameters (e.g., title_contains, min_hours). While parameter names are somewhat self-explanatory, the description adds no extra meaning beyond the schema itself.

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 'List shifts matching text and duration filters' clearly states the tool's verb and resource, and hints at filtering capabilities. However, it does not differentiate from siblings like list_shifts or shifts_on_date, lacking specificity about which text fields are filtered.

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 usage guidelines provided. The description does not specify when to use this tool versus other shift-listing siblings, nor does it mention any contextual prerequisites or exclusions.

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

free_daysC

List dates without any shift between start inclusive and end exclusive.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must fully disclose behavior. It only states it lists dates without shifts, omitting details like return format, handling of empty results, or whether it is read-only.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. However, it could be slightly expanded to clarify parameters without losing conciseness.

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 and an output schema (unseen), the description is incomplete. It fails to explain the 'calendar' parameter, date format expectations, or how 'shift' is defined in context.

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 description hints at 'start' and 'end' parameters via 'inclusive and exclusive' but does not specify their format (e.g., date string) and completely ignores the optional 'calendar' parameter. Schema coverage is 0%, so description should 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 the tool's verb ('List'), resource ('dates without any shift'), and scope ('between start inclusive and end exclusive'), distinguishing it from siblings like 'shifts_on_date' or 'rest_periods'.

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 (e.g., calendar_status, shifts_on_date) is provided. The description lacks context for decision-making.

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

get_shiftC

Find one shift by calendar UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
calendarNo

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?

No annotations provided, and description does not disclose any behavioral traits such as what happens if the UID is not found (return null vs error) or any 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.

Conciseness2/5

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

Extremely concise with only 6 words, but it is under-specified and does not effectively communicate the tool's behavior or parameters.

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 that an output schema exists, the description does not clarify return values or error handling. For a single-shift retrieval tool, it should mention uniqueness or behavior on missing data.

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 adds no meaning beyond the schema. It does not explain the purpose or constraints of the 'uid' or 'calendar' parameters.

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 'find' and resource 'shift', distinguishing it from list tools. However, it could explicitly state that it returns exactly one shift, which is implied but not explicit.

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 the many sibling tools for shifts. No exclusions or alternatives mentioned.

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

inspect_supershift_apkC

Inspect a Supershift APK for package, split, permission, and manifest evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
apk_pathYes
aapt_pathNoaapt
manifest_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided. The description does not disclose whether the tool is read-only, what side effects it has, or any prerequisites. It only states what it inspects, missing behavioral context that annotations would normally provide.

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 a single sentence, which is concise but lacks essential detail. It does not earn its place because it omits parameter context and usage guidance. Acceptable for a simple overview but insufficient for effective tool use.

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?

Despite having an output schema (context signal), the description is incomplete. It fails to explain the purpose of the three parameters or the context in which this tool should be used. For a tool with 3 parameters and no schema descriptions, the description does not compensate.

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 explain any parameters. 'aapt_path' and 'manifest_path' are not mentioned; the user is left to guess what 'aapt' is and why a manifest path is needed. This adds no value beyond 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?

The description clearly states the tool inspects a Supershift APK for package, split, permission, and manifest evidence. The verb 'inspect' and resource are specific, and it distinguishes from siblings like 'install_supershift_apks' and 'dump_supershift_ui'.

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. The description does not mention exclusions or when this tool is appropriate compared to siblings like 'pull_supershift_data' or 'supershift_reverse_engineering_report'.

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

install_supershift_apksB

Install Supershift base/split APKs through adb install-multiple. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
apk_pathsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations are present, so the description bears full responsibility. It discloses the default dry-run behavior, which is important. However, it omits details about side effects (e.g., actual app installation when dry_run is false), required environment (adb availability), or post-conditions.

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 two sentences, front-loading the core action. However, it lacks structure (e.g., separate sections for usage, parameters). It scores high on brevity but could be more organized.

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

Completeness3/5

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

Given the tool's simplicity (2 parameters, output schema exists), the description provides the essential action and default behavior but misses prerequisites, failure modes, and what the output represents. It is minimally 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 description coverage is 0%, so the description must compensate. It only mentions that 'dry_run' defaults to true, but does not explain 'apk_paths' (e.g., expected format, absolute vs relative paths). Parameter semantics are severely underdocumented.

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 'install' and the resource 'Supershift base/split APKs' via 'adb install-multiple'. It also notes the default dry-run behavior, which adds precision. No sibling tool performs installation, 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, prerequisites (e.g., adb connection), or conditions under which it should be avoided. The description is purely declarative without usage context.

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

list_shiftsA

List shifts overlapping an ISO date/datetime range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo

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 burden. It states the basic read operation but lacks details on how overlapping is defined (e.g., inclusive/exclusive) or handling of the optional calendar parameter. It is not contradictory but minimally informative beyond the core purpose.

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 sentence that is front-loaded with the key verb and resource. No wasted words; every word contributes to the 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?

Given the sibling tools (many shift-related) and the presence of an output schema, more context is needed to fully distinguish this tool. Does not explain overlapping semantics or calendar filtering. Adequate but not comprehensive.

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. It adds meaning for 'start' and 'end' by specifying ISO format, but the 'calendar' parameter is left unexplained. Partial compensation for two of three 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 the tool lists shifts overlapping a date range. This is a specific verb and resource, distinguishing it from siblings like 'get_shift' (single shift) or 'shifts_on_date' (specific date).

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 that 'get_shift' is for individual shifts or 'shifts_on_date' for a single day. No exclusions or when-not-to-use provided.

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

next_shiftB

Return the next shift after an ISO date/datetime, searching up to days ahead.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
afterNo
calendarNo

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 full burden. It discloses the ISO date format and the search range parameter. However, it does not specify what happens if no shift is found, how multiple potential results are handled (e.g., returns only one), or error conditions. This leaves gaps in behavioral understanding.

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 sentence that efficiently conveys the core purpose without extraneous information. It is appropriately front-loaded and earns its place.

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?

With three parameters, none required, and many sibling tools, the description is too minimal. An output schema exists, but the description does not explain default behavior (e.g., what does 'after' default to null? do we need to pass current time?). The agent lacks sufficient detail to reliably use the tool without external knowledge.

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%, so description must add value. It explains 'after' as an ISO date/datetime and 'days' as the search horizon. However, the 'calendar' parameter is entirely unexplained, and the default behavior of 'after' when null is not clarified. Only partial parameter coverage.

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 'Return the next shift', specifies the input as 'ISO date/datetime', and defines the search scope 'up to days ahead'. This distinguishes it from sibling tools like 'current_shift' or 'shifts_on_date'.

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 implies usage for finding the next shift after a given date, but it provides no explicit guidance on when to use this tool versus alternatives like 'upcoming_shifts' or 'free_days'. No exclusions or context for selection are mentioned.

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

parse_shifts_textC

Parse text lines like '24.06.2026 06:00-14:00 Fruehdienst @ Ort # Notiz'.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
default_timezoneNo+02:00

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?

No annotations are provided, so the description carries full burden. It states 'parse' implying a read-only transformation, but does not explicitly confirm no side effects, authentication requirements, or output format. The description is adequate but could be more explicit.

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

Conciseness4/5

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

The description is a single sentence with an illustrative example, front-loading the purpose. It is efficient, though a brief additional sentence on usage or output could enhance clarity without harming conciseness.

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 existence of an output schema, the description need not explain return values, but it lacks details on supported text formats beyond the example. The tool has two parameters, but the description does not specify constraints or behavior, leaving the agent underinformed.

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%, yet the description only gives an example and does not describe the parameters. The 'text' parameter is implied by the example, but 'default_timezone' is not explained. The description adds minimal semantic value beyond 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?

The description clearly states the tool parses text lines and provides an example format, making the purpose evident. However, it does not explicitly differentiate from sibling tools like create_supershift_shifts_from_text, which likely combine parsing with creation.

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 parser versus similar siblings (e.g., create_supershift_shifts_from_text). The tool likely extracts structured data, but there is no mention of prerequisites, context, or alternatives.

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

preview_supershift_cloud_crudC

Build an experimental Supershift Cloud v3/crud payload preview without sending it.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes
event_typeNo
calendar_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

The description states the tool is 'experimental' and that it does 'not send' the payload, but it does not disclose whether any side effects occur (e.g., validation checks, temporary storage) or what the output contains. With no annotations, the description carries the full burden, which it fails to meet.

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 a single sentence, which is concise, but it is too vague. It lacks structure and key information, earning a middle score.

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, no annotations, an output schema, and many sibling tools, the description should provide detailed context about usage, parameters, and output. It falls short, leaving significant gaps for an agent.

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 input schema defines 3 parameters (shifts, event_type, calendar_id) but the description provides no explanation of their meaning or format. Schema coverage is 0%, so the description must compensate, but it does not even mention the parameters.

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's purpose: to build a preview of a Supershift Cloud v3/crud payload without sending it. The verb 'preview' and the resource 'Supershift Cloud v3/crud payload' are specific, but it does not differentiate from sibling preview tools like preview_supershift_write.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus its siblings (e.g., create_supershift_shifts vs preview_supershift_cloud_crud). An agent would not know when a preview is appropriate 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.

preview_supershift_sqlite_writeC

Build an experimental direct SQLite insert plan for rooted/emulated devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes
db_pathNo/data/data/app.supershift/databases/Supershift.db
calendar_row_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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

Without annotations, the description carries full burden. It hints at experimental nature and device requirements but does not disclose whether the tool actually writes to the database or just previews, nor any 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.

Conciseness3/5

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

The description is a single sentence, making it concise, but it sacrifices necessary detail, leaving key semantics unexplained.

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?

With 0% parameter schema coverage and no behavioral or usage guidance, the description is incomplete despite the presence of an output schema.

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 coverage for parameters is 0% and the description adds no information about the 'shifts' array structure, db_path default, or calendar_row_id purpose.

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 the tool builds an experimental SQLite insert plan for rooted/emulated devices, but it does not clarify what a 'plan' entails (e.g., SQL statement, summary) or distinguish from sibling 'preview' tools like preview_supershift_write.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool, what prerequisites (e.g., rooted device) are required, or how it compares to alternatives like create_supershift_sqlite_shifts.

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

preview_supershift_writeA

Build a dry-run write plan for Supershift without touching the device.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes
backendNoadb_ui
profile_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

The description clearly indicates the tool is non-destructive ('without touching the device'), which is important behavioral context. No annotations exist, so the description partially covers transparency, but could elaborate on side effects or authorization.

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 front-loads the key information: dry-run write plan for Supershift, no device modification. Every word is meaningful.

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 and no schema descriptions, the description is insufficient. It doesn't explain what a 'dry-run write plan' entails, how to structure the required 'shifts' array, or what the output schema provides, despite having one.

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 explain any parameters. The parameter names are somewhat self-explanatory but lack details on expected format, constraints, or semantics for 'shifts', 'backend', and 'profile_path'.

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's purpose: 'Build a dry-run write plan for Supershift without touching the device.' It distinctly specifies a preview (dry-run) function and contrasts with actual write tools among siblings.

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 using this tool for testing before actual writes, but it does not explicitly state when to prefer this over alternatives like 'create_supershift_shifts' or other preview tools. No guidance on when not to use.

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

pull_supershift_dataA

Pull Supershift app data via run-as when the device permits it. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
output_dirYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the run-as mechanism (a security-sensitive operation) and the dry-run default, providing important behavioral context beyond the absent annotations.

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, well-structured sentence that conveys essential information without waste.

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 and the presence of an output schema, the description covers purpose and a key parameter, though it omits details about what data is pulled and the role of output_dir.

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 explains the dry_run parameter (default true) but does not clarify the output_dir parameter. With 0% schema coverage, more detail would be beneficial.

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 pulls Supershift app data via run-as, distinguishing it from siblings that create or list shifts.

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 specifies when to use (device permits run-as) and defaults to dry-run, but does not explicitly exclude alternatives or provide 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.

rest_periodsC

Calculate rest hours between consecutive shifts and flag short rests.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo
minimum_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so the description must carry the full burden. It does not disclose whether the tool is read-only, what side effects exist, or any prerequisites (e.g., calendar availability). The output schema exists but is not described.

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

Conciseness2/5

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

While the single sentence is concise, it is under-specified given the 4 parameters and 0% schema coverage. The description sacrifices necessary detail for brevity.

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?

The description is incomplete. It does not explain input parameters, return values (despite having an output schema), or example usage. For a tool with 4 parameters and 0% coverage, this is insufficient.

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%, meaning no parameter is documented. The description adds no explanation for 'start', 'end', 'calendar', or 'minimum_hours'. An agent would not know what format or values to 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?

The description clearly states the tool calculates rest hours and flags short rests. This is a specific verb-resource combination that distinguishes it from sibling tools, which are mostly shift listing or modification tools.

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. Given the many sibling tools for shift management, explicit usage context would help but is missing.

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

shift_locationsC

List distinct shift locations found in the calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states 'list' (implies read-only) and 'distinct' (implies deduplication) but fails to mention side effects, permissions, or behavior when calendar is null. The transparency is insufficient for safe invocation.

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, front-loaded sentence with no waste. It conveys the core purpose efficiently, though it sacrifices completeness for brevity.

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 existence of an output schema, return values need not be explained, but the tool has one parameter with zero explanation. The description does not provide enough context for an agent to use the tool correctly, especially considering the many sibling tools.

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?

The parameter 'calendar' has no description in the schema (0% coverage) and the tool description does not explain its meaning, format, or default behavior. The description only mentions 'in the calendar', which is vague. This is a critical gap for correct invocation.

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 action 'list' and the resource 'distinct shift locations', distinguishing it from siblings like list_shifts and shift_titles. However, it doesn't specify what constitutes a 'shift location' or how it relates to the calendar.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_shifts or shifts_on_date. The description implies a read operation but does not address prerequisites or exclusions.

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

shifts_on_dateB

List all shifts touching one calendar date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayYes
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/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 without clarifying behavior for multi-day shifts, date format, or read-only nature. Minimal disclosure.

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 with no extraneous information, front-loaded with key action and scope.

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?

Simple tool but missing details like expected date format, handling of multi-day shifts, and return structure. Output schema exists but unused in description.

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 description adds no meaning beyond parameter names. Does not explain 'day' format or 'calendar' role, leaving agent with incomplete understanding.

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 uses specific verb 'List' with resource 'shifts' and scope 'touching one calendar date', clearly distinguishing from siblings like 'list_shifts' or 'upcoming_shifts'.

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, no prerequisites or exclusions mentioned. Agent must infer context from name alone.

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

shift_titlesC

List distinct shift titles found in the calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNo

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?

No annotations are present, so the description must disclose behavioral traits. It only notes it lists titles, but does not mention that it is read-only, whether it requires permissions, or how it behaves with different 'calendar' parameter values.

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 a single sentence, making it concise and front-loaded. However, it is overly terse, sacrificing necessary information for brevity.

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 that an output schema exists, return value explanation is not needed. However, the description lacks completeness regarding input parameter semantics and usage context, which is inadequate for a tool with no annotations.

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?

The schema has 0% coverage; the description does not explain the 'calendar' parameter at all. It fails to add meaning beyond the schema, leaving the agent to guess what values are valid or what 'null' implies.

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 lists distinct shift titles from the calendar, using a specific verb ('List') and resource ('shift titles'). While it distinguishes from siblings by name, it does not explicitly highlight differentiation from other listing tools like 'list_shifts' or 'shifts_on_date'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description merely states what it does, without specifying context, prerequisites, or exclusions.

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

summarize_by_periodC

Summarize hours by day, week, month, or weekday.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
periodNoday
calendarNo
include_all_dayNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must carry full disclosure. It does not mention whether the tool is read-only, handles edge cases, or any prerequisites like calendar required for period grouping.

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

Conciseness4/5

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

The description is a single sentence that clearly conveys the core action and scope. It is front-loaded and to the point, though it could be slightly expanded without losing conciseness.

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 5 parameters, no schema descriptions, and no annotations, the description is insufficient. It omits details on input format, optional behavior, and return values despite having an output schema.

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 description only hints at the 'period' parameter by listing day/week/month/weekday, but fails to explain 'start', 'end', 'calendar', or 'include_all_day'. With 0% schema description coverage, this is a significant 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 clearly states the tool summarizes hours by time period (day, week, month, weekday), indicating a specific aggregation function. It differentiates from sibling 'summarize_shifts' by focusing on period-based grouping, but could be more explicit.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'summarize_shifts' or 'list_shifts'. There are no exclusions or context for appropriate usage.

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

summarize_shiftsC

Summarize shift count and hours over an ISO date/datetime range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must carry the behavioral burden. It only mentions 'summarize' but doesn't disclose what the output contains (e.g., totals, averages, grouping), whether it's read-only, or any side effects. For a tool with 3 parameters and output schema, this is insufficient.

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 directly states the tool's function. It is front-loaded and contains no unnecessary words, earning high marks for conciseness.

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, 0% schema coverage, and 3 parameters (2 required), the description is too minimal. While an output schema exists, the description does not clarify the aggregation level or how the calendar parameter affects results, leaving significant gaps for an AI agent.

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 input schema has 0% description coverage for parameters. The description explains 'ISO date/datetime range' for start and end, adding some context, but the optional 'calendar' parameter is not mentioned at all, leaving its purpose unclear.

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 summarizes shift count and hours over an ISO date/datetime range, specifying the verb, resource, and scope. However, it doesn't differentiate from the sibling tool 'summarize_by_period' which likely has similar functionality.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'summarize_by_period' or 'shifts_on_date'. The description lacks any context of when to not use it or what distinguishes it.

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

supershift_app_statusA

Report whether app.supershift is installed on the connected Android device.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

The description implies a read-only check but does not explicitly state that there are no side effects or permissions needed. With no annotations, the description should more clearly indicate safety and dependencies.

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 of 12 words, front-loaded with the verb and resource. Every word is necessary and there is 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 output schema exists, the description is adequate. It states the tool reports installation status, which combined with the output schema provides enough context for a simple status check.

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?

No parameters exist, so baseline is 4. The description does not need to add param details, and it effectively communicates the tool's action.

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 verb 'Report' and the resource 'app.supershift installation status'. It distinguishes this tool from siblings like install_supershift_apks and inspect_supershift_apk.

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 such as android_device_status or probe_supershift_deeplinks. The context is missing for selecting this over other Supershift-related tools.

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

supershift_data_access_statusA

Check whether run-as or root can access Supershift app data on the connected device.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states that it checks access but doesn't mention if it modifies state, requires specific device permissions, or handles errors. This is insufficient for a 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.

Conciseness5/5

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

The description is a single sentence that is front-loaded and contains no unnecessary words, making it highly concise and structured.

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 parameterless tool with an output schema, the description provides the basic purpose but lacks detail about what the status means or how to interpret the result. It is adequate but not rich in context.

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, so schema description coverage is 100%. The description adds meaning by explaining what the tool checks, which goes beyond the empty 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 uses a specific verb ('Check') and resource ('run-as or root can access Supershift app data'), clearly distinguishing this from sibling tools like 'supershift_app_status' or 'android_device_status'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives (e.g., 'supershift_app_status'). There are no explicit when-to-use or when-not-to-use instructions.

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

supershift_reverse_engineering_reportC

Return the current reverse-engineering map for write-capable Supershift paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
jadx_dirNo
apktool_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 fully shoulders the burden of disclosing behavioral traits. It only says 'Return the map', but does not mention whether this is read-only, any side effects, authentication needs, or performance implications. The agent cannot infer safety or impact.

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 extremely concise (one sentence), which is good for conciseness, but it omits critical details. It's not well-structured; it lacks any breakdown of purpose, usage, or behavior.

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 (reducing need to explain return values), the description lacks context about input parameters, behavioral traits, and when to invoke this tool. Given the tool's moderate complexity (2 optional parameters), the description is insufficient.

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?

The input schema has two parameters (jadx_dir, apktool_dir) with zero description coverage. The description adds no meaning to these parameters, leaving the agent to guess their purpose and format.

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 action ('Return') and the resource ('reverse-engineering map for write-capable Supershift paths'), distinguishing it from sibling tools which focus on shifts, device status, etc. However, it could be more specific about what 'write-capable Supershift paths' means.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as `preview_supershift_write` or `inspect_supershift_apk`. The agent is given no context about prerequisites or typical use cases.

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

upcoming_shiftsC

List shifts from now through the next number of days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
calendarNo

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?

With no annotations, the description carries full burden but only says 'list shifts'. It does not disclose important behaviors such as time zone handling, inclusion of current shift, sorting order, pagination, or data freshness. The output schema partially covers return structure, but behavioral traits are missing.

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 sentence is appropriately concise for a simple tool. However, it could be slightly expanded to include parameter hints without losing brevity.

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, return values are covered externally. But the description lacks detail on time window behavior, time zone, and the calendar parameter. It is minimally complete but leaves gaps for an agent to infer correctly.

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 description must explain parameters. It implicitly covers 'days' via 'next number of days', but the 'calendar' parameter is not mentioned at all. Meaning is added for only one of two parameters.

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?

Description clearly states verb 'list', resource 'shifts', and time scope 'from now through the next number of days'. This distinguishes it from sibling tools like 'list_shifts' (all shifts) or 'shifts_on_date' (specific date). However, it could explicitly reference the 'days' parameter for extra clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list_shifts', 'shifts_on_date', or 'current_shift'. The description only states what the tool does without contextual usage directives.

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

validate_shifts_for_writeB

Validate structured shifts before attempting a write backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only says 'validate' but does not explain what happens on validation failure (e.g., errors, warnings) or whether the tool has any side effects. The schema is vague, and the 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. It is appropriately concise, though the trade-off is lack of detail given the context.

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?

Despite having an output schema, the description does not explain what the tool returns (e.g., boolean, error details). The low schema coverage, lack of annotations, and one-line description leave the agent underinformed for effective use.

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 description adds minimal meaning beyond 'structured shifts.' The single parameter 'shifts' is an array of objects with 'additionalProperties: true,' but the description does not specify expected structure, required fields, or validation criteria.

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 validates shifts before writing, using a specific verb ('validate') and resource ('structured shifts'). It distinguishes from sibling tools that perform actual writes or reads.

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 explicitly says 'before attempting a write backend,' indicating when to use it as a pre-validation step. However, it does not discuss when not to use it or mention 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. 35 tool updatesv0.1.0
    • First observedandroid_device_status
    • First observedcalendar_status
    • First observedcreate_supershift_shifts
    • First observedcreate_supershift_shifts_from_text
    • First observedcreate_supershift_sqlite_shifts
    • First observedcreate_supershift_sqlite_shifts_from_text
    • First observedcurrent_shift
    • First observeddetect_conflicts
    • First observeddump_supershift_ui
    • First observedestimate_pay
    • First observedexport_shifts
    • First observedfilter_shifts
    • First observedfree_days
    • First observedget_shift
    • First observedinspect_supershift_apk
    • First observedinstall_supershift_apks
    • First observedlist_shifts
    • First observednext_shift
    • First observedparse_shifts_text
    • First observedpreview_supershift_cloud_crud
    • First observedpreview_supershift_sqlite_write
    • First observedpreview_supershift_write
    • First observedprobe_supershift_deeplinks
    • First observedpull_supershift_data
    • First observedrest_periods
    • First observedshift_locations
    • First observedshift_titles
    • First observedshifts_on_date
    • First observedsummarize_by_period
    • First observedsummarize_shifts
    • First observedsupershift_app_status
    • First observedsupershift_data_access_status
    • First observedsupershift_reverse_engineering_report
    • First observedupcoming_shifts
    • First observedvalidate_shifts_for_write

TDQS

C2.4/5.0

Scored across 35 tools

Disambiguation2/5

Many tools have overlapping purposes (e.g., multiple create and preview variants for different backends, multiple listing and status tools). An agent would struggle to distinguish between create_supershift_shifts, create_supershift_sqlite_shifts, and their from_text counterparts without careful reading.

Naming Consistency3/5

Naming is mostly snake_case but mixes verb_noun (list_shifts, create_shifts) with noun_phrases (shifts_on_date, shift_locations, free_days). Some tools have inconsistent patterns (e.g., summarize_by_period vs summarize_shifts).

Tool Count2/5

35 tools is excessive for a shift management server. Many tools are redundant (e.g., three create shifts variants, three preview tools) and others are niche (reverse engineering report, inspect APK). A more focused set of 10-15 tools would be sufficient.

Completeness2/5

The tool set lacks update and delete operations for shifts, which are essential for full lifecycle management. While it covers creation, reading, and various status checks, the absence of update/delete creates gaps that could cause agent failures.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with intelligent access to Google Calendar data, enabling natural language queries about availability, upcoming events, schedule conflicts, and meeting summaries through context-aware calendar integration.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage calendars and tasks through natural language, supporting Google Calendar operations like event creation, availability checking, and smart scheduling. It features schedule analysis, task reminders, and meeting time recommendations to streamline productivity.
    -