Skip to main content
Glama
odiecay

RepairDesk MCP Server

by odiecay

RepairDesk MCP Server

Ein MCP (Model Context Protocol) Server, der jedem MCP-kompatiblen KI-Assistenten – Claude Code, Claude Desktop, Codex CLI, OpenCode, Cursor, Windsurf oder jedem anderen MCP-Client – direkten Lese-/Schreibzugriff auf deine RepairDesk-Shop-Daten gibt. Richte ihn mit dem API-Schlüssel deines Shops ein und stelle Fragen wie „Ticket T-15423 nachschlagen", „Was ist auf Rechnung 8821 überfällig?" oder „Weise den iPhone-Screen-Job Dave zu".

Kein offizielles RepairDesk-Produkt – ein unabhängiges Tool, das von einem RepairDesk-Shop für RepairDesk-Shops entwickelt wurde. Keine Garantie, Nutzung auf eigenes Risiko (siehe Lizenz) – aber es wird täglich für die Ticket-Warteschlange eines echten Reparaturbetriebs verwendet, nicht als Proof of Concept.

Inhalt

Related MCP server: RogerRoger MCP Server

Was du damit tatsächlich tun kannst

Sobald es in deinen KI-Assistenten eingebunden ist, kannst du einfach mit deinen RepairDesk-Daten sprechen, anstatt durch die Web-UI zu klicken. Einige reale Beispiele:

Empfang / Triage

  • „Ticket T-15423 nachschlagen" – vollständige Ticketdetails: Kunde, Gerät, Status pro Gerät, Notizen.

  • „Wie ist der Status von Sarah Millers Telefon?" – sucht Tickets nach Kundenname/Schlüsselwort.

  • „Zeig mir alles, was 'Ausstehend' oder 'Warten auf Teile' ist" – filtert Tickets nach Status.

  • „Was ist Dave gerade zugewiesen?" – filtert Tickets nach Techniker.

  • „Ruf Johns Kontaktdaten ab" – Kundensuche nach Name, Telefon oder E-Mail.

Workflow / Werkstattarbeit

  • „Füge T-15423 eine Diagnosenotiz hinzu: Bildschirm ersetzt, Akku getestet OK"

  • „Weise Ticket T-15490 Dave zu"

  • „Markiere T-15423 als repariert" – der Server fragt zuerst nach Bestätigung und weist darauf hin, dass dieser Status automatisch eine Kunden-SMS/E-Mail in RepairDesk auslöst.

  • „Erstelle ein Ticket für diesen Kunden: iPhone 13, Bildschirmtausch" – auch hier ist vor dem tatsächlichen Erstellen eine Bestätigung erforderlich.

Geld / Verwaltung

  • „Welche Rechnungen sind aus dem letzten Monat noch unbezahlt?"

  • „Wie hoch ist der offene Betrag auf Rechnung 8821?"

  • „Haben wir einen iPhone-13-Akku auf Lager?" – Inventarsuche.

  • „Liste alle unsere Techniker auf" / „Welche Zahlungsmethoden haben wir eingerichtet?"

  • „Welche Reparaturkategorien/Gerätetypen haben wir konfiguriert?" – nützlicher Kontext beim Erstellen eines Tickets oder beim Diagnostizieren, was ein Gerätemodell in deinem System überhaupt ist.

Da dies über einen echten KI-Assistenten läuft und nicht über ein festes Dashboard, kannst du diese natürlich verketten – „finde alle überfälligen Rechnungen für Kunden mit noch offenem Ticket" – und der Assistent löst es über Tools hinweg, anstatt dass du zwei Bildschirme manuell abgleichst.

Tool-Referenz

Tool

Was es tut

repairdesk_tickets

Tickets nach Status/Datum/Schlüsselwort/Techniker suchen oder die vollständigen Details eines Tickets abrufen (einschließlich Status pro Gerät)

repairdesk_tickets_write

Tickets erstellen, Status/Gerätefelder aktualisieren, interne oder Diagnosenotizen hinzufügen, einen Techniker zuweisen

repairdesk_customers

Kunden nach Name, Telefon, E-Mail oder ID suchen

repairdesk_invoices

Rechnungen suchen, eine Rechnung abrufen oder deren offenen/fälligen Betrag prüfen

repairdesk_inventory

Teilebestand nach Schlüsselwort durchsuchen

repairdesk_employees

Mitarbeiter/Techniker auflisten

repairdesk_shop_info

Referenzabfragen: Geräte, Kategorien, Status, Farben, Netzwerke, Steuerklassen, Zahlungsmethoden, Empfehlungsquellen, Reparatur-/Servicetypen, Standorte, Probleme (nach Gerät), Trade-ins, Bestellungen

Sicherheitsvorkehrung: repairdesk_tickets_write erfordert confirmed: true, bevor eine Statusänderung angewendet wird, und warnt, wenn der Zielstatus einer ist, bei dem RepairDesk den Kunden automatisch benachrichtigt (Repariert, Abholbereit, Abgeschlossen, Warten auf Kunde, Warten auf Angebot, Storniert). Du musst nichts tun, damit das funktioniert – antworte einfach mit „Ja", wenn dein Assistent die Bestätigungsabfrage weiterleitet.

Praktisches Detail: Ticketabfragen/-schreibvorgänge akzeptieren entweder das Bestell-ID-Format von RepairDesk (T-15423) oder die interne numerische Ticket-ID – du musst nie wissen, welche du hast, der Server löst es für dich auf.

Was das nicht ist

Dies deckt die Leseseite von RepairDesk sowie die Kern-Ticket-Workflow-Schreibvorgänge ab. Es deckt nicht Kostenvoranschläge, Terminerstellung, POS/Verkaufstransaktionen, Inventar-Schreibvorgänge, Zahlungserfassung, Ticket-Bild-/Anhang-Upload oder Webhooks ab. PRs sind willkommen, wenn du eines davon brauchst.

Schnellstart

Du musst kein Entwickler sein, um das auszuführen – nur vertraut damit, ein paar Befehle in ein Terminal zu tippen. Gesamtzeit: etwa 5 Minuten.

1. Node.js installieren (falls du es nicht hast)

Lade es von nodejs.org herunter und installiere es – nimm die „LTS"-Version. Dadurch werden sowohl node als auch npm installiert. Um zu prüfen, ob es funktioniert hat, öffne ein Terminal und führe aus:

node --version

Du solltest so etwas wie v20.x.x sehen (alles ab 18 ist in Ordnung).

2. Code holen

Wenn du Git hast:

git clone https://github.com/codeyoc/repairdesk-mcp.git
cd repairdesk-mcp

Wenn nicht: Klicke auf den grünen Code-Button auf der GitHub-Repo-Seite → Download ZIP → entpacke es irgendwohin → öffne ein Terminal in diesem Ordner.

3. Deinen RepairDesk-API-Schlüssel holen

In deinem RepairDesk-Admin: Einstellungen → API. Kopiere den dort angezeigten Schlüssel – das Setup-Skript fragt im nächsten Schritt danach. Behandle ihn wie ein Passwort: Er gewährt vollen Lese-/Schreibzugriff auf die Daten deines Shops (siehe Sicherheit).

4. Setup-Skript ausführen

node setup.mjs

Das ist der schnellste Weg und erledigt alles: Es führt bei Bedarf npm install für dich aus, fragt nach deinem API-Schlüssel, fragt, welchen KI-Assistenten du verwendest (Claude Code, Claude Desktop, Codex CLI oder OpenCode), und schreibt die Konfiguration automatisch für dich – wobei es zuerst eine Sicherung einer vorhandenen Konfigurationsdatei erstellt. Wenn du etwas anderes verwendest, gibt es den Konfigurationsblock aus, den du selbst einfügen kannst.

Wenn du es lieber von Hand machst – oder dein Client nicht einer der vier oben genannten ist – siehe stattdessen Manuelle Einrichtung unten. In jedem Fall führe zuerst selbst npm install aus, wenn du das Skript überspringst.

5. Ausprobieren

Frag deinen Assistenten etwas wie „Verwende RepairDesk, liste meine 5 neuesten Tickets auf". Wenn er mit echten Ticketdaten zurückkommt, bist du fertig.

Manuelle Einrichtung

Überspringe das, wenn node setup.mjs bei dir bereits funktioniert hat. Andernfalls führe zuerst npm install in diesem Ordner aus und verbinde dann deinen Client von Hand:

Führe das von überall aus aus, ersetze den Pfad durch den vollständigen Pfad zu dem Ordner, in den du entpackt/geklont hast, und den Schlüssel durch deinen echten:

claude mcp add repairdesk \
  --env REPAIRDESK_API_KEY=your_key_here \
  --env REPAIRDESK_USER_AGENT=YourShopName-MCP/1.0 \
  -- node /full/path/to/repairdesk-mcp/server.mjs

Öffne (oder erstelle) die Konfigurationsdatei für dein Betriebssystem:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

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

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

Füge das hinzu (führe es mit allem zusammen, was bereits in mcpServers steht, falls die Datei nicht leer ist):

{
  "mcpServers": {
    "repairdesk": {
      "command": "node",
      "args": ["/full/path/to/repairdesk-mcp/server.mjs"],
      "env": {
        "REPAIRDESK_API_KEY": "your_key_here",
        "REPAIRDESK_USER_AGENT": "YourShopName-MCP/1.0"
      }
    }
  }
}

Speichere die Datei und beende und öffne Claude Desktop vollständig neu (nicht nur das Fenster schließen).

Bearbeite (oder erstelle) ~/.codex/config.toml und füge hinzu:

[mcp_servers.repairdesk]
command = "node"
args = ["/full/path/to/repairdesk-mcp/server.mjs"]

[mcp_servers.repairdesk.env]
REPAIRDESK_API_KEY = "your_key_here"
REPAIRDESK_USER_AGENT = "YourShopName-MCP/1.0"

Starte eine neue Codex-Sitzung und führe /mcp aus, um zu bestätigen, dass die Verbindung hergestellt wurde. (Codex hat auch einen interaktiven Befehl codex mcp add, falls du das dem Bearbeiten der Datei vorziehst – prüfe codex mcp add --help für die genauen Flags deiner installierten Version.)

Öffne (oder erstelle) die Konfigurationsdatei für dein Betriebssystem:

  • Mac/Linux: ~/.config/opencode/opencode.json

  • Windows: %APPDATA%\opencode\opencode.json

Füge das hinzu (führe es mit allem zusammen, was bereits in mcp steht, falls die Datei nicht leer ist):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "repairdesk": {
      "type": "local",
      "command": ["node", "/full/path/to/repairdesk-mcp/server.mjs"],
      "enabled": true,
      "environment": {
        "REPAIRDESK_API_KEY": "your_key_here",
        "REPAIRDESK_USER_AGENT": "YourShopName-MCP/1.0"
      }
    }
  }
}

Starte OpenCode neu, um es zu übernehmen.

Die oben verwendete command/args/env-Form (Claude Code/Desktop) ist der De-facto-Standard – die meisten MCP-Clients folgen ihm, nur in einer anderen Einstellungsdatei. Prüfe in der Dokumentation deines Clients, wo diese Datei liegt; der Block selbst sollte unverändert funktionieren.

Verwende den vollständigen, absoluten Pfad zu server.mjs (z. B. /Users/you/repairdesk-mcp/server.mjs oder C:\Users\you\repairdesk-mcp\server.mjs) – ein relativer Pfad schlägt fehl, weil dein KI-Client nicht aus diesem Ordner heraus ausgeführt wird.

Alle Konfigurationsoptionen

Alles unten gehört in den env/environment-Block, den die Konfiguration deines Clients verwendet (setup.mjs erledigt das für dich) – nicht in eine .env-Datei, da die meisten MCP-Clients eine solche nicht automatisch lesen. .env.example in diesem Repo listet dieselben Variablen als Referenz auf.

Variable

Erforderlich

Standard

Zweck

REPAIRDESK_API_KEY

Ja

—

Dein RepairDesk-API-Schlüssel

REPAIRDESK_BASE_URL

Nein

https://api.repairdesk.co/api/web/v1

API-Basis-URL überschreiben

REPAIRDESK_USER_AGENT

Nein

RepairDesk-MCP/1.0

User-Agent, der bei jeder Anfrage gesendet wird. Setze ihn auf deinen eigenen Shop-/Tool-Namen, wenn du möchtest – er darf nur nicht leer sein (siehe Fehlerbehebung)

REPAIRDESK_MIN_INTERVAL_MS

Nein

600

Mindestabstand in ms zwischen ausgehenden API-Aufrufen – siehe Ratenbegrenzung unten

REPAIRDESK_LOG_DIR

Nein

./logs

Wo mcp_audit.log geschrieben wird

REPAIRDESK_CONFIG

Nein

./config.json

Pfad zu einer JSON-Konfigurationsdatei, falls du lieber eine als Umgebungsvariablen verwenden möchtest (siehe unten)

Alternative: Konfigurationsdatei statt Umgebungsvariablen. Wenn Ihre Einrichtung Umgebungsvariablen unpraktisch macht, erstellen Sie eine config.json (gitignored) neben server.mjs:

{
  "repairdesk_api_key": "your_key_here",
  "repairdesk_base_url": "https://api.repairdesk.co/api/web/v1"
}

Sie wird bei jedem API-Aufruf neu gelesen, sodass Sie den Schlüssel rotieren können, ohne den Server neu zu starten. Wenn beides vorhanden ist, haben Umgebungsvariablen Vorrang vor dieser Datei.

Ratenbegrenzung – die 100/Minute-Sache

RepairDesks dokumentierte Obergrenze ist 100 Anfragen pro Minute pro API-Schlüssel (manche Pläne erlauben bis zu 120 – prüfen Sie Ihren eigenen Plan, wenn Sie unsicher sind). Dieser Server übernimmt das automatisch für Sie:

  • Jeder ausgehende Aufruf wird durch eine einzige Drosselung in eine Warteschlange gestellt, die mindestens REPAIRDESK_MIN_INTERVAL_MS (Standard 600 ms ≈ 100/min) zwischen Anfragen wartet – so löst das Anfordern einer großen Menge von Tickets selbst keinen Ratenbegrenzungsfehler aus.

  • Wenn RepairDesk weiterhin einen 429 (Ratenbegrenzung) zurückgibt – z. B. weil ein anderes Tool denselben Schlüssel ebenfalls stark beansprucht – wartet der Server automatisch und versucht es einmal erneut, bevor er aufgibt.

  • Sie müssen nichts konfigurieren, damit das funktioniert. Ändern Sie REPAIRDESK_MIN_INTERVAL_MS nur, wenn Sie ständig Ratenbegrenzungsfehler sehen (erhöhen Sie ihn) oder wenn Sie wissen, dass Ihr Plan eine höhere Obergrenze erlaubt und Sie schnellere Massenabfragen wünschen (senken Sie ihn vorsichtig).

Fehlerbehebung

„RepairDesk API returned 401 Unauthorized" / „Unauthorized" in der Antwort Ihr API-Schlüssel ist falsch, wurde widerrufen oder wurde nicht übernommen. Überprüfen Sie den Schlüssel in Einstellungen → API in RepairDesk und dass er in der Konfiguration Ihres MCP-Clients korrekt geschrieben ist (kein versehentliches Leerzeichen, nicht noch YOUR_REPAIRDESK_API_KEY_HERE). Starten Sie Ihren KI-Client nach jeder Konfigurationsänderung vollständig neu – die meisten laden die MCP-Konfiguration nicht live neu.

Anfragen schlagen sofort fehl / wirken wie blockiert, nicht authentifiziert RepairDesks Cloudflare blockiert Anfragen mit einem leeren oder standardmäßig aussehenden User-Agent. Setzen Sie REPAIRDESK_USER_AGENT nicht auf eine leere Zeichenfolge.

„RepairDesk API rate limit hit twice in a row (429)" Sie machen Anfragen schneller als das Limit Ihres Schlüssels, selbst nach dem eingebauten erneuten Versuch. Erhöhen Sie REPAIRDESK_MIN_INTERVAL_MS (versuchen Sie 1000) in Ihrer Konfiguration.

„Ticket T-XXXXX not found – could not resolve to internal ID" Überprüfen Sie, ob die Bestell-ID korrekt ist und in diesem RepairDesk-Shop existiert. Wenn Sie stattdessen die interne numerische ID haben, funktioniert das auch – übergeben Sie sie direkt.

„RepairDesk API request timed out after 15000ms" Normalerweise ein Netzwerk-/Firewall-Problem beim Erreichen von api.repairdesk.co, oder REPAIRDESK_BASE_URL ist falsch. Überprüfen Sie, ob Sie diesen Host von dem Ort aus erreichen können, an dem dieser Server läuft.

Ihr KI-Assistent sieht das Tool überhaupt nicht

  • Stellen Sie sicher, dass der Pfad in args absolut ist, nicht relativ, und tatsächlich auf server.mjs zeigt.

  • Stellen Sie sicher, dass Sie npm install in diesem Ordner ausgeführt haben (fehlendes node_modules = der Server kann nicht starten).

  • Beenden und starten Sie Ihren KI-Client vollständig neu – schließen Sie nicht nur das Chat-Fenster.

  • Führen Sie node /full/path/to/server.mjs direkt in einem Terminal aus – wenn ein Fehler auftritt, sehen Sie das eigentliche Problem statt einer allgemeinen „Tool nicht verfügbar"-Meldung Ihres Clients.

node setup.mjs meldet, dass claude/codex nicht in Ihrem PATH gefunden wurden Das ist in Ordnung – es fällt darauf zurück, den Konfigurationsblock auszugeben, den Sie von Hand einfügen können (siehe Manuelle Einrichtung). Das bedeutet nur, dass diese CLI nicht installiert ist oder nicht in Ihrem PATH ist; es bedeutet nicht, dass der MCP-Server selbst defekt ist.

Immer noch festgefahren? Eröffnen Sie ein Issue in diesem Repository mit der Fehlermeldung (schwärzen Sie zuerst Ihren API-Schlüssel, falls er irgendwo in der Ausgabe erscheint).

Häufig gestellte Fragen

Ist das ein offizielles RepairDesk-Tool? Nein. Es ist unabhängig erstellt und gepflegt und nutzt die öffentliche API von RepairDesk. Verwenden Sie es nach eigenem Ermessen.

Kostet der Betrieb etwas? Nein – es werden lediglich dieselben API-Aufrufe getätigt, die Ihr RepairDesk-Plan bereits erlaubt. Es fallen keine zusätzlichen Gebühren von diesem Projekt an. (Ihr KI-Assistent-Abo, z. B. Claude, ist getrennt und steht in keinem Zusammenhang mit diesem Server.)

Kann ich das auch mit etwas anderem als Claude verwenden? Ja – MCP ist ein offener Standard. setup.mjs konfiguriert Claude Code, Claude Desktop, Codex CLI und OpenCode direkt; alles andere, das MCP über stdio spricht (Cursor, Windsurf usw.), kann diesen Server ebenfalls verwenden, über die manuelle Konfiguration in Manuelle Einrichtung.

Kann ich das für mehrere RepairDesk-Shops ausführen? Ja – registrieren Sie es mehrmals unter verschiedenen Namen (z. B. repairdesk-store1, repairdesk-store2) in Ihrem MCP-Client, jeweils mit eigenem REPAIRDESK_API_KEY.

Wird mein KI-Assistent versehentlich meine Kunden per E-Mail oder SMS kontaktieren? Nur repairdesk_tickets_write kann das auslösen, und nur über eine Statusänderung – die immer ein explizites confirmed: true erfordert und in der Tool-Beschreibung gekennzeichnet ist, wenn der Zielstatus einer der benachrichtigenden Status von RepairDesk ist. Es wird nicht stillschweigend passieren.

Sicherheit

Ihr REPAIRDESK_API_KEY gewährt vollen Lese-/Schreibzugriff auf die Kunden- und Finanzdaten Ihres Shops. Bewahren Sie ihn in der Umgebungskonfiguration Ihres MCP-Clients auf, niemals in einer committeten Datei. config.json und .env sind hier genau aus diesem Grund gitignored – verwenden Sie sie lokal, wenn Sie eine Datei gegenüber Umgebungsvariablen bevorzugen, aber committen Sie keine ausgefüllte Kopie. Sicherheitsproblem gefunden? Bitte eröffnen Sie ein Issue (oder einen privaten Bericht, falls Ihr Host das unterstützt) anstelle eines öffentlichen PRs mit Exploit-Details.

Lizenz

MIT – siehe LICENSE. Bereitgestellt wie besehen, ohne Gewähr – Sie sind verantwortlich für die Verwendung gegenüber Ihrem eigenen RepairDesk-Konto.

Available Tools

7 tools
repairdesk_customersB

Look up customers by name, phone, email, or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
actionYes
keywordNoSearch by name, phone, or email
pagesizeNo
customer_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It states 'look up' which suggests a read-only operation, and the action enum (list/get) reinforces this. However, it does not explicitly confirm read-only semantics, nor does it mention pagination behavior or any permissions required. The description is adequate but leaves room for inference about side effects and constraints.

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 redundancy. It efficiently conveys the core purpose. However, it could include a bit more detail (e.g., mention of action modes) without losing conciseness, so it's not a perfect 5.

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 tool has 5 parameters including an action enum and pagination, yet the description does not explain the 'action' parameter, the difference between list and get, or how pagination works. It also doesn't address how 'customer_id' vs 'keyword' are used together. For a tool of this complexity, the description is incomplete and requires the agent to infer critical usage details from the schema alone.

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 schema description coverage is only 20% (only 'keyword' is described). The tool description adds partial meaning by mentioning name, phone, email, or ID, mapping roughly to 'keyword' and 'customer_id', but it does not explain the 'action' parameter, nor does it clarify how 'keyword' and 'customer_id' relate or when to use each. It also omits pagination parameters (page, pagesize). The description adds some value but insufficiently compensates for the low schema coverage.

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 (look up) and resource (customers), and lists the search fields. It is distinct from sibling tools (tickets, invoices, etc.) which target different resources. However, it does not mention the 'action' parameter that distinguishes between listing and getting a single customer, leaving some ambiguity about the exact operation.

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 this tool is for customer lookup but provides no explicit guidance on when to use it versus alternatives. Since siblings are for other resources, the use case is fairly obvious, yet there is no mention of scenarios like retrieving a specific customer vs. browsing all customers, which the action parameter addresses.

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

repairdesk_employeesC

List employees/technicians.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
pagesizeNo

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 carries the full burden of behavioral disclosure. It only says 'List', which implies a read operation, but it does not disclose pagination behavior, return format, or any side effects. For a simple listing tool, the lack of even basic behavioral context (e.g., that results are paged) leaves the agent guessing about what to expect.

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 that front-loads the verb and resource. It is not verbose or redundant, and it follows a clear structure. However, it is so terse that it borders on under-specification, but the dimension is about conciseness and structure, not completeness, so it earns a 4.

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 no output schema and no annotations, the description should at least hint at pagination and typical response characteristics. The description covers only the basic action and does not mention that results may be paged (as implied by the parameters) or what fields to expect. An agent cannot fully anticipate the tool's behavior from this description alone.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the 'page' or 'pagesize' parameters at all. Since the schema properties have no descriptions, the agent has no explanation of these parameters beyond their names and defaults. 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.

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 ('employees/technicians'). It is not a tautology and provides a specific verb+resource pair. However, it does not explicitly differentiate from sibling tools, though no other sibling handles employees, so it is reasonably distinct.

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. It does not mention any conditions, exclusions, or contexts where another tool like repairdesk_tickets or repairdesk_customers would be more appropriate. The only intended use is implicit from the resource name.

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

repairdesk_inventoryC

Search inventory/parts stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
keywordNo
pagesizeNo

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 the full burden of behavioral disclosure. The tool is a search, which implies a read-only operation, but the description does not state that explicitly, nor does it mention pagination behavior, response structure, or any side effects. It only states the purpose without disclosing observable behaviors or constraints. Both the read-only nature and pagination are left entirely to inference.

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 short sentence with no fluff or redundancy, which is technically concise. However, it is under-specified for an agent; the brevity does not earn its place because it omits essential information. It is neither front-loaded with useful details nor structured to guide usage. It is compact but not informative, so a middle score is appropriate.

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?

For a tool with 3 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what the search returns, what fields are searched, how to paginate, or what a typical response looks like. An agent cannot confidently call this tool correctly because it lacks the context needed to construct a valid query or interpret results. The description is virtually absent.

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 0% coverage (no descriptions for page, keyword, or pagesize), so the description must compensate and explain parameter meaning. It does not mention any of the parameters at all. The agent is left to guess what 'keyword' searches against (e.g., part name, SKU) and how pagination is applied. The description provides zero value 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 states a clear action ('Search') and a clear resource ('inventory/parts stock'). It distinguishes the tool from siblings like repairdesk_tickets, repairdesk_customers, and repairdesk_invoices by naming the resource domain. However, it could be more specific about what 'inventory/parts' means in the repair-desk context (e.g., parts availability), but the core purpose is unambiguous.

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. It does not mention any context such as 'use this to find parts available for a repair' or 'use this to check stock levels.' There are no exclusions or references to sibling tools. The only implied usage is searching inventory, which is not explicit enough to route an agent effectively.

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

repairdesk_invoicesC

Search invoices, get details, or check due/outstanding amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
actionYes
statusNo
keywordNo
to_dateNo
pagesizeNo
from_dateNo
invoice_idNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions three distinct operations but does not disclose side effects, permission requirements, rate limits, or return behavior. The description adds little beyond what the tool name implies, leaving the agent uncertain about operational 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 concise sentence with no waste, front-loading the core purpose. However, given the tool's complexity (8 parameters, 3 actions), it is under-specified. The conciseness itself is good, but the structure lacks the necessary detail to be fully valuable.

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?

The tool has 8 parameters, an action enum, and no output schema, yet the description provides almost no contextual information. It does not explain how the three actions map to the enum values, what each parameter does, or what the response format looks like. This is critically incomplete for an agent to use effectively.

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% because the description does not mention any parameters. It fails to explain the meaning of action values, how keyword filtering works, date ranges, pagination, or the purpose of invoice_id. With 8 parameters and zero description coverage, the agent is left to guess parameter usage from the schema alone, which is insufficient.

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 states a clear verb+resource: search, get details, and check amounts specifically for invoices. It distinguishes itself from sibling tools that handle tickets, customers, etc., even though it doesn't name them. The three actions are explicit and convey the tool's scope.

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 any exclusions, prerequisites, or conditions for using one action over another. An agent must infer usage context from the action enum, but the description provides no such context.

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

repairdesk_shop_infoB

Look up reference data: devices, categories, statuses, colors, networks, tax classes, payment methods, referral sources, repair types, service types, locations, problems (by device), trade-ins, purchase orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
brandNoFilter devices by brand
lookupYes
keywordNo
pagesizeNo
device_idNoRequired when lookup=problems
device_nameNoFilter devices by name

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of disclosing behavioral traits. It indicates a read operation ('look up') and hints at a dependency for problems ('by device'), but it does not explicitly state that the tool is read-only, has no side effects, requires authentication, or handles pagination. The description lacks essential behavioral context for an agent to call it safely without assumptions.

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 compact, consisting of a single sentence that front-loads the verb and resource. It efficiently enumerates the lookup types without unnecessary filler. While the list is long, it is still concise and well-structured, earning a high but not perfect score 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 tool's complexity (7 parameters, one required, low schema coverage, no output schema), the description is far too sparse. It does not explain return values, pagination behavior, required dependencies (e.g., device_id for problems), or how to effectively use filters. An agent would need to infer much from the sparse schema descriptions, making the tool under-documented.

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 only 43% (only brand, device_id, and device_name have descriptions), so the description needs to compensate by explaining parameter usage. However, it only lists the lookup enum values and mentions 'problems (by device)' without tying that to the device_id parameter. It does not clarify the role of page, pagesize, keyword, or how filters work, leaving a significant semantic gap.

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

Purpose5/5

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

The description uses a clear verb ('Look up') and a specific resource ('reference data'), then enumerates the exact entity types supported. This makes the tool's purpose unambiguous and distinguishes it from siblings like repairdesk_tickets or repairdesk_inventory, which handle operational entities rather than lookups.

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 this tool is for retrieving reference data, and its distinct name and content signal a different usage context from the sibling tools. However, there is no explicit statement about when to use this tool versus alternatives, nor exclusions for when not to use it. The guidance is only implied by the tool's nature, not stated.

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

repairdesk_ticketsB

Search and look up repair tickets. List tickets filtered by status, date, keyword, or tech. Get full details by ticket ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
actionYes"list" to search, "get" for specific ticket
statusNoFilter by status (Pending, In Progress, Repaired, etc.)
keywordNoSearch keyword (customer name, device, etc.)
to_dateNoEnd date as Unix timestamp
pagesizeNo
from_dateNoStart date as Unix timestamp
ticket_idNoTicket ID (for action=get)
assigned_toNoFilter by assigned employee ID

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It uses read-oriented verbs ('search', 'look up', 'list', 'get') implying a non-destructive operation, but it never explicitly states that no changes are made. It also discloses filtering capabilities but omits details like pagination behavior or any side effects, which is a moderate gap for a read tool.

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 two sentences with no fluff. It front-loads the primary action and then lists the filter options in a logical order. Every word contributes to understanding the tool's purpose and usage.

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

Completeness4/5

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

For a search tool with no output schema and moderate complexity (9 parameters, but only one required), the description covers the main actions (list with filters, get by ID). It does not explicitly mention pagination or the response format, but given the simple read nature and the schema covering parameters, it is reasonably complete. A slightly more detailed mention of return contents would push it higher.

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 78% (slightly below the high threshold), so the description partially compensates by enumerating filter categories (status, date, keyword, tech) and mentioning 'get by ticket ID'. This maps to several parameters, but it adds little beyond the schema's own descriptions, which already explain each parameter's purpose. Overall, it meets the baseline for a moderately covered 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 identifies the tool as a search/lookup for repair tickets with specific verbs (search, look up, list, get) and a resource (repair tickets). It effectively conveys the read-only nature, though it does not explicitly mention the sibling write tool or contrast itself, so it stops short of full differentiation.

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 the tool is for reading/searching but provides no explicit guidance on when to use this tool versus alternatives like repairdesk_tickets_write. There are no statements about when not to use it or prerequisites, leaving the agent to infer usage context from the action enum and filter descriptions.

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

repairdesk_tickets_writeA

Create/update tickets, add notes, assign techs. WARNING: Status changes may trigger automatic customer SMS/email! Statuses that notify: Repaired, Ready for Pickup, Completed, Waiting on Customer, Waiting For Quote, Cancelled. ALWAYS confirm with user before status changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoNote text (for add_note)
actionYes
statusNoTicket status — MAY TRIGGER NOTIFICATION
confirmedNoMust be true for status changes
device_idNoDevice type ID (for create)
note_typeNointernal or diagnosticinternal
ticket_idNoTicket ID (for update/add_note/assign)
service_idNoService/repair item ID
customer_idNoCustomer ID (for create)
device_nameNoDevice name/model
service_nameNoService name
security_codeNoDevice PIN/password
serial_numberNo
technician_idNoEmployee ID (for assign)
additional_notesNoInternal notes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the major side effect: status changes may trigger automatic customer SMS/email and lists the specific statuses that notify. It also mandates confirmation. This covers the primary behavioral risk, though it does not mention authentication or rate limits, which is acceptable for this context.

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

Conciseness5/5

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

The description is concise and effective: a single sentence states the purpose, then a warning in caps draws attention to the critical side effect and the confirmation requirement. Every sentence earns its place with no fluff, and the critical warning is front-loaded.

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

Completeness4/5

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

The tool is complex with 15 parameters and multiple actions, but the schema provides detailed per-parameter descriptions and the action enum clarifies usage. The description covers the essential context: what the tool does and the notification risk. It does not need to explain return values since there is no output schema. The description is sufficiently complete for an agent to call it correctly with the schema's help.

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 87%, so the schema already explains most parameters well (e.g., note, ticket_id, customer_id). The description's warning about status notifications adds context to the status parameter, but the schema already includes 'MAY TRIGGER NOTIFICATION'. The description does not add significant semantic value beyond the schema; it meets the baseline for high schema 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 tool's actions: create/update tickets, add notes, assign techs. It names the specific resource (tickets) and verb, distinguishing it from the read-focused sibling repairdesk_tickets. The purpose is unambiguous and not a tautology.

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 includes explicit guidance to always confirm with the user before status changes, which is critical for safe usage. It implies this is the write tool vs. the read tool repairdesk_tickets, though it does not explicitly name alternatives. The confirmation requirement is a clear usage rule.

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. 7 tool updatesv1.0.0
    • First observedrepairdesk_customers
    • First observedrepairdesk_employees
    • First observedrepairdesk_inventory
    • First observedrepairdesk_invoices
    • First observedrepairdesk_shop_info
    • First observedrepairdesk_tickets
    • First observedrepairdesk_tickets_write

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct domain entity (tickets, customers, invoices, inventory, employees, reference data), with read and write operations clearly separated. There is no overlap or ambiguity between tool purposes.

Naming Consistency4/5

All tools share a consistent 'repairdesk_' prefix and noun-based names (customers, invoices, inventory, etc.). The 'tickets' vs 'tickets_write' pair introduces a minor inconsistency, but overall the naming pattern is predictable and clear.

Tool Count5/5

Seven tools is well-scoped for a repair shop management domain. Each tool covers a necessary function without redundancy, making the set compact and purposeful.

Completeness4/5

The surface provides full ticket lifecycle (search, create, update), customer lookup, invoice queries, inventory search, employee list, and reference data. Minor gaps like ticket deletion or invoice creation exist, but the core workflows are covered.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI assistants to manage RogerRoger CRM data including people, organizations, lists, tags, and tasks through standardized MCP tools.
    22
    4 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to read and manage a Jobkeepr field service business including jobs, customers, scheduling, estimates, invoices, and payments via MCP.
    19
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query and operate a help desk and service desk through MCP over HTTP, including tickets, requester communications, internal notes, attachments, stage and SLA history, time entries, clients, requesters, desks, knowledge base, contracts, and billing/satisfaction reports.
    MIT