FocusBox MCP — Tool-Referenz

Connector-URL: https://focusbox.io/mcp/api. Siehe /mcp für die Einrichtung.

list_today

Gibt die für heute geplanten Aufgaben des Nutzers zurück (nur unerledigte).

Argumente

Keine.

Rückgabewerte

Array von { taskId, name, durationSeconds, projectId }.

Beispielantwort

[
  { "taskId": "abc", "name": "Write spec", "durationSeconds": 1500, "projectId": "mytasks" }
]

next_task

Gibt genau eine Aufgabe zurück, mit der als Nächstes begonnen werden sollte, ausgewählt danach, was in die Zeit bis zum nächsten Kalendertermin passt, was von früheren Tagen liegen geblieben ist und was klein genug für einen Anfang ist. Enthält die Begründung, zwei Alternativen und einen Link zum Starten.

Argumente

availableMinutes (1-480, optional).

Rückgabewerte

{ task, alternatives, freeWindowMinutes, busyNow, message }.

Beispielantwort

{
  "task": {
    "taskId": "abc", "name": "Finish pricing page", "projectId": "work",
    "estimateMinutes": 35, "source": "rollover",
    "reason": "Carried over from 2 days ago; fits the 47 min you have before your next meeting.",
    "startUrl": "https://focusbox.io/now?id=work&taskId=abc"
  },
  "alternatives": [],
  "freeWindowMinutes": 47, "busyNow": false,
  "message": "Start here: Finish pricing page (35 min)."
}

get_streams

Listet die FocusBox-Projekte des Nutzers auf (Container für Aufgaben; in der API aus historischen Gründen "streams" genannt). Archivierte Projekte sowie die today/mytasks-Buckets sind ausgeschlossen.

Argumente

Keine.

Rückgabewerte

Array von { streamId, name }.

add_task

Fügt einem Projekt eine neue Aufgabe hinzu oder plant sie für heute ein. Die Standarddauer beträgt 25 Minuten.

Argumente

FeldTypErforderlichBeschreibung
streamIdstringerforderlichZiel-Projekt-ID aus get_streams. Verwende "today" (oder "mytasks") für heute.
namestringerforderlichAufgabentitel (1–500 Zeichen).
durationSecondsnumberoptional60–14400 (1 Min — 4 Std). Standard 1500.
dueDatestringoptionalOptionaler Unix-seconds-Zeitstempel, der angibt, wann die Aufgabe geplant ist. Die Today-Ansicht zeigt Aufgaben, deren due in das heutige Zeitfenster in der Zeitzone des Nutzers fällt.
clientRequestIdstringoptionalIdempotenz-Schlüssel. Derselbe Schlüssel innerhalb von 5 Minuten gibt das zwischengespeicherte Ergebnis zurück.

Rückgabewerte

{ taskId, streamId, name, durationSeconds }.

update_task

Aktualisiert ein oder mehrere Felder einer bestehenden Aufgabe: name, durationSeconds oder dueDate.

Argumente

FeldTypErforderlichBeschreibung
streamIdstringerforderlichstreamId aus get_streams. Verwende "today" oder "mytasks" für den Posteingang.
taskIdstringerforderlichtaskId aus list_today oder get_streams.
namestringoptionalNeuer Aufgabentitel (1–500 Zeichen).
durationSecondsnumberoptionalNeue Dauer in Sekunden (60–14400). Setzt durSecInit auf den neuen Wert zurück.
dueDatenumberoptionalNeues Fälligkeitsdatum als Unix-seconds-Zeitstempel.
clientRequestIdstringoptionalIdempotenz-Schlüssel. Derselbe Schlüssel innerhalb von 5 Minuten gibt das zwischengespeicherte Ergebnis zurück.

Rückgabewerte

{ taskId, streamId, name, durationSeconds, dueDate }.

delete_task

Löscht eine Aufgabe dauerhaft. Idempotent: Das Löschen einer bereits gelöschten Aufgabe ist kein Fehler.

Argumente

FeldTypErforderlich
streamIdstringerforderlich
taskIdstringerforderlich

Rückgabewerte

{ taskId, streamId, deleted, reason? }.

complete_task

Markiert eine FocusBox-Aufgabe als erledigt.

Argumente

FeldTypErforderlich
streamIdstringerforderlich
taskIdstringerforderlich

Rückgabewerte

{ taskId, streamId, completed: true }.

get_insights_30d

Aggregierte Übersicht über die in den letzten 30 Tagen erledigten Aufgaben des Nutzers.

Argumente

Keine.

Rückgabewerte

{ totalTasks, totalFocusMinutes, topStreams[{streamId, name, tasks}, days: 30 }].

Authentifizierung

OAuth (empfohlen für Claude)

Claude Desktop und claude.ai im Web schließen den OAuth-Flow automatisch ab. Es ist keine manuelle Verwaltung von API-Schlüsseln nötig.

Bearer (Cursor, Inspector, eigene Clients)

Hole dir deinen API-Schlüssel unter /account/api-keys (beginnt mit apikey_). Sende ihn bei jeder Anfrage als Authorization: Bearer apikey_xxx.

Rate-Limits

300 Tool-Aufrufe pro 2 Minuten je API-Schlüssel. 60 nicht authentifizierte Probes pro 2 Minuten je IP.

FAQ

Authentifizierung: OAuth oder Bearer?

Beides. Verwende OAuth (wird von Claude Desktop und claude.ai im Web automatisch übernommen) für die reibungsloseste Einrichtung. Für Cursor, MCP Inspector oder beliebige eigene Clients nutze Bearer-Authentifizierung mit apikey_<uuid> aus /account/api-keys.

Wie hoch sind die Rate-Limits?

300 Tool-Aufrufe pro 2 Minuten je API-Schlüssel. 60 nicht authentifizierte Probes pro 2 Minuten je IP. Wird eines der Limits überschritten, antwortet der Server mit HTTP 429 und einem Retry-After-Header.

Wie lange sind OAuth-Tokens gültig?

30 Tage ab Ausstellung. Danach löst Claude automatisch eine erneute Autorisierung aus. Das Token ist opak (at_*) und wird serverseitig gespeichert; ein Refresh-Token ist nicht erforderlich.

Warum verbindet sich meine Claude-Sitzung nach einem Deploy neu?

Die MCP-Sitzungs-Map liegt im Prozessspeicher einer einzelnen ECS task. Ein rolling deploy setzt sie zurück. Claude verbindet sich automatisch erneut und setzt fort; für den Nutzer sollte das über ein kurzes Neuladen hinaus nicht sichtbar sein.

Kann ich Streaming-Antworten (SSE) verwenden?

Ja. Der Transport ist die streamable HTTP-Variante der MCP-Spezifikation, sodass jeder Tool-Aufruf vor dem finalen Ergebnis Fortschrittsereignisse streamen kann. Sitzungen werden mit periodischen Ping-Frames am Leben gehalten.