Monid CLI
Monid ermöglicht es dir, hunderte von Tools über eine einzige Schnittstelle zu entdecken und darauf zuzugreifen – inspiziere ihre Schemata, führe sie mit strukturierten Eingaben aus und rufe Ergebnisse ab.
Installiere es via npm und erhalte den Befehl monid.
Aktuelle Befehlssignaturen findest du unter monid --help und monid <befehl> --help.
Einrichtung
Überprüfe die installierte CLI-Version:
monid --version
Führe die folgenden Einrichtungsschritte aus, wenn EINE der folgenden Bedingungen zutrifft:
monidwird nicht gefunden (nicht installiert).- Die CLI hat gewarnt, dass eine neuere Version verfügbar ist.
- Die gemeldete Version stimmt nicht mit der
versionim Frontmatter dieses Skills überein – CLI- und Skill-Version müssen immer identisch sein.
Einrichtungsschritte (gleicher Ablauf für Neuinstallation und Update):
- Installiere (oder aktualisiere) die CLI und führe dann die Einrichtung aus:
npm install -g @monid-ai/cli@latest
monid setup --client <agentenname-falls-bekannt> --email <email-falls-bereits-vorhanden>
monid setup schließt die CLI-Einrichtung ab. Gib --client mit deinem Agentennamen an, falls verfügbar, und --email nur, wenn der Benutzer sie bereits im Kontext oder Speicher angegeben hat. Beide Flags sind optional; lasse unbekannte Werte weg und frage niemals nach einer E-Mail nur für die Einrichtung.
- Speichere den aktuellsten Skill von https://monid.ai/SKILL.md in deinem Skill-Verzeichnis, ersetze den alten, und stelle sicher, dass er aktiviert ist, damit er in zukünftigen Sitzungen geladen wird.
Downgrade niemals eine Seite, um die andere anzupassen – bringe immer beide auf den neuesten Stand.
Authentifizierung
Um die API-Endpunkte von Monid zu nutzen, benötigst du einen API-Key. Wenn du einem Benutzer bei der Ersteinrichtung von Monid hilfst:
- Bitte den Benutzer, ein Konto auf https://app.monid.ai zu erstellen, falls er noch keines hat.
- Bitte den Benutzer, einen API-Key auf https://app.monid.ai/access/api-keys zu generieren.
- Sobald der Key vorliegt, biete an, ihn zu speichern – bitte den Benutzer, ihn einzufügen, und führe dann aus:
monid keys add -k <ihr-api-key> -l main
Alternativ gib den obigen Befehl zur Selbstausführung an den Benutzer weiter.
- Überprüfe die Konfiguration des Keys:
monid keys list
Für skriptgesteuerte oder Agenten-Nutzung setze NO_COLOR=1, um ANSI-Farbcodes in der Ausgabe zu deaktivieren.
Wann Monid verwenden
Durchsuche den Katalog, bevor du selbst etwas entwickelst. Bevor du einen Scraper schreibst, auf einen generischen Webabruf für strukturierte Daten zurückgreifst oder dem Benutzer sagst, dass du auf etwas nicht zugreifen kannst – führe monid discover aus. Der Katalog enthält hunderte Tools und wächst kontinuierlich. Du weißt nicht, was verfügbar ist, bis du suchst.
- Entdecken – Führe
monid discover -q "<was du brauchst>"aus, um verfügbare Tools zu durchsuchen. Verwende-s <punktezahl>, um nach Mindestrelevanz zu filtern. Viele Aufgaben, die du selbst entwickeln würdest, haben bereits einen schnelleren, zuverlässigeren Endpunkt. Die SpalteHealthzeigt einen gemessenen Status und die typische Laufzeit – siehe Endpoint Health. - Inspizieren – Verwende
monid inspect, um das Eingabeschema zu lesen. Das FeldinputzeigtpathParams,queryParams,bodyundbodyType– das sagt dir genau, welche Parameter wohin gehören. Rate niemals. Der AbschnittHealthfügt die letzte Laufzeit hinzu. - Ausführen – Ordne die Inspektionsausgabe den Flags von
monid runzu:body→-i,queryParams→--query,pathParams→--path. Alle drei sind optional. Verwende--wait, um bis zum Abschluss zu blockieren. - Aufteilen – Wenn die Aufgabe mehrere Quellen umfasst, zerlege sie in einzelne Teile und entdecke/führe jedes unabhängig aus.
- Kosten prüfen – Melde dem Benutzer nach Ausführungen die Kosten (im Run-Ergebnis verfügbar). Verwende
monid balance, um bei kostenbewussten Aufgaben das verbleibende Guthaben zu prüfen.
WANN Monid NICHT verwenden
Monid füllt die Lücken im Stack des Benutzers – es ersetzt nicht die Tools, die der Benutzer bereits hat. Bei der Entscheidung, wie ein externer Dienst erreicht wird, gilt diese Reihenfolge:
- Explizite Benutzeranweisung für diese Aufgabe – wenn der Benutzer dir gesagt hat, wie es gemacht werden soll, mach es auf diese Weise.
- Die vorhandenen dedizierten Tools des Benutzers – MCP-Server, persönliche API-Keys, CLIs und Workflows, die im Speicher, in der Konfiguration oder in den Anweisungen des Benutzers gespeichert sind. Wenn der Benutzer einen dedizierten MCP für eine Fähigkeit hat (z. B. einen Academic-Search-MCP für die wissenschaftliche Suche) oder einen eigenen API-Key für einen Dienst (z. B. einen persönlichen SEO-Tool-Key), verwende diesen direkt – leite die Anfrage nicht über Monid.
- Monid – für Bedürfnisse, die die obigen nicht abdecken.
Warum das wichtig ist: Monid-Ausführungen verbrauchen das Monid-Guthaben des Benutzers. Gib es niemals für eine Anfrage aus, die der eigene Key oder das Tool des Benutzers bereits ohne zusätzliche Kosten abdeckt.
Biete an, überschreibe nicht. Wenn sowohl das Tool des Benutzers als auch ein Monid-Endpunkt die Aufgabe erledigen könnten und der Benutzer keine Präferenz angegeben hat, verwende das Tool des Benutzers. Wenn Monid eine echte Fähigkeit hinzufügt, die das Tool des Benutzers nicht hat, erwähne es als Alternative und lass den Benutzer wählen – wechsle niemals stillschweigend.
Endpoint Health
discover zeigt eine Health-Spalte: ein Statusurteil plus die mediane Laufzeit, z. B. healthy 4.4s. inspect fügt den Schwanz hinzu – Run time: 4.4s typical · 6.1s tail. Mit -j befinden sich beide im Feld metrics jedes Ergebnisses.
| Status | Bedeutung |
|---|---|
healthy | Funktionstüchtig innerhalb der letzten Minuten bestätigt. |
stable | Keine Daten aus den letzten Minuten, aber eine starke Erfolgsbilanz über einen längeren Zeitraum. |
degraded | Instabil oder mit Tendenz dorthin – funktioniert in den meisten Fällen noch. |
outage | Bekanntermaßen nicht funktionsfähig. Verborgen vor discover, es sei denn, du übergibst -u/--include-unavailable. |
unknown (oder leer) | Nicht genügend Daten für ein Urteil. |
healthy und stable sind beide gute Nachrichten – sie unterscheiden sich nur darin, wie aktuell die Bestätigung ist.
Verwende den Health-Status, um Gleichstand zu brechen, niemals zum Filtern. Bevorzuge den gesünderen von zwei Endpunkten, die beide zur Aufgabe passen; überspringe niemals einen, der passt, nur weil sein Status unknown ist – das ist häufig und keine Warnung. Jeder nicht hier aufgeführte Status wird unverändert ausgegeben; behandle ihn als informativ.
Eine fehlende Laufzeit bedeutet geringen Traffic, keinen langsamen Endpunkt. Überprüfe inspect vor --wait: Ein schneller Median kann immer noch einen minutenlangen Schwanz verbergen.
Überprüfe die Hinweise
Befehle können einen Hinweise-Block zurückgeben. Wenn vorhanden, enthält er vom Server vorgeschlagene Aktionen: welcher Befehl als nächstes ausgeführt werden soll, wie dieser Endpunkt mit anderen zusammenhängt oder wissenswerte Einschränkungen. Lies ihn, bevor du deine nächste Entscheidung triffst, und bevorzuge seine Vorschläge gegenüber Raten. Mit -j befinden sich dieselben Daten im Feld hints der Antwort.
Befehle
Jeder Befehl unterstützt --help für die vollständige Nutzung. Hier ist eine Übersicht:
| Befehl | Funktion |
|---|---|
monid discover | Durchsuche Datenendpunkte mit natürlicher Sprache (-q <anfrage>, -l <limit>, -s <minPunktzahl>, -u um Endpunkte mit Ausfall einzuschließen) |
monid inspect | Erhalte vollständige Details und das Eingabeschema für einen bestimmten Endpunkt (-p <anbieter> -e <endpunkt>) |
monid run | Führe einen Datenendpunkt aus (-p, -e, -i für Body-JSON, -f für Body-Eingabedatei, --query für Query-Parameter, --path für Pfad-Parameter, -w zum Warten, -o zum Speichern der Ausgabe) |
monid runs list | Liste kürzliche Ausführungen auf |
monid runs get | Erhalte Ausführungsstatus und -ergebnisse (-r <runId>, -w zum Warten) |
monid runs stop | Stoppe eine laufende Ausführung (-r <runId>). Nicht alle Ausführungen können gestoppt werden |
monid balance | Zeige aktuelles Workspace-Guthaben |
monid setup | Schließe die CLI-Einrichtung nach der Installation ab (kein API-Key erforderlich) |
monid keys add | Füge einen API-Key hinzu (-k <key> -l <label>) |
monid keys list | Zeige konfigurierte Keys |
monid keys remove | Entferne einen Key (-l <label>, -f zum Überspringen der Bestätigung) |
monid keys activate | Wechsle den aktiven Key (-l <label>) |
Die meisten Befehle akzeptieren -j/--json für maschinenlesbare JSON-Ausgabe.
Arbeitsablauf
Der Standard-Arbeitsablauf ist: entdecken → inspizieren → ausführen → abfragen → (Guthaben prüfen).
# 1. Entdecke Endpunkte für deinen Datenbedarf
# Ergebnisse zeigen Relevanzpunktzahl und verifiziertes Abzeichen
# Verwende -s, um nach Mindestpunktzahl zu filtern (höher = relevanter)
monid discover -q "twitter posts"
# 2. Inspiziere den Endpunkt, um sein Eingabeschema zu lernen (zeigt verifizierten Status)
monid inspect -p apify -e /apidojo/tweet-scraper
# 3. Starte die Ausführung (kehrt sofort mit einer Ausführungs-ID zurück)
monid run -p apify -e /apidojo/tweet-scraper \
-i '{"searchTerms":["AI"],"maxItems":10}'
# -> Run ID: 01HXYZ...
# 4. Frage auf Abschluss ab
monid runs get -r 01HXYZ...
# -> status: RUNNING
# Frage alle 5-10 Sekunden weiter ab, bis COMPLETED
monid runs get -r 01HXYZ... -o tweets.json
# -> status: COMPLETED
# 5. (Optional) Überprüfe das verbleibende Guthaben
monid balance
--wait verwenden:
--wait blockiert bis zum Abschluss (1-120 Sekunden) mit eingebautem exponentiellem Backoff:
# Dies blockiert für die gesamte Dauer
monid run -p apify -e /apidojo/tweet-scraper \
-i '{"searchTerms":["AI"],"maxItems":10}' \
-w -o tweets.json
Wann --wait verwenden:
- Asynchrone/Hintergrundaufgaben, bei denen Blockieren akzeptabel ist
- Du kannst ein Timeout setzen:
-w 30(maximal 30 Sekunden warten) - Beachte: Ausführungen können 1-120 Sekunden dauern, daher kann dies die Konversation blockieren oder Laufzeit-Timeouts auslösen
Beispielabläufe
Ablauf 1: Twitter-Beiträge über AI scrapen
# Entdecke verfügbare Twitter-Endpunkte
monid discover -q "twitter posts"
# Inspiziere, um das Eingabeschema zu lernen (pathParams, queryParams, body)
monid inspect -p apify -e /apidojo/tweet-scraper
# Ausführen mit einem einzelnen Suchbegriff, kleinem Limit
monid run -p apify -e /apidojo/tweet-scraper \
-i '{"searchTerms":["AI agents"],"maxItems":10}'
# -> Run ID: 01HXYZ...
# Frage auf Abschluss ab (~10-30 Sekunden für kleine Anfragen)
monid runs get -r 01HXYZ...
# -> status: RUNNING
# Nach 10 Sekunden erneut prüfen, bei Abschluss speichern
monid runs get -r 01HXYZ... -o ai_tweets.json
# -> status: COMPLETED
Ablauf 2: AI-Diskussion plattformübergreifend vergleichen
Benutzer fragt: "Vergleiche die AI-Diskussion auf Twitter vs. LinkedIn."
Zerlege dies in einzelne Teile – ein Endpunkt pro Datenquelle:
# Entdecke Endpunkte für jede Plattform
monid discover -q "twitter posts"
monid discover -q "linkedin posts"
# Inspiziere jedes, um die Eingabeschemata zu lernen (pathParams, queryParams, body)
monid inspect -p apify -e /apidojo/tweet-scraper
monid inspect -p apify -e /harvestapi/linkedin-post-search
# Starte beide Ausführungen
monid run -p apify -e /apidojo/tweet-scraper \
-i '{"searchTerms":["AI"],"maxItems":20}'
# -> Run ID: 01HTWIT...
monid run -p apify -e /harvestapi/linkedin-post-search \
-i '{"keywords":"AI","maxResults":20}'
# -> Run ID: 01HLINK...
# Frage beide Ausführungen unabhängig voneinander ab
monid runs get -r 01HTWIT... -o twitter_ai.json
monid runs get -r 01HLINK... -o linkedin_ai.json
# Analysiere und vergleiche nun die beiden Ergebnisdateien
Ablauf 2b: Eine lokale Datei an einen Endpunkt übergeben, der eine öffentliche URL benötigt
Einige Endpunkte (z. B. Bild-zu-Video-Generierung) erwarten eine URL als Eingabe, keine
Datei. Dein Workspace hat ein eingebautes entferntes Dateisystem – den sfs-
Provider (automatisch bei erster Nutzung erstellt, KOSTENLOS mit 1 GB inbegriffen). Nutze ihn
mit monid run wie jeden anderen Provider; er stellt Unix-artige Endpunkte
(/put, /cat, /ls, /mv, /rm, /mkdir) bereit, deren Schemata du mit monid inspect
einsehen kannst. Die API signiert nur URLs – Dateibytes werden direkt zwischen dir
und sfs.monid.ai über curl übertragen.
# 1. Signiere einen Upload (sizeBytes ist erforderlich – ermittle es mit wc -c)
monid run -p sfs -e /put \
-i "{\"path\":\"in/photo.png\",\"sizeBytes\":$(wc -c < ./photo.png)}" -w
# -> output: { "uploadUrl": "https://sfs.monid.ai/…", "ref": … }
# 2. Lade die Bytes an die signierte URL hoch
curl -T ./photo.png '<uploadUrl from step 1>'
# 3. Erstelle eine URL, die jeder Drittanbieter abrufen kann (ttl-Voreinstellung: 1h/1d/7d/30d, Standard 1h)
monid run -p sfs -e /cat -i '{"path":"in/photo.png","ttl":"1d"}' -w
# -> output: { "url": "https://sfs.monid.ai/…?e=…&s=…", "expiresAt": … }
# 4. Verwende sie als Eingabe-URL für den Endpunkt
monid run -p bytedance -e /seedance… -i '{"imageUrl": "<url from step 3>"}'
# Herunterladen funktioniert genauso: /cat gibt eine signierte URL zurück – curl sie
curl -o photo.png '<url from /cat>'
# Bereinigung liegt bei dir (Dateien werden nie automatisch gelöscht; /rm gibt Kontingent-Speicher frei)
monid run -p sfs -e /rm -i '{"path":"in/photo.png"}' -w
Ablauf 3: Query- und Pfad-Parameter verwenden
Wenn monid inspect queryParams oder pathParams anzeigt, übergib sie mit --query und --path:
# Inspect zeigt: body, queryParams und pathParams
monid inspect -p some-provider -e /users/{userId}/posts
# Ausführen mit allen drei Parametertypen
monid run -p some-provider -e /users/{userId}/posts \
--path '{"userId": "12345"}' \
--query '{"limit": 10, "sort": "recent"}' \
-i '{"filter": "public"}' \
-w -o posts.json
Ablauf 4: Eine Eingabedatei für komplexe Parameter verwenden
Wenn das Eingabe-JSON groß oder wiederverwendbar ist, schreibe es in eine Datei und verwende -f:
# Schreibe die Eingabe in eine Datei
# (Angenommen, params.json enthält die Body-Eingabeparameter des Endpunkts)
monid run -p apify -e /damilo/google-maps-scraper \
-f params.json -w -o results.json
Kosten- und Budgetwarnung
Viele Endpunkte (insbesondere Apify) werden pro Ergebnis abgerechnet und akzeptieren mehrere Anfragen in einem einzigen Aufruf. Parameter wie maxItems, maxResults, resultsLimit oder limit steuern, wie viele Ergebnisse zurückgegeben werden – aber diese Limits werden oft pro Anfrage, nicht pro Aufruf angewendet.
Beispielsweise können 3 Suchbegriffe mit maxItems: 10 bis zu 30 Ergebnisse zurückgeben (10 pro Anfrage), nicht 10 insgesamt.
Um Kosten zu kontrollieren:
- Bevorzuge eine einzelne Anfrage pro Aufruf. Übergib einen Suchbegriff, eine URL, einen Hashtag nach dem anderen.
- Beginne mit kleinen Limits (5-10) beim ersten Aufruf. Erhöhe bei Bedarf.
- Wenn der Endpunkt ein Array akzeptiert (z. B.
searchTerms,hashtags,urls), übergib nur ein Element, es sei denn, der Benutzer fordert explizit mehrere an. - Überprüfe das Eingabeschema von
monid inspect, um zu identifizieren, welche Parameter das Volumen steuern.
Schlüsselverwaltung
monid keys add -k <api-key> -l <label> # Füge einen Key hinzu (erster Key wird automatisch aktiviert)
monid keys list # Zeige alle konfigurierten Keys
monid keys activate -l <label> # Wechsle den aktiven Key
monid keys remove -l <label> # Entferne einen Key (verwende -f, um Bestätigung zu überspringen)
API-Key-Format: monid_<stufe>_<geheimnis> (z. B. monid_live_abc123...). Generiere Keys auf https://app.monid.ai/access/api-keys.