Doku

MCP einrichten

Jedes Konto bekommt einen eigenen MCP-Endpunkt, der nur auf die Aufgaben dieses Kontos zugreift. Es gibt kein gemeinsames oder globales Token.

1. Per OAuth verbinden (empfohlen)

Done ist für seinen MCP-Endpunkt ein vollwertiger OAuth-2.1-Autorisierungsserver. Clients, die OAuth sprechen – claude.ai, ChatGPT-Konnektoren und Claude Desktop –, verbinden sich deshalb selbst, ohne dass du ein Token kopieren musst. Füge Done als benutzerdefinierten Konnektor hinzu, nur mit der URL:

https://trydone.app/mcp
  1. Geh zu Settings → Connectors → Add custom connector.
  2. Trag https://trydone.app/mcp als URL des Remote-MCP-Servers ein und klick auf Add.
  3. Klick auf Connect. Der Client findet die OAuth-Endpunkte von Done, registriert sich und schickt dich zu Done, wo du dich anmeldest und den Zugriff freigibst.
  4. Gib frei, und der Konnektor ist aktiv, beschränkt allein auf dein Konto.

2. Oder ein Bearer-Token verwenden

Für Clients, die von Hand (oder per Skript) eingerichtet werden, erzeugst du stattdessen ein Token. Öffne unten links in der Seitenleiste den Bereich Konto und erzeuge ein MCP-Token. Es wird nur einmal angezeigt, also kopier es an einen sicheren Ort. Du kannst ein Token mit Vollzugriff erstellen, ein Nur-Lese-Token oder eines, das auf ein einzelnes Projekt beschränkt ist. Richte dann einen Client auf den Endpunkt:

{
  "mcpServers": {
    "done": {
      "url": "https://trydone.app/mcp",
      "headers": { "Authorization": "Bearer <your-generated-mcp-token>" }
    }
  }
}

Auf claude.ai kannst du dasselbe Authorization: Bearer <token> auch als Request-Header in den Advanced settings eines benutzerdefinierten Konnektors eintragen. So oder so sieht und bearbeitet ein Agent mit diesem Token immer nur das, worauf das Token beschränkt ist.

Einen persönlichen Agenten verbinden

Persönliche Agenten, die einen Remote-MCP-Server hinzufügen können, verbinden sich auf dieselbe Weise mit Done: Richte sie auf https://trydone.app/mcp und melde dich dann per OAuth an oder gib ihnen ein MCP-Token aus Schritt 2. Für einen Agenten, den du erst kennenlernst, ist ein Nur-Lese-Token oder ein Token für ein einzelnes Projekt ein guter Anfang.

Meta Muse

Muse fügt neue Tools als Custom Connectors hinzu, und du bittest im Chat darum. Sag Muse: „Create a custom connector for Done's MCP server at https://trydone.app/mcp.“ Wenn es nach Zugangsdaten fragt, gib dein MCP-Token über die sichere Abfrage für Zugangsdaten ein, nicht im Chat selbst.

Hermes Agent (Nous Research)

Trag Done in ~/.hermes/config.yaml ein. Führe dann hermes mcp login done aus, um den Zugriff in Done freizugeben, und hermes mcp test done, um zu prüfen, ob die Tools von Done aufgelistet werden:

mcp_servers:
  done:
    url: "https://trydone.app/mcp"
    auth: oauth

Um stattdessen ein Token zu verwenden, ersetze auth: oauth durch headers: { Authorization: "Bearer <your-mcp-token>" }.

OpenClaw (früher Clawdbot)

Füge Done als Streamable-HTTP-Server hinzu, melde dich an und teste dann die Verbindung:

openclaw mcp add done --url https://trydone.app/mcp --transport streamable-http
openclaw mcp login done
openclaw mcp doctor done --probe

Nutze die OAuth-Anmeldung statt eines festen Authorization-Headers: Manche OpenClaw-Versionen leiten eigene Header bei Streamable-HTTP-Servern nicht weiter.

Poke

Öffne in Poke Integrations → New, nenn die Integration Done, trag https://trydone.app/mcp als MCP Server URL ein, füge dein MCP-Token als API Key ein und klick auf Create Integration.

Instinct

Instinct veröffentlicht noch keine Einrichtungsschritte für externe Tools. Wenn dein Instinct eine eigene MCP-Verbindung hinzufügen kann, gib ihm die URL https://trydone.app/mcp und ein MCP-Token, gesendet als Authorization: Bearer <token>.

Jeder andere Agent, der einen Remote-MCP-Server hinzufügen kann, funktioniert ebenfalls: Nutze die OAuth-Schritte aus 1, wenn er OAuth unterstützt, oder andernfalls ein Token aus 2. In beiden Fällen erscheint er unter Einstellungen → Agentenzugriff, wo du ihm den Zugriff mit einem Klick entziehen kannst.

3. Tools, die dem Agenten zur Verfügung stehen

Der MCP-Server stellt Tools bereit, die an Arbeitsabläufen ausgerichtet sind, kein rohes CRUD:

list_my_tasks
Holt die Warteschlange der bereiten Aufgaben: einem KI-Agenten zugewiesen, nicht blockiert, nicht pausiert, höchste Priorität zuerst. Ruf dieses Tool zuerst auf. Kommt die Liste leer zurück, sagt es, warum, mit einer Aufschlüsselung der ausgeblendeten Aufgaben (blocked/done/wont_do/pending_approval/plan_proposed/needs_input/paused/claimed_by_other). So lesen sich „nichts zu tun“ und „alles ist pausiert“ nicht gleich. Mit include_paused listest du die pausierten Aufgaben auf und berichtest, was der Lauf übersprungen hat; aufgehoben wird dadurch nichts, bearbeiten lassen sie sich weiterhin nicht.
next_task
Übernimmt atomar die eine bereite Aufgabe mit der höchsten Priorität, also das Entnehmen aus der Warteschlange. Nutze es in einer Flotte, damit zwei Agenten nie dieselbe Aufgabe greifen.
list_tasks
Zeigt das ganze Board; filtere nach status/priority/project/parent oder durchsuche die Titel.
get_task
Lädt eine Aufgabe vollständig: Notizen, Unteraufgaben, Blocker und den Verlauf, dazu alle drei Ebenen des dauerhaften Briefings (workspace_brief, project_brief und das notes_for_agent der Aufgabe selbst). Rangfolge: Arbeitsbereich → Projekt → Aufgabe, das Spezifischste zuletzt. Im Umfang begrenzt: Der Verlauf liefert standardmäßig die 50 neuesten Einträge (limit, 0–500), und include grenzt die Abschnitte ein. Alles Ausgelassene wird in context_summary benannt, damit eine kurze Antwort nie mit einer vollständigen Historie verwechselt wird.
claim_task / release_task
Übernimmt eine Aufgabe (in Arbeit, einem Agenten zugewiesen, mit Startkommentar). Gib deine `agent`-ID an (z. B. "ChatGPT"), damit eine Flotte nichts doppelt belegt. Oder leg die Aufgabe zurück, wenn du sie jetzt nicht abschließen kannst.
decline_task
Gibt eine Aufgabe ganz aus deiner Warteschlange zurück: Die Zuweisung und deine Übernahme werden entfernt, die Aufgabe geht zurück auf not_started, und deine Begründung steht im Verlauf. Für Arbeit, die dir zugewiesen wurde, es aber nicht sein sollte. release_task gibt nur die Reservierung auf; dieses Tool gibt die Zuweisung auf.
handoff_task
Übergibt eine Aufgabe, die bei dir liegt, mitten im Ablauf an einen anderen benannten Agenten aus der Agentenliste. Sie wandert sofort in dessen Warteschlange: Übernahme aufgehoben, zurück auf not_started, deine Notiz gepostet. agent_ok wird zurückgesetzt, sodass der nächste Agent den Abschluss vorschlägt, solange ein Mensch es nicht wieder einschaltet.
list_agents
Die Agentenliste des Kontos und welcher Agent du bist. Deine Spur ergibt sich aus dem Namen deiner Zugangsdaten, nie aus einem Argument; die Warteschlangen-Tools liefern nur Aufgaben deiner eigenen Spur. Leere Agentenliste = eine gemeinsame Warteschlange.
pause_board
Derselbe Stoppknopf eine Ebene höher: Kein Agent des Kontos bekommt mehr Arbeit, bis ein Mensch das Board fortsetzt. Für ein Hindernis, das nicht nur eine Aufgabe betrifft: Zugangsdaten weg, jede Aufgabe scheitert auf dieselbe Weise, eine Schleife über mehrere Aufgaben. Danach verweigern list_my_tasks und next_task die Arbeit und geben den Grund zurück, statt eine leere Warteschlange zu liefern. Ein Lauf, der das Board gestoppt vorfindet, protokolliert also, warum. Bereits begonnene Arbeit lässt sich noch abschließen. Fortsetzen kann nur ein Mensch, im Bereich „Konto“.
pause_task
Stoppt die Arbeit an einer Aufgabe und hält alle Agenten von ihr fern, bis ein Mensch sie fortsetzt. Für den Fall, dass du so FESTSTECKST, dass keine Frage helfen würde: eine Schleife, fehlende Zugangsdaten, eine Aufgabe, die sich so, wie sie formuliert ist, nicht erledigen lässt. Eine Begründung ist Pflicht, und du kannst die Pause nicht selbst aufheben: Fortsetzen ist eine menschliche Aktion in der App. Ein Agent, der sich wegen einer Schleife pausiert hat, kann sich also nicht selbst wieder in die Schleife schicken.
comment_on_task
Liefert Ergebnisse und Schlussfolgerungen in den Verlauf der Aufgabe, also dorthin, wo ein Mensch liest. Ein dichter Kommentar pro Lauf, kein Live-Protokoll: Statuswechsel, Übernahmen und Ablaufprotokolle werden automatisch in der Historie der Aufgabe festgehalten.
check_criterion
Hakt ein Abnahmekriterium als erfüllt ab. Das ist der Kanal für Fortschritt: Markiere Bedingungen, sobald du sie erfüllst, statt den Fortschritt in Kommentaren zu erzählen. Alle Kästchen abzuhaken schließt die Aufgabe nicht ab.
ask_decision
Stellt eine Frage an den Menschen zurück und macht weiter. Das ist der eine Weg, ihn einzubeziehen, ohne deinen Lauf zu beenden. Die Aufgabe fällt als needs_input aus deiner Warteschlange; du nimmst sie mit der angehängten Antwort wieder auf. Eine Empfehlung ist Pflicht. Pro Aufgabe ist eine offene blockierende Frage erlaubt.
list_open_decisions / withdraw_decision
Zeigt alle Fragen, die gerade auf einen Menschen warten, oder zieht eine zurück, die du selbst geklärt hast. Prüf das bei jedem Lauf zuerst: Eine Aufgabe, deren Frage beantwortet wurde, ist die günstigste Arbeit, die es gibt.
check_night_budget
Fragt, ob du heute Nacht noch eine Aufgabe beginnen darfst. Aufgabenbudgets begrenzen eine Aufgabe; dieses Tool begrenzt eine ganze unbeaufsichtigte Sitzung, damit eine Nachtroutine nicht den Spielraum einer Woche in einer Nacht verbraucht.
delete_comment
Entfernt einen eigenen Kommentar des Agenten: das Duplikat eines Wiederholungsversuchs oder einen Entwurf, den er ersetzt hat. Deine Kommentare und die Statushistorie lassen sich nicht löschen.
complete_task
Markiert direkt als erledigt; eine Zusammenfassung ist Pflicht. Funktioniert nur, wenn die Aufgabe agent_ok=true hat. Andernfalls gibt es einen Fehler mit dem Hinweis, propose_completion zu verwenden.
propose_completion
Für eine Aufgabe ohne agent_ok: postet eine Zusammenfassung und setzt den Status auf pending_approval, bis ein Mensch sie freigibt oder ablehnt.
approve_task / reject_task
Entscheidet über eine Aufgabe in pending_approval (das kann auch ein beaufsichtigender Agent, nicht nur ein Mensch).
propose_plan
Vor umfangreicher Arbeit: postet den Plan und setzt den Status auf plan_proposed, bis ein Mensch ihn freigibt. Das Gegenstück zu propose_completion vor der Ausführung.
approve_plan / reject_plan
Entscheidet über den Plan einer Aufgabe in plan_proposed (das kann auch ein beaufsichtigender Agent, nicht nur ein Mensch).
create_task / update_task / delete_task
Vollständiges CRUD für Aufgaben, genauso validiert wie die REST-API. delete_task verschiebt in den Papierkorb und löscht nicht endgültig. Akzeptiert Referenzen: URLs/Pfade als Kontext, abgerufen über die eigenen MCP-Konnektoren des Agenten.
quick_capture
Erstellt eine Aufgabe aus Rohtext: erkennt Fälligkeitsdatum, Priorität, @agent (auch @claude/@chatgpt), ~Schätzung, #Projekt.
decompose_task
Zerlegt eine Aufgabe mit einem Aufruf in mehrere Unteraufgaben.
render_plan
Stellt die Teilschritte einer Aufgabe als Plan dar: eine Markdown-Checkliste, strukturiertes JSON und ein interaktives Widget für Hosts, die MCP-UI darstellen. Nach decompose_task/propose_plan aufrufen.
set_step_status
Hakt einen Teilschritt des Plans ab oder öffnet ihn wieder und liefert den aktualisierten Plan. Markiert ein Agent einen eigenen Schritt ohne agent_ok, läuft das weiterhin über die Freigabe.
block_task / unblock_task
Verwaltet „Blockiert durch“-Abhängigkeiten (auf Zyklen geprüft).
start_run / end_run / check_budget
Öffnet und schließt eine nachvollziehbare Arbeitssitzung; prüft das verbleibende Budget einer Aufgabe an Tool-Aufrufen und Minuten. Ist das Budget einer Aufgabe aufgebraucht, wird start_run abgelehnt. Gib bei start_run eine trace_url an, um das Protokoll der Sitzung zu verknüpfen. Dann ist „Warum hat er das um 3 Uhr nachts getan?“ nur einen Klick vom Lauf entfernt.
fleet_status
Live-Übersicht über jede Aufgabe, die ein Agent gerade übernommen hat, seit wann, und ob die Reservierung abgelaufen ist. Damit siehst du, wer woran arbeitet, bevor du eine Aufgabe greifst.
runner_heartbeat
Nur für eine selbst gehostete Runner-Box: registriert sie beim Konto und meldet ihren Zustand, damit ihr Besitzer sie in Done sieht, statt per SSH Logs zu lesen. Der eine Zustand, den sonst nichts zeigen kann, ist eine Box, die verbunden und trotzdem kaputt ist: Ihr Done-Token ist in Ordnung, sie hält also den Event-Stream und erscheint als „hört zu“, während ihre abgelaufene Modell-Anmeldung jeden Lauf scheitern lässt.
list_triggers / claim_trigger
Anfragen, die ein Mensch an dich gerichtet hat: ein Klick auf „Jetzt ausführen“ oder @claude in einem Kommentar. Jede ist ein dauerhafter Eintrag, der wartet, bis sich ein Agent verbindet, und einen verbundenen Agenten sofort über den Live-Event-Stream erreicht. Eine ausdrückliche Bitte geht der Reihenfolge der Warteschlange vor, deshalb stuft next_task eine angeforderte Aufgabe an erster Stelle ein. claim_trigger bestätigt eine Anfrage atomar, damit eine Flotte sie nicht doppelt bearbeitet.
search_activity
Durchsucht den Verlauf über alle Aufgaben, die du sehen kannst, statt eine Aufgabe nach der anderen zu lesen: eine Teilstringsuche in Kommentaren, Statuswechseln und Berichten von Agenten, das Neueste zuerst, eingrenzbar mit task_id/author/kind/since.
list_routines
Nur lesend: die wiederkehrenden Routinen, die ein Mensch auf deinen Boards geplant hat, mit Zeitplan, Zeitzone, nächstem Lauf, Pausenstatus und den letzten Läufen. Jeder Termin erzeugt eine gewöhnliche Aufgabe, die dir mit einem Auslöser zugewiesen ist; Läufe kommen also wie jede andere Anfrage über list_triggers und next_task an. Es gibt kein Tool, um eine Routine anzulegen oder zu ändern: Ein Agent, der sich selbst einplanen könnte, würde sich seine eigene Arbeit in die Warteschlange stellen.
changes_since
Das Pull-Gegenstück zum Live-Event-Stream für eine Sitzung, die sich verbindet, arbeitet und wieder beendet: Übergib deinen letzten Cursor und erhalte nur, was sich seitdem geändert hat. Ohne Cursor wird einer gesetzt und es kommen keine Änderungen zurück; ein erster Aufruf kann also nicht das ganze Board ausgeben. Auslöser sind nicht enthalten; dafür bleibt list_triggers die Quelle.
list_claude_shipped
Listet die Aufgaben, die ein KI-Agent als erledigt markiert hat, das Neueste zuerst. Für ein Stand-up, eine Retro oder die Frage „Wie viel hat der Agent wirklich geschafft?“.
list_stale_tasks
Findet offene Arbeit, um die es still geworden ist, samt den Belegen für die Entscheidung, was damit geschehen soll: Tage ohne Aktivität, Fortschritt der Unteraufgaben, offene Blocker und Begründungscodes. Der Aufräumdurchgang.
get_evidence
Alles, was ein Mensch vor der Freigabe einer Aufgabe prüfen möchte, in einem Aufruf: Fortschritt bei den Kriterien, Verbrauch im Verhältnis zum Budget, Belege, Ergebnisse und Trace-Links.
create_artifact_upload
Hängt eine echte Datei an eine Aufgabe an: ein PDF, einen Screenshot, eine Tabelle. Liefert einen einmaligen Upload-Link: Sende die Rohbytes per PUT ohne Authorization-Header dorthin und setze dann mit update_task die artifact_id des Ergebnisses. Der Link funktioniert einmal und läuft nach 15 Minuten ab. Abgelehnt für ein Nur-Lese-Token, eine Aufgabe außerhalb des Projekts oder Arbeitsbereichs des Tokens, eine Aufgabe im Papierkorb oder eine Datei über den Größenlimits.
propose_capture / list_capture_inbox
Die Eingangstür: Schlag eine Aufgabe vor, die der Mensch noch nicht getippt hat, für seinen Erfassungseingang. Angelegt wird nichts; das Annehmen ist der Schreibvorgang des Menschen. Die Liste zeigt das Verhältnis von angenommenen zu verworfenen Vorschlägen, das darüber entscheidet, ob sich diese Funktion ihren Platz verdient.
propose_edit
Schlägt Änderungen an den Feldern einer Aufgabe vor, ohne sie vorzunehmen: eine Gegenüberstellung von aktuell und vorgeschlagen, die ein Mensch Feld für Feld annimmt oder verwirft, damit drei richtige Vorschläge nicht zusammen mit dem vierten abgelehnt werden. Schreibt nichts. Ein Feld, das du nicht setzen kannst, kannst du auch nicht vorschlagen.
propose_brief_edit
Schlägt eine neue Formulierung für das Agenten-Briefing eines Projekts oder einer Aufgabe vor, typischerweise nach einer Ablehnung, die das Briefing hätte verhindern sollen. Ein vollständiger Ersatz samt Begründung, der dem Menschen unter „Wartet auf dich“ als aktuell und vorgeschlagen gezeigt wird. Schreibt nichts: Ein Mensch wendet es an oder verwirft es, und das Anwenden wird abgelehnt, wenn sich das Briefing inzwischen geändert hat. Für das Briefing des Arbeitsbereichs sind keine Vorschläge möglich.
propose_grooming / list_grooming_proposals
Macht aus einem Aufräumdurchgang ein einziges prüfbares Paket: pro Aufgabe eine empfohlene Maßnahme, jeweils mit Begründung. Schreibt nichts: Ein Mensch gibt jeden Punkt in der App frei, und diese Freigabe ist der Schreibvorgang.
get_autonomy_ledger
Zeigt, wo agent_ok verdient wurde: Freigaben und Ablehnungen, gruppiert nach Projekt oder Tag, mit der aktuellen Freigabeserie. Berichtet nur; Autonomie zu gewähren ist eine menschliche Aktion.
get_agent_roster
Was jeder benannte Agent tatsächlich geleistet hat: Läufe, verbrauchte Minuten und Tool-Aufrufe, freigegebene und abgelehnte Aufgaben, die Ablehnungsquote, die Wirkung und den Wert der freigegebenen Aufgaben sowie die Tool-Aufrufe pro freigegebener Aufgabe. Berichtet nur.
get_agent_economics
Aufwand und Wert pro Agent und pro Projekt über ein Zeitfenster in Tagen: Tool-Aufrufe, Minuten und verbrauchtes Budget, freigegeben und abgelehnt, die Ablehnungsquote, Wert und Wirkung der freigegebenen Aufgaben sowie Tool-Aufrufe und Minuten pro freigegebener Aufgabe. In Einheiten, nicht in Geld. Beschränkt auf das Projekt oder den Arbeitsbereich eines eingeschränkten Tokens. Berichtet nur.
get_digest / get_weekly_review / get_stats
Verschafft dir zu Beginn einer Sitzung einen Überblick oder liefert ein ausführlicheres Bild der Produktivität (Trend, Serie, Aufschlüsselungen).
list_projects / create_project / update_project / delete_project
Verwaltet die Projekte der Seitenleiste. create_project nimmt optional eine workspace_id (aus list_workspaces), um das Projekt in einem geteilten Arbeitsbereich statt im persönlichen abzulegen. Ein Unterprojekt übernimmt den Arbeitsbereich seines übergeordneten Projekts, sende also nicht beides.
list_workspaces
Die Arbeitsbereiche, zu denen dieses Konto gehört: id, name, role (owner oder member) und notes_for_agent, das dauerhafte Briefing des Arbeitsbereichs. Ein Arbeitsbereich legt fest, wer eine Gruppe von Aufgaben sehen kann. Nur lesend: Arbeitsbereiche erstellt und teilt der Mensch unter Konto → Arbeitsbereiche & Team, und das Briefing schreibt der Mensch.
list_goals / create_goal / update_goal / delete_goal
Verwaltet Ziele, die Leitstern-Ebene über den Projekten. Ordne Projekte/Aufgaben über goal_id einem Ziel zu; wird ein Ziel gelöscht, wird die zugeordnete Arbeit nur vom Ziel gelöst, nicht gelöscht.
list_tags / create_tag / delete_tag / tag_task / untag_task
Verwaltet übergreifende Tags und wendet sie an.
list_trash / restore_task
Zeigt, was im Papierkorb liegt, und holt eine Aufgabe wieder heraus.
list_connections
Die verbundenen Apps des Menschen (Drive, Gmail, Notion, GitHub, Linear, Slack, Fireflies, Granola, PostHog) und was jede Verbindung tatsächlich umfasst. Das kann weniger sein, als der Anbieter bietet, wenn auf dem Zustimmungsbildschirm eingeschränkt wurde.
search_context
Durchsucht die verbundenen Apps nach Lesestoff. Liefert Treffer mit Titel, Art, Link und einem ref, nie Inhalte. Eine defekte Verbindung wird benannt, statt die ganze Suche scheitern zu lassen.
read_context
Liest einen Treffer aus search_context als reinen Text, anhand von Verbindung und ref. Ein Slack-ref liefert den ganzen Thread.
save_context
Speichert ein Textdokument in einer verbundenen App, die eines aufnehmen kann (derzeit Drive). So verlässt ein Ergebnis Done. E-Mails senden oder in Slack posten gibt es hier überhaupt nicht.
list_calendar_events
Listet die zwischengespeicherten Kalendertermine des Menschen (Titel, Zeit, Ort, Organisator, Teilnehmende) aus seinen verbundenen Google-Konten. Nutze es, bevor du entscheidest, zu welcher Aufgabe ein Termin gehört.
suggest_event_matches
Ordnet wahrscheinliche Paare aus Aufgabe und Kalendertermin nach Güte, das beste zuerst, jeweils mit den Belegen. Durch den Aufruf wird nichts verknüpft; bestätige mit link_task_to_event.
link_task_to_event / unlink_task_from_event
Hält fest (oder entfernt), dass eine Aufgabe und ein Kalendertermin dasselbe sind. Dann wird die Aufgabe auf die tatsächliche Zeit des Termins gelegt, statt in freie Zeit gepackt zu werden.

Prompts & Ressourcen

Über die Tools hinaus ist der Server vollständig MCP-nativ: Er stellt auch Prompts und Ressourcen bereit. Ein Client kann damit fertige Arbeitsabläufe anbieten und Live-Daten als Kontext anhängen.

  • prompts/list · einzeilige Vorlagen, die echten Arbeitsabläufen entsprechen, sodass ein Client sie als Slash-Befehle anbieten kann:
    • plan_my_day – Entwirft aus meinen offenen Aufgaben einen realistischen, priorisierten Plan für heute.
    • work_next – Übernimmt und bearbeitet die eine bereite Aufgabe mit der höchsten Priorität.
    • daily_review – Fasst zusammen, was erledigt wurde, was überfällig ist und worauf es als Nächstes ankommt.
    • groom_board – Findet offene Arbeit, die still eingeschlafen ist, und schlägt für jede vor, was damit geschehen soll. Schlägt nur vor.
    • answer_backlog – Nimmt die Aufgaben wieder auf, deren zurückgestellte Fragen ich bereits beantwortet habe.
    • prep_meetings – Ordnet die heutigen Kalendertermine den Aufgaben zu, um die es geht, und bereitet jeden vor.
    • triage_task – Bewertet eine Aufgabe und plant sie oder benennt, was sie blockiert.
  • resources/list · schreibgeschützte Ansichten, die ein Client anhängen kann: done://digest, done://queue und ein done://task/<id> pro offener Aufgabe. Eingeschränkte Tokens sehen immer nur ihr eigenes Projekt.

Ein typischer Agentenlauf

get_digest → list_open_decisions → next_task → get_task → arbeiten und dabei mit check_criterion jede Bedingung abhaken, sobald sie erfüllt ist → einmal comment_on_task mit dem Bericht → propose_completion. Du prüfst die Ergebnisse im Verlauf der Aufgabe und bleibst verantwortlich.

Fragen, ohne stehen zu bleiben

Ein Agent, der an eine echte Weggabelung kommt – Geld ausgeben, alles, was nach außen geht, alles, was sich nicht rückgängig machen lässt –, sollte nicht raten, aber auch nicht einfach warten. Er ruft ask_decision auf und macht weiter: Die Aufgabe fällt als needs_input aus seiner Warteschlange, du antwortest unter „Wartet auf dich“ oder direkt aus einer Slack-Direktnachricht, und die Aufgabe kehrt mit deiner Antwort in die Warteschlange zurück. Der nächste Lauf liest dann die Antwort, statt die Frage neu herzuleiten.

Jede Frage enthält die Empfehlung des Agenten und seine Begründung, sodass die Antwort meist ein Klick ist und keine Schreibarbeit. Eine Antwort ist keine Freigabe: Sie gibt die Aufgabe zurück und schließt nie etwas ab. Pro Aufgabe kann nur eine blockierende Frage offen sein. Das verhindert, dass aus dem Entscheidungseingang wieder der Kommentarverlauf wird, den er ersetzt hat.

Erst dadurch lohnt es sich, eine Nachtroutine laufen zu lassen. Ohne das beendet die erste Unklarheit um 3 Uhr nachts die ganze Nacht; damit wird nur diese eine Aufgabe zurückgestellt, und der Agent arbeitet den Rest weiter ab.

Nach Zeitplan ausführen

Done führt auf seinen eigenen Servern keinen Agenten aus. Damit deine Aufgaben unbeaufsichtigt bearbeitet werden, muss etwas Done aufrufen, etwa die Zeitplanung des MCP-Clients, den du ohnehin nutzt. Alle MCP-Clients verbinden sich auf dieselbe Weise; nur die Zeitplanung unterscheidet sich:

Claude – Routinen

Läuft nach Zeitplan in der Cloud von Anthropic, mit Done als Konnektor.

  1. Füge Done unter claude.ai/customize/connectors als Konnektor hinzu, mit der MCP-Server-URL https://trydone.app/mcp. Er muss in deinem claude.ai-Konto liegen. Eine Routine sieht keine MCP-Server, die du lokal in der CLI hinzugefügt hast.
  2. Öffne claude.ai/code/routines und klick auf „New routine“. Oder führe /schedule in der Claude-Code-CLI aus und beschreib in einfachen Worten, was du willst.
  3. Füge einen der Prompts von Done als Anweisung ein. Eine Routine läuft, ohne dass jemand zusieht, der Prompt muss also für sich allein funktionieren. Genau dafür sind die in der Ansicht „Prompts“ geschrieben.
  4. Gib ihr einen Zeitplan als Auslöser: stündlich, täglich, werktags oder wöchentlich. Eine Stunde ist der kürzeste erlaubte Abstand.
  5. Lass Done unter „Connectors“ aktiviert und entferne die, mit denen diese Routine nichts zu tun hat. Erstelle sie und klick dann einmal auf „Run now“, um den ersten Lauf von Anfang bis Ende zu beobachten.

Bevor du loslegst: Routinen brauchen einen kostenpflichtigen Claude-Tarif (Pro, Max, Team oder Enterprise), in dem Claude Code im Web aktiviert ist.

ChatGPT – Geplante Aufgaben

Eine zeitgesteuerte Aufgabe, die Done über einen eigenen Konnektor erreicht.

  1. Füge Done im Entwicklermodus als eigenen Konnektor hinzu, der auf https://trydone.app/mcp zeigt, und melde dich an, wenn du dazu aufgefordert wirst.
  2. Starte einen Chat, füge einen der Prompts von Done ein und bitte um einen Zeitplan, etwa „führe das jeden Werktag um 8 Uhr aus“.
  3. Was du angelegt hast, verwaltest du unter „Tasks“ in deinem Profilmenü. Aufgaben starten nur zeitgesteuert, höchstens etwa stündlich, und pausieren von selbst, wenn du sie lange genug ignorierst.

Bevor du loslegst: In ChatGPT Plus und Pro können eigene MCP-Konnektoren nur lesen. Ein Agent kann deine Warteschlange lesen, aber nichts übernehmen, kommentieren oder abschließen. Zum Zurückschreiben brauchst du ChatGPT Business, Enterprise oder Edu.

Alles andere – Dein eigener Zeitplaner

Ein beliebiger MCP-Client, gestartet von dem, was du ohnehin für zeitgesteuerte Abläufe nutzt.

  1. Richte den Client auf https://trydone.app/mcp aus und sende dein Token als Header Authorization: Bearer.
  2. Lass cron, einen CI-Zeitplan, einen Workflow-Runner oder was immer du für zeitgesteuerte Abläufe schon nutzt diesen Client starten, mit einem der Prompts von Done als Anweisung.
  3. Gib dem Lauf einen Ort für seinen Bericht. Jeder Prompt in der Bibliothek schreibt am Ende zurück in Done. Das Board ist also das Protokoll, und du musst nirgendwo sonst nachsehen.

Welchen Weg du auch wählst, das ist der Prompt, den du dem Agenten gibst (er ist auf Englisch; kopier ihn unverändert):

You are my Done task runner. Work my queue through the Done MCP connector only — never touch anything outside my Done account.

Each run:
1. Call list_open_decisions first, then get_digest and list_my_tasks, to see what's assigned to me (the AI agent) and ready. A task whose parked question I've since answered is the cheapest work on the board — the context is written down and the blocker just cleared — so start there.
2. For each ready task, decide what to do:
   - in_progress with plan_approved_at set → its plan is approved, so DO THE WORK now. Read it with get_task (notes_for_agent, acceptance_criteria, description, references), carry it out, and when it's finished call propose_completion with a summary — or complete_task if the task is agent_ok.
   - not_started and small or agent_ok → just do it, then complete_task (agent_ok) or propose_completion.
   - not_started and substantial or ambiguous (multi-step, judgment calls, anything I'd want to sign off on the approach for) → do NOT start it. Call propose_plan with a short plan of how you intend to tackle it, then move on. It waits for my approval and comes back to you once I approve it in Needs you.
3. Report progress by ticking the acceptance criteria with check_criterion as you actually meet each one — not by narrating into comments. Post at most ONE dense comment_on_task per task per run: what you did, what you found, what's left. A running commentary is noise.
4. Hit a real fork — spending money, anything outward-facing (an email, a post, a reply to a customer), anything irreversible — and call ask_decision with your own recommendation, then MOVE ON to the next task. Don't guess, and don't sit there waiting. If you later work the answer out yourself, withdraw_decision rather than leaving a stale question in my queue.
5. If a task was assigned to me but shouldn't be — it needs my accounts, my signature, or my judgment — hand it back with decline_task and a one-line reason. Declining is a valid outcome.
6. Respect the gates: never force a non-agent_ok task to done, and never act on a task that isn't assigned to me.
7. For any task that has sub-steps (a plan) — one you decomposed, or that already had subtasks — call render_plan on it so I get the laid-out plan with progress and an "Open in Done" link.
8. If nothing is ready, stop — don't invent work.

If you're running unattended overnight, wrap the run: call start_run at the top and check_night_budget before picking up each task, so you stop at the caps I set in Settings → Where agents run, and call end_run when you finish.

End with a one-line summary: plans proposed, tasks worked, tasks completed, questions parked.

Bei jedem Lauf schlägt der Agent für jede umfangreiche Aufgabe einen Plan vor und wartet, und er führt alles aus, was du seit dem letzten Mal unter Wartet auf dich freigegeben hast. Du gibst frei, der Agent erledigt die Arbeit, und du musst nie einen Lauf von Hand anstoßen. Dieselbe Einrichtung ist im Bereich Konto nur einen Klick entfernt („Lass einen KI-Agenten deine Warteschlange abarbeiten“).

Hinweise

  • Verbinde dich per OAuth (Clients, die /.well-known/oauth-authorization-server erkennen) oder mit einem langlebigen Bearer-Token pro Konto, das in der App erzeugt wird. Beides funktioniert mit demselben Endpunkt.
  • Jedes Token und jede Berechtigung ist auf ein einzelnes Konto beschränkt; kontoübergreifende oder globale Tokens gibt es nicht. Bearer-Tokens lassen sich zusätzlich auf Nur-Lesen oder ein einzelnes Projekt einschränken.
  • Wird ein Token neu erzeugt oder widerrufen, ist es sofort ungültig.
  • Der Free-Tarif enthält 100 Agenten-Aufrufe (MCP) pro Monat; Pro und Teams sind unbegrenzt. Mehr dazu unter Preise.